[FFmpeg-devel] [PATCH 1/2] CrystalHD: Keep mp4toannexb filter around for entire decoder lifetime.
Philip Langdale
philipl at overt.org
Mon Jun 13 05:39:27 CEST 2011
In preparation for using the filter on the actual bitstream, we need
to extend it's lifetime to match that of the decoder.
Signed-off-by: Philip Langdale <philipl at overt.org>
---
libavcodec/crystalhd.c | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/libavcodec/crystalhd.c b/libavcodec/crystalhd.c
index 3c80217..851abd7 100644
--- a/libavcodec/crystalhd.c
+++ b/libavcodec/crystalhd.c
@@ -124,6 +124,7 @@ typedef struct {
AVFrame pic;
HANDLE dev;
+ AVBitStreamFilterContext *bsfc;
AVCodecParserContext *parser;
uint8_t is_70012;
@@ -338,6 +339,9 @@ static av_cold int uninit(AVCodecContext *avctx)
DtsDeviceClose(device);
av_parser_close(priv->parser);
+ if (priv->bsfc) {
+ av_bitstream_filter_close(priv->bsfc);
+ }
av_free(priv->sps_pps_buf);
@@ -397,7 +401,6 @@ static av_cold int init(AVCodecContext *avctx)
{
uint8_t *dummy_p;
int dummy_int;
- AVBitStreamFilterContext *bsfc;
uint32_t orig_data_size = avctx->extradata_size;
uint8_t *orig_data = av_malloc(orig_data_size);
@@ -409,16 +412,15 @@ static av_cold int init(AVCodecContext *avctx)
memcpy(orig_data, avctx->extradata, orig_data_size);
- bsfc = av_bitstream_filter_init("h264_mp4toannexb");
- if (!bsfc) {
+ priv->bsfc = av_bitstream_filter_init("h264_mp4toannexb");
+ if (!priv->bsfc) {
av_log(avctx, AV_LOG_ERROR,
"Cannot open the h264_mp4toannexb BSF!\n");
av_free(orig_data);
return AVERROR_BSF_NOT_FOUND;
}
- av_bitstream_filter_filter(bsfc, avctx, NULL, &dummy_p,
+ av_bitstream_filter_filter(priv->bsfc, avctx, NULL, &dummy_p,
&dummy_int, NULL, 0, 0);
- av_bitstream_filter_close(bsfc);
priv->sps_pps_buf = avctx->extradata;
priv->sps_pps_size = avctx->extradata_size;
--
1.7.4.1
More information about the ffmpeg-devel
mailing list