[FFmpeg-devel] [PATCH 3/6] Add AV_PIX_FMT_NV12T.

wm4 nfxjfg at googlemail.com
Thu Nov 20 18:42:19 CET 2014


On Thu, 20 Nov 2014 17:51:54 +0100
Alexis Ballier <aballier at gentoo.org> wrote:

> This is the only format supported by MFC5 HW decoders (e.g. Samsung exynos 4412).
> ---
>  libavutil/pixdesc.c | 12 ++++++++++++
>  libavutil/pixfmt.h  |  1 +
>  2 files changed, 13 insertions(+)
> 
> diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
> index 648d014..426dfd4 100644
> --- a/libavutil/pixdesc.c
> +++ b/libavutil/pixdesc.c
> @@ -1900,6 +1900,18 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
>          .name = "vda",
>          .flags = AV_PIX_FMT_FLAG_HWACCEL,
>      },
> +    [AV_PIX_FMT_NV12T] = {
> +        .name = "nv12t",
> +        .nb_components = 3,
> +        .log2_chroma_w = 1,
> +        .log2_chroma_h = 1,
> +        .comp = {
> +            { 0, 0, 1, 0, 7 },        /* Y */
> +            { 1, 1, 1, 0, 7 },        /* U */
> +            { 1, 1, 2, 0, 7 },        /* V */
> +        },
> +        .flags = AV_PIX_FMT_FLAG_PLANAR,
> +    },
>  };
>  
>  static const char *color_range_names[AVCOL_RANGE_NB] = {
> diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
> index 756a1a7..c6709a1 100644
> --- a/libavutil/pixfmt.h
> +++ b/libavutil/pixfmt.h
> @@ -289,6 +289,7 @@ enum AVPixelFormat {
>  #if !FF_API_XVMC
>      AV_PIX_FMT_XVMC,///< XVideo Motion Acceleration via common packet passing
>  #endif /* !FF_API_XVMC */
> +    AV_PIX_FMT_NV12T,     ///< Same as NV12 except the coordinates differ: Z-shape tiled 64x32 macroblocks. V4L2 specific format corresponding to V4L2_PIX_FMT_NV12MT
>  
>      AV_PIX_FMT_NB,        ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
>  

I think this should be rejected. It's far too special to be useful in
general, and it's not even pixel- or line-addressable (Z-shaped tiles,
seriously?). It's pretty much a raw codec, not a pixel format.

Also, doesn't libv4l2 handle converting this to something sane
transparently?

If this is needed for the m2m filter, then maybe it should be part of
the v4l2 libavdevice.


More information about the ffmpeg-devel mailing list