if ((ret = av_new_packet(pkt, vidbuf_nbytes)) < 0)
goto fail;
memcpy(pkt->data, vidbuf_start, vidbuf_nbytes);
- av_free(vidbuf_start);
pkt->pos = position;
pkt->stream_index = vid->video_index;
if (vid->palette) {
uint8_t *pdata = av_packet_new_side_data(pkt, AV_PKT_DATA_PALETTE,
BVID_PALETTE_SIZE);
+ if (!pdata) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
memcpy(pdata, vid->palette, BVID_PALETTE_SIZE);
av_freep(&vid->palette);
}
vid->nframes--; // used to check if all the frames were read
- return 0;
fail:
av_free(vidbuf_start);
return ret;