diff options
author | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2016-04-17 20:47:25 +0300 |
---|---|---|
committer | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2016-04-17 20:47:40 +0300 |
commit | af9cac1be1750ecc0e12c6788a3aeed1f1a778be (patch) | |
tree | 2e34226dbd4010774f6ffef448aab4b7d4f88544 /libavcodec/dca_core_bsf.c | |
parent | 6d160afab2fa8d3bfb216fee96d3537ffc9e86e8 (diff) | |
parent | 33d18982fa03feb061c8f744a4f0a9175c1f63ab (diff) |
Merge commit '33d18982fa03feb061c8f744a4f0a9175c1f63ab'
* commit '33d18982fa03feb061c8f744a4f0a9175c1f63ab':
lavc: add a new bitstream filtering API
Conversions-by: Hendrik Leppkes <h.leppkes@gmail.com>
Conversions-by: Derek Buitenguis <derek.buitenhuis@gmail.com>
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Diffstat (limited to 'libavcodec/dca_core_bsf.c')
-rw-r--r-- | libavcodec/dca_core_bsf.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/libavcodec/dca_core_bsf.c b/libavcodec/dca_core_bsf.c index 7d372369ef..9edc0cfd61 100644 --- a/libavcodec/dca_core_bsf.c +++ b/libavcodec/dca_core_bsf.c @@ -19,21 +19,23 @@ */ #include "avcodec.h" +#include "bsf.h" #include "bytestream.h" #include "dca_syncwords.h" #include "libavutil/mem.h" -static int dca_core(AVBitStreamFilterContext *bsfc, - AVCodecContext *avctx, const char *args, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, - int keyframe) +static int dca_core_filter(AVBSFContext *ctx, AVPacket *out) { + AVPacket *in; GetByteContext gb; uint32_t syncword; - int core_size = 0; + int core_size = 0, ret; - bytestream2_init(&gb, buf, buf_size); + ret = ff_bsf_get_packet(ctx, &in); + if (ret < 0) + return ret; + + bytestream2_init(&gb, in->data, in->size); syncword = bytestream2_get_be32(&gb); bytestream2_skip(&gb, 1); @@ -43,18 +45,22 @@ static int dca_core(AVBitStreamFilterContext *bsfc, break; } - *poutbuf = (uint8_t *)buf; + av_packet_move_ref(out, in); + av_packet_free(&in); - if (core_size > 0 && core_size <= buf_size) { - *poutbuf_size = core_size; - } else { - *poutbuf_size = buf_size; + if (core_size > 0 && core_size <= out->size) { + out->size = core_size; } return 0; } -AVBitStreamFilter ff_dca_core_bsf = { - .name = "dca_core", - .filter = dca_core, +static const enum AVCodecID codec_ids[] = { + AV_CODEC_ID_DTS, AV_CODEC_ID_NONE, +}; + +const AVBitStreamFilter ff_dca_core_bsf = { + .name = "dca_core", + .filter = dca_core_filter, + .codec_ids = codec_ids, }; |