On Mon, Jul 28, 2014 at 4:14 PM, Kieran Kunhya <[email protected]> wrote:
> ---
> doc/APIchanges | 4 ++++
> libavcodec/avcodec.h | 5 ++++-
> libavcodec/mpeg12dec.c | 21 ++++++++++++++++++++-
> libavcodec/version.h | 5 ++++-
> libavfilter/vf_showinfo.c | 3 +++
> libavutil/frame.h | 12 ++++++++++++
> libavutil/version.h | 2 +-
> 7 files changed, 48 insertions(+), 4 deletions(-)
>
> diff --git a/doc/APIchanges b/doc/APIchanges
> index 9535b88..92fb8a3 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -13,6 +13,10 @@ libavutil: 2013-12-xx
>
> API changes, most recent first:
>
> +2014-07-xx - xxxxxxx - lavc 55.58.0 - avcodec.h
> +2014-07-xx - xxxxxxx - lavu 53.19.0 - frame.h
> + Deprecate AVCodecContext.dtg_active_format and use side-data instead
> +
> 2014-07-xx - xxxxxxx - lavu 53.18.0 - display.h
> Add av_display_matrix_flip() to flip the transformation matrix.
>
> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index cc74aee..b48217c 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -1493,6 +1493,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)
> @@ -1500,8 +1501,9 @@ typedef struct AVCodecContext {
> *
> * - encoding: unused
> * - decoding: Set by decoder.
> + * @deprecated Deprecated in favour of AVSideData
Diego likes en_US better.
> */
> - 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
> @@ -1509,6 +1511,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 aa98454..cec5e33 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,12 @@ 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;
> +#else
> + s1->has_afd = 1;
> + s1->afd = p[0] & 0x0f;
> +#endif
> }
> } else if (buf_end - p >= 6 &&
> p[0] == 'J' && p[1] == 'P' && p[2] == '3' && p[3] == 'D' &&
> @@ -2246,7 +2266,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 99ba631..c5b568f 100644
> --- a/libavcodec/version.h
> +++ b/libavcodec/version.h
> @@ -29,7 +29,7 @@
> #include "libavutil/version.h"
>
> #define LIBAVCODEC_VERSION_MAJOR 55
> -#define LIBAVCODEC_VERSION_MINOR 56
> +#define LIBAVCODEC_VERSION_MINOR 57
> #define LIBAVCODEC_VERSION_MICRO 0
>
> #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
> @@ -144,5 +144,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 */
> diff --git a/libavfilter/vf_showinfo.c b/libavfilter/vf_showinfo.c
> index cf90995..23af422 100644
> --- a/libavfilter/vf_showinfo.c
> +++ b/libavfilter/vf_showinfo.c
> @@ -122,6 +122,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame
> *frame)
> av_log(ctx, AV_LOG_INFO, "displaymatrix: rotation of %.2f
> degrees",
> av_display_rotation_get((int32_t *)sd->data));
> break;
> + case AV_FRAME_DATA_AFD:
> + av_log(ctx, AV_LOG_INFO, "afd: value of %u", sd->data[0]);
> + break;
> default:
> av_log(ctx, AV_LOG_WARNING, "unknown side data type %d (%d
> bytes)",
> sd->type, sd->size);
Can you write a wrapper that converts the AFD value to text? "afd:
same aspect ratio (value 8)" is better than "afd: value of 8".
> diff --git a/libavutil/frame.h b/libavutil/frame.h
> index b2159d3..cbc48f1 100644
> --- a/libavutil/frame.h
> +++ b/libavutil/frame.h
> @@ -82,8 +82,20 @@ enum AVFrameSideDataType {
> * See libavutil/display.h for a detailed description of the data.
> */
> AV_FRAME_DATA_DISPLAYMATRIX,
> + /**
> + * Active Format Description data consisting of a single byte as
> specified in ETSI TS 101 154
> + */
> + AV_FRAME_DATA_AFD,
> };
>
> +#define AV_DTG_AFD_SAME 8
> +#define AV_DTG_AFD_4_3 9
> +#define AV_DTG_AFD_16_9 10
> +#define AV_DTG_AFD_14_9 11
> +#define AV_DTG_AFD_4_3_SP_14_9 13
> +#define AV_DTG_AFD_16_9_SP_14_9 14
> +#define AV_DTG_AFD_SP_4_3 15
> +
What is DTG? Please document it.
> typedef struct AVFrameSideData {
> enum AVFrameSideDataType type;
> uint8_t *data;
> diff --git a/libavutil/version.h b/libavutil/version.h
> index a2625b5..e981948 100644
> --- a/libavutil/version.h
> +++ b/libavutil/version.h
> @@ -54,7 +54,7 @@
> */
>
> #define LIBAVUTIL_VERSION_MAJOR 53
> -#define LIBAVUTIL_VERSION_MINOR 18
> +#define LIBAVUTIL_VERSION_MINOR 19
> #define LIBAVUTIL_VERSION_MICRO 0
>
> #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
> --
> 1.7.9.5
>
> _______________________________________________
> libav-devel mailing list
> [email protected]
> https://lists.libav.org/mailman/listinfo/libav-devel
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel