summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/decklink/capture.cpp310
1 files changed, 0 insertions, 310 deletions
diff --git a/sys/decklink/capture.cpp b/sys/decklink/capture.cpp
index ef0f7ba2a..99bbbb3d1 100644
--- a/sys/decklink/capture.cpp
+++ b/sys/decklink/capture.cpp
@@ -134,313 +134,3 @@ HRESULT
return S_OK;
}
-#ifdef unused
-int
-usage (int status)
-{
- HRESULT
- result;
- IDeckLinkDisplayMode *
- displayMode;
- int
- displayModeCount = 0;
-
- fprintf (stderr,
- "Usage: Capture -m <mode id> [OPTIONS]\n" "\n" " -m <mode id>:\n");
-
- while (displayModeIterator->Next (&displayMode) == S_OK) {
- char *
- displayModeString = NULL;
-
- result = displayMode->GetName ((const char **) &displayModeString);
- if (result == S_OK) {
- BMDTimeValue
- frameRateDuration,
- frameRateScale;
- displayMode->GetFrameRate (&frameRateDuration, &frameRateScale);
-
- fprintf (stderr, " %2d: %-20s \t %li x %li \t %g FPS\n",
- displayModeCount, displayModeString, displayMode->GetWidth (),
- displayMode->GetHeight (),
- (double) frameRateScale / (double) frameRateDuration);
-
- free (displayModeString);
- displayModeCount++;
- }
- // Release the IDeckLinkDisplayMode object to prevent a leak
- displayMode->Release ();
- }
-
- fprintf (stderr,
- " -p <pixelformat>\n"
- " 0: 8 bit YUV (4:2:2) (default)\n"
- " 1: 10 bit YUV (4:2:2)\n"
- " 2: 10 bit RGB (4:4:4)\n"
- " -t <format> Print timecode\n"
- " rp188: RP 188\n"
- " vitc: VITC\n"
- " serial: Serial Timecode\n"
- " -f <filename> Filename raw video will be written to\n"
- " -a <filename> Filename raw audio will be written to\n"
- " -c <channels> Audio Channels (2, 8 or 16 - default is 2)\n"
- " -s <depth> Audio Sample Depth (16 or 32 - default is 16)\n"
- " -n <frames> Number of frames to capture (default is unlimited)\n"
- " -3 Capture Stereoscopic 3D (Requires 3D Hardware support)\n"
- "\n"
- "Capture video and/or audio to a file. Raw video and/or audio can be viewed with mplayer eg:\n"
- "\n"
- " Capture -m2 -n 50 -f video.raw -a audio.raw\n"
- " mplayer video.raw -demuxer rawvideo -rawvideo pal:uyvy -audiofile audio.raw -audio-demuxer 20 -rawaudio rate=48000\n");
-
- exit (status);
-}
-
-int
-main (int argc, char *argv[])
-{
- IDeckLinkIterator *
- deckLinkIterator = CreateDeckLinkIteratorInstance ();
- DeckLinkCaptureDelegate *
- delegate;
- IDeckLinkDisplayMode *
- displayMode;
- BMDVideoInputFlags
- inputFlags = 0;
- BMDDisplayMode
- selectedDisplayMode = bmdModeNTSC;
- BMDPixelFormat
- pixelFormat = bmdFormat8BitYUV;
- int
- displayModeCount = 0;
- int
- exitStatus = 1;
- int
- ch;
- bool
- foundDisplayMode = false;
- HRESULT
- result;
-
- pthread_mutex_init (&sleepMutex, NULL);
- pthread_cond_init (&sleepCond, NULL);
-
- if (!deckLinkIterator) {
- fprintf (stderr,
- "This application requires the DeckLink drivers installed.\n");
- goto bail;
- }
-
- /* Connect to the first DeckLink instance */
- result = deckLinkIterator->Next (&deckLink);
- if (result != S_OK) {
- fprintf (stderr, "No DeckLink PCI cards found.\n");
- goto bail;
- }
-
- if (deckLink->QueryInterface (IID_IDeckLinkInput,
- (void **) &deckLinkInput) != S_OK)
- goto bail;
-
- delegate = new DeckLinkCaptureDelegate ();
- deckLinkInput->SetCallback (delegate);
-
- // Obtain an IDeckLinkDisplayModeIterator to enumerate the display modes supported on output
- result = deckLinkInput->GetDisplayModeIterator (&displayModeIterator);
- if (result != S_OK) {
- fprintf (stderr,
- "Could not obtain the video output display mode iterator - result = %08x\n",
- result);
- goto bail;
- }
- // Parse command line options
- while ((ch = getopt (argc, argv, "?h3c:s:f:a:m:n:p:t:")) != -1) {
- switch (ch) {
- case 'm':
- g_videoModeIndex = atoi (optarg);
- break;
- case 'c':
- g_audioChannels = atoi (optarg);
- if (g_audioChannels != 2 &&
- g_audioChannels != 8 && g_audioChannels != 16) {
- fprintf (stderr,
- "Invalid argument: Audio Channels must be either 2, 8 or 16\n");
- goto bail;
- }
- break;
- case 's':
- g_audioSampleDepth = atoi (optarg);
- if (g_audioSampleDepth != 16 && g_audioSampleDepth != 32) {
- fprintf (stderr,
- "Invalid argument: Audio Sample Depth must be either 16 bits or 32 bits\n");
- goto bail;
- }
- break;
- case 'f':
- g_videoOutputFile = optarg;
- break;
- case 'a':
- g_audioOutputFile = optarg;
- break;
- case 'n':
- g_maxFrames = atoi (optarg);
- break;
- case '3':
- inputFlags |= bmdVideoInputDualStream3D;
- break;
- case 'p':
- switch (atoi (optarg)) {
- case 0:
- pixelFormat = bmdFormat8BitYUV;
- break;
- case 1:
- pixelFormat = bmdFormat10BitYUV;
- break;
- case 2:
- pixelFormat = bmdFormat10BitRGB;
- break;
- default:
- fprintf (stderr, "Invalid argument: Pixel format %d is not valid",
- atoi (optarg));
- goto bail;
- }
- break;
- case 't':
- if (!strcmp (optarg, "rp188"))
- g_timecodeFormat = bmdTimecodeRP188;
- else if (!strcmp (optarg, "vitc"))
- g_timecodeFormat = bmdTimecodeVITC;
- else if (!strcmp (optarg, "serial"))
- g_timecodeFormat = bmdTimecodeSerial;
- else {
- fprintf (stderr,
- "Invalid argument: Timecode format \"%s\" is invalid\n", optarg);
- goto bail;
- }
- break;
- case '?':
- case 'h':
- usage (0);
- }
- }
-
- if (g_videoModeIndex < 0) {
- fprintf (stderr, "No video mode specified\n");
- usage (0);
- }
-
- if (g_videoOutputFile != NULL) {
- videoOutputFile =
- open (g_videoOutputFile, O_WRONLY | O_CREAT | O_TRUNC, 0664);
- if (videoOutputFile < 0) {
- fprintf (stderr, "Could not open video output file \"%s\"\n",
- g_videoOutputFile);
- goto bail;
- }
- }
- if (g_audioOutputFile != NULL) {
- audioOutputFile =
- open (g_audioOutputFile, O_WRONLY | O_CREAT | O_TRUNC, 0664);
- if (audioOutputFile < 0) {
- fprintf (stderr, "Could not open audio output file \"%s\"\n",
- g_audioOutputFile);
- goto bail;
- }
- }
-
- while (displayModeIterator->Next (&displayMode) == S_OK) {
- if (g_videoModeIndex == displayModeCount) {
- BMDDisplayModeSupport
- result;
- const char *
- displayModeName;
-
- foundDisplayMode = true;
- displayMode->GetName (&displayModeName);
- selectedDisplayMode = displayMode->GetDisplayMode ();
-
- deckLinkInput->DoesSupportVideoMode (selectedDisplayMode, pixelFormat,
- bmdVideoInputFlagDefault, &result, NULL);
-
- if (result == bmdDisplayModeNotSupported) {
- fprintf (stderr,
- "The display mode %s is not supported with the selected pixel format\n",
- displayModeName);
- goto bail;
- }
-
- if (inputFlags & bmdVideoInputDualStream3D) {
- if (!(displayMode->GetFlags () & bmdDisplayModeSupports3D)) {
- fprintf (stderr, "The display mode %s is not supported with 3D\n",
- displayModeName);
- goto bail;
- }
- }
-
- break;
- }
- displayModeCount++;
- displayMode->Release ();
- }
-
- if (!foundDisplayMode) {
- fprintf (stderr, "Invalid mode %d specified\n", g_videoModeIndex);
- goto bail;
- }
-
- result =
- deckLinkInput->EnableVideoInput (selectedDisplayMode, pixelFormat,
- inputFlags);
- if (result != S_OK) {
- fprintf (stderr,
- "Failed to enable video input. Is another application using the card?\n");
- goto bail;
- }
-
- result =
- deckLinkInput->EnableAudioInput (bmdAudioSampleRate48kHz,
- g_audioSampleDepth, g_audioChannels);
- if (result != S_OK) {
- goto bail;
- }
-
- result = deckLinkInput->StartStreams ();
- if (result != S_OK) {
- goto bail;
- }
- // All Okay.
- exitStatus = 0;
-
- // Block main thread until signal occurs
- pthread_mutex_lock (&sleepMutex);
- pthread_cond_wait (&sleepCond, &sleepMutex);
- pthread_mutex_unlock (&sleepMutex);
- fprintf (stderr, "Stopping Capture\n");
-
-bail:
-
- if (videoOutputFile)
- close (videoOutputFile);
- if (audioOutputFile)
- close (audioOutputFile);
-
- if (displayModeIterator != NULL) {
- displayModeIterator->Release ();
- displayModeIterator = NULL;
- }
-
- if (deckLinkInput != NULL) {
- deckLinkInput->Release ();
- deckLinkInput = NULL;
- }
-
- if (deckLink != NULL) {
- deckLink->Release ();
- deckLink = NULL;
- }
-
- if (deckLinkIterator != NULL)
- deckLinkIterator->Release ();
-
- return exitStatus;
-}
-#endif