mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-23 19:49:56 +00:00
avdevice/lavfi: unref the frame on failure
Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
This commit is contained in:
parent
7786d795c2
commit
a554adaab8
@ -432,7 +432,7 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
|
||||
if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
size = av_image_get_buffer_size(frame->format, frame->width, frame->height, 1);
|
||||
if ((ret = av_new_packet(pkt, size)) < 0)
|
||||
return ret;
|
||||
goto fail;
|
||||
|
||||
av_image_copy_to_buffer(pkt->data, size, (const uint8_t **)frame->data, frame->linesize,
|
||||
frame->format, frame->width, frame->height, 1);
|
||||
@ -440,7 +440,7 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
|
||||
size = frame->nb_samples * av_get_bytes_per_sample(frame->format) *
|
||||
frame->channels;
|
||||
if ((ret = av_new_packet(pkt, size)) < 0)
|
||||
return ret;
|
||||
goto fail;;
|
||||
memcpy(pkt->data, frame->data[0], size);
|
||||
}
|
||||
|
||||
@ -449,18 +449,19 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
|
||||
int size;
|
||||
uint8_t *metadata = av_packet_pack_dictionary(frame_metadata, &size);
|
||||
|
||||
if (!metadata)
|
||||
return AVERROR(ENOMEM);
|
||||
if (!metadata) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto fail;
|
||||
}
|
||||
if ((ret = av_packet_add_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA,
|
||||
metadata, size)) < 0) {
|
||||
av_freep(&metadata);
|
||||
return ret;
|
||||
goto fail;;
|
||||
}
|
||||
}
|
||||
|
||||
if ((ret = create_subcc_packet(avctx, frame, min_pts_sink_idx)) < 0) {
|
||||
av_frame_unref(frame);
|
||||
return ret;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
pkt->stream_index = stream_idx;
|
||||
@ -468,6 +469,10 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
|
||||
pkt->pos = frame->pkt_pos;
|
||||
av_frame_unref(frame);
|
||||
return size;
|
||||
fail:
|
||||
av_frame_unref(frame);
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
#define OFFSET(x) offsetof(LavfiContext, x)
|
||||
|
Loading…
Reference in New Issue
Block a user