[FFmpeg-devel] [PATCH 31/50] avformat/wc3movie: use av_packet_alloc() to allocate packets
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Sun Feb 7 09:52:15 EET 2021
James Almer:
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavformat/wc3movie.c | 21 ++++++++++-----------
> 1 file changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/libavformat/wc3movie.c b/libavformat/wc3movie.c
> index 76e945d261..1fe582945a 100644
> --- a/libavformat/wc3movie.c
> +++ b/libavformat/wc3movie.c
> @@ -69,7 +69,7 @@ typedef struct Wc3DemuxContext {
> int video_stream_index;
> int audio_stream_index;
>
> - AVPacket vpkt;
> + AVPacket *vpkt;
>
> } Wc3DemuxContext;
>
> @@ -77,8 +77,7 @@ static int wc3_read_close(AVFormatContext *s)
> {
> Wc3DemuxContext *wc3 = s->priv_data;
>
> - if (wc3->vpkt.size > 0)
> - av_packet_unref(&wc3->vpkt);
> + av_packet_free(&wc3->vpkt);
>
> return 0;
> }
> @@ -110,8 +109,9 @@ static int wc3_read_header(AVFormatContext *s)
> wc3->height = WC3_DEFAULT_HEIGHT;
> wc3->pts = 0;
> wc3->video_stream_index = wc3->audio_stream_index = 0;
> - av_init_packet(&wc3->vpkt);
> - wc3->vpkt.data = NULL; wc3->vpkt.size = 0;
> + wc3->vpkt = av_packet_alloc();
> + if (!wc3->vpkt)
> + goto fail;
goto fail returns 0. You should instead just return AVERROR(ENOMEM)
directly. Nothing has been (successfully) allocated at this point.
>
> /* skip the first 3 32-bit numbers */
> avio_skip(pb, 12);
> @@ -162,7 +162,7 @@ static int wc3_read_header(AVFormatContext *s)
> case PALT_TAG:
> /* one of several palettes */
> avio_seek(pb, -8, SEEK_CUR);
> - av_append_packet(pb, &wc3->vpkt, 8 + PALETTE_SIZE);
> + av_append_packet(pb, wc3->vpkt, 8 + PALETTE_SIZE);
> break;
>
> default:
> @@ -248,18 +248,17 @@ static int wc3_read_packet(AVFormatContext *s,
> case SHOT_TAG:
> /* load up new palette */
> avio_seek(pb, -8, SEEK_CUR);
> - av_append_packet(pb, &wc3->vpkt, 8 + 4);
> + av_append_packet(pb, wc3->vpkt, 8 + 4);
> break;
>
> case VGA__TAG:
> /* send out video chunk */
> avio_seek(pb, -8, SEEK_CUR);
> - ret= av_append_packet(pb, &wc3->vpkt, 8 + size);
> + ret= av_append_packet(pb, wc3->vpkt, 8 + size);
> // ignore error if we have some data
> - if (wc3->vpkt.size > 0)
> + if (wc3->vpkt->size > 0)
> ret = 0;
> - *pkt = wc3->vpkt;
> - wc3->vpkt.data = NULL; wc3->vpkt.size = 0;
> + av_packet_move_ref(pkt, wc3->vpkt);
> pkt->stream_index = wc3->video_stream_index;
> pkt->pts = wc3->pts;
> packet_read = 1;
>
More information about the ffmpeg-devel
mailing list