RTSP muxer: Use a local copy of the AVPacket for sending to the chained muxer

This way, we avoid overwriting stream_index in the user's AVPacket
with a nonsense value.

Originally committed as revision 22081 to svn://svn.ffmpeg.org/ffmpeg/trunk
release/0.6
Martin Storsjö 15 years ago
parent cf41a02b1b
commit 50ff78db01
  1. 8
      libavformat/rtspenc.c

@ -71,6 +71,7 @@ static int rtsp_write_packet(AVFormatContext *s, AVPacket *pkt)
int n, tcp_fd; int n, tcp_fd;
struct timeval tv; struct timeval tv;
AVFormatContext *rtpctx; AVFormatContext *rtpctx;
AVPacket local_pkt;
FD_ZERO(&rfds); FD_ZERO(&rfds);
tcp_fd = url_get_file_handle(rt->rtsp_hd); tcp_fd = url_get_file_handle(rt->rtsp_hd);
@ -96,8 +97,11 @@ static int rtsp_write_packet(AVFormatContext *s, AVPacket *pkt)
rtsp_st = rt->rtsp_streams[pkt->stream_index]; rtsp_st = rt->rtsp_streams[pkt->stream_index];
rtpctx = rtsp_st->transport_priv; rtpctx = rtsp_st->transport_priv;
pkt->stream_index = 0; /* Use a local packet for writing to the chained muxer, otherwise
return av_write_frame(rtpctx, pkt); * the internal stream_index = 0 becomes visible to the muxer user. */
local_pkt = *pkt;
local_pkt.stream_index = 0;
return av_write_frame(rtpctx, &local_pkt);
} }
static int rtsp_write_close(AVFormatContext *s) static int rtsp_write_close(AVFormatContext *s)

Loading…
Cancel
Save