AJA NTV2 SDK  17.1.1.1245
NTV2 SDK 17.1.1.1245
ntv2burn4kquadrant.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef _NTV2BURN4KQUADRANT_H
9 #define _NTV2BURN4KQUADRANT_H
10 
11 #include "ntv2card.h"
12 //#include "ntv2devicefeatures.h"
13 //#include "ntv2devicescanner.h"
14 #include "ntv2democommon.h"
15 //#include "ntv2task.h"
16 //#include "ntv2utils.h"
17 //#include "ntv2rp188.h"
18 //#include "ajabase/common/types.h"
19 //#include "ajabase/common/videotypes.h"
20 //#include "ajabase/common/timecode.h"
23 #include "ajabase/system/thread.h"
24 //#include "ajabase/system/process.h"
25 //#include "ajabase/system/systemtime.h"
26 
27 
34 {
35  // Public Instance Methods
36  public:
42  NTV2Burn4KQuadrant (const BurnConfig & inConfig);
43  virtual ~NTV2Burn4KQuadrant ();
44 
48  virtual AJAStatus Init (void);
49 
54  virtual AJAStatus Run (void);
55 
59  virtual void Quit (void);
60 
66  virtual void GetACStatus (AUTOCIRCULATE_STATUS & outInputStatus, AUTOCIRCULATE_STATUS & outOutputStatus);
67 
68 
69  // Protected Instance Methods
70  protected:
74  virtual AJAStatus SetupInputVideo (void);
75 
79  virtual AJAStatus SetupOutputVideo (void);
80 
84  virtual AJAStatus SetupInputAudio (void);
85 
89  virtual AJAStatus SetupOutputAudio (void);
90 
94  virtual void RouteInputSignal (void);
95 
99  virtual void RouteOutputSignal (void);
100 
104  virtual AJAStatus SetupHostBuffers (void);
105 
109  virtual void StartPlayThread (void);
110 
114  virtual void PlayFrames (void);
115 
119  virtual void StartCaptureThread (void);
120 
124  virtual void CaptureFrames (void);
125 
126 
130  virtual bool InputSignalHasTimecode (void);
131 
132 
133  // Protected Class Methods
134  protected:
142  static void PlayThreadStatic (AJAThread * pThread, void * pContext);
143 
151  static void CaptureThreadStatic (AJAThread * pThread, void * pContext);
152 
158  static ULWord GetRP188RegisterForInput (const NTV2InputSource inInputSource);
159 
160  // Private Member Data
161  private:
163  BurnConfig mConfig;
164  AJAThread mPlayThread;
165  AJAThread mCaptureThread;
166  CNTV2Card mInputDevice;
167  CNTV2Card mOutputDevice;
168  NTV2DeviceID mInputDeviceID;
169  NTV2DeviceID mOutputDeviceID;
170  NTV2VideoFormat mVideoFormat;
171  NTV2TaskMode mInputSavedTaskMode;
172  NTV2TaskMode mOutputSavedTaskMode;
173  NTV2AudioSystem mInputAudioSystem;
174  NTV2AudioSystem mOutputAudioSystem;
175  bool mSingleDevice;
176  bool mGlobalQuit;
177  AJATimeCodeBurn mTCBurner;
178  uint32_t mQueueSize;
179  NTV2FormatDesc mFormatDesc;
180  NTV2FrameDataArray mHostBuffers;
181  CircularBuffer mFrameDataRing;
182 
183 }; // NTV2Burn4KQuadrant
184 
185 #endif // _NTV2BURN4KQUADRANT_H
NTV2Burn4KQuadrant::SetupOutputAudio
virtual AJAStatus SetupOutputAudio(void)
Sets up everything I need for playing audio.
Definition: ntv2burn4kquadrant.cpp:378
NTV2Burn4KQuadrant::RouteOutputSignal
virtual void RouteOutputSignal(void)
Sets up board routing for playout.
Definition: ntv2burn4kquadrant.cpp:492
NTV2TaskMode
enum NTV2EveryFrameTaskMode NTV2TaskMode
NTV2Burn4KQuadrant::PlayThreadStatic
static void PlayThreadStatic(AJAThread *pThread, void *pContext)
This is the playout thread's static callback function that gets called when the playout thread runs....
Definition: ntv2burn4kquadrant.cpp:571
NTV2Burn4KQuadrant::Init
virtual AJAStatus Init(void)
Initializes me and prepares me to Run.
Definition: ntv2burn4kquadrant.cpp:72
NTV2FormatDescriptor
Describes a video frame for a given video standard or format and pixel format, including the total nu...
Definition: ntv2formatdescriptor.h:41
NTV2Burn4KQuadrant::NTV2Burn4KQuadrant
NTV2Burn4KQuadrant(const BurnConfig &inConfig)
Constructs me using the given configuration settings.
Definition: ntv2burn4kquadrant.cpp:19
NTV2Burn4KQuadrant::StartPlayThread
virtual void StartPlayThread(void)
Starts my playout thread.
Definition: ntv2burn4kquadrant.cpp:560
NTV2Burn4KQuadrant::StartCaptureThread
virtual void StartCaptureThread(void)
Starts my capture thread.
Definition: ntv2burn4kquadrant.cpp:664
NTV2DeviceID
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
NTV2Burn4KQuadrant::CaptureFrames
virtual void CaptureFrames(void)
Repeatedly captures frames using AutoCirculate (until global quit flag set).
Definition: ntv2burn4kquadrant.cpp:689
NTV2Burn4KQuadrant::Quit
virtual void Quit(void)
Gracefully stops me from running.
Definition: ntv2burn4kquadrant.cpp:58
AJAThread
Definition: thread.h:69
timecodeburn.h
Declares the AJATimeCodeBurn class.
AJAStatus
AJAStatus
Definition: types.h:378
NTV2Burn4KQuadrant::SetupOutputVideo
virtual AJAStatus SetupOutputVideo(void)
Sets up everything I need for playing 4K video.
Definition: ntv2burn4kquadrant.cpp:263
ULWord
uint32_t ULWord
Definition: ajatypes.h:253
AUTOCIRCULATE_STATUS
This is returned from the CNTV2Card::AutoCirculateGetStatus function.
Definition: ntv2publicinterface.h:7160
NTV2Burn4KQuadrant::RouteInputSignal
virtual void RouteInputSignal(void)
Sets up board routing for capture.
Definition: ntv2burn4kquadrant.cpp:464
ntv2card.h
Declares the CNTV2Card class.
CNTV2Card
I interrogate and control an AJA video/audio capture/playout device.
Definition: ntv2card.h:28
NTV2Burn4KQuadrant::SetupInputAudio
virtual AJAStatus SetupInputAudio(void)
Sets up everything I need for capturing audio.
Definition: ntv2burn4kquadrant.cpp:350
NTV2FrameDataArray
std::vector< NTV2FrameData > NTV2FrameDataArray
A vector of NTV2FrameData elements.
Definition: ntv2democommon.h:152
NTV2Burn4KQuadrant::Run
virtual AJAStatus Run(void)
Runs me.
Definition: ntv2burn4kquadrant.cpp:545
NTV2InputSource
NTV2InputSource
Identifies a specific video input source.
Definition: ntv2enums.h:1221
NTV2Burn4KQuadrant::SetupInputVideo
virtual AJAStatus SetupInputVideo(void)
Sets up everything I need for capturing 4K video.
Definition: ntv2burn4kquadrant.cpp:206
NTV2Burn4KQuadrant::PlayFrames
virtual void PlayFrames(void)
Repeatedly plays out frames using AutoCirculate (until global quit flag set).
Definition: ntv2burn4kquadrant.cpp:581
NTV2Burn4KQuadrant::GetRP188RegisterForInput
static ULWord GetRP188RegisterForInput(const NTV2InputSource inInputSource)
Returns the RP188 DBB register number to use for the given NTV2InputSource.
Definition: ntv2burn4kquadrant.cpp:796
NTV2Burn4KQuadrant::SetupHostBuffers
virtual AJAStatus SetupHostBuffers(void)
Sets up my circular buffers.
Definition: ntv2burn4kquadrant.cpp:420
ntv2democommon.h
This file contains some structures, constants, classes and functions that are used in some of the dem...
NTV2VideoFormat
enum _NTV2VideoFormat NTV2VideoFormat
Identifies a particular video format.
NTV2Burn4KQuadrant
Instances of me can capture 4K/UHD video from one 4-channel AJA device, burn timecode into one quadra...
Definition: ntv2burn4kquadrant.h:33
NTV2Burn4KQuadrant::GetACStatus
virtual void GetACStatus(AUTOCIRCULATE_STATUS &outInputStatus, AUTOCIRCULATE_STATUS &outOutputStatus)
Provides status information about my input (capture) and output (playout) processes.
Definition: ntv2burn4kquadrant.cpp:788
NTV2Burn4KQuadrant::~NTV2Burn4KQuadrant
virtual ~NTV2Burn4KQuadrant()
Definition: ntv2burn4kquadrant.cpp:37
circularbuffer.h
Declaration of AJACircularBuffer template class.
AJATimeCodeBurn
Definition: timecodeburn.h:19
NTV2AudioSystem
NTV2AudioSystem
Used to identify an Audio System on an NTV2 device. See Audio System Operation for more information.
Definition: ntv2enums.h:3814
BurnConfig
Configures an NTV2Burn or NTV2FieldBurn instance.
Definition: ntv2democommon.h:376
thread.h
Declares the AJAThread class.
NTV2Burn4KQuadrant::InputSignalHasTimecode
virtual bool InputSignalHasTimecode(void)
Returns true if the current input signal has timecode embedded in it; otherwise returns false.
Definition: ntv2burn4kquadrant.cpp:810
AJACircularBuffer< NTV2FrameData * >
NTV2Burn4KQuadrant::CaptureThreadStatic
static void CaptureThreadStatic(AJAThread *pThread, void *pContext)
This is the capture thread's static callback function that gets called when the capture thread runs....
Definition: ntv2burn4kquadrant.cpp:677