[FFmpeg-devel] [PATCH] Define endian variant for PIX_FMT_RGB/BGR_5X5

Stefano Sabatini stefano.sabatini-lala
Sun Mar 22 00:11:23 CET 2009


On date Wednesday 2009-03-18 22:30:26 +0100, Michael Niedermayer encoded:
> On Tue, Mar 17, 2009 at 09:14:32PM +0100, Stefano Sabatini wrote:
[...]
> > Index: ffmpeg/libavutil/pixfmt.h
> > ===================================================================
> > --- ffmpeg.orig/libavutil/pixfmt.h	2009-03-15 13:12:28.000000000 +0100
> > +++ ffmpeg/libavutil/pixfmt.h	2009-03-15 14:12:48.000000000 +0100
> > @@ -113,6 +113,12 @@
> >  };
> >  
> >  #ifdef WORDS_BIGENDIAN
> > +#   define PIX_FMT_NE(p) PIX_FMT_##p##BE
> > +#else
> > +#   define PIX_FMT_NE(p) PIX_FMT_##p##LE
> > +#endif
> > +
> > +#ifdef WORDS_BIGENDIAN
> >  #define PIX_FMT_RGBA PIX_FMT_RGB32_1
> >  #define PIX_FMT_BGRA PIX_FMT_BGR32_1
> >  #define PIX_FMT_ARGB PIX_FMT_RGB32
> 
> ok
> 
> 
> > Index: ffmpeg/libavutil/pixfmt.h
> > ===================================================================
> > --- ffmpeg.orig/libavutil/pixfmt.h	2009-03-15 13:14:30.000000000 +0100
> > +++ ffmpeg/libavutil/pixfmt.h	2009-03-15 13:16:39.000000000 +0100
> > @@ -123,15 +123,14 @@
> >  #define PIX_FMT_BGRA PIX_FMT_BGR32_1
> >  #define PIX_FMT_ARGB PIX_FMT_RGB32
> >  #define PIX_FMT_ABGR PIX_FMT_BGR32
> > -#define PIX_FMT_GRAY16 PIX_FMT_GRAY16BE
> > -#define PIX_FMT_RGB48 PIX_FMT_RGB48BE
> >  #else
> >  #define PIX_FMT_RGBA PIX_FMT_BGR32
> >  #define PIX_FMT_BGRA PIX_FMT_RGB32
> >  #define PIX_FMT_ARGB PIX_FMT_BGR32_1
> >  #define PIX_FMT_ABGR PIX_FMT_RGB32_1
> > -#define PIX_FMT_GRAY16 PIX_FMT_GRAY16LE
> > -#define PIX_FMT_RGB48 PIX_FMT_RGB48LE
> >  #endif
> >  
> > +#define PIX_FMT_GRAY16 PIX_FMT_NE(GRAY16)
> > +#define PIX_FMT_RGB48  PIX_FMT_NE(RGB48)
> > +
> >  #endif /* AVUTIL_PIXFMT_H */
> 
> ok
> 
> 
> > Index: ffmpeg/libavutil/avutil.h
> > ===================================================================
> > --- ffmpeg.orig/libavutil/avutil.h	2009-03-17 20:15:18.000000000 +0100
> > +++ ffmpeg/libavutil/avutil.h	2009-03-17 20:16:28.000000000 +0100
> > @@ -35,7 +35,7 @@
> >  #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
> >  
> >  #define LIBAVUTIL_VERSION_MAJOR 50
> > -#define LIBAVUTIL_VERSION_MINOR  0
> > +#define LIBAVUTIL_VERSION_MINOR  1
> >  #define LIBAVUTIL_VERSION_MICRO  0
> >  
> >  #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
> > Index: ffmpeg/libavutil/pixfmt.h
> > ===================================================================
> > --- ffmpeg.orig/libavutil/pixfmt.h	2009-03-17 20:16:27.000000000 +0100
> > +++ ffmpeg/libavutil/pixfmt.h	2009-03-17 20:16:28.000000000 +0100
> > @@ -66,8 +66,6 @@
> >      PIX_FMT_RGB32,     ///< packed RGB 8:8:8, 32bpp, (msb)8A 8R 8G 8B(lsb), in CPU endianness
> >      PIX_FMT_YUV410P,   ///< planar YUV 4:1:0,  9bpp, (1 Cr & Cb sample per 4x4 Y samples)
> >      PIX_FMT_YUV411P,   ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
> > -    PIX_FMT_RGB565,    ///< packed RGB 5:6:5, 16bpp, (msb)   5R 6G 5B(lsb), in CPU endianness
> > -    PIX_FMT_RGB555,    ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), in CPU endianness, most significant bit to 0
> >      PIX_FMT_GRAY8,     ///<        Y        ,  8bpp
> >      PIX_FMT_MONOWHITE, ///<        Y        ,  1bpp, 0 is white, 1 is black
> >      PIX_FMT_MONOBLACK, ///<        Y        ,  1bpp, 0 is black, 1 is white
> > @@ -80,8 +78,6 @@
> >      PIX_FMT_UYVY422,   ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
> >      PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
> >      PIX_FMT_BGR32,     ///< packed RGB 8:8:8, 32bpp, (msb)8A 8B 8G 8R(lsb), in CPU endianness
> > -    PIX_FMT_BGR565,    ///< packed RGB 5:6:5, 16bpp, (msb)   5B 6G 5R(lsb), in CPU endianness
> > -    PIX_FMT_BGR555,    ///< packed RGB 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), in CPU endianness, most significant bit to 1
> >      PIX_FMT_BGR8,      ///< packed RGB 3:3:2,  8bpp, (msb)2B 3G 3R(lsb)
> >      PIX_FMT_BGR4,      ///< packed RGB 1:2:1,  4bpp, (msb)1B 2G 1R(lsb)
> >      PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1,  8bpp, (msb)1B 2G 1R(lsb)
> > @@ -106,6 +102,17 @@
> >      PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
> >      PIX_FMT_RGB48BE,   ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, big-endian
> >      PIX_FMT_RGB48LE,   ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, little-endian
> > +
> > +    PIX_FMT_RGB565BE,  ///< packed RGB 5:6:5, 16bpp, (msb)   5R 6G 5B(lsb), big-endian
> > +    PIX_FMT_RGB565LE,  ///< packed RGB 5:6:5, 16bpp, (msb)   5R 6G 5B(lsb), little-endian
> > +    PIX_FMT_RGB555BE,  ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0
> > +    PIX_FMT_RGB555LE,  ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0
> > +
> > +    PIX_FMT_BGR565BE,  ///< packed BGR 5:6:5, 16bpp, (msb)   5B 6G 5R(lsb), big-endian
> > +    PIX_FMT_BGR565LE,  ///< packed BGR 5:6:5, 16bpp, (msb)   5B 6G 5R(lsb), little-endian
> > +    PIX_FMT_BGR555BE,  ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1
> > +    PIX_FMT_BGR555LE,  ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1
> > +
> >      PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers
> >      PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers
> >      PIX_FMT_VAAPI_VLD,  ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
> > @@ -132,5 +139,9 @@
> >  
> >  #define PIX_FMT_GRAY16 PIX_FMT_NE(GRAY16)
> >  #define PIX_FMT_RGB48  PIX_FMT_NE(RGB48)
> > +#define PIX_FMT_RGB565 PIX_FMT_NE(RGB565)
> > +#define PIX_FMT_RGB555 PIX_FMT_NE(RGB555)
> > +#define PIX_FMT_BGR565 PIX_FMT_NE(BGR565)
> > +#define PIX_FMT_BGR555 PIX_FMT_NE(BGR555)
> >  
> >  #endif /* AVUTIL_PIXFMT_H */
> > Index: ffmpeg/libavcodec/imgconvert.c
> > ===================================================================
> > --- ffmpeg.orig/libavcodec/imgconvert.c	2009-03-17 20:16:24.000000000 +0100
> > +++ ffmpeg/libavcodec/imgconvert.c	2009-03-17 20:16:28.000000000 +0100
> > @@ -216,16 +216,32 @@
> >          .depth = 16,
> >          .x_chroma_shift = 0, .y_chroma_shift = 0,
> >      },
> > -    [PIX_FMT_RGB565] = {
> > -        .name = "rgb565",
> > +    [PIX_FMT_RGB565BE] = {
> > +        .name = "rgb565be",
> >          .nb_channels = 3,
> >          .color_type = FF_COLOR_RGB,
> >          .pixel_type = FF_PIXEL_PACKED,
> >          .depth = 5,
> >          .x_chroma_shift = 0, .y_chroma_shift = 0,
> >      },
> > -    [PIX_FMT_RGB555] = {
> > -        .name = "rgb555",
> > +    [PIX_FMT_RGB565LE] = {
> > +        .name = "rgb565le",
> > +        .nb_channels = 3,
> > +        .color_type = FF_COLOR_RGB,
> > +        .pixel_type = FF_PIXEL_PACKED,
> > +        .depth = 5,
> > +        .x_chroma_shift = 0, .y_chroma_shift = 0,
> > +    },
> > +    [PIX_FMT_RGB555BE] = {
> > +        .name = "rgb555be",
> > +        .nb_channels = 3,
> > +        .color_type = FF_COLOR_RGB,
> > +        .pixel_type = FF_PIXEL_PACKED,
> > +        .depth = 5,
> > +        .x_chroma_shift = 0, .y_chroma_shift = 0,
> > +    },
> > +    [PIX_FMT_RGB555LE] = {
> > +        .name = "rgb555le",
> >          .nb_channels = 3,
> >          .color_type = FF_COLOR_RGB,
> >          .pixel_type = FF_PIXEL_PACKED,
> > @@ -327,16 +343,32 @@
> >          .depth = 8,
> >          .x_chroma_shift = 0, .y_chroma_shift = 0,
> >      },
> > -    [PIX_FMT_BGR565] = {
> > -        .name = "bgr565",
> > +    [PIX_FMT_BGR565BE] = {
> > +        .name = "bgr565be",
> > +        .nb_channels = 3,
> > +        .color_type = FF_COLOR_RGB,
> > +        .pixel_type = FF_PIXEL_PACKED,
> > +        .depth = 5,
> > +        .x_chroma_shift = 0, .y_chroma_shift = 0,
> > +    },
> > +    [PIX_FMT_BGR565LE] = {
> > +        .name = "bgr565le",
> > +        .nb_channels = 3,
> > +        .color_type = FF_COLOR_RGB,
> > +        .pixel_type = FF_PIXEL_PACKED,
> > +        .depth = 5,
> > +        .x_chroma_shift = 0, .y_chroma_shift = 0,
> > +    },
> > +    [PIX_FMT_BGR555BE] = {
> > +        .name = "bgr555be",
> >          .nb_channels = 3,
> >          .color_type = FF_COLOR_RGB,
> >          .pixel_type = FF_PIXEL_PACKED,
> >          .depth = 5,
> >          .x_chroma_shift = 0, .y_chroma_shift = 0,
> >      },
> > -    [PIX_FMT_BGR555] = {
> > -        .name = "bgr555",
> > +    [PIX_FMT_BGR555LE] = {
> > +        .name = "bgr555le",
> >          .nb_channels = 3,
> >          .color_type = FF_COLOR_RGB,
> >          .pixel_type = FF_PIXEL_PACKED,
> > Index: ffmpeg/libavcodec/pixdesc.c
> > ===================================================================
> > --- ffmpeg.orig/libavcodec/pixdesc.c	2009-03-17 20:15:56.000000000 +0100
> > +++ ffmpeg/libavcodec/pixdesc.c	2009-03-17 20:16:28.000000000 +0100
> > @@ -142,8 +142,6 @@
> >          },
> >          .flags = PIX_FMT_BE,
> >      },
> > -//FIXME change pix fmt defines so that we have a LE & BE instead of a native-endian
> > -#if 0
> >      [PIX_FMT_RGB565LE] = {
> >          .nb_channels  = 3,
> >          .log2_chroma_w= 0,
> > @@ -165,7 +163,6 @@
> >          },
> >          .flags = PIX_FMT_BE,
> >      },
> > -#endif
> >      [PIX_FMT_MONOBLACK] = {
> >          .nb_channels  = 1,
> >          .log2_chroma_w= 0,
> 
> ok

All applied.

Note that the last one breaks backward compatibility, which was
allowed due to the major version transition in act.

Regards.
-- 
FFmpeg = Fostering and Forgiving Miracolous Puritan Elitist Gospel



More information about the ffmpeg-devel mailing list