28 int main (
int argc,
const char ** argv)
35 int channelNumber (1);
36 int doMultiFormat (0);
44 {
"device",
'd',
POPT_ARG_STRING, &pDeviceSpec, 0,
"device to use",
"index#, serial#, or model" },
45 {
"channel",
'c',
POPT_ARG_INT, &channelNumber, 0,
"channel to use",
"1-8" },
47 {
"pixelFormat",
'p',
POPT_ARG_STRING, &pPixelFormat, 0,
"pixel format to use",
"'?' or 'list' to list" },
48 {
"frames", 0,
POPT_ARG_STRING, &pFramesSpec, 0,
"frames to Stream",
"num[@min] or min-max" },
49 {
"videoFormat",
'v',
POPT_ARG_STRING, &pVideoFormat, 0,
"video format to produce",
"'?' or 'list' to list" },
55 {cerr <<
"## ERROR: " << popt.
errorStr() << endl;
return 2;}
57 {cout << argv[0] <<
", NTV2 SDK " <<
::NTV2Version() << endl;
return 0;}
60 const string deviceSpec (pDeviceSpec ? pDeviceSpec :
"0");
67 if ((channelNumber < 1) || (channelNumber > 8))
68 {cerr <<
"## ERROR: Invalid channel number " << channelNumber <<
" -- expected 1 thru 8" << endl;
return 1;}
72 const string videoFormatStr (pVideoFormat ? pVideoFormat :
"");
75 if (videoFormatStr ==
"?" || videoFormatStr ==
"list")
78 { cerr <<
"## ERROR: Invalid '--videoFormat' value '" << videoFormatStr <<
"' -- expected values:" << endl
84 const string pixelFormatStr (pPixelFormat ? pPixelFormat :
"");
86 if (pixelFormatStr ==
"?" || pixelFormatStr ==
"list")
90 cerr <<
"## ERROR: Invalid '--pixelFormat' value '" << pixelFormatStr <<
"' -- expected values:" << endl
96 static const string legalFramesSpec (
"{frameCount}[@{firstFrameNum}] or {firstFrameNum}-{lastFrameNum}");
97 const string framesSpec (pFramesSpec ? pFramesSpec :
"");
98 if (!framesSpec.empty())
101 if (!parseResult.empty())
102 {cerr <<
"## ERROR: Bad 'frames' spec '" << framesSpec <<
"'\n## " << parseResult << endl;
return 1;}
105 {cerr <<
"## ERROR: Bad 'frames' spec '" << framesSpec <<
"'\n## Expected " << legalFramesSpec << endl;
return 1;}
108 string ancFilePath (pAncFilePath ? pAncFilePath :
"");
122 {cout <<
"## ERROR: Initialization failed: " <<
::AJAStatusToString(status) << endl;
return 1;}
133 cout <<
" Active Repeat Queue" << endl
134 <<
" Count Count Depth" << endl;
virtual bool IsRunning(void) const
int main(int argc, const char **argv)
bool fSuppressAudio
If true, suppress audio; otherwise generate & xfer audio tone.
ULWord64 mActiveCount
Number of active transfers.
I play out SD or HD test pattern (with timecode) to an output of an AJA device with or without audio ...
static AJAStatus Open(bool incrementRefCount=false)
NTV2OutputDestination NTV2ChannelToOutputDestination(const NTV2Channel inChannel, const NTV2IOKinds inKinds=NTV2_IOKINDS_SDI)
Converts the given NTV2Channel value into its ordinary equivalent NTV2OutputDestination.
#define AJA_FAILURE(_status_)
virtual AJAStatus Run(void)
Runs me.
static NTV2VideoFormat GetVideoFormatFromString(const std::string &inStr, const NTV2VideoFormatKinds inKinds=VIDEO_FORMATS_SDHD, const std::string &inDevSpec=std::string())
Returns the NTV2VideoFormat that matches the given string.
static std::string GetPixelFormatStrings(const NTV2PixelFormatKinds inKinds=PIXEL_FORMATS_ALL, const std::string inDevSpec=std::string())
std::string setFromString(const std::string &inStr)
void SignalHandler(int inSignal)
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They're also commonly use...
bool fTransmitLTC
If true, embed LTC; otherwise embed VITC.
std::string NTV2Version(const bool inDetailed=false)
static std::string GetVideoFormatStrings(const NTV2VideoFormatKinds inKinds=VIDEO_FORMATS_SDHD, const std::string inDevSpec=std::string())
static void Sleep(const int32_t inMilliseconds)
Suspends execution of the current thread for a given number of milliseconds.
NTV2PixelFormat fPixelFormat
The pixel format to use.
virtual const std::string & errorStr(void) const
static bool gGlobalQuit((0))
NTV2VideoFormat fVideoFormat
The video format to use.
virtual AJAStatus Init(void)
Initializes me and prepares me to Run.
NTV2OutputDest fOutputDest
The desired output connector to use.
bool fDoMultiFormat
If true, enable device-sharing; otherwise take exclusive control of device.
ULWord64 mRepeatCount
Number of repeated transfers.
std::string & strip(std::string &str, const std::string &ws)
virtual void GetStreamStatus(NTV2StreamChannel &outStatus)
Provides status information about my output (playout) process.
NTV2Channel fOutputChannel
The device channel to use.
static bool IsValidDevice(const std::string &inDeviceSpec)
NTV2ACFrameRange fFrames
AutoCirculate frame count or range.
std::string AJAStatusToString(const AJAStatus inStatus, const bool inDetailed)
Configures an NTV2Player instance.
#define NTV2_IS_VALID_FRAME_BUFFER_FORMAT(__s__)
ULWord GetQueueDepth(void)
Gets the queue depth.
bool fSuppressVideo
If true, suppress video; otherwise generate & xfer test patterns.
static NTV2PixelFormat GetPixelFormatFromString(const std::string &inStr, const NTV2PixelFormatKinds inKinds=PIXEL_FORMATS_ALL, const std::string inDevSpec=std::string())
Returns the NTV2PixelFormat that matches the given string.
std::string fAncDataFilePath
Optional path to Anc binary data file to playout.