00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "VP8VideoMatroskaFileServerMediaSubsession.hh"
00023 #include "VP8VideoRTPSink.hh"
00024 #include "MatroskaDemuxedTrack.hh"
00025
00026 VP8VideoMatroskaFileServerMediaSubsession* VP8VideoMatroskaFileServerMediaSubsession
00027 ::createNew(MatroskaFileServerDemux& demux, unsigned trackNumber) {
00028 return new VP8VideoMatroskaFileServerMediaSubsession(demux, trackNumber);
00029 }
00030
00031 VP8VideoMatroskaFileServerMediaSubsession
00032 ::VP8VideoMatroskaFileServerMediaSubsession(MatroskaFileServerDemux& demux, unsigned trackNumber)
00033 : FileServerMediaSubsession(demux.envir(), demux.fileName(), False),
00034 fOurDemux(demux), fTrackNumber(trackNumber) {
00035 }
00036
00037 VP8VideoMatroskaFileServerMediaSubsession
00038 ::~VP8VideoMatroskaFileServerMediaSubsession() {
00039 }
00040
00041 float VP8VideoMatroskaFileServerMediaSubsession::duration() const { return fOurDemux.fileDuration(); }
00042
00043 void VP8VideoMatroskaFileServerMediaSubsession
00044 ::seekStreamSource(FramedSource* inputSource, double& seekNPT, double , u_int64_t& ) {
00045 ((MatroskaDemuxedTrack*)inputSource)->seekToTime(seekNPT);
00046 }
00047
00048 FramedSource* VP8VideoMatroskaFileServerMediaSubsession
00049 ::createNewStreamSource(unsigned clientSessionId, unsigned& estBitrate) {
00050 estBitrate = 500;
00051
00052 return fOurDemux.newDemuxedTrack(clientSessionId, fTrackNumber);
00053 }
00054
00055 RTPSink* VP8VideoMatroskaFileServerMediaSubsession
00056 ::createNewRTPSink(Groupsock* rtpGroupsock, unsigned char rtpPayloadTypeIfDynamic, FramedSource* ) {
00057 return VP8VideoRTPSink::createNew(envir(), rtpGroupsock, rtpPayloadTypeIfDynamic);
00058 }