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