[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