summaryrefslogtreecommitdiffstats
path: root/libavcodec/bsf.c
diff options
context:
space:
mode:
authorJan Sebechlebsky <sebechlebskyjan@gmail.com>2016-07-28 18:18:13 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2016-08-13 12:46:18 +0200
commit7ae52f8a6b4a137f79b032b7094b3d5867839d52 (patch)
tree37983483de0994f74168b16ae5d2e4305fb7fff2 /libavcodec/bsf.c
parent79dc94a63b30369e39792e81cb032f2cf40539b4 (diff)
downloadffmpeg-streaming-7ae52f8a6b4a137f79b032b7094b3d5867839d52.zip
ffmpeg-streaming-7ae52f8a6b4a137f79b032b7094b3d5867839d52.tar.gz
avcodec/bsf: Add ff_bsf_get_packet_ref() function
Use of this function can save unnecessary malloc operation in bitstream filter. Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/bsf.c')
-rw-r--r--libavcodec/bsf.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c
index 8e36861..40fc925 100644
--- a/libavcodec/bsf.c
+++ b/libavcodec/bsf.c
@@ -220,3 +220,19 @@ int ff_bsf_get_packet(AVBSFContext *ctx, AVPacket **pkt)
return 0;
}
+
+int ff_bsf_get_packet_ref(AVBSFContext *ctx, AVPacket *pkt)
+{
+ AVBSFInternal *in = ctx->internal;
+
+ if (in->eof)
+ return AVERROR_EOF;
+
+ if (!ctx->internal->buffer_pkt->data &&
+ !ctx->internal->buffer_pkt->side_data_elems)
+ return AVERROR(EAGAIN);
+
+ av_packet_move_ref(pkt, ctx->internal->buffer_pkt);
+
+ return 0;
+}
OpenPOWER on IntegriCloud