diff rtp_h264.c @ 4633:0c69b895a01f libavformat

Don't let finalize_packet() touch pkt->stream_index. Instead, let individual payload handlers take care of that themselves at their own option. What this patch really does is "fix" a bug in MS-RTSP protocol where incoming packets are always coming in over the connection (UDP) or interleave-id (TCP) of the stream-id of the first ASF packet in the RTP packet. However, RTP packets may contain multiple ASF packets (and usually do, from what I can see), and therefore this leads to playback bugs. The intended stream-id per ASF packet is given in the respective ASF packet header. The ASF demuxer will correctly read this and set pkt->stream_index, but since the "stream" parameter can not be known to rtpdec.c or any of the RTP/RTSP code, the "st" parameter in all these functions is basically invalid. Therefore, using st->id as pkt->stream_index leads to various playback bugs. The result of this patch is that pkt->stream_index is left untouched for RTP/ASF (and possibly for other payloads that have similar behaviour). The patch was discussed in the "[PATCH] rtpdec.c: don't overwrite pkt->stream_index in finalize_packet()" thread on the mailinglist.
author rbultje
date Tue, 03 Mar 2009 13:51:34 +0000
parents e2fa3c2bc471
children 304a0ea063f0
line wrap: on
line diff
--- a/rtp_h264.c	Tue Mar 03 13:42:16 2009 +0000
+++ b/rtp_h264.c	Tue Mar 03 13:51:34 2009 +0000
@@ -310,6 +310,8 @@
         break;
     }
 
+    pkt->stream_index = st->index;
+
     return result;
 }