testProgs/testMPEG1or2Splitter.cpp File Reference

#include "liveMedia.hh"
#include "BasicUsageEnvironment.hh"
#include <stdlib.h>

Include dependency graph for testMPEG1or2Splitter.cpp:

Go to the source code of this file.

Data Structures

struct  sessionState_t

Functions

void afterPlaying (void *clientData)
int main (int argc, char **argv)

Variables

char const * inputFileName = "in.mpg"
char const * outputFileName_video = "out_video.mpg"
char const * outputFileName_audio = "out_audio.mpg"
sessionState_t sessionState
UsageEnvironmentenv


Function Documentation

void afterPlaying ( void *  clientData  ) 

Definition at line 98 of file testAMRAudioStreamer.cpp.

00098                                         {
00099   *env << "...done reading from file\n";
00100 
00101   audioSink->stopPlaying();
00102   Medium::close(audioSource);
00103   // Note that this also closes the input file that this source read from.
00104 
00105   play();
00106 }

int main ( int  argc,
char **  argv 
)

Definition at line 43 of file testMPEG1or2Splitter.cpp.

References afterPlaying(), sessionState_t::audioSink, sessionState_t::audioSource, sessionState_t::baseDemultiplexor, FileSink::createNew(), MPEG1or2Demux::createNew(), ByteStreamFileSource::createNew(), BasicUsageEnvironment::createNew(), BasicTaskScheduler::createNew(), TaskScheduler::doEventLoop(), env, exit, inputFileName, MPEG1or2Demux::newAudioStream(), MPEG1or2Demux::newVideoStream(), NULL, outputFileName_audio, outputFileName_video, sessionState, MediaSink::startPlaying(), UsageEnvironment::taskScheduler(), sessionState_t::videoSink, and sessionState_t::videoSource.

00043                                 {
00044   // Begin by setting up our usage environment:
00045   TaskScheduler* scheduler = BasicTaskScheduler::createNew();
00046   env = BasicUsageEnvironment::createNew(*scheduler);
00047 
00048   // Open the input file as a 'byte-stream file source':
00049   ByteStreamFileSource* inputSource
00050     = ByteStreamFileSource::createNew(*env, inputFileName);
00051   if (inputSource == NULL) {
00052     *env << "Unable to open file \"" << inputFileName
00053          << "\" as a byte-stream file source\n";
00054     exit(1);
00055   }
00056 
00057   // Create a MPEG demultiplexor that reads from that source.
00058   sessionState.baseDemultiplexor = MPEG1or2Demux::createNew(*env, inputSource);
00059 
00060   // Create, from this, our own sources (video and audio):
00061   sessionState.videoSource = sessionState.baseDemultiplexor->newVideoStream();
00062   sessionState.audioSource = sessionState.baseDemultiplexor->newAudioStream();
00063 
00064   // Create the data sinks (output files):
00065   sessionState.videoSink = FileSink::createNew(*env, outputFileName_video);
00066   sessionState.audioSink = FileSink::createNew(*env, outputFileName_audio);
00067 
00068   // Finally, start playing each sink.
00069   *env << "Beginning to read...\n";
00070   sessionState.videoSink->startPlaying(*sessionState.videoSource,
00071                                        afterPlaying, sessionState.videoSink);
00072   sessionState.audioSink->startPlaying(*sessionState.audioSource,
00073                                        afterPlaying, sessionState.audioSink);
00074 
00075   env->taskScheduler().doEventLoop(); // does not return
00076 
00077   return 0; // only to prevent compiler warning
00078 }


Variable Documentation

UsageEnvironment* env

Definition at line 41 of file testMPEG1or2Splitter.cpp.

char const* inputFileName = "in.mpg"

Definition at line 25 of file testMPEG1or2Splitter.cpp.

char const* outputFileName_audio = "out_audio.mpg"

Definition at line 27 of file testMPEG1or2Splitter.cpp.

Referenced by main().

char const* outputFileName_video = "out_video.mpg"

Definition at line 26 of file testMPEG1or2Splitter.cpp.

Referenced by main().

struct sessionState_t sessionState


Generated on Thu May 17 07:14:42 2012 for live by  doxygen 1.5.2