00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "H263plusVideoFileServerMediaSubsession.hh"
00025 #include "H263plusVideoRTPSink.hh"
00026 #include "ByteStreamFileSource.hh"
00027 #include "H263plusVideoStreamFramer.hh"
00028
00030 H263plusVideoFileServerMediaSubsession*
00031 H263plusVideoFileServerMediaSubsession::createNew(
00032 UsageEnvironment& env,
00033 char const* fileName,
00034 Boolean reuseFirstSource) {
00035 return new H263plusVideoFileServerMediaSubsession(env, fileName, reuseFirstSource);
00036 }
00037
00039 H263plusVideoFileServerMediaSubsession::H263plusVideoFileServerMediaSubsession(
00040 UsageEnvironment& env,
00041 char const* fileName,
00042 Boolean reuseFirstSource)
00043 : FileServerMediaSubsession(env, fileName, reuseFirstSource),
00044 fDoneFlag(0)
00045 {
00046 }
00047
00049 H263plusVideoFileServerMediaSubsession::~H263plusVideoFileServerMediaSubsession()
00050 {
00051 }
00052
00054 #if 0
00055 static void afterPlayingDummy(void* clientData) {
00056 H263plusVideoFileServerMediaSubsession* subsess
00057 = (H263plusVideoFileServerMediaSubsession*)clientData;
00058
00059 subsess->setDoneFlag();
00060 }
00061 #endif
00062
00063 static void checkForAuxSDPLine(void* clientData) {
00064 H263plusVideoFileServerMediaSubsession* subsess
00065 = (H263plusVideoFileServerMediaSubsession*)clientData;
00066 subsess->checkForAuxSDPLine1();
00067 }
00068
00069 void H263plusVideoFileServerMediaSubsession::checkForAuxSDPLine1() {
00070 if (fDummyRTPSink->auxSDPLine() != NULL) {
00071
00072 setDoneFlag();
00073 } else {
00074
00075 int uSecsToDelay = 100000;
00076 nextTask() = envir().taskScheduler().scheduleDelayedTask(uSecsToDelay,
00077 (TaskFunc*)checkForAuxSDPLine, this);
00078 }
00079 }
00080
00081 char const* H263plusVideoFileServerMediaSubsession::getAuxSDPLine(
00082 RTPSink* rtpSink,
00083 FramedSource* inputSource)
00084 {
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104 return NULL;
00105 }
00106
00108 FramedSource* H263plusVideoFileServerMediaSubsession::createNewStreamSource(
00109 unsigned ,
00110 unsigned& estBitrate)
00111 {
00112 estBitrate = 500;
00113
00114
00115 ByteStreamFileSource* fileSource
00116 = ByteStreamFileSource::createNew(envir(), fFileName);
00117 if (fileSource == NULL) return NULL;
00118 fFileSize = fileSource->fileSize();
00119
00120
00121 return H263plusVideoStreamFramer::createNew(envir(), fileSource);
00122 }
00123
00125 RTPSink* H263plusVideoFileServerMediaSubsession::createNewRTPSink(
00126 Groupsock* rtpGroupsock,
00127 unsigned char rtpPayloadTypeIfDynamic,
00128 FramedSource* )
00129 {
00130 unsigned char payloadFormatCode;
00131
00132 if (false)
00133 payloadFormatCode = rtpPayloadTypeIfDynamic;
00134 else
00135 payloadFormatCode = 34;
00136
00137 return H263plusVideoRTPSink::createNew(envir(), rtpGroupsock, payloadFormatCode);
00138 }
00139
00140
00141