AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
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
NTV2AudioSystem
Used to identify an Audio System on an NTV2 device. See Audio System Operation for more information...
Definition: ntv2enums.h:3895
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: Sharing AJA Devices With Other Applications.
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:223
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:1262
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.