• Ronald S. Bultje's avatar
    Don't let finalize_packet() touch pkt->stream_index. Instead, let individual · eafb17d1
    Ronald S. Bultje authored
    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.
    
    Originally committed as revision 17767 to svn://svn.ffmpeg.org/ffmpeg/trunk
    eafb17d1
rtpdec.c 18 KB