AJA NTV2 SDK  17.5.0.1242
NTV2 SDK 17.5.0.1242
ntv2player4k.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
9 #ifndef _NTV2PLAYER4K_H
10 #define _NTV2PLAYER4K_H
11 
12 #include "ntv2democommon.h"
13 #include "ajabase/system/thread.h"
15 
16 
25 {
26  // Public Instance Methods
27  public:
33  NTV2Player4K (const PlayerConfig & inConfig);
34 
35  virtual ~NTV2Player4K (void);
36 
37  virtual AJAStatus Init (void);
38 
43  virtual AJAStatus Run (void);
44 
45  virtual void Quit (void);
46 
47  virtual bool IsRunning (void) const {return !mGlobalQuit;}
48 
53  virtual void GetACStatus (AUTOCIRCULATE_STATUS & outStatus);
54 
55 
56  // Protected Instance Methods
57  protected:
58  virtual AJAStatus SetUpVideo (void);
59  virtual AJAStatus SetUpAudio (void);
60  virtual bool RouteOutputSignal (void);
61  virtual AJAStatus SetUpHostBuffers (void);
62  virtual AJAStatus SetUpTestPatternBuffers (void);
63  virtual void StartConsumerThread (void);
64  virtual void ConsumeFrames (void);
65  virtual void StartProducerThread (void);
66  virtual void ProduceFrames (void);
67 
74  virtual uint32_t AddTone (ULWord * audioBuffer);
75 
82  virtual void SetupSDITransmitters (const NTV2Channel inFirstSDI, const UWord inNumSDIs);
83 
84  // Widget Routing
85  virtual bool Route4KDownConverter (void);
86  virtual bool RouteHDMIOutput (void);
87  virtual bool RouteFsToDLOut (void);
88  virtual bool RouteFsToCsc (void);
89  virtual bool RouteFsToSDIOut (void);
90  virtual bool RouteFsToTsiMux (void);
91  virtual bool RouteDLOutToSDIOut (void);
92  virtual bool RouteCscTo2xSDIOut (void);
93  virtual bool RouteCscTo4xSDIOut (void);
94  virtual bool RouteCscToDLOut (void);
95  virtual bool RouteTsiMuxToDLOut (void);
96  virtual bool RouteTsiMuxToCsc (void);
97  virtual bool RouteTsiMuxTo2xSDIOut (void);
98  virtual bool RouteTsiMuxTo4xSDIOut (void);
99 
100 
101  // Protected Class Methods
102  protected:
109  static void ConsumerThreadStatic (AJAThread * pThread, void * pContext);
110 
117  static void ProducerThreadStatic (AJAThread * pThread, void * pContext);
118 
119 
120  // Private Member Data
121  private:
122  typedef std::vector<NTV2Buffer> NTV2Buffers;
123 
124  PlayerConfig mConfig;
125  AJAThread mConsumerThread;
126  AJAThread mProducerThread;
127  CNTV2Card mDevice;
128  NTV2DeviceID mDeviceID;
129  NTV2TaskMode mSavedTaskMode;
130  ULWord mCurrentFrame;
131  ULWord mCurrentSample;
132  double mToneFrequency;
133  NTV2AudioSystem mAudioSystem;
134  NTV2FormatDesc mFormatDesc;
135 
136  bool mGlobalQuit;
137  AJATimeCodeBurn mTCBurner;
138  NTV2FrameDataArray mHostBuffers;
139  FrameDataRingBuffer mFrameDataRing;
140  NTV2Buffers mTestPatRasters;
141 
142 }; // NTV2Player4K
143 
144 #endif // _NTV2PLAYER4K_H
NTV2TaskMode
enum NTV2EveryFrameTaskMode NTV2TaskMode
NTV2Player4K::RouteDLOutToSDIOut
virtual bool RouteDLOutToSDIOut(void)
Sets up board routing from the Dual Link outputs to the SDI outputs.
Definition: ntv2player4k.cpp:947
NTV2Player4K::SetUpAudio
virtual AJAStatus SetUpAudio(void)
Performs all audio setup.
Definition: ntv2player4k.cpp:280
NTV2Player4K::RouteCscTo4xSDIOut
virtual bool RouteCscTo4xSDIOut(void)
Sets up board routing from the Color Space Converters to the 4xSDI outputs.
Definition: ntv2player4k.cpp:999
NTV2FormatDescriptor
Describes a video frame for a given video standard or format and pixel format, including the total nu...
Definition: ntv2formatdescriptor.h:41
NTV2Channel
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
Definition: ntv2enums.h:1334
NTV2Player4K::RouteFsToSDIOut
virtual bool RouteFsToSDIOut(void)
Sets up board routing from the Frame Stores to the SDI outputs.
Definition: ntv2player4k.cpp:856
NTV2Player4K::Init
virtual AJAStatus Init(void)
Initializes me and prepares me to Run.
Definition: ntv2player4k.cpp:107
NTV2Player4K::RouteTsiMuxTo4xSDIOut
virtual bool RouteTsiMuxTo4xSDIOut(void)
Sets up board routing from the Two Sample Interleave muxes to the 4xSDI outputs.
Definition: ntv2player4k.cpp:1160
NTV2DeviceID
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
NTV2Player4K::StartProducerThread
virtual void StartProducerThread(void)
Starts my producer thread.
Definition: ntv2player4k.cpp:1375
NTV2Player4K::RouteTsiMuxToDLOut
virtual bool RouteTsiMuxToDLOut(void)
Sets up board routing from the Two Sample Interleave muxes to the Dual Link outputs.
Definition: ntv2player4k.cpp:1043
NTV2Player4K::SetUpHostBuffers
virtual AJAStatus SetUpHostBuffers(void)
Sets up my host video & audio buffers.
Definition: ntv2player4k.cpp:336
NTV2Player4K::RouteCscToDLOut
virtual bool RouteCscToDLOut(void)
Sets up board routing from the Color Space Converters to the Dual Link outputs.
Definition: ntv2player4k.cpp:1021
AJAThread
Definition: thread.h:69
NTV2Player4K
I am an object that can play out a 4K or UHD test pattern (with timecode) to an output of an AJA devi...
Definition: ntv2player4k.h:24
timecodeburn.h
Declares the AJATimeCodeBurn class.
AJAStatus
AJAStatus
Definition: types.h:378
NTV2Player4K::Quit
virtual void Quit(void)
Gracefully stops me from running.
Definition: ntv2player4k.cpp:84
NTV2Player4K::ProduceFrames
virtual void ProduceFrames(void)
My producer thread that repeatedly produces video frames.
Definition: ntv2player4k.cpp:1395
NTV2Player4K::ProducerThreadStatic
static void ProducerThreadStatic(AJAThread *pThread, void *pContext)
This is the producer thread's static callback function that gets called when the producer thread star...
Definition: ntv2player4k.cpp:1385
ULWord
uint32_t ULWord
Definition: ajatypes.h:255
AUTOCIRCULATE_STATUS
This is returned from the CNTV2Card::AutoCirculateGetStatus function.
Definition: ntv2publicinterface.h:7193
NTV2Player4K::RouteTsiMuxToCsc
virtual bool RouteTsiMuxToCsc(void)
Sets up board routing from the Two Sample Interleave muxes to the color Space Converters.
Definition: ntv2player4k.cpp:1072
NTV2Player4K::RouteTsiMuxTo2xSDIOut
virtual bool RouteTsiMuxTo2xSDIOut(void)
Sets up board routing from the Two Sample Interleave muxes to the 2xSDI outputs.
Definition: ntv2player4k.cpp:1131
NTV2Player4K::RouteOutputSignal
virtual bool RouteOutputSignal(void)
Performs all widget/signal routing for playout.
Definition: ntv2player4k.cpp:442
UWord
uint16_t UWord
Definition: ajatypes.h:253
NTV2Player4K::StartConsumerThread
virtual void StartConsumerThread(void)
Starts my consumer thread.
Definition: ntv2player4k.cpp:1203
CNTV2Card
I interrogate and control an AJA video/audio capture/playout device.
Definition: ntv2card.h:28
NTV2FrameDataArray
std::vector< NTV2FrameData > NTV2FrameDataArray
A vector of NTV2FrameData elements.
Definition: ntv2democommon.h:152
NTV2Player4K::Run
virtual AJAStatus Run(void)
Runs me.
Definition: ntv2player4k.cpp:1189
NTV2Player4K::AddTone
virtual uint32_t AddTone(ULWord *audioBuffer)
Inserts audio tone (based on my current tone frequency) into the given audio buffer.
Definition: ntv2player4k.cpp:1444
NTV2Player4K::SetUpTestPatternBuffers
virtual AJAStatus SetUpTestPatternBuffers(void)
Creates my test pattern buffers.
Definition: ntv2player4k.cpp:383
ntv2democommon.h
This file contains some structures, constants, classes and functions that are used in some of the dem...
NTV2Player4K::RouteHDMIOutput
virtual bool RouteHDMIOutput(void)
Sets up board routing output via the HDMI (if available).
Definition: ntv2player4k.cpp:670
NTV2Player4K::~NTV2Player4K
virtual ~NTV2Player4K(void)
Definition: ntv2player4k.cpp:75
NTV2Player4K::RouteCscTo2xSDIOut
virtual bool RouteCscTo2xSDIOut(void)
Sets up board routing from the Color Space Converters to the 2xSDI outputs.
Definition: ntv2player4k.cpp:977
NTV2Player4K::NTV2Player4K
NTV2Player4K(const PlayerConfig &inConfig)
Constructs me using the given configuration settings.
Definition: ntv2player4k.cpp:54
NTV2Player4K::RouteFsToDLOut
virtual bool RouteFsToDLOut(void)
Sets up board routing from the Frame Stores to the Dual Link out.
Definition: ntv2player4k.cpp:792
NTV2Player4K::RouteFsToTsiMux
virtual bool RouteFsToTsiMux(void)
Sets up board routing from the Frame Stores to the Two Sample Interleave muxes.
Definition: ntv2player4k.cpp:888
NTV2Player4K::RouteFsToCsc
virtual bool RouteFsToCsc(void)
Sets up board routing from the Frame Stores to the Color Space Converters.
Definition: ntv2player4k.cpp:814
NTV2Player4K::ConsumeFrames
virtual void ConsumeFrames(void)
My consumer thread that repeatedly plays frames using AutoCirculate (until quit).
Definition: ntv2player4k.cpp:1225
NTV2Player4K::SetUpVideo
virtual AJAStatus SetUpVideo(void)
Performs all video setup.
Definition: ntv2player4k.cpp:203
NTV2Player4K::SetupSDITransmitters
virtual void SetupSDITransmitters(const NTV2Channel inFirstSDI, const UWord inNumSDIs)
Sets up bi-directional SDI transmitters.
Definition: ntv2player4k.cpp:602
PlayerConfig
Configures an NTV2Player instance.
Definition: ntv2democommon.h:319
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:3848
thread.h
Declares the AJAThread class.
NTV2Player4K::GetACStatus
virtual void GetACStatus(AUTOCIRCULATE_STATUS &outStatus)
Provides status information about my output (playout) process.
Definition: ntv2player4k.cpp:1480
NTV2Player4K::Route4KDownConverter
virtual bool Route4KDownConverter(void)
Sets up board routing for the 4K DownConverter to SDI Monitor (if available).
Definition: ntv2player4k.cpp:610
AJACircularBuffer< NTV2FrameData * >
NTV2Player4K::ConsumerThreadStatic
static void ConsumerThreadStatic(AJAThread *pThread, void *pContext)
This is the consumer thread's static callback function that gets called when the consumer thread star...
Definition: ntv2player4k.cpp:1214