aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorKieran Kunhya <kierank@obe.tv>2014-08-03 19:24:56 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-08-04 05:36:44 +0200
commit2a3c36e920d958e99fb4edf065a6713c30f2c2a9 (patch)
treee9a75b83c7cdcd9bc0f24a7bcf3f0183058c8422 /libavcodec
parent2793b218bdd59db51f1f5c960c508fea7190310e (diff)
downloadffmpeg-2a3c36e920d958e99fb4edf065a6713c30f2c2a9.tar.gz
Deprecate AFD field and add AFD as side-data
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/avcodec.h5
-rw-r--r--libavcodec/mpeg12dec.c20
-rw-r--r--libavcodec/version.h5
3 files changed, 27 insertions, 3 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 6ef9da40df..8ba58516b4 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -1690,6 +1690,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)
@@ -1697,8 +1698,9 @@ typedef struct AVCodecContext {
*
* - encoding: unused
* - decoding: Set by decoder.
+ * @deprecated Deprecated in favour 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
@@ -1706,6 +1708,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
/**
* maximum motion estimation search range in subpel units
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index 25e281dbc3..f4582ef1ec 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -56,6 +56,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;
@@ -1659,6 +1661,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
@@ -2264,6 +2278,7 @@ static void mpeg_decode_user_data(AVCodecContext *avctx,
{
Mpeg1Context *s = avctx->priv_data;
const uint8_t *buf_end = p + buf_size;
+ Mpeg1Context *s1 = avctx->priv_data;
if (buf_size > 29){
int i;
@@ -2290,7 +2305,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
+ 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' &&
@@ -2302,7 +2321,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 7a7a2e9b21..dc7af8bc65 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -30,7 +30,7 @@
#define LIBAVCODEC_VERSION_MAJOR 55
#define LIBAVCODEC_VERSION_MINOR 72
-#define LIBAVCODEC_VERSION_MICRO 100
+#define LIBAVCODEC_VERSION_MICRO 101
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
@@ -168,5 +168,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 */