diff options
author | Kieran Kunhya <kierank@obe.tv> | 2014-08-03 19:24:56 +0100 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2014-08-03 15:43:02 -0700 |
commit | 1ef9e8376466bb1e2c147e47554b94cab9c8b04a (patch) | |
tree | eccb333b18ff0e037c9b2956f12e752ade4ef0c5 /libavcodec | |
parent | d0393d79bc3d61c9f2ff832c0e273b7774ff0269 (diff) | |
download | ffmpeg-1ef9e8376466bb1e2c147e47554b94cab9c8b04a.tar.gz |
avcodec: Deprecate dtg_active_format field in favor of avframe side-data
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/avcodec.h | 5 | ||||
-rw-r--r-- | libavcodec/mpeg12dec.c | 20 | ||||
-rw-r--r-- | libavcodec/version.h | 5 |
3 files changed, 27 insertions, 3 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index dc8d57e186..3569ac15d1 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1503,6 +1503,7 @@ typedef struct AVCodecContext { */ int me_subpel_quality; +#if FF_API_AFD /** * DTG active format information (additional aspect ratio * information only used in DVB MPEG-2 transport streams) @@ -1510,8 +1511,9 @@ typedef struct AVCodecContext { * * - encoding: unused * - decoding: Set by decoder. + * @deprecated Deprecated in favor of AVSideData */ - int dtg_active_format; + attribute_deprecated int dtg_active_format; #define FF_DTG_AFD_SAME 8 #define FF_DTG_AFD_4_3 9 #define FF_DTG_AFD_16_9 10 @@ -1519,6 +1521,7 @@ typedef struct AVCodecContext { #define FF_DTG_AFD_4_3_SP_14_9 13 #define FF_DTG_AFD_16_9_SP_14_9 14 #define FF_DTG_AFD_SP_4_3 15 +#endif /* FF_API_AFD */ /** * maximum motion estimation search range in subpel units diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index aa98454d05..c84fd91b60 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -54,6 +54,8 @@ typedef struct Mpeg1Context { int has_stereo3d; uint8_t *a53_caption; int a53_caption_size; + uint8_t afd; + int has_afd; int slice_count; int save_aspect_info; int save_width, save_height, save_progressive_seq; @@ -1631,6 +1633,18 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size) *stereo = s1->stereo3d; s1->has_stereo3d = 0; } + + if (s1->has_afd) { + AVFrameSideData *sd = + av_frame_new_side_data(s->current_picture_ptr->f, + AV_FRAME_DATA_AFD, 1); + if (!sd) + return AVERROR(ENOMEM); + + *sd->data = s1->afd; + s1->has_afd = 0; + } + if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_FRAME)) ff_thread_finish_setup(avctx); } else { // second field @@ -2221,6 +2235,7 @@ static void mpeg_decode_user_data(AVCodecContext *avctx, const uint8_t *p, int buf_size) { const uint8_t *buf_end = p + buf_size; + Mpeg1Context *s1 = avctx->priv_data; /* we parse the DTG active format information */ if (buf_end - p >= 5 && @@ -2234,7 +2249,11 @@ static void mpeg_decode_user_data(AVCodecContext *avctx, if (flags & 0x40) { if (buf_end - p < 1) return; +#if FF_API_AFD avctx->dtg_active_format = p[0] & 0x0f; +#endif /* FF_API_AFD */ + s1->has_afd = 1; + s1->afd = p[0] & 0x0f; } } else if (buf_end - p >= 6 && p[0] == 'J' && p[1] == 'P' && p[2] == '3' && p[3] == 'D' && @@ -2246,7 +2265,6 @@ static void mpeg_decode_user_data(AVCodecContext *avctx, S3D_video_format_type == 0x04 || S3D_video_format_type == 0x08 || S3D_video_format_type == 0x23) { - Mpeg1Context *s1 = avctx->priv_data; s1->has_stereo3d = 1; diff --git a/libavcodec/version.h b/libavcodec/version.h index cd35ae6769..2c22adb35d 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -30,7 +30,7 @@ #define LIBAVCODEC_VERSION_MAJOR 55 #define LIBAVCODEC_VERSION_MINOR 57 -#define LIBAVCODEC_VERSION_MICRO 1 +#define LIBAVCODEC_VERSION_MICRO 2 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ @@ -147,5 +147,8 @@ #ifndef FF_API_CODEC_NAME #define FF_API_CODEC_NAME (LIBAVCODEC_VERSION_MAJOR < 57) #endif +#ifndef FF_API_AFD +#define FF_API_AFD (LIBAVCODEC_VERSION_MAJOR < 57) +#endif #endif /* AVCODEC_VERSION_H */ |