I capture frames from a video signal provided to an AJA device's video input. I burn timecode into those frames, then deliver them to an output of the same AJA device with a 7-frame latency (by default). I make use of the AJACircularBuffer, which simplifies implementing a producer/consumer model, in which a "consumer" thread delivers burned-in frames to the AJA device output, and a "producer" thread captures raw frames from the AJA device input. I also demonstrate how to detect if an SDI input has embedded timecode, and if so, how AutoCirculate makes it available. I also show how to embed timecode into an SDI output signal using AutoCirculate during playout.
More...
#include <ntv2burn.h>
|
static void | PlayThreadStatic (AJAThread *pThread, void *pContext) |
| This is the playout thread's static callback function that gets called when the playout thread runs. This function gets "Attached" to the playout thread's AJAThread instance. More...
|
|
static void | CaptureThreadStatic (AJAThread *pThread, void *pContext) |
| This is the capture thread's static callback function that gets called when the capture thread runs. This function gets "Attached" to the AJAThread instance. More...
|
|
I capture frames from a video signal provided to an AJA device's video input. I burn timecode into those frames, then deliver them to an output of the same AJA device with a 7-frame latency (by default). I make use of the AJACircularBuffer, which simplifies implementing a producer/consumer model, in which a "consumer" thread delivers burned-in frames to the AJA device output, and a "producer" thread captures raw frames from the AJA device input. I also demonstrate how to detect if an SDI input has embedded timecode, and if so, how AutoCirculate makes it available. I also show how to embed timecode into an SDI output signal using AutoCirculate during playout.
Definition at line 30 of file ntv2burn.h.
◆ NTV2Burn()
Constructs me using the given configuration settings.
- Parameters
-
[in] | inConfig | Specifies the configuration parameters. |
- Note
- I'm not completely initialized and ready for use until after my Init method has been called.
Definition at line 26 of file ntv2burn.cpp.
◆ ~NTV2Burn()
◆ AnalogLTCInputHasTimecode()
bool NTV2Burn::AnalogLTCInputHasTimecode |
( |
void |
| ) |
|
|
protectedvirtual |
Returns true if there is a valid LTC signal on my device's primary analog LTC input port; otherwise returns false.
Definition at line 826 of file ntv2burn.cpp.
◆ CaptureFrames()
void NTV2Burn::CaptureFrames |
( |
void |
| ) |
|
|
protectedvirtual |
Repeatedly captures frames using AutoCirculate (until global quit flag set).
Definition at line 663 of file ntv2burn.cpp.
◆ CaptureThreadStatic()
void NTV2Burn::CaptureThreadStatic |
( |
AJAThread * |
pThread, |
|
|
void * |
pContext |
|
) |
| |
|
staticprotected |
This is the capture thread's static callback function that gets called when the capture thread runs. This function gets "Attached" to the AJAThread instance.
- Parameters
-
[in] | pThread | Points to the AJAThread instance. |
[in] | pContext | Context information to pass to the thread. (For this application, this will be set to point to the NTV2Burn instance.) |
Definition at line 651 of file ntv2burn.cpp.
◆ GetStatus()
Provides status information about my input (capture) and output (playout) processes.
- Parameters
-
[out] | outInputStatus | Receives the input status. |
[out] | outOutputStatus | Receives the output status. |
Definition at line 789 of file ntv2burn.cpp.
◆ Init()
Initializes me and prepares me to Run.
Definition at line 67 of file ntv2burn.cpp.
◆ InputSignalHasTimecode()
bool NTV2Burn::InputSignalHasTimecode |
( |
void |
| ) |
|
|
protectedvirtual |
Returns true if the current input signal has timecode embedded in it; otherwise returns false.
Definition at line 815 of file ntv2burn.cpp.
◆ PlayFrames()
void NTV2Burn::PlayFrames |
( |
void |
| ) |
|
|
protectedvirtual |
Repeatedly plays out frames using AutoCirculate (until global quit flag set).
Definition at line 551 of file ntv2burn.cpp.
◆ PlayThreadStatic()
void NTV2Burn::PlayThreadStatic |
( |
AJAThread * |
pThread, |
|
|
void * |
pContext |
|
) |
| |
|
staticprotected |
This is the playout thread's static callback function that gets called when the playout thread runs. This function gets "Attached" to the playout thread's AJAThread instance.
- Parameters
-
[in] | pThread | A valid pointer to the playout thread's AJAThread instance. |
[in] | pContext | Context information to pass to the thread. (For this application, this will be set to point to the NTV2Burn instance.) |
Definition at line 541 of file ntv2burn.cpp.
◆ Quit()
void NTV2Burn::Quit |
( |
void |
| ) |
|
|
virtual |
Gracefully stops me from running.
Definition at line 47 of file ntv2burn.cpp.
◆ RouteInputSignal()
void NTV2Burn::RouteInputSignal |
( |
void |
| ) |
|
|
protectedvirtual |
Sets up board routing for capture.
Definition at line 430 of file ntv2burn.cpp.
◆ RouteOutputSignal()
void NTV2Burn::RouteOutputSignal |
( |
void |
| ) |
|
|
protectedvirtual |
Sets up board routing for playout.
Definition at line 453 of file ntv2burn.cpp.
◆ Run()
Runs me.
- Note
- Do not call this method without first calling my Init method.
Definition at line 516 of file ntv2burn.cpp.
◆ SetupAudio()
Sets up everything I need for capturing and playing audio.
Definition at line 313 of file ntv2burn.cpp.
◆ SetupHostBuffers()
AJAStatus NTV2Burn::SetupHostBuffers |
( |
void |
| ) |
|
|
protectedvirtual |
◆ SetupVideo()
Sets up everything I need for capturing and playing video.
Definition at line 154 of file ntv2burn.cpp.
◆ StartCaptureThread()
void NTV2Burn::StartCaptureThread |
( |
void |
| ) |
|
|
protectedvirtual |
◆ StartPlayThread()
void NTV2Burn::StartPlayThread |
( |
void |
| ) |
|
|
protectedvirtual |
The documentation for this class was generated from the following files:
- /home/tcbuilder/buildAgent/work/df8e8cce5bebfd58/libajantv2/demos/ntv2burn/ntv2burn.h
- /home/tcbuilder/buildAgent/work/df8e8cce5bebfd58/libajantv2/demos/ntv2burn/ntv2burn.cpp