AJA NTV2 SDK  18.0.0.2122
NTV2 SDK 18.0.0.2122
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 
75  // Protected Class Methods
76  protected:
83  static void ConsumerThreadStatic (AJAThread * pThread, void * pContext);
84 
91  static void ProducerThreadStatic (AJAThread * pThread, void * pContext);
92 
93 
94  // Private Member Data
95  private:
96  typedef std::vector<NTV2Buffer> NTV2Buffers;
97 
98  PlayerConfig mConfig;
99  AJAThread mConsumerThread;
100  AJAThread mProducerThread;
101  CNTV2Card mDevice;
102  NTV2TaskMode mSavedTaskMode;
103  ULWord mCurrentFrame;
104  ULWord mCurrentSample;
105  double mToneFrequency;
106  NTV2AudioSystem mAudioSystem;
107  NTV2FormatDesc mFormatDesc;
108  NTV2TCIndexes mTCIndexes;
109 
110  bool mGlobalQuit;
111  AJATimeCodeBurn mTCBurner;
112  NTV2FrameDataArray mHostBuffers;
113  FrameDataRingBuffer mFrameDataRing;
114  NTV2Buffers mTestPatRasters;
115 
116 }; // NTV2Player
117 
118 #endif // _NTV2PLAYER_H
virtual void StartProducerThread(void)
Starts my producer thread.
Definition: ntv2player.cpp:643
NTV2AudioSystem
Used to identify an Audio System on an NTV2 device. See Audio System Operation for more information...
Definition: ntv2enums.h:3895
std::set< NTV2TCIndex > NTV2TCIndexes
virtual AJAStatus SetUpTestPatternBuffers(void)
Creates my test pattern buffers.
Definition: ntv2player.cpp:348
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
Declares the AJATimeCodeBurn class.
uint32_t ULWord
Definition: ajatypes.h:223
static void ProducerThreadStatic(AJAThread *pThread, void *pContext)
This is the producer thread&#39;s static callback function that gets called when the producer thread star...
Definition: ntv2player.cpp:653
Declares the AJAThread class.
Describes a video frame for a given video standard or format and pixel format, including the total nu...
virtual void ProduceFrames(void)
My producer thread that repeatedly produces video frames.
Definition: ntv2player.cpp:662
virtual uint32_t AddTone(NTV2FrameData &inFrameData)
Inserts audio tone (based on my current tone frequency) into the given NTV2FrameData&#39;s audio buffer...
Definition: ntv2player.cpp:741
virtual AJAStatus SetUpAudio(void)
Performs all audio setup.
Definition: ntv2player.cpp:260
virtual AJAStatus SetUpVideo(void)
Performs all video setup.
Definition: ntv2player.cpp:189
virtual void ConsumeFrames(void)
My consumer thread that repeatedly plays frames using AutoCirculate (until quit). ...
Definition: ntv2player.cpp:496
NTV2Player(const PlayerConfig &inConfig)
Constructs me using the given configuration settings.
Definition: ntv2player.cpp:55
std::vector< NTV2FrameData > NTV2FrameDataArray
A vector of NTV2FrameData elements.
virtual AJAStatus SetUpHostBuffers(void)
Sets up my host video & audio buffers.
Definition: ntv2player.cpp:303
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
virtual ~NTV2Player(void)
Definition: ntv2player.cpp:76
This is returned from the CNTV2Card::AutoCirculateGetStatus function.
virtual AJAStatus Run(void)
Runs me.
Definition: ntv2player.cpp:457
virtual void Quit(void)
Gracefully stops me from running.
Definition: ntv2player.cpp:85
I encapsulate the video, audio and anc host buffers used in the AutoCirculate demos. I&#39;m a more modern version of the AVDataBuffer.
This file contains some structures, constants, classes and functions that are used in some of the dem...
Configures an NTV2Player instance.
virtual bool IsRunning(void) const
Definition: ntv2player.h:47
virtual bool RouteOutputSignal(void)
Performs all widget/signal routing for playout.
Definition: ntv2player.cpp:399
virtual void StartConsumerThread(void)
Starts my consumer thread.
Definition: ntv2player.cpp:471
virtual void GetACStatus(AUTOCIRCULATE_STATUS &outStatus)
Provides status information about my output (playout) process.
Definition: ntv2player.cpp:777
I am a circular frame buffer that simplifies implementing a type-safe producer/consumer model for pro...
virtual AJAStatus Init(void)
Initializes me and prepares me to Run.
Definition: ntv2player.cpp:108
static void ConsumerThreadStatic(AJAThread *pThread, void *pContext)
This is the consumer thread&#39;s static callback function that gets called when the consumer thread star...
Definition: ntv2player.cpp:482