00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "MP3AudioMatroskaFileServerMediaSubsession.hh"
00024 #include "MatroskaDemuxedTrack.hh"
00025
00026 MP3AudioMatroskaFileServerMediaSubsession* MP3AudioMatroskaFileServerMediaSubsession
00027 ::createNew(MatroskaFileServerDemux& demux, unsigned trackNumber, Boolean generateADUs, Interleaving* interleaving) {
00028 return new MP3AudioMatroskaFileServerMediaSubsession(demux, trackNumber, generateADUs, interleaving);
00029 }
00030
00031 MP3AudioMatroskaFileServerMediaSubsession
00032 ::MP3AudioMatroskaFileServerMediaSubsession(MatroskaFileServerDemux& demux, unsigned trackNumber,
00033 Boolean generateADUs, Interleaving* interleaving)
00034 : MP3AudioFileServerMediaSubsession(demux.envir(), demux.fileName(), False, generateADUs, interleaving),
00035 fOurDemux(demux), fTrackNumber(trackNumber) {
00036 fFileDuration = fOurDemux.fileDuration();
00037 }
00038
00039 MP3AudioMatroskaFileServerMediaSubsession::~MP3AudioMatroskaFileServerMediaSubsession() {
00040 }
00041
00042 void MP3AudioMatroskaFileServerMediaSubsession
00043 ::seekStreamSource(FramedSource* inputSource, double& seekNPT, double , u_int64_t& ) {
00044 FramedSource* sourceMP3Stream;
00045 ADUFromMP3Source* aduStream;
00046 getBaseStreams(inputSource, sourceMP3Stream, aduStream);
00047
00048 if (aduStream != NULL) aduStream->resetInput();
00049 ((MatroskaDemuxedTrack*)sourceMP3Stream)->seekToTime(seekNPT);
00050 }
00051
00052 FramedSource* MP3AudioMatroskaFileServerMediaSubsession
00053 ::createNewStreamSource(unsigned clientSessionId, unsigned& estBitrate) {
00054 FramedSource* baseMP3Source = fOurDemux.newDemuxedTrack(clientSessionId, fTrackNumber);
00055 return createNewStreamSourceCommon(baseMP3Source, 0, estBitrate);
00056 }