This article suggests how to port application code that builds against an older NTV2 SDK to the most recent SDK.
(Last updated: October, 2024)
These four steps will cover 80% of the porting effort:
InitAutoCirculate
with AutoCirculateInitForInput
or AutoCirculateInitForOutput
StartAutoCirculate
with AutoCirculateStart
StopAutoCirculate
with AutoCirculateStop
AbortAutoCirculate
with AutoCirculateStop(channel, true)
PauseAutoCirculate
with AutoCirculatePause
or AutoCirculateResume
TransferWithAutoCirculate
with AutoCirculateTransfer
FlushAutoCirculate
with AutoCirculateFlush
PrerollAutoCirculate
with AutoCirculatePreRoll
GetAutoCirculate
with AutoCirculateGetStatus
GetFrameStamp
with AutoCirculateGetFrame
If it compiles and links without error, congratulations! — your application is compliant with the latest SDK.
If not, make note of the symbols in the compilation errors. This article will show you how to fix them.
NOTE: You can always try to build with a new SDK, but turn off (comment-out) the
#define NTV2_DEPRECATE…
macros inajatypes.h
which restores most of the old symbols and APIs — but this is not a permanent solution.
SDK version 13.0 was the first to have the source directories match on all three platforms (Linux, MacOS and Windows). In addition, the SDK was shipped as a .zip file on Windows and Linux for the first time.
ntv2projects/classes
now should refer to ajalibraries/ajantv2/src
.ntv2projects/includes
now should refer to ajalibraries/ajantv2/includes
.ajastuff/includes
now should refer to ajalibraries/ajabase/includes
.#include "ajastuff/
with #include "ajabase/
.The contents of a number of source and header files have become obsolete and/or assumed into other source/header files. The obsolete files may be removed in a future SDK.
Obsolete/superceded implementation files:
ntv2colorcorrection.cpp
ntv2procamp.cpp
ntv2status.cpp
ntv2testpattern.cpp
xena2vidproc.cpp
Obsolete/superceded headers:
ntv2boardscan.h
– Replace all occurrences of #include "ntv2boardscan.h"
with #include "ntv2devicescanner.h"
ntv2boardfeatures.h
– Replace all occurrences of #include "ntv2boardfeatures.h"
with #include "ntv2devicefeatures.h"
ntv2choosableboard.h
ntv2colorcorrection.h
– Replace all occurrences of #include "ntv2colorcorrection.h"
with #include "ntv2card.h"
ntv2procamp.h
– Replace all occurrences of #include "ntv2procamp.h"
with #include "ntv2card.h"
ntv2status.h
– Replace all occurrences of #include "ntv2status.h"
with #include "ntv2card.h"
ntv2testpattern.h
– Replace all occurrences of #include "ntv2testpattern.h"
with #include "ntv2card.h"
ntv2vidproc.h
– Replace all occurrences of #include "ntv2vidproc.h"
with #include "ntv2card.h"
ntv2vidprocmasks.h
resample.h
– Replace all occurrences of #include "resample.h"
with #include "ntv2resample.h"
testpatterndata.h
testpatterngendata.h
transcode.h
– Replace all occurrences of #include "transcode.h"
with #include "ntv2transcode.h"
verticalfilter.h
– Replace all occurrences of #include "verticalfilter.h"
with #include "ntv2verticalfilter.h"
xena2routing.h
– Replace all occurrences of #include "xena2routing.h"
with #include "ntv2signalrouter.h"
xena2vidproc.h
– Replace all occurrences of #include "xena2vidproc.h"
with #include "ntv2card.h"
xenaserialcontrol.h
– Replace all occurrences of #include "xenaserialcontrol.h"
with #include "ntv2serialcontrol.h"
It’s a good practice to start at the Knowledgebase article for the SDK version your application is currently built for, then “walk” forward through the Knowledgebase to each successive SDK, noting the API Changes. This section condenses many of these changes into a series of search/replace steps, for your convenience.
NTV2_TCDEST_…
with NTV2_TCINDEX_…
NTV2_TCSOURCE_…
with NTV2_TCINDEX_…
NTV2DeviceGetNumAudioStreams
with NTV2DeviceGetNumAudioSystems
NTV2DeviceCanDoLTCOutN(id,N)
with NTV2DeviceGetNumLTCOutputs(id) > N
NTV2BoardCanDo…
with NTV2DeviceCanDo…
NTV2BoardGetNum…
with NTV2DeviceGetNum…
NTV2BoardType
.NTV2DeviceType
, DEVICETYPE_UNKNOWN
and/or DEVICETYPE_NTV2
.CNTV2Card::Open
calls should have at most two parameters: the index number and an optional host name (now a std::string
).NTV2DeviceTypeString
function.BOARDTYPE_SCANNABLE
.BOARDTYPE_NTV2
.BOARDTYPE_AS_COMPILED
.BOARD_ID_…
with DEVICE_ID_…
.NTV2BoardSubType
.BOARDSUBTYPE_…
.NTV2_V2_STANDARD_…
with NTV2_STANDARD_…
.NTV2V2Standard
with NTV2Standard
.IS_PROGRESSIVE_NTV2Standard
and IS_PROGRESSIVE_STANDARD
with NTV2_IS_PROGRESSIVE_STANDARD
.NTV2_IS_VALID_NTV2Standard
and NTV2_IS_VALID_NTV2V2Standard
with NTV2_IS_VALID_STANDARD
.NTV2FrameDimensions
value was used, replace all occurrences of .cx
or .cy
with .Width()
and .Height()
respectively.IsKonaIPDevice
with IsIPDevice
.AJATestPatternGen
with NTV2TestPatternGen
.getTestPatternList
with calls to getTestPatternNames
.AJATestPattern…
data types with NTV2TestPattern…
ones.AJATestPattEx…
enums with NTV2_TestPatt_…
ones.HDMIIn
output crosspoint IDs are now numbered, so replace NTV2_XptHDMIIn…
with e.g. NTV2_XptHDMIIn1
.NTV2FormatDescriptor
must #include "ntv2formatdescriptor.h"
(or include another header file that includes it).NTV2VANCMode
.GetFormatDescriptor
with the equivalent NTV2FormatDescriptor
constructor.GetVideoWriteSize (videoFormat, pixelFormat, isVancEnabled, isWideVanc)
with GetVideoWriteSize(videoFormat, pixelFormat, vancMode)
SetEnableVANCData
with SetVANCMode
.GetEnableVANCData (&isVancEnabled, &isTallVanc, channel)
with GetVANCMode (vancMode, channel)
IsCaptionChannel
with call to IsLine21CaptionChannel
IsTextChannel
with call to IsLine21TextChannel
kCaptionLog_
constants were removed.GetDefaultCaptionLogOutputStream
and SetDefaultCaptionLogOutputStream
were removed.Log
, LogIf
and SetLogStream
methods are deprecated. Don’t use them.CXena2VidProc
class with CNTV2Card
.GetXena2VidProcMode
, GetXena2VidProc2Mode
, GetXena2VidProc3Mode
, etc. with GetMixerMode
, specifying the Mixer index number 0, 1, 2, etc. as appropriate.SetXena2VidProcMode
, SetXena2VidProc2Mode
, SetXena2VidProc3Mode
, etc. with SetMixerMode
, specifying the Mixer index number 0, 1, 2, etc. as appropriate.GetMixCoefficient
, GetMix2Coefficient
, GetMix3Coefficient
, etc. with GetMixerCoefficient
, specifying the Mixer index number 0, 1, 2, etc. as appropriate.SetMixCoefficient
, SetMix2Coefficient
, SetMix3Coefficient
, etc. with SetMixerCoefficient
, specifying the Mixer index number 0, 1, 2, etc. as appropriate.GetXena2VidProcInputControl
, GetXena2VidProc2InputControl
, GetXena2VidProc3InputControl
, etc. with GetMixerFGInputControl
for NTV2_CHANNEL1
or GetMixerBGInputControl
for NTV2_CHANNEL2
, specifying the Mixer index number 0, 1, 2, etc. as appropriate.SetXena2VidProcInputControl
, SetXena2VidProc2InputControl
, SetXena2VidProc3InputControl
, etc. with SetMixerFGInputControl
for NTV2_CHANNEL1 or SetMixerBGInputControl
for NTV2_CHANNEL2, specifying the Mixer index number 0, 1, 2, etc. as appropriate.GetSplitMode
, SetSplitMode
, and SetSplitParameters
– this feature is no longer supported by AJA devices.When a “getter” method has a non-constant-reference return argument, we recommend using that instead of pointers — e.g., replace GetXXXX(&variable)
with GetXXXX(variable)
.
CNTV2Task
-based timecode capture/playout (see AutoCircTimeCodeTask
) is no longer supported in 12.4 (or later) drivers. The CNTV2Task
and AUTOCIRCULATE_TASK_STRUCT
API was hacked into the SDK many years ago to allow AutoCirculate clients to frame-accurately set/get timecode to/from SDI spigots other than the channel being circulated. This added a great deal of complexity to the driver and was impossible to scale in order to fix the absence of embedded Field2 VITC in interlaced video. Given our limited resources, we had to simplify the kernel driver and didn’t have sufficient time to back-port the old task-based behavior. We apologize for the inconvenience. If you must frame-accurately set/get timecode to/from SDI spigots that don’t correspond to the AutoCirculate channel, you MUST use the new AUTOCIRCULATE_TRANSFER
class and AutoCirculateTransfer
function. A porting guide is here.CNTV2ColorCorrection
, CNTV2TestPattern
, CNTV2VidProc
, CXena2VidProc
, and CNTV2ProcAmp
have all been deprecated, and their residual functions and member data has been folded into CNTV2Card
. Henceforth, CNTV2Card
is now the only class to be used to talk to an AJA device.NTV2DeviceCanDoPCMDetection
function and “per-audio-channel-pair” PCM detection member functions of CNTV2Card
now operate with some newer AJA devices (Corvid44, Kona4 … with newer firmware installed).CNTV2AncPacket
and CNTV2AncPackets
classes were finally removed from the ‘ajacc’ library. The NTV2CCPlayer
demo now uses the ‘ajaanc’ library.NTV2_DEPRECATE_12_5
is defined in ajatypes.h
for this release (and can be undefined there, if necessary, to avoid having to make any code changes to accommodate API changes).NTV2_DEPRECATE
is now defined by default (in ajatypes.h
). The old, deprecated APIs will be disappearing!NTV2_POINTER
: New CopyFrom
, SwapWith
, and GetRingChangedByteRange
methods. IsContentEqual
has been enhanced with new byte offset & count parameters.AUTOCIRCULATE_STATUS
: New inquiry methods: GetAudioSystem
, IsStopped
, WithAudio
, IsInput
, IsOutput
and GetChannel
.CNTV2Card::AutoCirculateGetFrameStamp
— now returns full complement of captured timecodes.CNTV2Card::WaitForOutputVerticalInterrupt
and CNTV2Card::WaitForInputVerticalInterrupt
— now have an optional repeatCount parameter (defaults to 1).CNTV2Card::BankSelectReadRegisters
— has been replaced by BankSelectReadRegister
.CNTV2Card::BankSelectWriteRegisters
— has been replaced by BankSelectWriteRegister
.NTV2RegInfo
— added several new convenience methods.NTV2FormatDescriptor
— added several new constructors, plus GetFirstChangedRow
, GetChangedLines
, and other convenience methods.NTV2SMPTELineNumber
— added several new convenience methods.HevcCommand
& HevcDeviceCommand
— several new “change encode parameter” options, “change picture type”, etc.NTV2V2Standard
(rolled into existing NTV2Standard
)NTV2RoutingEntry
— This will likely require simple code changes. A handy porting guide is here.CNTV2Card::DownloadLUTToHW
NTV2BankRegPair
— no longer needed.NTV2VANCMode
— enum to permit deprecation of APIs using the “tall” and “taller” booleans.NTV2DoubleArray
— for greater ease in getting/setting LUTs.NTV2RegisterExpert
— one-stop-shopping for register info.CNTV2Card::LoadLUTTables
and CNTV2Card::GetLUTTables
methods — which accept NTV2DoubleArray
s.CNTV2Card::GetAESOutputSource
and CNTV2Card::SetAESOutputSource
methods — missing from the API until now.CNTV2Card::IsAudioChannelPairPresent
and CNTV2Card::GetDetectedAudioChannelPairs
methods — missing from the API until now.CNTV2Card::GetDieTemperature
— now you can read the FPGA die temperature in any NTV2DieTempScale
you like!AJAAncillaryList::AddVANCData
— for “tall” and “taller” VANC geometries in 10-bit YCbCr frame buffers.NTV2RasterLineOffsets
— an ordered sequence of zero-based line offsets into a frame buffer.NTV2InputSourceSet
— a set of distinct NTV2InputSource
values.FRAME_STAMP
message — to see all timecodes being carried in any AutoCirculate frame.NTV2FormatDescriptor
— Added support for some planar pixel formats.CNTV2Card
class
SetAudio20BitMode
and GetAudio20BitMode
functions — enables or disables 20-bit mode for a given audio engine’s embedder/de-embedder (disabled is the normal 24-bit mode).GetAudioOutputEmbedderState
and SetAudioOutputEmbedderState
functions — to enable or disable an SDI output’s audio embedder.AutoCirculateResume
and AutoCirculateFlush
functions — to optionally clear the “dropped frames” tally for an active AutoCirculate channel.GetConnectedInput
function — to discover the NTV2InputCrosspoint
a given NTV2OutputCrosspoint
is feeding.EnableHDMIHDRDolbyVision
and GetHDMIHDRDolbyVisionEnabled
functions.GetFBSizeAndCountFromHW
is now private.j2kDecoderConfig
and j2kDecoderConfig
classesCNTV2ConfigTs2022
, CNTV2MailBox
and CNTV2MBController
classes — many changesTSGenerator
, PESGen
, PATGen
, PMTGen
, and ADPGen
classes replaced the CNTV2MBController
classNTV2DeviceCanDoJ2K
functionNTV2DeviceCanDo2110
functionWriteRegister
/ReadRegister
to store/retrieve arbitrary 4-byte values in “registers” starting at kVRegFirstOEM
up to kVRegLast
..ko
) has finally been replaced with “ajantv2” to match the naming used on macOS and Windows.CNTV2Card
functions GetRunningFirmwareDate
, GetRunningFirmwareTime
and GetRunningFirmwareRevision
functions — to detect if the installed device firmware is the firmware that‘s currently running.NTV2FormatDescriptor
:
PlaneToString
and ByteOffsetToPlane
functionsByteOffsetToRasterLine
, RasterLineToByteOffset
and IsAtLineStart
functions.GetLineOffsetFromSMPTELine
function.IsSDFormat
function.CNTV2Card
:
DeviceCanDoAudioMixer
and DeviceHasMicInput
functions, to detect if the audio mixer firmware and/or microphone input hardware is present or not.GetAudioMixer…
and SetAudioMixer…
functions — to support the new audio mixer firmware in the Io4K and Io4K-Plus.GetSDIInput6GPresent
and GetSDIInput12GPresent
functions — to support the new 6G/12G SDI connectors on the Io4K-Plus.GetSDIOut6GEnable
/SetSDIOut6GEnable
and GetSDIOut12GEnable/
SetSDIOut12GEnable` functions — to support the new 6G/12G SDI connectors on the Io4K-Plus.GetAnalogAudioIOConfiguration
/SetAnalogAudioIOConfiguration
functions — to support the new analog audio connector on the Io4K-Plus.CanConnect
function now implemented - validates internal xpt routes.GetEnableHDMIOutUserOverride
, EnableHDMIOutUserOverride
, GetEnableHDMIOutCenterCrop
and EnableHDMIOutCenterCrop
functions (only for devices that support HDMI 2.0).VirtualDataWrite
and VirtualDataRead
functions writing/reading HDMI metadata.GetAncExtractorRunState
and GetAncInserterRunState
functions (for devices with custom Anc inserter/extractor firmware).AUTOCIRCULATE_TRANSFER
:
acHDR10PlusDynamicMetaData
member for optionally transmitting HDR10+ dynamic metadata per-frame.NTV2DeviceCanDo12GOut
functionNTV2DeviceHasSPIv5
functionNTV2DeviceCanDoAudioMixer
functionNTV2DeviceHasLEDAudioMeters
, NTV2DeviceHasHeadphoneJack
, NTV2DeviceHasAudioMonitorRCAJacks
, and NTV2DeviceHasBiDirectionalAnalogAudio
functionsNTV2DeviceGetAudioMixerSystem
, NTV2DeviceCanDoAudioOut
and NTV2DeviceCanDoAudioIn
functionsNTV2StandardSet
collection and NTV2DeviceGetSupportedStandards
function.FindFirstMatchingRegisterNumber
and GetNormalizedFrameGeometry
functions.GetFirstMatchingVideoFormat
and GetNormalizedFrameGeometry
functions.NTV2IpErrorEnumToString
function.CNTV2SignalRouter
ResetFromRegisters
, GetWidgetIDs
, GetAllWidgetInputs
and GetAllRoutingRegInfo
functions.CNTV2Config2022
, CNTV2Config2110
and CNTV2MBController
classes & cousins
NTV2Stream
has new NTV2_METADATA_STREAM
and NTV2_UNUSED_STREAM
values (NTV2_AUDIO2_STREAM
was dropped).NTV2AudioSource
has a new NTV2_AUDIO_MIC
value.NTV2InputAudioSelect
has a new NTV2_MicInSelect
value.NTV2SDITransportType
has new NTV2_SDITransport_6G
and NTV2_SDITransport_12G
values.NTV24kTransportType
has a new NTV2_4kTransport_12g_6g_1wire
value.NTV2WidgetID
values: NTV2_Wgt12GSDIIn1…4
and NTV2_Wgt12GSDIOut1…4
, NTV2_WgtHDMIIn1v4
and NTV2_WgtHDMIOut1v4
.NTV2AudioMixerChannel
enum.NTV2AnalogAudioIO
enum to describe Io4K+’s analog audio connector configuration (8-in, 8-out, 4-in/4-out, or 4-out/4-in).VPIDStandard
values have changed.NTV2IpError
enum to describe IP errors.NTV2FrameBufferFormat
s that were unused in our supported devices to support new 3-plane planar formats in the Corvid44:
NTV2_FBF_8BIT_QREZ
is now NTV2_FBF_8BIT_YCBCR_420PL3
;NTV2_FBF_UNUSED_23
is now NTV2_FBF_8BIT_YCBCR_422PL3
;NTV2_FBF_UNUSED_26
is now NTV2_FBF_10BIT_YCBCR_420PL3_LE
;NTV2_FBF_UNUSED_27
is now NTV2_FBF_10BIT_YCBCR_422PL3_LE
;NTV2_FBF_10BIT_YCBCR_420PL
is now NTV2_FBF_10BIT_YCBCR_420PL2
;NTV2_FBF_10BIT_YCBCR_422PL
is now NTV2_FBF_10BIT_YCBCR_422PL2
;NTV2_FBF_8BIT_YCBCR_420PL
is now NTV2_FBF_8BIT_YCBCR_420PL2
;NTV2_FBF_8BIT_YCBCR_422PL
is now NTV2_FBF_8BIT_YCBCR_422PL2
.NTV2VirtualData
message.CNTV2Config2110
is used to set up the card. The 2110 firmware is designed to operate locked to PTP timing.ntv2konaipjsonsetup
program has been enhanced for both 2022 and 2110 use. For 2022 J2K, it should be used in conjunction with the ntv2konaipj2ksetup
program. A -k
option has been added which lists the fields supported for each protocol. The changes in 2022-7 and 2022-6 configuration described above are reflected in these programs too.CNTV2Card
:
DMAReadAnc
/DMAWriteAnc
methods;GetHDMIInputVideoFormat
, GetHDMIInputStatusRegister
and GetHDMIInputColor
now accept an optional NTV2Channel
number.NTV2_POINTER
:
std::vector
s of uint64_t
, uint32_t
, uint16_t
and uint8_t
.Dump
methodCNTV2SupportLogger
class — Generates NTV2 support log files for debug purposesAJAAncillaryList
and AJAAncillaryData
: — many changes to support SMPTE 2110 Ancillary data streams.using namespace
statement in ntv2rp188.h
--vanc
command-line option.AJAPreviewWidget
and NTV2FrameGrabber
classes.-lrt
).SetVideoFormat
with one of the new Tsi video formats (e.g. NTV2_FORMAT_4096x2160p_2400
).SetVideoFormat
with one of the “4x” video formats (e.g. NTV2_FORMAT_4x2048x1080p_2400
).CNTV2Card
functions that return a value using a pointer parameter have been deprecated. We’ve standardized on the use of non-constant reference parameters instead.NTV2DeviceID
of the KONA 5 (12G firmware) has changed from DEVICE_ID_KONA5_12G
to DEVICE_ID_KONA5_4X12G
.NTV2DeviceID
of the Corvid44-12G, currently DEVICE_ID_CORVID44_12G
, is subject to change.AJAAncillaryList
:
SetFromIPAncData
and SetFromSDIAncData
have been deprecated in favor of the new, generic SetFromDeviceAncBuffers
function.GetSDITransmitData
has been deprecated in favor of the SDI-default GetTransmitData
function. If RTP is needed/desired, then the GetIPTransmitData
function can be used instead.AJAAncillaryList
instance).IsIncludingZeroLengthPackets
, SetIncludeZeroLengthPackets
, GetExcludedZeroLengthPacketCount
, ResetExcludedZeroLengthPacketCount
) that controls whether or not AddVANCData
/AddReceivedAncillaryData
will add zero-length packets.AJAAncillaryDataLocation
:
AJAAncillaryDataSpace
has been deprecated in favor of the new, special Horizontal Offset and Line Number constants (e.g. AJAAncDataHorizOffset_AnyHanc
).Set
function (with 6 parameters, one of which is ignored now) has been deprecated in favor of using the existing SetDataLink
, SetDataStream
, SetDataChannel
, etc. functions.AJAAncillaryData
:
SetDataLocation
, GetDataLocation
(and friends) have been deprecated in favor of independently manipulating/interrogating AJAAncillaryDataLocation
.AJAAncillaryBufferFormat
members to AJAAncillaryData
instances.CNTV2Card
:
SetRP188Source
has been renamed SetRP188SourceFilter
to better reflect what it actually does.GetRP188BypassSource
/SetRP188BypassSource
functions.AUTOCIRCULATE_WITH_HDMIAUX
option to enable ingest/playout of HDMI InfoFrame auxiliary data (e.g. HDR data).GetQuadQuadSquaresEnable
/SetQuadQuadSquaresEnable
functions to support UHD2.DMAReadAnc
/DMAWriteAnc
now have an optional NTV2Channel
parameter for S2110 IP devices to specify which Anc FrameStore and extractor/inserter is being used.AncInsertSetIPParams
function for configuring the S2110 ancillary data inserter.GetMixerFGMatteEnabled
/SetMixerFGMatteEnabled
, GetMixerBGMatteEnabled
/SetMixerBGMatteEnabled
, and GetMixerMatteColor
/SetMixerMatteColor
functions.GetAudioOutputAESSyncModeBit
/SetAudioOutputAESSyncModeBit
functions for falsifying the AES “Sync Mode” in outgoing embedded SDI audio.DMABufferLock
/DMABufferUnlockAll
functions for long-term locking of host buffer memory in kernel space.SetVPIDTransferCharacteristics
, SetVPIDColorimetry
and SetVPIDVPIDLuminance
functions.NTV2DeviceCanDoWarmBootFPGA
and NTV2DeviceCanDo8KVideo
functions.NTV2VPIDTransferCharacteristics
, NTV2VPIDColorimetry
and NTV2VPIDLuminance
enum types.NTV2FormatDescriptor
:
GetWriteableRowAddress
function.NTV2_POINTER
:
Dump
function (to std::string
).AUTOCIRCULATE_TRANSFER
:
SetAllOutputTimeCodes
can now be told whether to set VITC2 or not.NTV2DeviceGetSupportedGeometries
, HasVANCGeometries
, GetRelatedGeometries
, GetVANCModeForGeometry
, GetStandardFromGeometry
functions.Is8KFormat
function.NTV2MixerKeyerModeToString
, NTV2MixerInputControlToString
, and NTV2VideoLimitingToString
functions.GetFirstMatchingVideoFormat
now takes into account psf.NTV2TestPatternGen
:
ConvertLine_8bitABGR_to_48bitRGB
ConvertLine_8bitABGR_to_10bitABGR
ConvertLine_2vuy_to_yuy2
ConvertLine_8bitABGR_to_10bitRGBDPXLE
ConvertLine_8bitABGR_to_24bitRGB
ConvertLine_8bitABGR_to_24bitBGR
CNTV2Card::SetFrameBufferFormat
has three new, optional parameters for setting the HDR characteristics of the FrameStore/Channel, which allows the driver to properly decorate the output VPID for any output fed by the FrameStore. They default to NTV2_VPID_TC_SDR_TV
, NTV2_VPID_Color_Rec709
and NTV2_VPID_Luminance_YCbCr
.CNTV2Card::GetNTV2VideoFormat
was changed to correctly detect 1080i/psf 23.98/24.00 fps dual-link 3G RGB. Unfortunately, this breaks 1080i@4798/4800 detection, since they’re electrically identical. This will be corrected in a future SDK by consulting the input VPID.DEVICE_ID_CORVID44_8KMK
replaces NTV2DeviceID DEVICE_ID_CORVID44_12G
— same capabilities:
DEVICE_ID_CORVID44_8K
:
DEVICE_ID_KONA5_8KMK
:
DEVICE_ID_KONA5_8K
replaces NTV2DeviceID DEVICE_ID_KONA5_4X12G
— same capabilities:
AJAAncillaryList
:
AddAncillaryData
for appending packets from another AJAAncillaryList
.GetIPTransmitDataLength
function.AJAAncillaryData
:
IS_KNOWN_AJAAncillaryDataType
macro.AJARTPAncPayloadHeader
class.CNTV2Card
:
NTV2_POINTER
-based version of the DMABufferLock
function.DMAClearAncRegion
, GetAncRegionOffsetAndSize
and GetAncRegionOffsetFromBottom
functions.GetRawAudioTimer
function.AutoCirculateInitForInput
, AutoCirculateInitForOutput
and FindUnallocatedFrames
now use UWord
s instead of UByte
s for frame numbers, in order to handle frame numbers over 255.GetConnectedInputs
routing function.GetLTCInputPresent
can now answer for a second LTC input port, for devices that have them.AncExtractGetDefaultDIDs
can now optionally return DIDs for SD audio packets instead of just HD ones.LocalLoadBarsTestPattern
function.NTV2DeviceCanDoHFRRGB
function to test if the device supports RGB 1080p at more than 50Hz.DEVICE_ID_CORVID44_12G
has been deprecated and replaced by DEVICE_ID_CORVID44_8KMK
.DEVICE_ID_CORVID44_8K
device ID for the new bitfile that supports up to 8K YUV or RGB in/out with no CSCs or Mixer/Keyers.DEVICE_ID_KONA5_4X12G
has been deprecated and replaced by DEVICE_ID_KONA5_8K
.DEVICE_ID_KONA5_8KMK
device ID for the new KONA 5 bitfile.NTV2_FBF_12BIT_RGB_PACKED
frame buffer format, an AJA-specific 12-bit uncompressed RGB format.NTV2_IS_UHD2_FULL_VIDEO_FORMAT
macro.R2_DEPRECATE
macro.NTV2AncillaryDataRegion
enum.UByteSequence
data type, a std::vector
of UByte
values.HDRDriverValues
struct.RP188SourceFilterSelect
to eventually replace the poorly-named RP188SourceSelect
enum type.NTV2FormatDescriptor
:
NTV2_FBF_12BIT_RGB_PACKED
pixel format.AUTOCIRCULATE_STATUS
:
GetMode
function.NTV2BreakoutTypeToString
and NTV2AncDataRgnToStr
functions.GetNTV2HDMIInputSourceForIndex
is now slated for eventual deprecation.NTV2TestPatternGen
:
DrawTestPattern
function that conveniently accepts an NTV2FormatDescriptor
.canDrawTestPattern
function.NTV2_IS_VALID_PATTERN
macro.Convert16BitARGBTo12BitRGBPacked
function.CNTV2VPID
:
NTV2Capture::SetupVideo
.eOutput1
) to time-out.New Device Support:
CNTV2Card
:
DMABufferLock
functions to have the driver also lock down the segment map in kernel memory; New DMABufferUnlock
function to unlock buffers locked by DMABufferLock
; New DMABufferAutoLock
function.IsDynamicDevice
, LoadDynamicDevice
, etc.).GetDeviceFrameInfo
and DeviceAddressToFrameNumber
functions.GetTsiMuxSyncFail
function (requires firmware support).AutoCirculateInitForInput
and AutoCirculateInitForOutput
functions is now ignored if a legitimate frame range is specified in the “inStartFrameNumber” and “inEndFrameNumber” parameters.ApplySignalRoute
function that accepts a std::map
of input-to-output crosspoint connections.GetBitfileInfoString
function.GetVPIDTransferCharacteristics
, GetVPIDColorimetry
, GetVPIDVPIDLuminance
.NTV2ChannelSet
s, for configuring multiple channels or SDI connectors in one API call.ResetFrom
function to reset the CNTV2SignalRouter
instance from a given NTV2XptConnections
map.GetConnectionsFromRegs
, CompareConnections
and CreateFromString
class methods.NTV2XptConnection
to augment the NTV2Connection
pair.NTV2XptConnections
to replace the poorly-named NTV2ActualConnections
mapping.NTV2FormatDescriptor
:
GetTotalBytes
function returns the total number of bytes required to hold the raster, including all planes of planar formats (which used to require multiple calls to GetTotalRasterBytes
).AUTOCIRCULATE_STATUS
:
OptionFlags
, WithCustomAnc
, WithRP188
, WithLTC
, IsFieldMode
and WithHDMIAuxData
functions.GetNTV2FrameRateFromNumeratorDenominator
function.Make10BitBlackLine
, Make10BitWhiteLine
, Make10BitLine
, SetRasterLinesBlack
, and CopyRaster
functions to ULWord
s (uint32_t
) to accommodate larger 8K/UHD2 rasters.SetLLDPInfo
and GetLLDPInfo
functions to CNTV2Config2110
class.Convert16BitARGBTo12BitRGBPacked
function.CNTV2VPID
:
VersionString
, StandardString
, PictureRateString
, SamplingString
, ChannelString
, DynamicRangeString
, BitDepthString
, LinkString
, AudioString
.-b|--board
command line option used in most demos has been deprecated in favor of -d|--device
.?
for -d|--device
lists all available devices and exits the demo.--anc
to record the number of F1 & F2 anc bytes captured per-frame.-a
option still enables anc capture, but the --anc
option now requires a filePath parameter, and it records the raw captured anc data into a binary data file (that can be played using ntv2player).--anc
option that will inject/play raw anc data supplied by the binary data file specified as its parameter. (ntv2capture can now create such binary anc files.)-p|--pattern
option now accepts pattern names or standard web color names.-v|--videoFormat
option for specifying video format to override current device video format.--vanc
option for specifying vanc mode.--pixelFormat
option for specifying frame buffer pixel format.CNTV2Card
:
GetDeviceFrameInfo
overload.AncInsertGetReadInfo
and AncExtractGetWriteInfo
member functions.SetVANCShiftMode
, SetNumberAudioChannels
, SetAudioBufferSize
, SetAudioLoopBack
, and SetSDIOutputAudioSystem
to operate on more than one channel, audio system or widget in a single function call.GetActiveFrameDimensions
, GetNumberActiveLines
, SetPCIAccessFrame
, GetPCIAccessFrame
and FlipFlopPage
.GetBaseAddress
, GetRegisterBaseAddress
and GetXena2FlashBaseAddress
first deprecated in SDK 16.0 now produce compile-time warnings when used.SDRAMAuditor
class used by CNTV2SupportLogger
to detect device SDRAM utilization clashes or conflicts.NTV2BitfileHeaderParser
class is now used commonly by all firmware-related classes for bitfile header parsing.NTV2TestPatternGen
:
DrawTestPattern
, first deprecated in SDK 16.0, now produce compile-time warnings when used.NTV2FormatDescriptor
:
GetVideoWriteSize
function.GetAudioSamplesPerSecond
, NTV2BitfileTypeToString
functions.NTV2DeviceCanDoMultiLinkAudio
, NTV2DeviceGetNumLUTBanks
functions.The NTV2 SDK became open-source as of version 17.0. See the open-source documentation for SDK changes after 17.0.