[FFmpeg-devel] [PATCH 31/50] avformat/wc3movie: use av_packet_alloc() to allocate packets
James Almer
jamrial at gmail.com
Sun Feb 7 15:09:25 EET 2021
On 2/7/2021 4:52 AM, Andreas Rheinhardt wrote:
> 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.
Changed locally. Thanks.
>
>>
>> /* 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;
>>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
More information about the ffmpeg-devel
mailing list