AJA NTV2 SDK  17.1.1.1245
NTV2 SDK 17.1.1.1245
ntv2player.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
9 #ifndef _NTV2PLAYER_H
10 #define _NTV2PLAYER_H
11 
12 #include "ntv2democommon.h"
13 #include "ajabase/system/thread.h"
15 
16 
25 {
26  // Public Instance Methods
27  public:
33  NTV2Player (const PlayerConfig & inConfig);
34 
35  virtual ~NTV2Player (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 
73  virtual uint32_t AddTone (NTV2FrameData & inFrameData);
74 
79  virtual bool OutputDestHasRP188BypassEnabled (const NTV2OutputDestination inOutputDest);
80 
85  virtual void DisableRP188Bypass (const NTV2OutputDestination inOutputDest);
86 
87 
88  // Protected Class Methods
89  protected:
96  static void ConsumerThreadStatic (AJAThread * pThread, void * pContext);
97 
104  static void ProducerThreadStatic (AJAThread * pThread, void * pContext);
105 
106 
107  // Private Member Data
108  private:
109  typedef std::vector<NTV2Buffer> NTV2Buffers;
110 
111  PlayerConfig mConfig;
112  AJAThread mConsumerThread;
113  AJAThread mProducerThread;
114  CNTV2Card mDevice;
115  NTV2TaskMode mSavedTaskMode;
116  ULWord mCurrentFrame;
117  ULWord mCurrentSample;
118  double mToneFrequency;
119  NTV2AudioSystem mAudioSystem;
120  NTV2FormatDesc mFormatDesc;
121  NTV2TCIndexes mTCIndexes;
122 
123  bool mGlobalQuit;
124  AJATimeCodeBurn mTCBurner;
125  NTV2FrameDataArray mHostBuffers;
126  FrameDataRingBuffer mFrameDataRing;
127  NTV2Buffers mTestPatRasters;
128 
129 }; // NTV2Player
130 
131 #endif // _NTV2PLAYER_H
NTV2TaskMode
enum NTV2EveryFrameTaskMode NTV2TaskMode
NTV2Player::RouteOutputSignal
virtual bool RouteOutputSignal(void)
Performs all widget/signal routing for playout.
Definition: ntv2player.cpp:400
NTV2OutputDestination
NTV2OutputDestination
Identifies a specific video output destination.
Definition: ntv2enums.h:1276
NTV2Player::StartConsumerThread
virtual void StartConsumerThread(void)
Starts my consumer thread.
Definition: ntv2player.cpp:495
NTV2FormatDescriptor
Describes a video frame for a given video standard or format and pixel format, including the total nu...
Definition: ntv2formatdescriptor.h:41
NTV2TCIndexes
std::set< NTV2TCIndex > NTV2TCIndexes
Definition: ntv2publicinterface.h:6849
NTV2FrameData
I encapsulate the video, audio and anc host buffers used in the AutoCirculate demos....
Definition: ntv2democommon.h:79
NTV2Player::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: ntv2player.cpp:706
NTV2Player
I play out SD or HD test pattern (with timecode) to an output of an AJA device with or without audio ...
Definition: ntv2player.h:24
NTV2Player::Init
virtual AJAStatus Init(void)
Initializes me and prepares me to Run.
Definition: ntv2player.cpp:111
AJAThread
Definition: thread.h:69
timecodeburn.h
Declares the AJATimeCodeBurn class.
NTV2Player::StartProducerThread
virtual void StartProducerThread(void)
Starts my producer thread.
Definition: ntv2player.cpp:696
AJAStatus
AJAStatus
Definition: types.h:378
ULWord
uint32_t ULWord
Definition: ajatypes.h:253
AUTOCIRCULATE_STATUS
This is returned from the CNTV2Card::AutoCirculateGetStatus function.
Definition: ntv2publicinterface.h:7160
NTV2Player::SetUpAudio
virtual AJAStatus SetUpAudio(void)
Performs all audio setup.
Definition: ntv2player.cpp:260
NTV2Player::~NTV2Player
virtual ~NTV2Player(void)
Definition: ntv2player.cpp:79
CNTV2Card
I interrogate and control an AJA video/audio capture/playout device.
Definition: ntv2card.h:28
NTV2Player::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: ntv2player.cpp:506
NTV2FrameDataArray
std::vector< NTV2FrameData > NTV2FrameDataArray
A vector of NTV2FrameData elements.
Definition: ntv2democommon.h:152
NTV2Player::ProduceFrames
virtual void ProduceFrames(void)
My producer thread that repeatedly produces video frames.
Definition: ntv2player.cpp:715
NTV2Player::DisableRP188Bypass
virtual void DisableRP188Bypass(const NTV2OutputDestination inOutputDest)
Disables the given SDI output's RP188 bypass.
Definition: ntv2player.cpp:870
ntv2democommon.h
This file contains some structures, constants, classes and functions that are used in some of the dem...
NTV2Player::OutputDestHasRP188BypassEnabled
virtual bool OutputDestHasRP188BypassEnabled(const NTV2OutputDestination inOutputDest)
Definition: ntv2player.cpp:854
NTV2Player::SetUpTestPatternBuffers
virtual AJAStatus SetUpTestPatternBuffers(void)
Creates my test pattern buffers.
Definition: ntv2player.cpp:349
NTV2Player::AddTone
virtual uint32_t AddTone(NTV2FrameData &inFrameData)
Inserts audio tone (based on my current tone frequency) into the given NTV2FrameData's audio buffer.
Definition: ntv2player.cpp:794
NTV2Player::NTV2Player
NTV2Player(const PlayerConfig &inConfig)
Constructs me using the given configuration settings.
Definition: ntv2player.cpp:58
NTV2Player::ConsumeFrames
virtual void ConsumeFrames(void)
My consumer thread that repeatedly plays frames using AutoCirculate (until quit).
Definition: ntv2player.cpp:520
NTV2Player::Quit
virtual void Quit(void)
Gracefully stops me from running.
Definition: ntv2player.cpp:88
NTV2Player::SetUpHostBuffers
virtual AJAStatus SetUpHostBuffers(void)
Sets up my host video & audio buffers.
Definition: ntv2player.cpp:304
PlayerConfig
Configures an NTV2Player instance.
Definition: ntv2democommon.h:310
NTV2Player::Run
virtual AJAStatus Run(void)
Runs me.
Definition: ntv2player.cpp:481
NTV2Player::SetUpVideo
virtual AJAStatus SetUpVideo(void)
Performs all video setup.
Definition: ntv2player.cpp:192
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
thread.h
Declares the AJAThread class.
NTV2Player::GetACStatus
virtual void GetACStatus(AUTOCIRCULATE_STATUS &outStatus)
Provides status information about my output (playout) process.
Definition: ntv2player.cpp:830
AJACircularBuffer< NTV2FrameData * >