[FFmpeg-devel] [PATCH] Define endian variant for PIX_FMT_RGB/BGR_5X5
Stefano Sabatini
stefano.sabatini-lala
Sun Mar 15 19:57:05 CET 2009
On date Sunday 2009-03-15 19:24:03 +0100, Michael Niedermayer encoded:
> On Sun, Mar 15, 2009 at 03:54:00PM +0100, Stefano Sabatini wrote:
[...]
> > @@ -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
Indeed (also I'm not perfectly convinced that's a good idea, maybe
this is a requirement we could avoid using the PIX_FMT_BE in
pixdesc?).
Fixed locally.
> [...]
>
> > 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
Maybe we could make av_get_pix_fmt("rgb565") select the correct
variant according to the endianess of the system (for example:
avcodec_get_pix_fmt() looks for "rgb565", it's missing, so it tryies
again with "rgb565le"/"rgb565be").
Would be this acceptable?
Regards.
--
FFmpeg = Fundamental and Fierce Mega Pacific Elaborated Guru
More information about the ffmpeg-devel
mailing list