AJA NTV2 SDK  17.1.1.1245
NTV2 SDK 17.1.1.1245
ntv2dolbycapture.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
9 #ifndef _NTV2DOLBYCAPTURE_H
10 #define _NTV2DOLBYCAPTURE_H
11 
12 #include "ntv2democommon.h"
13 #include "ajabase/system/thread.h"
14 
15 
20 {
21  public:
22  std::string fAudioDataFilePath;
23  std::string fDolbyDataFilePath;
26 
30  inline explicit DolbyCaptureConfig (const std::string & inDeviceSpec = "0")
31  : CaptureConfig(inDeviceSpec),
34  {
35  }
36  AJALabelValuePairs Get (const bool inCompact = false) const;
38 
39 std::ostream & operator << (std::ostream & ioStrm, const DolbyCaptureConfig & inObj);
40 
41 
46 {
47  // Public Instance Methods
48  public:
54  NTV2DolbyCapture (const DolbyCaptureConfig & inConfig);
55 
56  virtual ~NTV2DolbyCapture ();
57 
61  virtual AJAStatus Init (void);
62 
67  virtual AJAStatus Run (void);
68 
72  virtual void Quit (void);
73 
80  virtual void GetACStatus (ULWord & outGoodFrames, ULWord & outDroppedFrames, ULWord & outBufferLevel);
81 
82 
83  // Protected Instance Methods
84  protected:
88  virtual AJAStatus SetupVideo (void);
89 
93  virtual AJAStatus SetupAudio (void);
94 
98  virtual bool RouteInputSignal (void);
99 
103  virtual void SetupHostBuffers (void);
104 
108  virtual void StartProducerThread (void);
109 
113  virtual void CaptureFrames (void);
114 
118  virtual void StartConsumerThread (void);
119 
123  virtual void ConsumeFrames (void);
124 
129  virtual uint32_t RecoverAudio (const NTV2Buffer & inAncBuffer, const uint32_t inAncSize, NTV2Buffer & outAudioBuffer);
130 
138  virtual uint32_t RecoverDolby (const NTV2Buffer & inAudioBuffer, const uint32_t inAudioSize, NTV2Buffer & outDolbyBuffer);
139 
140  // Protected Class Methods
141  protected:
149  static void ConsumerThreadStatic (AJAThread * pThread, void * pContext);
150 
158  static void ProducerThreadStatic (AJAThread * pThread, void * pContext);
159 
160 
161  // Private Member Data
162  private:
163  AJAThread mConsumerThread;
164  AJAThread mProducerThread;
165  CNTV2Card mDevice;
166  NTV2DeviceID mDeviceID;
167  DolbyCaptureConfig mConfig;
168  NTV2VideoFormat mVideoFormat;
169  NTV2FormatDesc mFormatDesc;
170  NTV2TaskMode mSavedTaskMode;
171  NTV2AudioSystem mAudioSystem;
172  NTV2FrameDataArray mHostBuffers;
173  FrameDataRingBuffer mAVCircularBuffer;
174  bool mGlobalQuit;
175  uint32_t mDolbyState;
176  uint32_t mDolbyLength;
177 
178 }; // NTV2DolbyCapture
179 
180 #endif // _NTV2CAPTURE_H
DolbyCaptureConfig::fDolbyDataFilePath
std::string fDolbyDataFilePath
Optional path to Dolby binary data file.
Definition: ntv2dolbycapture.h:23
NTV2DolbyCapture::ProducerThreadStatic
static void ProducerThreadStatic(AJAThread *pThread, void *pContext)
This is the capture thread's static callback function that gets called when the capture thread runs....
Definition: ntv2dolbycapture.cpp:420
NTV2TaskMode
enum NTV2EveryFrameTaskMode NTV2TaskMode
DolbyCaptureConfig::fDoAudioFilter
bool fDoAudioFilter
If true, capture only audio anc.
Definition: ntv2dolbycapture.h:24
NTV2DolbyCapture::NTV2DolbyCapture
NTV2DolbyCapture(const DolbyCaptureConfig &inConfig)
Constructs me using the given settings.
Definition: ntv2dolbycapture.cpp:24
NTV2FormatDescriptor
Describes a video frame for a given video standard or format and pixel format, including the total nu...
Definition: ntv2formatdescriptor.h:41
DolbyCaptureConfig
This class is used to configure an NTV2Capture instance.
Definition: ntv2dolbycapture.h:19
NTV2Buffer
A generic user-space buffer object that has an address and a length. Used most often to share an arbi...
Definition: ntv2publicinterface.h:5993
NTV2DolbyCapture::RouteInputSignal
virtual bool RouteInputSignal(void)
Sets up device routing for capture.
Definition: ntv2dolbycapture.cpp:252
NTV2DolbyCapture::GetACStatus
virtual void GetACStatus(ULWord &outGoodFrames, ULWord &outDroppedFrames, ULWord &outBufferLevel)
Provides status information about my input (capture) process.
Definition: ntv2dolbycapture.cpp:532
NTV2DolbyCapture::Init
virtual AJAStatus Init(void)
Initializes me and prepares me to Run.
Definition: ntv2dolbycapture.cpp:71
NTV2DolbyCapture::CaptureFrames
virtual void CaptureFrames(void)
Repeatedly captures frames using AutoCirculate (until global quit flag set).
Definition: ntv2dolbycapture.cpp:432
NTV2DolbyCapture::~NTV2DolbyCapture
virtual ~NTV2DolbyCapture()
Definition: ntv2dolbycapture.cpp:39
NTV2DeviceID
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
DolbyCaptureConfig
DolbyCaptureConfig DolbyCaptureConfig
This class is used to configure an NTV2Capture instance.
NTV2DolbyCapture::SetupHostBuffers
virtual void SetupHostBuffers(void)
Sets up my circular buffers.
Definition: ntv2dolbycapture.cpp:206
NTV2DolbyCapture::SetupVideo
virtual AJAStatus SetupVideo(void)
Sets up everything I need for capturing video.
Definition: ntv2dolbycapture.cpp:157
AJAThread
Definition: thread.h:69
DolbyCaptureConfig::fAudioDataFilePath
std::string fAudioDataFilePath
Optional path to Audio binary data file.
Definition: ntv2dolbycapture.h:22
AJAStatus
AJAStatus
Definition: types.h:378
NTV2DolbyCapture::ConsumerThreadStatic
static void ConsumerThreadStatic(AJAThread *pThread, void *pContext)
This is the consumer thread's static callback function that gets called when the consumer thread runs...
Definition: ntv2dolbycapture.cpp:292
ULWord
uint32_t ULWord
Definition: ajatypes.h:253
DolbyCaptureConfig::Get
AJALabelValuePairs Get(const bool inCompact=(0)) const
Definition: ntv2dolbycapture.cpp:702
CaptureConfig
This class is used to configure an NTV2Capture instance.
Definition: ntv2democommon.h:265
NTV2DolbyCapture::RecoverAudio
virtual uint32_t RecoverAudio(const NTV2Buffer &inAncBuffer, const uint32_t inAncSize, NTV2Buffer &outAudioBuffer)
Recover audio from ancillary data.
Definition: ntv2dolbycapture.cpp:541
NTV2DolbyCapture::StartConsumerThread
virtual void StartConsumerThread(void)
Starts my frame consumer thread.
Definition: ntv2dolbycapture.cpp:281
NTV2DolbyCapture::SetupAudio
virtual AJAStatus SetupAudio(void)
Sets up everything I need for capturing audio.
Definition: ntv2dolbycapture.cpp:199
CNTV2Card
I interrogate and control an AJA video/audio capture/playout device.
Definition: ntv2card.h:28
NTV2DolbyCapture::StartProducerThread
virtual void StartProducerThread(void)
Starts my capture thread.
Definition: ntv2dolbycapture.cpp:409
NTV2FrameDataArray
std::vector< NTV2FrameData > NTV2FrameDataArray
A vector of NTV2FrameData elements.
Definition: ntv2democommon.h:152
false
#define false
Definition: ntv2devicefeatures.h:25
ntv2democommon.h
This file contains some structures, constants, classes and functions that are used in some of the dem...
DolbyCaptureConfig::DolbyCaptureConfig
DolbyCaptureConfig(const std::string &inDeviceSpec="0")
Constructs a default DolbyCaptureConfig.
Definition: ntv2dolbycapture.h:30
DolbyCaptureConfig::fDoFrameStats
bool fDoFrameStats
if true, output per frame statistics
Definition: ntv2dolbycapture.h:25
NTV2DolbyCapture::Run
virtual AJAStatus Run(void)
Runs me.
Definition: ntv2dolbycapture.cpp:268
NTV2VideoFormat
enum _NTV2VideoFormat NTV2VideoFormat
Identifies a particular video format.
NTV2DolbyCapture::Quit
virtual void Quit(void)
Gracefully stops me from running.
Definition: ntv2dolbycapture.cpp:50
NTV2DolbyCapture
I capture HDMI Dolby audio from an HDMI input of an AJA device.
Definition: ntv2dolbycapture.h:45
AJALabelValuePairs
std::vector< AJALabelValuePair > AJALabelValuePairs
An ordered sequence of label/value pairs.
Definition: info.h:69
NTV2AudioSystem
NTV2AudioSystem
Used to identify an Audio System on an NTV2 device. See Audio System Operation for more information.
Definition: ntv2enums.h:3814
operator<<
std::ostream & operator<<(std::ostream &ioStrm, const DolbyCaptureConfig &inObj)
Definition: ntv2dolbycapture.cpp:711
thread.h
Declares the AJAThread class.
NTV2DolbyCapture::RecoverDolby
virtual uint32_t RecoverDolby(const NTV2Buffer &inAudioBuffer, const uint32_t inAudioSize, NTV2Buffer &outDolbyBuffer)
Recover Dolby data from the given audio data.
Definition: ntv2dolbycapture.cpp:646
AJACircularBuffer< NTV2FrameData * >
NTV2DolbyCapture::ConsumeFrames
virtual void ConsumeFrames(void)
Repeatedly consumes frames from the circular buffer (until global quit flag set).
Definition: ntv2dolbycapture.cpp:304