diff options
-rw-r--r-- | libavcodec/bsf.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c index 38b423101c..05a44e2e31 100644 --- a/libavcodec/bsf.c +++ b/libavcodec/bsf.c @@ -188,7 +188,15 @@ int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt) ctx->internal->buffer_pkt->side_data_elems) return AVERROR(EAGAIN); - av_packet_move_ref(ctx->internal->buffer_pkt, pkt); + 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); + } return 0; } |