[Live-devel] Writing Speex encoder Filter
Ross Finlayson
finlayson at live555.com
Fri Sep 10 07:22:12 PDT 2010
>BTW Is there any reliable player for RTP/Speex? Maybe my problem is
>a player that doesn't support the protocol and codec (I tested with
>VLC and mplayer)
I'm not sure about this. You will need to ask about this on a VLC
and a MPlayer mailing list.
>I'm trying to implement streaming Speex encoded audio data (RTP
>Speex payload) from a microphone. I've read FAQ and checked mailing
>list so I had point of start but now I can not go further.
>I've decided to start first with streaming WAV file transcoded to Speex.
>I created SpeexAudioFileServerMediaSubsession which was based on
>WAVAudioFileServerMediaSubsession but when playing the stream VLC I
>get only messages (with no audio):
>....
>live555 debug: tk->rtpSource->hasBeenSynchronizedUsingRTCP()
>main error: ES_OUT_RESET_PCR called
>main debug: Buffering 0%
>main debug: Buffering 17%
>main debug: Buffering 34%
>main debug: Buffering 51%
>main debug: Buffering 68%
>main debug: Buffering 85%
>main debug: Stream buffering done (1238 ms in 1238 ms)
>main debug: Decoder buffering done in 0 ms
>main debug: End of audio preroll
>main warning: PTS is out of range (15713989), dropping buffer
>main warning: PTS is out of range (15900246), dropping buffer
>main warning: PTS is out of range (16089345), dropping buffer
>main warning: PTS is out of range (16271773), dropping buffer
>main warning: PTS is out of range (16458644), dropping buffer
>main warning: PTS is out of range (16646190), dropping buffer
>main warning: PTS is out of range (16832643), dropping buffer
>main warning: PTS is out of range (17018080), dropping buffer
>
>I wonder if I have to change fPresentationTime? Original time comes
>from WAVAudioFileSource but after encoding frames with Speex should
>I do any changes to it?
From what I can tell, the "fPresentationTime" values from
"WAVAudioFileSource" are being passed correctly through your new
"SpeexTranscoder" class (which I presume is a "FramedFilter"). One
way you can check this, though, is by instrumenting the
"MultiFramedRTPSink::afterGettingFrame1()" function
("liveMedia/MultiFramedRTPSink.cpp", line 233) to check whether the
parameter values (frameSize, numTruncatedBytes, presentationTime,
durationInMicroseconds) look reasonable.
If this looks OK, then your next step should be to work with the VLC
(and/or MPlayer) developers to figure out why they are not playing
the incoming Speex audio stream properly. (They use our library for
RTP input, and we handle incoming Speex/RTP streams, but I don't know
whether they are decoding/playing it OK.)
--
Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
More information about the live-devel
mailing list