[FFmpeg-devel] [PATCH] Add an RTSP muxer
Tue Jan 5 11:41:19 CET 2010
On 05/01/10 00:09, Martin Storsj? wrote:
>> 0003-5 is for Luca (A).
>> 0006-0007 appear to touch upon a deeper issue, I'd just add the
>> AVFormatContext (that's not ic, right?) to the struct instead. This is
>> a bit ugly. You're removing ic in 0014, which I think is a bad idea.
>> I'd drop these two and convert ic into being the AVFormatContext that
>> you take pb from and use as a log context. (That's how the RTP/RTSP
>> demuxer parts work.)
> That unfortunately doesn't really work like that (straight away in my
> current design, at least) for the rtp muxers. In the RTSP/RTP demuxers,
> the RTSP demuxer owns URLContexts where it reads packets, and if packets
> are received, they are fed to RTPDemuxContexts for parsing. The
> RTPDemuxContexts thus never actually touch the actual RTP streams that are
> owned by the RTSP demuxer. (Or did I understand this incorrectly?)
I think you correctly understand the demuxer. The fact is that we have
an RTP muxer, but we have no RTP demuxer. So, receiving and sending RTP
packets work in two different ways, according to different designs.
I am obviously biased, but I like the RTP muxer design better. I think
that using a muxer API instead of directly accessing some internal
functions is a cleaner and more flexible approach. And it allows to
reduce the number of dependencies without introducing too many "#ifdef"s.
> The RTP muxers on the other hand send out the actual rtp packets deep
> inside the packetization routines. So they're not exactly symmetrical in
> their design... Calling the RTP muxers with the RTSP AVFormatContext won't
Right. I believe the RTSPStream structure should contain a pointer to
the AVFormatContext representing the RTP muxer (which is initialised in
the "write_header" function). So, the RTSP "write" function should just
find the correct AVFormatContext and call the RTP write method passing
such an AVFormatContext as a parameter.
I am writing this without having actually tried this approach, and the
devil usually is in the details... So, maybe I am missing something
obvious. But I think something like the approach described above should
work. I'll experiment a little bit with it in the next weekend.
More information about the ffmpeg-devel