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 AutoCirculateInitForOutputStartAutoCirculate with AutoCirculateStartStopAutoCirculate with AutoCirculateStopAbortAutoCirculate with AutoCirculateStop(channel, true)PauseAutoCirculate with AutoCirculatePause or AutoCirculateResumeTransferWithAutoCirculate with AutoCirculateTransferFlushAutoCirculate with AutoCirculateFlushPrerollAutoCirculate with AutoCirculatePreRollGetAutoCirculate with AutoCirculateGetStatusGetFrameStamp with AutoCirculateGetFrameIf 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.hwhich 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.cppntv2procamp.cppntv2status.cppntv2testpattern.cppxena2vidproc.cppObsolete/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.hntv2colorcorrection.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.hresample.h – Replace all occurrences of #include "resample.h" with #include "ntv2resample.h"testpatterndata.htestpatterngendata.htranscode.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 NTV2DeviceGetNumAudioSystemsNTV2DeviceCanDoLTCOutN(id,N) with NTV2DeviceGetNumLTCOutputs(id) > NNTV2BoardCanDo… 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 IsLine21CaptionChannelIsTextChannel with call to IsLine21TextChannelkCaptionLog_ 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::DownloadLUTToHWNTV2BankRegPair — 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 NTV2DoubleArrays.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.NTV2FrameBufferFormats 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::vectors 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_48bitRGBConvertLine_8bitABGR_to_10bitABGRConvertLine_2vuy_to_yuy2ConvertLine_8bitABGR_to_10bitRGBDPXLEConvertLine_8bitABGR_to_24bitRGBConvertLine_8bitABGR_to_24bitBGRCNTV2Card::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 UWords instead of UBytes 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.NTV2ChannelSets, 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 ULWords (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.