Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>2016-04-17 20:47:25 +0300
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>2016-04-17 20:47:40 +0300
commitaf9cac1be1750ecc0e12c6788a3aeed1f1a778be (patch)
tree2e34226dbd4010774f6ffef448aab4b7d4f88544 /libavcodec/dca_core_bsf.c
parent6d160afab2fa8d3bfb216fee96d3537ffc9e86e8 (diff)
parent33d18982fa03feb061c8f744a4f0a9175c1f63ab (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.c36
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,
};