AJA NTV2 SDK  17.5.0.1242
NTV2 SDK 17.5.0.1242
ntv2hevc.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #include "ntv2devicefeatures.h"
9 #include "ntv2card.h"
10 
12 {
13  HevcMessageInfo message;
14  bool result;
15 
16  if(pInfo == NULL) return false;
17 
18  memset(&message, 0, sizeof(HevcMessageInfo));
20  message.header.size = sizeof(HevcMessageInfo);
21  message.data = *pInfo;
22 
23  result = HevcSendMessage((HevcMessageHeader*)&message);
24  if(result)
25  {
26  *pInfo = message.data;
27  }
28 
29  return result;
30 }
31 
32 bool CNTV2Card::HevcWriteRegister(ULWord address, ULWord value, ULWord mask, ULWord shift)
33 {
34  HevcMessageRegister message;
35  bool result;
36 
37  memset(&message, 0, sizeof(HevcMessageRegister));
39  message.header.size = sizeof(HevcMessageRegister);
40  message.data.address = address;
41  message.data.writeValue = value;
42  message.data.readValue = 0;
43  message.data.mask = mask;
44  message.data.shift = shift;
45  message.data.write = true;
46  message.data.read = false;
47  message.data.forceBar4 = false;
48 
49  result = HevcSendMessage((HevcMessageHeader*)&message);
50 
51  return result;
52 }
53 
54 bool CNTV2Card::HevcReadRegister(ULWord address, ULWord* pValue, ULWord mask, ULWord shift)
55 {
56  HevcMessageRegister message;
57  bool result;
58 
59  if(pValue == NULL) return false;
60 
61  memset(&message, 0, sizeof(HevcMessageRegister));
63  message.header.size = sizeof(HevcMessageRegister);
64  message.data.address = address;
65  message.data.writeValue = 0;
66  message.data.readValue = 0;
67  message.data.mask = mask;
68  message.data.shift = shift;
69  message.data.write = false;
70  message.data.read = true;
71  message.data.forceBar4 = false;
72 
73  result = HevcSendMessage((HevcMessageHeader*)&message);
74  if(result)
75  {
76  *pValue = message.data.readValue;
77  }
78 
79  return result;
80 }
81 
83 {
84  HevcMessageCommand message;
85  bool result;
86 
87  if(pCommand == NULL) return false;
88 
89  memset(&message, 0, sizeof(HevcMessageCommand));
91  message.header.size = sizeof(HevcMessageCommand);
92  message.data = *pCommand;
93 
94  result = HevcSendMessage((HevcMessageHeader*)&message);
95  if(result)
96  {
97  *pCommand = message.data;
98  }
99 
100  return result;
101 }
102 
104 {
105  HevcMessageTransfer message;
106  bool result;
107 
108  if(pTransfer == NULL) return false;
109 
110  // breakout copy to thunk
111  memset(&message, 0, sizeof(HevcMessageTransfer));
113  message.header.size = sizeof(HevcMessageTransfer);
114  message.data.streamType = pTransfer->streamType;
115  message.data.streamId = pTransfer->streamId;
116  message.data.videoBuffer = (ULWord64)((uintptr_t)(pTransfer->pVideoBuffer));
117  message.data.videoBufferSize = pTransfer->videoBufferSize;
118  message.data.videoDataSize = pTransfer->videoDataSize;
119  message.data.segVideoPitch = pTransfer->segVideoPitch;
120  message.data.segCodecPitch = pTransfer->segCodecPitch;
121  message.data.segSize = pTransfer->segSize;
122  message.data.segCount = pTransfer->segCount;
123  message.data.infoBuffer = (ULWord64)((uintptr_t)(pTransfer->pInfoBuffer));
124  message.data.infoBufferSize = pTransfer->infoBufferSize;
125  message.data.infoDataSize = pTransfer->infoDataSize;
126  message.data.encodeTime = pTransfer->encodeTime;
127  message.data.flags = pTransfer->flags;
128 
129  result = HevcSendMessage((HevcMessageHeader*)&message);
130  if(result)
131  {
132  // breakout copy to thunk
133  pTransfer->streamType = message.data.streamType;
134  pTransfer->streamId = message.data.streamId;
135  pTransfer->pVideoBuffer = (UByte*)((uintptr_t)(message.data.videoBuffer));
136  pTransfer->videoBufferSize = message.data.videoBufferSize;
137  pTransfer->videoDataSize = message.data.videoDataSize;
138  pTransfer->segVideoPitch = message.data.segVideoPitch;
139  pTransfer->segCodecPitch = message.data.segCodecPitch;
140  pTransfer->segSize = message.data.segSize;
141  pTransfer->segCount = message.data.segCount;
142  pTransfer->pInfoBuffer = (UByte*)((uintptr_t)(message.data.infoBuffer));
143  pTransfer->infoBufferSize = message.data.infoBufferSize;
144  pTransfer->infoDataSize = message.data.infoDataSize;
145  pTransfer->encodeTime = message.data.encodeTime;
146  pTransfer->flags = message.data.flags;
147  }
148 
149  return result;
150 }
151 
153 {
154  HevcMessageStatus message;
155  bool result;
156 
157  if(pStatus == NULL) return false;
158 
159  memset(&message, 0, sizeof(HevcMessageStatus));
161  message.header.size = sizeof(HevcMessageStatus);
162  message.data = *pStatus;
163 
164  result = HevcSendMessage((HevcMessageHeader*)&message);
165  if(result)
166  {
167  *pStatus = message.data;
168  }
169 
170  return result;
171 }
172 
174 {
175  HevcMessageDebug message;
176  bool result;
177 
178  if(pDebug == NULL) return false;
179 
180  memset(&message, 0, sizeof(HevcMessageDebug));
181  message.header.type = Hevc_MessageId_Debug;
182  message.header.size = sizeof(HevcMessageDebug);
183  message.data = *pDebug;
184 
185  result = HevcSendMessage((HevcMessageHeader*)&message);
186  if(result)
187  {
188  *pDebug = message.data;
189  }
190 
191  return result;
192 }
193 
HevcDeviceTransfer::streamType
HevcStream streamType
Definition: ntv2publicinterface.h:9681
HevcDeviceStatus
Definition: ntv2publicinterface.h:9738
HevcDeviceTransfer::segCount
ULWord segCount
Definition: ntv2publicinterface.h:9691
HevcDeviceCommand
Definition: ntv2publicinterface.h:9530
HevcTransferData::videoDataSize
ULWord videoDataSize
Definition: ntv2publicinterface.h:9811
HevcMessageStatus::data
HevcDeviceStatus data
Definition: ntv2publicinterface.h:9855
HevcDeviceDebug
Definition: ntv2publicinterface.h:9759
HevcDeviceRegister::read
bool read
Definition: ntv2publicinterface.h:9400
HevcTransferData::videoBufferSize
ULWord videoBufferSize
Definition: ntv2publicinterface.h:9810
HevcMessageCommand
struct HevcMessageCommand HevcMessageCommand
CNTV2Card::HevcReadRegister
virtual bool HevcReadRegister(ULWord address, ULWord *pValue, ULWord mask=0xffffffff, ULWord shift=0)
Read an hevc register.
Definition: ntv2hevc.cpp:54
ntv2devicefeatures.h
Declares device capability functions.
NULL
#define NULL
Definition: ntv2caption608types.h:19
HevcDeviceRegister::address
ULWord address
Definition: ntv2publicinterface.h:9394
HevcDeviceRegister::shift
ULWord shift
Definition: ntv2publicinterface.h:9398
CNTV2Card::HevcDebugInfo
virtual bool HevcDebugInfo(HevcDeviceDebug *pDebug)
Get debug data from the hevc device.
Definition: ntv2hevc.cpp:173
HevcTransferData::infoDataSize
ULWord infoDataSize
Definition: ntv2publicinterface.h:9818
Hevc_MessageId_Command
@ Hevc_MessageId_Command
Definition: ntv2publicinterface.h:9786
CNTV2Card::HevcSendCommand
virtual bool HevcSendCommand(HevcDeviceCommand *pCommand)
Send a command to the hevc device. See the hevc codec documentation for details on commands.
Definition: ntv2hevc.cpp:82
HevcDeviceTransfer::pVideoBuffer
UByte * pVideoBuffer
Definition: ntv2publicinterface.h:9684
hevcMessageHeader::size
ULWord size
Definition: ntv2publicinterface.h:9797
HevcTransferData::segVideoPitch
ULWord segVideoPitch
Definition: ntv2publicinterface.h:9812
HevcMessageDebug::header
HevcMessageHeader header
Definition: ntv2publicinterface.h:9861
HevcTransferData::segSize
ULWord segSize
Definition: ntv2publicinterface.h:9814
Hevc_MessageId_Info
@ Hevc_MessageId_Info
Definition: ntv2publicinterface.h:9784
CNTV2Card::HevcVideoTransfer
virtual bool HevcVideoTransfer(HevcDeviceTransfer *pTransfer)
Transfer video to/from the hevc device.
Definition: ntv2hevc.cpp:103
HevcTransferData::infoBufferSize
ULWord infoBufferSize
Definition: ntv2publicinterface.h:9817
HevcMessageInfo
struct HevcMessageInfo HevcMessageInfo
HevcTransferData::streamType
HevcStream streamType
Definition: ntv2publicinterface.h:9807
HevcDeviceTransfer::segCodecPitch
ULWord segCodecPitch
Definition: ntv2publicinterface.h:9689
HevcDeviceTransfer::videoBufferSize
ULWord videoBufferSize
Definition: ntv2publicinterface.h:9685
HevcMessageRegister::header
HevcMessageHeader header
Definition: ntv2publicinterface.h:9833
HevcMessageStatus::header
HevcMessageHeader header
Definition: ntv2publicinterface.h:9854
CNTV2DriverInterface::HevcSendMessage
virtual bool HevcSendMessage(HevcMessageHeader *pMessage)
Sends an HEVC message to the NTV2 driver.
Definition: ntv2driverinterface.h:378
HevcDeviceTransfer::flags
ULWord flags
Definition: ntv2publicinterface.h:9698
CNTV2Card::HevcGetDeviceInfo
virtual bool HevcGetDeviceInfo(HevcDeviceInfo *pInfo)
Returns the driver version and time/date stamp of the hevc device's currently-installed firmware.
Definition: ntv2hevc.cpp:11
Hevc_MessageId_Register
@ Hevc_MessageId_Register
Definition: ntv2publicinterface.h:9785
HevcDeviceInfo
Definition: ntv2publicinterface.h:9373
HevcDeviceTransfer::streamId
ULWord streamId
Definition: ntv2publicinterface.h:9682
HevcTransferData::segCount
ULWord segCount
Definition: ntv2publicinterface.h:9815
HevcDeviceRegister::forceBar4
bool forceBar4
Definition: ntv2publicinterface.h:9401
ULWord
uint32_t ULWord
Definition: ajatypes.h:255
HevcMessageRegister
struct HevcMessageRegister HevcMessageRegister
HevcMessageInfo
Definition: ntv2publicinterface.h:9824
HevcMessageTransfer::data
HevcTransferData data
Definition: ntv2publicinterface.h:9848
hevcMessageHeader::type
HevcMessageId type
Definition: ntv2publicinterface.h:9796
ntv2card.h
Declares the CNTV2Card class.
HevcMessageInfo::data
HevcDeviceInfo data
Definition: ntv2publicinterface.h:9827
HevcTransferData::segCodecPitch
ULWord segCodecPitch
Definition: ntv2publicinterface.h:9813
HevcTransferData::flags
ULWord flags
Definition: ntv2publicinterface.h:9820
HevcMessageRegister::data
HevcDeviceRegister data
Definition: ntv2publicinterface.h:9834
HevcDeviceRegister::readValue
ULWord readValue
Definition: ntv2publicinterface.h:9396
HevcMessageDebug
Definition: ntv2publicinterface.h:9859
HevcMessageStatus
struct HevcMessageStatus HevcMessageStatus
HevcDeviceTransfer::infoBufferSize
ULWord infoBufferSize
Definition: ntv2publicinterface.h:9694
HevcDeviceRegister::write
bool write
Definition: ntv2publicinterface.h:9399
HevcMessageCommand::data
HevcDeviceCommand data
Definition: ntv2publicinterface.h:9841
hevcMessageHeader
Definition: ntv2publicinterface.h:9794
HevcDeviceTransfer::infoDataSize
ULWord infoDataSize
Definition: ntv2publicinterface.h:9695
HevcDeviceTransfer::segVideoPitch
ULWord segVideoPitch
Definition: ntv2publicinterface.h:9688
CNTV2Card::HevcGetStatus
virtual bool HevcGetStatus(HevcDeviceStatus *pStatus)
Get the status of the hevc device.
Definition: ntv2hevc.cpp:152
HevcMessageRegister
Definition: ntv2publicinterface.h:9831
Hevc_MessageId_Transfer
@ Hevc_MessageId_Transfer
Definition: ntv2publicinterface.h:9787
HevcTransferData::streamId
ULWord streamId
Definition: ntv2publicinterface.h:9808
UByte
uint8_t UByte
Definition: ajatypes.h:250
HevcMessageTransfer::header
HevcMessageHeader header
Definition: ntv2publicinterface.h:9847
HevcDeviceTransfer::videoDataSize
ULWord videoDataSize
Definition: ntv2publicinterface.h:9686
Hevc_MessageId_Status
@ Hevc_MessageId_Status
Definition: ntv2publicinterface.h:9788
Hevc_MessageId_Debug
@ Hevc_MessageId_Debug
Definition: ntv2publicinterface.h:9789
ULWord64
uint64_t ULWord64
Definition: ajatypes.h:258
HevcTransferData::infoBuffer
ULWord64 infoBuffer
Definition: ntv2publicinterface.h:9816
HevcMessageCommand
Definition: ntv2publicinterface.h:9838
HevcMessageDebug
struct HevcMessageDebug HevcMessageDebug
HevcDeviceTransfer::segSize
ULWord segSize
Definition: ntv2publicinterface.h:9690
HevcMessageTransfer
struct HevcMessageTransfer HevcMessageTransfer
HevcMessageCommand::header
HevcMessageHeader header
Definition: ntv2publicinterface.h:9840
HevcMessageDebug::data
HevcDeviceDebug data
Definition: ntv2publicinterface.h:9862
HevcDeviceTransfer::encodeTime
LWord64 encodeTime
Definition: ntv2publicinterface.h:9697
HevcMessageStatus
Definition: ntv2publicinterface.h:9852
HevcMessageTransfer
Definition: ntv2publicinterface.h:9845
HevcDeviceTransfer::pInfoBuffer
UByte * pInfoBuffer
Definition: ntv2publicinterface.h:9693
HevcMessageInfo::header
HevcMessageHeader header
Definition: ntv2publicinterface.h:9826
CNTV2Card::HevcWriteRegister
virtual bool HevcWriteRegister(ULWord address, ULWord value, ULWord mask=0xffffffff, ULWord shift=0)
Write an hevc register.
Definition: ntv2hevc.cpp:32
HevcDeviceTransfer
Definition: ntv2publicinterface.h:9679
HevcTransferData::videoBuffer
ULWord64 videoBuffer
Definition: ntv2publicinterface.h:9809
HevcTransferData::encodeTime
LWord64 encodeTime
Definition: ntv2publicinterface.h:9819
HevcDeviceRegister::writeValue
ULWord writeValue
Definition: ntv2publicinterface.h:9395
HevcDeviceRegister::mask
ULWord mask
Definition: ntv2publicinterface.h:9397