AJA NTV2 SDK  18.1.0.2262
NTV2 SDK 18.1.0.2262
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 "ntv2democommon.h"
15 #include "ajabase/system/thread.h"
16 
17 
24 {
25  // Public Instance Methods
26  public:
32  NTV2Burn4KQuadrant (const BurnConfig & inConfig);
33  virtual ~NTV2Burn4KQuadrant ();
34 
38  virtual AJAStatus Init (void);
39 
44  virtual AJAStatus Run (void);
45 
49  virtual void Quit (void);
50 
56  virtual void GetACStatus (AUTOCIRCULATE_STATUS & outInputStatus, AUTOCIRCULATE_STATUS & outOutputStatus);
57 
58 
59  // Protected Instance Methods
60  protected:
64  virtual AJAStatus SetupInputVideo (void);
65 
69  virtual AJAStatus SetupOutputVideo (void);
70 
74  virtual AJAStatus SetupInputAudio (void);
75 
79  virtual AJAStatus SetupOutputAudio (void);
80 
84  virtual void RouteInputSignal (void);
85 
89  virtual void RouteOutputSignal (void);
90 
94  virtual AJAStatus SetupHostBuffers (void);
95 
99  virtual void StartPlayThread (void);
100 
104  virtual void PlayFrames (void);
105 
109  virtual void StartCaptureThread (void);
110 
114  virtual void CaptureFrames (void);
115 
116 
120  virtual bool InputSignalHasTimecode (void);
121 
122 
123  // Protected Class Methods
124  protected:
132  static void PlayThreadStatic (AJAThread * pThread, void * pContext);
133 
141  static void CaptureThreadStatic (AJAThread * pThread, void * pContext);
142 
148  static ULWord GetRP188RegisterForInput (const NTV2InputSource inInputSource);
149 
150  // Private Member Data
151  private:
153  BurnConfig mConfig;
154  AJAThread mPlayThread;
155  AJAThread mCaptureThread;
156  CNTV2Card mInputDevice;
157  CNTV2Card mOutputDevice;
158  NTV2DeviceID mInputDeviceID;
159  NTV2DeviceID mOutputDeviceID;
160  NTV2VideoFormat mVideoFormat;
161  NTV2TaskMode mInputSavedTaskMode;
162  NTV2TaskMode mOutputSavedTaskMode;
163  NTV2AudioSystem mInputAudioSystem;
164  NTV2AudioSystem mOutputAudioSystem;
165  bool mSingleDevice;
166  bool mGlobalQuit;
167  AJATimeCodeBurn mTCBurner;
168  uint32_t mQueueSize;
169  NTV2FormatDesc mFormatDesc;
170  NTV2FrameDataArray mHostBuffers;
171  CircularBuffer mFrameDataRing;
172 
173 }; // NTV2Burn4KQuadrant
174 
175 #endif // _NTV2BURN4KQUADRANT_H
NTV2AudioSystem
Used to identify an Audio System on an NTV2 device. See Audio System Operation for more information...
Definition: ntv2enums.h:3898
virtual void CaptureFrames(void)
Repeatedly captures frames using AutoCirculate (until global quit flag set).
virtual void Quit(void)
Gracefully stops me from running.
virtual bool InputSignalHasTimecode(void)
Returns true if the current input signal has timecode embedded in it; otherwise returns false...
I interrogate and control an AJA video/audio capture/playout device.
Definition: ntv2card.h:28
NTV2TaskMode
Describes the task mode state. See also: NTV2 Device Sharing.
AJAStatus
Definition: types.h:380
enum _NTV2VideoFormat NTV2VideoFormat
Identifies a particular video format.
static void CaptureThreadStatic(AJAThread *pThread, void *pContext)
This is the capture thread's static callback function that gets called when the capture thread runs...
static void PlayThreadStatic(AJAThread *pThread, void *pContext)
This is the playout thread's static callback function that gets called when the playout thread runs...
virtual void RouteOutputSignal(void)
Sets up board routing for playout.
virtual void StartPlayThread(void)
Starts my playout thread.
Declares the AJATimeCodeBurn class.
virtual void RouteInputSignal(void)
Sets up board routing for capture.
uint32_t ULWord
Definition: ajatypes.h:236
virtual AJAStatus SetupOutputVideo(void)
Sets up everything I need for playing 4K video.
virtual AJAStatus Init(void)
Initializes me and prepares me to Run.
virtual AJAStatus SetupInputAudio(void)
Sets up everything I need for capturing audio.
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
Declares the AJAThread class.
Describes a video frame for a given video standard or format and pixel format, including the total nu...
virtual AJAStatus Run(void)
Runs me.
Configures an NTV2Burn or NTV2FieldBurn instance.
static ULWord GetRP188RegisterForInput(const NTV2InputSource inInputSource)
Returns the RP188 DBB register number to use for the given NTV2InputSource.
NTV2InputSource
Identifies a specific video input source.
Definition: ntv2enums.h:1264
Instances of me can capture 4K/UHD video from one 4-channel AJA device, burn timecode into one quadra...
std::vector< NTV2FrameData > NTV2FrameDataArray
A vector of NTV2FrameData elements.
Declaration of AJACircularBuffer template class.
This is returned from the CNTV2Card::AutoCirculateGetStatus function.
virtual AJAStatus SetupOutputAudio(void)
Sets up everything I need for playing audio.
Declares the CNTV2Card class.
virtual AJAStatus SetupHostBuffers(void)
Sets up my circular buffers.
This file contains some structures, constants, classes and functions that are used in some of the dem...
virtual AJAStatus SetupInputVideo(void)
Sets up everything I need for capturing 4K video.
virtual void PlayFrames(void)
Repeatedly plays out frames using AutoCirculate (until global quit flag set).
NTV2Burn4KQuadrant(const BurnConfig &inConfig)
Constructs me using the given configuration settings.
virtual void StartCaptureThread(void)
Starts my capture thread.
virtual void GetACStatus(AUTOCIRCULATE_STATUS &outInputStatus, AUTOCIRCULATE_STATUS &outOutputStatus)
Provides status information about my input (capture) and output (playout) processes.