00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "MPEG1or2VideoFileServerMediaSubsession.hh"
00023 #include "MPEG1or2VideoRTPSink.hh"
00024 #include "ByteStreamFileSource.hh"
00025 #include "MPEG1or2VideoStreamFramer.hh"
00026
00027 MPEG1or2VideoFileServerMediaSubsession*
00028 MPEG1or2VideoFileServerMediaSubsession::createNew(UsageEnvironment& env,
00029 char const* fileName,
00030 Boolean reuseFirstSource,
00031 Boolean iFramesOnly,
00032 double vshPeriod) {
00033 return new MPEG1or2VideoFileServerMediaSubsession(env, fileName, reuseFirstSource,
00034 iFramesOnly, vshPeriod);
00035 }
00036
00037 MPEG1or2VideoFileServerMediaSubsession
00038 ::MPEG1or2VideoFileServerMediaSubsession(UsageEnvironment& env,
00039 char const* fileName,
00040 Boolean reuseFirstSource,
00041 Boolean iFramesOnly,
00042 double vshPeriod)
00043 : FileServerMediaSubsession(env, fileName, reuseFirstSource),
00044 fIFramesOnly(iFramesOnly), fVSHPeriod(vshPeriod) {
00045 }
00046
00047 MPEG1or2VideoFileServerMediaSubsession
00048 ::~MPEG1or2VideoFileServerMediaSubsession() {
00049 }
00050
00051 FramedSource* MPEG1or2VideoFileServerMediaSubsession
00052 ::createNewStreamSource(unsigned , unsigned& estBitrate) {
00053 estBitrate = 500;
00054
00055 ByteStreamFileSource* fileSource
00056 = ByteStreamFileSource::createNew(envir(), fFileName);
00057 if (fileSource == NULL) return NULL;
00058 fFileSize = fileSource->fileSize();
00059
00060 return MPEG1or2VideoStreamFramer
00061 ::createNew(envir(), fileSource, fIFramesOnly, fVSHPeriod);
00062 }
00063
00064 RTPSink* MPEG1or2VideoFileServerMediaSubsession
00065 ::createNewRTPSink(Groupsock* rtpGroupsock,
00066 unsigned char ,
00067 FramedSource* ) {
00068 return MPEG1or2VideoRTPSink::createNew(envir(), rtpGroupsock);
00069 }