diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2019-09-20 22:39:14 +0200 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2019-09-28 18:32:44 -0300 |
commit | cdba00ae113c94ef243bc238c64678c7bca82084 (patch) | |
tree | e611b8e829a55b702f4eefa601baa08c7534dae8 /.gitignore | |
parent | ada02cf85fffd7806ac48e907f45082dd91efc18 (diff) | |
download | ffmpeg-cdba00ae113c94ef243bc238c64678c7bca82084.tar.gz |
avformat/utils: Avoid copying packets unnecessarily
Up until now, read_frame_internal in avformat/utils.c uses a spare
packet on the stack that serves no real purpose: At no point in this
function is there a need for another packet besides the packet destined
for output:
1. If the packet doesn't need a parser, but is output as is, the content
of the spare packet (that at this point contains a freshly read packet)
is simply copied into the output packet (via simple assignment, not
av_packet_move_ref, thereby confusing ownership).
2. If the packet needs parsing, the spare packet will be reset after
parsing and any packets resulting from the packet read will be put into
a packet list; the output packet is not used here at all.
3. If the stream should be discarded, the spare packet will be
unreferenced; the output packet is not used here at all either.
Therefore the spare packet and the copies can be removed in principle.
In practice, one more thing needs to be taken care of: If ff_read_packet
failed, the output packet was not affected, now it is. But given that
ff_read_packet returns a blank (as if reset via av_packet_unref) packet
on failure, there is no problem from this side either.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions