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

Michael Niedermayer michaelni
Sun Mar 15 19:24:03 CET 2009


On Sun, Mar 15, 2009 at 03:54:00PM +0100, Stefano Sabatini wrote:
> On date Sunday 2009-03-15 02:13:17 +0100, Michael Niedermayer encoded:
> > On Sat, Mar 14, 2009 at 11:54:35PM +0100, Stefano Sabatini wrote:
> > > Hi all, as in subject.
> > > 
> > > BTW, since libavutil API is in flux state due to its major bump, what
> > > about to avoid the ifver < 51 and simply remove the ifdeffed
> > > macros?
> > 
> > agree no ifdef needed
> > also patches ok if you tested them
> 
> Sorry, for some strange reason the previous patches seemed to work, but
> they don't.
> 
> Attached series has been tested, in the sense that it passes
> regressions tests, I'm somehow unsure for what regards the RGB5X5
> stuff since previously we had just the RGB565 case to manage in both
> LE and BE systems, maybe something has to be changed in libswscale.
> 
> Change in imgconvert.c looks necessary, otherwise we can't even select
> rgb5X5[bl]e.
[...]

> @@ -90,10 +86,8 @@
>      PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1,  8bpp, (msb)1R 2G 1B(lsb)
>      PIX_FMT_NV12,      ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 for UV
>      PIX_FMT_NV21,      ///< as above, but U and V bytes are swapped
> -
>      PIX_FMT_RGB32_1,   ///< packed RGB 8:8:8, 32bpp, (msb)8R 8G 8B 8A(lsb), in CPU endianness
>      PIX_FMT_BGR32_1,   ///< packed RGB 8:8:8, 32bpp, (msb)8B 8G 8R 8A(lsb), in CPU endianness
> -
>      PIX_FMT_GRAY16BE,  ///<        Y        , 16bpp, big-endian
>      PIX_FMT_GRAY16LE,  ///<        Y        , 16bpp, little-endian
>      PIX_FMT_YUV440P,   ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)

cosmetic


> @@ -109,6 +103,17 @@
>      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
> +
> +    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_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 suspect you violate the "note" above with that ordering


[...]

> Index: ffmpeg/tests/libav.regression.ref
> ===================================================================
> --- ffmpeg.orig/tests/libav.regression.ref	2009-03-15 15:28:06.000000000 +0100
> +++ ffmpeg/tests/libav.regression.ref	2009-03-15 15:28:13.000000000 +0100
> @@ -124,10 +124,10 @@
>  304128 ./tests/data/b-libav-bgr24.yuv
>  7c1108633b0fef1aff5637fe70e74d0c *./tests/data/b-libav-rgb32.yuv
>  304128 ./tests/data/b-libav-rgb32.yuv
> -d86c3fa21db8b4eaf3efb66b7b245e46 *./tests/data/b-libav-rgb565.yuv
> -304128 ./tests/data/b-libav-rgb565.yuv
> -64d733888d3f17513383453fae238fdc *./tests/data/b-libav-rgb555.yuv
> -304128 ./tests/data/b-libav-rgb555.yuv
> +d86c3fa21db8b4eaf3efb66b7b245e46 *./tests/data/b-libav-rgb565le.yuv
> +304128 ./tests/data/b-libav-rgb565le.yuv
> +64d733888d3f17513383453fae238fdc *./tests/data/b-libav-rgb555le.yuv
> +304128 ./tests/data/b-libav-rgb555le.yuv
>  838958bb95a41057a18bbb647c39ba87 *./tests/data/b-libav-gray.yuv
>  304128 ./tests/data/b-libav-gray.yuv
>  c7c9d2b2926e1677c27bd7df89f53073 *./tests/data/b-libav-monow.yuv
> Index: ffmpeg/tests/regression.sh
> ===================================================================
> --- ffmpeg.orig/tests/regression.sh	2009-03-15 14:56:06.000000000 +0100
> +++ ffmpeg/tests/regression.sh	2009-03-15 14:56:13.000000000 +0100
> @@ -639,7 +639,7 @@
>  
>  if [ -n "$do_pixfmt" ] ; then
>  conversions="yuv420p yuv422p yuv444p yuyv422 yuv410p yuv411p yuvj420p \
> -             yuvj422p yuvj444p rgb24 bgr24 rgb32 rgb565 rgb555 gray monow \
> +             yuvj422p yuvj444p rgb24 bgr24 rgb32 rgb565le rgb555le gray monow \
>               monob yuv440p yuvj440p"
>  for pix_fmt in $conversions ; do
>      file=${outfile}libav-${pix_fmt}.yuv

that wont work on BE-archs

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I wish the Xiph folks would stop pretending they've got something they
do not.  Somehow I fear this will remain a wish. -- M?ns Rullg?rd
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090315/3cf078ab/attachment.pgp>



More information about the ffmpeg-devel mailing list