On Mon, 6 May 2013, Janne Grunau wrote:

On 2013-04-27 09:38:31 +0200, Anton Khirnov wrote:

Wouldn't it be more useful to have a function that swaps endianness?
It could probably have a shorter name too.

good idea, it's less special and works equally well for its intended use.

Janne

---8<---
---
libavutil/pixdesc.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
libavutil/pixdesc.h |  7 +++++++
libavutil/version.h |  2 +-
3 files changed, 56 insertions(+), 1 deletion(-)

diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
index 67f9c43..6b49678 100644
--- a/libavutil/pixdesc.c
+++ b/libavutil/pixdesc.c
@@ -1512,3 +1512,51 @@ int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
        ret += planes[i];
    return ret;
}
+
+
+enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt)
+{
+#define PIX_FMT_SWAP_ENDIANNESS(be, le)                                        
\
+    case AV_PIX_FMT_##be: return AV_PIX_FMT_##le;                              
\
+    case AV_PIX_FMT_##le: return AV_PIX_FMT_##be
+
+    switch(pix_fmt) {
+        PIX_FMT_SWAP_ENDIANNESS(GRAY16BE, GRAY16LE);
+        PIX_FMT_SWAP_ENDIANNESS(RGB48BE,  RGB48LE);
+        PIX_FMT_SWAP_ENDIANNESS(RGB565BE, RGB565LE);
+        PIX_FMT_SWAP_ENDIANNESS(RGB555BE, RGB555LE);
+        PIX_FMT_SWAP_ENDIANNESS(RGB444BE, RGB444LE);
+        PIX_FMT_SWAP_ENDIANNESS(BGR48BE,  BGR48LE);
+        PIX_FMT_SWAP_ENDIANNESS(BGR565BE, BGR565LE);
+        PIX_FMT_SWAP_ENDIANNESS(BGR555BE, BGR555LE);
+        PIX_FMT_SWAP_ENDIANNESS(BGR444BE, BGR444LE);
+
+        PIX_FMT_SWAP_ENDIANNESS(YUV420P9BE , YUV420P9LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUV422P9BE , YUV422P9LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUV444P9BE , YUV444P9LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUV420P10BE, YUV420P10LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUV422P10BE, YUV422P10LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUV444P10BE, YUV444P10LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUV420P16BE, YUV420P16LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUV422P16BE, YUV422P16LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUV444P16BE, YUV444P16LE);
+
+        PIX_FMT_SWAP_ENDIANNESS(GBRP9BE ,    GBRP9LE);
+        PIX_FMT_SWAP_ENDIANNESS(GBRP10BE,    GBRP10LE);
+        PIX_FMT_SWAP_ENDIANNESS(GBRP16BE,    GBRP16LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUVA420P9BE , YUVA420P9LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUVA422P9BE , YUVA422P9LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUVA444P9BE , YUVA444P9LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUVA420P10BE, YUVA420P10LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUVA422P10BE, YUVA422P10LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUVA444P10BE, YUVA444P10LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUVA420P16BE, YUVA420P16LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUVA422P16BE, YUVA422P16LE);
+        PIX_FMT_SWAP_ENDIANNESS(YUVA444P16BE, YUVA444P16LE);
+
+        PIX_FMT_SWAP_ENDIANNESS(XYZ12BE, XYZ12LE);

Any specific reason not to factorize the BE/LE suffixes into it (just like in the macro in swscale)?

Other than that cosmetic issue, this looks good to me.

// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to