[FFmpeg-devel] [PATCH 02/13] lavf: update auto-bsf to new BSF API
Nicolas George
george at nsup.org
Tue Jun 28 13:33:13 CEST 2016
Le primidi 11 messidor, an CCXXIV, Nicolas George a écrit :
> Well, looking at the code, I am thinking that the current design is flawed:
> the extra alloc in ff_bsf_get_packet() seems completely useless, and could
> be removed as is without any other change in the current code, because all
> current filters are 1:1, it would be different for future 1:N filters. Maybe
> implementing ff_bsf_peek_packet() and using it to replace
> ff_bsf_get_packet() in 1:1 cases would do the trick.
I have checked that the following quick-and-dirty changes pass FATE. Making
it in shape (testing filters not covered by FATE, making future-proof) would
take time that I would like to spend on lavfi right now. But it proves the
overhead can be reduced easily.
Regards,
--
Nicolas George
diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c
index 88b7f29..05fa1e3 100644
--- a/libavcodec/bsf.c
+++ b/libavcodec/bsf.c
@@ -208,12 +208,7 @@ int ff_bsf_get_packet(AVBSFContext *ctx, AVPacket **pkt)
!ctx->internal->buffer_pkt->side_data_elems)
return AVERROR(EAGAIN);
- tmp_pkt = av_packet_alloc();
- if (!tmp_pkt)
- return AVERROR(ENOMEM);
-
*pkt = ctx->internal->buffer_pkt;
- ctx->internal->buffer_pkt = tmp_pkt;
return 0;
}
diff --git a/libavcodec/h264_mp4toannexb_bsf.c b/libavcodec/h264_mp4toannexb_bsf.c
index 163d0f5..26e26c0 100644
--- a/libavcodec/h264_mp4toannexb_bsf.c
+++ b/libavcodec/h264_mp4toannexb_bsf.c
@@ -274,7 +274,7 @@ next_nal:
fail:
if (ret < 0)
av_packet_unref(out);
- av_packet_free(&in);
+ av_packet_unref(in);
return ret;
}
diff --git a/libavcodec/mpeg4_unpack_bframes_bsf.c b/libavcodec/mpeg4_unpack_bframes_bsf.c
index 0615621..257efaf 100644
--- a/libavcodec/mpeg4_unpack_bframes_bsf.c
+++ b/libavcodec/mpeg4_unpack_bframes_bsf.c
@@ -151,7 +151,7 @@ static int mpeg4_unpack_bframes_filter(AVBSFContext *ctx, AVPacket *out)
av_packet_move_ref(out, in);
}
- av_packet_free(&in);
+ av_packet_unref(in);
return 0;
}
diff --git a/libavcodec/vp9_superframe_bsf.c b/libavcodec/vp9_superframe_bsf.c
index b686adb..9391fcb 100644
--- a/libavcodec/vp9_superframe_bsf.c
+++ b/libavcodec/vp9_superframe_bsf.c
@@ -178,7 +178,7 @@ static int vp9_superframe_filter(AVBSFContext *ctx, AVPacket *out)
done:
if (res < 0)
av_packet_unref(out);
- av_packet_free(&in);
+ av_packet_unref(in);
return res;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160628/e81a20a2/attachment.sig>
More information about the ffmpeg-devel
mailing list