[Live-devel] feedback from receiver

Kerim ISIK kisik at bimel.com.tr
Mon May 9 02:04:14 PDT 2005


Dear Ross,

I don't want to disturb you much but  I have a problem again. I will be 
greatful if you look at it below and advice me.

I have scheduled a task in order to observe the statistics  periodicaly 
(with your help). That is working.
For testing purpose, every 10 seconds I have closed the media source 
(microphone) and opened again with different characteristics. in every 
change play() is called.

First 10 seconds:
     pcmSource = AudioInputDevice::createNew(*env,0,16,2,44100,20)
Second 10 seconds:
    pcmSource =AudioInputDevice::createNew(*env,0,16,1,44100,20)
After that:
     pcmSource = AudioInputDevice::createNew(*env,0,8,1,8000,20)

I have moved the following line into the main(),just  before play() called, 
so that every new stream have same multicast ip address.
destinationAddress.s_addr = chooseRandomIPv4SSMAddress(*env)

I have also changed the afterPlaying() like before in order to allow 
continuous streaming.

void afterPlaying(void* /*clientData*/) {
  Medium::close(sessionState.source);
    exit(0);
}

When I run the program and observe the packets with Ethereal everything 
looks OK. First 10 second payload type is 10,after that 11, and 96 . When I 
want to listen the stream with VLC, I can only listen that 10 seconds period 
when I started in (I can listen every period separately ). When the codec 
(or payload type) changes, VLC does not stop but nothing can be hear.

in VLC I listen the stream by opening rtsp://212.175.96.29:7070/testStream . 
Can RTSP be the problem for this case? If I did not use the RTSP, could I 
listen the stream without being effected from payload type changes? (  I can 
not open the stream  via 'UDP/RTP Multicast' on VLC. Is there any change 
required in my code? )
Is it required to write a special receiver application to listen this type 
of changing media.(without stopping it and playing again manually?). Maybe 
it can be done changing theVLC source code.
which one should I focus:  receiver side or  sending side?

Thanks for your precious support.

Kerim ISIK



----- Original Message ----- 
From: "Ross Finlayson" <finlayson at live.com>
To: "LIVE.COM Streaming Media - development & use" <live-devel at ns.live.com>
Sent: Monday, May 02, 2005 5:02 PM
Subject: Re: [Live-devel] feedback from receiver


>
>>I am streaming audio with testWavAudioStreamer and receiving it with VLC 
>>Media Player.  If the receiving side is receiving the audio with much 
>>loss, I want to stop the stream and start a new one with lower quality (I 
>>assume it will decrease the loss rate). In testmp3Streamer.cpp , I had 
>>done this decision in afterplaying() function using transmissionStats. 
>>Using WindowsAuidoInputDevice as audio source , the afterplaying() 
>>function  in testWavAudioStreamer  is never been called.
>
> That's because - in thie case - your input source never ends/closes.  The 
> 'after playing' function is called when the input source closes.
>
>>  Is there any way to call it according to the RTCP RR reports received. 
>> Maybe I should change the noteIncomingRR() function in  RTPSink.cpp but I 
>> could not manage it. (I think the decision of changing the codec 
>> parameters must be done before calling the stopPlaying function )
>>I will be so glad if you advise me how could I do it.
>
> I suggest scheduling a task (using 
> "env->taskScheduler().scheduleDelayedTask()") that periodically (e.g., 
> every second or so) checks the "RTPTransmissionStats" from your "RTPSink" 
> object.
>
> E.g., see the code for "scheduleNextQOSMeasurement()" in "playCommon.cpp", 
> which does something similar (except with *reception* statistics).
>
>
> Ross Finlayson
> LIVE.COM
> <http://www.live.com/>
>
> _______________________________________________
> live-devel mailing list
> live-devel at lists.live.com
> http://lists.live.com/mailman/listinfo/live-devel
>
> 



More information about the live-devel mailing list