[FFmpeg-devel] Realmedia patch

Luca Abeni lucabe72
Tue Sep 9 16:22:53 CEST 2008


Hi,

Ronald S. Bultje wrote:
[...]
>> I have been unable to
>> find any hints on X-SorensonVideo and X-QDM packetization.
> 
> GStreamer has a X-SorensenVideo parser which is heavily flawed, but
> supports 1 or 2 streams over UDP (or so it says). I didn't test it.

Note that X-SorensonVideo, etc is independent from "UDP vs TCP".

[...]
>> RTSP RAW/RAW/UDP (+ different Settop box implementations..... )
>> RTSP AVP/UDP
>> RTSP AVP/TCP
>> RTSP RTP/HTTP/TCP
>> RTSP RDT
>> RTSP windows media server (has it's own nice exceptions :D )
> 
> I can implement it as the above enum if that's what people want (that
> impression is very clear :-) ). But (see my email 5 minutes ago) you
> can't do this during SETUP, it's purely payload/SDP dependent.

No. The fact that real messed up everything does not mean that the RFC
has been rewritten. Payload type (described in the SDP) and transport
protocol (described in the "Transport:" attribute of the SETUP command)
are independent. For example, there are servers that stream MPEG2 TS
over RTP, and servers that stream MPEG2 TS over raw UDP. The payload type
is the same, but the transport protocol is "AVP/UDP" in the first case
and "RAW/RAW/UDP" in the second.


> Also,
> my impression from docs / posts around the net is that RDT over UDP
> does exist (I just can't find any servers that support it :-) ), and
> it compares to RTP/UDP in the same way as RTP/TCP vs. RDT/TCP, which
> is why I initially tried to do it differently. Anyway, I can just
> change SETUP to do "case RDT_TCP: case RTP_TCP: case RTP_(QT_)HTTP: //
> do TCP setup" etc., but then the logic of SETUP being the time where
> the RTSPProtocol is chosen falls away, it just decides the transport,
> and based on the transport + other server info (server type, payload,
> etc.) we choose the RTSPProtocol.

Again, I do not believe this is the correct way to go.
According to my reading of RFC 2326, the SETUP request must contain a
"Transport:" field which indicates the transport protocol we want to
use. Such a protocol is described by
	transport / profile / lower-transport
etc...

In my understanding, libavformat's "RTSPProtocol" is given by a
combination of "transport", "profile", and "lower-transport". I do not
know if this is a good idea, or if it would be better to separate these
three components.



				Luca




More information about the ffmpeg-devel mailing list