Grabber::setSinkType Method

Sets the format of the sink. A sink specifies the output target of an image stream. A sink may only be set, if the image stream is in neither live mode, nor prepared mode.
Syntax:
bool setSinkType( smart_ptr<GrabberSinkType> pNewSink );
Parameter Description
pNewSink

Specifies the new sink type.

Return value:

Description Description
true The sink type was changed successfully.
false An error occurred.

Remarks:

For more information about sink types, please refer to: FrameHandlerSink and MediaStreamSink

Sample:

This example demonstrates how to set a MediaStreamSink:

Grabber grabber;
if( !setupDeviceFromFile( grabber ) )
{
    return -1;
}
tCodecListPtr pCodecs = Codec::getAvailableCodecs();
 
// Display all codec names on the screen.
int choice = presentUserChoice( toStringArrayPtrListPtr( pCodecs ) );
if( choice == -1 )
{
    return -1;
}
// Create an MediaStreamSink to record an AVI file with the selected CoDec
tMediaStreamSinkPtr pSink = MediaStreamSink::create( 
    MediaStreamContainer::create( MSC_AviContainer ), pCodecs->at( choice ) );
 
// Set the filename.
pSink->setFilename( filename );
 
// The sink is initially paused, so that no video data is written to the file.
pSink->setSinkMode( GrabberSinkType::ePAUSE );
 
// Set pSink as the current sink.
grabber.setSinkType( pSink );
 
// Start the live mode. The live video will be displayed but no images will be written
// to the AVI file because pSink is in pause mode.
if( !grabber.startLive( true ) )
{
    std::cerr << grabber.getLastError().toString() << std::endl;
    return -1;
}
 
std::cout << "Press [enter] to start capturing!";
std::cin.get();
 
// Start the sink. The image stream is written to the AVI file.
pSink->setSinkMode(GrabberSinkType::eRUN );
 
std::cout << "Video recording started." << std::endl;
std::cout << "Press [enter] to stop capturing!";
std::cin.get();
 
// Pause the sink. This stops writing the image stream to the AVI file.
// A subsequent call to setSinkMode with GrabberSinkType::eRUN as the
// parameter would restart AVI recording.
pSink->setSinkMode(GrabberSinkType::ePAUSE );
 
std::cout << "Video recording stopped." << std::endl;
 
// Stop the live mode. This stops writing images to the AVI file if the mode is not
// GrabberSinkType::ePAUSE. The AVI file is closed.
grabber.stopLive();
See also: Grabber, Grabber::startLive, Grabber::getSinkType, MediaStreamSink, FrameHandlerSink

<< Grabber

This site is part of The Imaging Source Network. Other sites include Company Portal, Image Processing, Astronomy Cameras, Astronomy Cameras Blog, Blog caméras d'astronomie, Astronomy Cameras Competition, TX Text Control, LiveDocx, phpLiveDocx and Forums.