summaryrefslogtreecommitdiff
path: root/libavcodec/mpeg12dec.c
diff options
context:
space:
mode:
authorKieran Kunhya <kierank@obe.tv>2014-08-03 19:24:56 +0100
committerDiego Biurrun <diego@biurrun.de>2014-08-03 15:43:02 -0700
commit1ef9e8376466bb1e2c147e47554b94cab9c8b04a (patch)
treeeccb333b18ff0e037c9b2956f12e752ade4ef0c5 /libavcodec/mpeg12dec.c
parentd0393d79bc3d61c9f2ff832c0e273b7774ff0269 (diff)
avcodec: Deprecate dtg_active_format field in favor of avframe side-data
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Diffstat (limited to 'libavcodec/mpeg12dec.c')
-rw-r--r--libavcodec/mpeg12dec.c20
1 files changed, 19 insertions, 1 deletions
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;