avcodec/bsf: use av_packet_make_refcounted to ensure packets are ref counted

Simplifies code.

Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer 2018-03-25 00:23:58 -03:00
parent 38fa61b947
commit 265ec55983
1 changed files with 6 additions and 9 deletions

View File

@ -174,6 +174,8 @@ int av_bsf_init(AVBSFContext *ctx)
int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt)
{
int ret;
if (!pkt || (!pkt->data && !pkt->side_data_elems)) {
ctx->internal->eof = 1;
return 0;
@ -188,15 +190,10 @@ int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt)
ctx->internal->buffer_pkt->side_data_elems)
return AVERROR(EAGAIN);
if (pkt->buf) {
av_packet_move_ref(ctx->internal->buffer_pkt, pkt);
} else {
int ret = av_packet_ref(ctx->internal->buffer_pkt, pkt);
if (ret < 0)
return ret;
av_packet_unref(pkt);
}
ret = av_packet_make_refcounted(pkt);
if (ret < 0)
return ret;
av_packet_move_ref(ctx->internal->buffer_pkt, pkt);
return 0;
}