[FFmpeg-devel] [PATCH] RTSP muxer, round 5
Fri Feb 26 14:36:07 CET 2010
On Mon, 22 Feb 2010, Ronald S. Bultje wrote:
> On Fri, Feb 19, 2010 at 6:05 PM, Martin Storsj? <martin at martin.st> wrote:
> in write_packet():
> + av_init_packet(&local_pkt);
> + local_pkt.stream_index = 0;
> + local_pkt.pts = pkt->pts;
> + local_pkt.flags = pkt->flags;
> + local_pkt.data = pkt->data;
> + local_pkt.size = pkt->size;
> Is the packet copy necessary? I'm not totally sure, but could you just
> change pkt->stream_index and forward?
I noticed one issue regarding this... The current code in SVN changes
pkt->stream_index, so a caller doing av_write_frame and then inspecting
the packet fields can get confused.
I had code like this in an external application using libavformat:
double time = pkt->dts*av_q2d(out->streams[pkt->stream_index]->time_base);
When pkt->stream_index initially was 1, but changed to 0 for the chained
internal muxer, this calculation turned out wrong. In this case, it was
easy to fix, but there may be a lot of other libavformat users out there
that could be struck by something similar.
So, is it ok for av_write_frame to update fields of the AVPacket to
potentially bogus values, or should rtsp_write_packet be changed to set
stream_index to 0 in a local copy? Or perhaps just backup the index value
and restore the original value afterwards?
More information about the ffmpeg-devel