[FFmpeg-devel] Realmedia patch
Luca Abeni
lucabe72
Mon Sep 1 21:12:07 CEST 2008
Hi Ronald,
Ronald S. Bultje wrote:
[...]
>>> + if (!(rt->server_type == RTSP_SERVER_RDT && rt->need_subscription)) {
>> This change looks suspicious...
>> (same for the rtsp_read_pause() change)
>
> These two can (hopefully) be addressed in one...
>
> So, for Realmedia, you can subscribe to one of the N rules. The way
> ffplay does that is that it calls av_open_input_file() and
> av_find_stream_info(), then chooses one of the N streams (based on the
> -ast X parameter) and then it sets the AVDISCARD_* flag in all
> AVStreams and starts reading data.
[...]
Thanks for the explaination. As usual, I forgot about stream selection ;-)
> I modified rtsp_play() (and pause()) to not be sent while the
> Subscribe command hasn't been sent yet, that's the second half of this
> change. Ugly, I know, but it worked. :-]. I'm open for suggestions on
> how to better do this.
After thinking about this for one day, I arrived to the conclusion that
the cleanest solution here is a little bit too radical:
remove the rtsp_read_play() call from rtsp_read_header(), move the real
"subscribe" code to rtsp_read_play(), and add a mechanism to call
rtsp_read_play() from rtsp_read_packet() the first time it is called
(similarly to your patch).
I understand this is a drastic change in the existing code, so I'd say
to go for it only if the maintainer explicitly agrees (otherwise, I see
no alternatives to your approach).
Luca
More information about the ffmpeg-devel
mailing list