[FFmpeg-cvslog] pixdesc: add function to return pixel format with swapped endiannes

Janne Grunau git at videolan.org
Tue May 7 10:57:22 CEST 2013


ffmpeg | branch: master | Janne Grunau <janne-libav at jannau.net> | Fri Apr 26 14:43:02 2013 +0200| [74652af821d7e526a6541876a637fbf81261fa8e] | committer: Janne Grunau

pixdesc: add function to return pixel format with swapped endiannes

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=74652af821d7e526a6541876a637fbf81261fa8e
---

 libavutil/pixdesc.c |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 libavutil/pixdesc.h |   11 +++++++++++
 libavutil/version.h |    2 +-
 3 files changed, 60 insertions(+), 1 deletion(-)

diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
index 67f9c43..fdc1929 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(fmt)                                           \
+    case AV_PIX_FMT_ ## fmt ## BE: return AV_PIX_FMT_ ## fmt ## LE;            \
+    case AV_PIX_FMT_ ## fmt ## LE: return AV_PIX_FMT_ ## fmt ## BE
+
+    switch (pix_fmt) {
+    PIX_FMT_SWAP_ENDIANNESS(GRAY16);
+    PIX_FMT_SWAP_ENDIANNESS(RGB48);
+    PIX_FMT_SWAP_ENDIANNESS(RGB565);
+    PIX_FMT_SWAP_ENDIANNESS(RGB555);
+    PIX_FMT_SWAP_ENDIANNESS(RGB444);
+    PIX_FMT_SWAP_ENDIANNESS(BGR48);
+    PIX_FMT_SWAP_ENDIANNESS(BGR565);
+    PIX_FMT_SWAP_ENDIANNESS(BGR555);
+    PIX_FMT_SWAP_ENDIANNESS(BGR444);
+
+    PIX_FMT_SWAP_ENDIANNESS(YUV420P9);
+    PIX_FMT_SWAP_ENDIANNESS(YUV422P9);
+    PIX_FMT_SWAP_ENDIANNESS(YUV444P9);
+    PIX_FMT_SWAP_ENDIANNESS(YUV420P10);
+    PIX_FMT_SWAP_ENDIANNESS(YUV422P10);
+    PIX_FMT_SWAP_ENDIANNESS(YUV444P10);
+    PIX_FMT_SWAP_ENDIANNESS(YUV420P16);
+    PIX_FMT_SWAP_ENDIANNESS(YUV422P16);
+    PIX_FMT_SWAP_ENDIANNESS(YUV444P16);
+
+    PIX_FMT_SWAP_ENDIANNESS(GBRP9);
+    PIX_FMT_SWAP_ENDIANNESS(GBRP10);
+    PIX_FMT_SWAP_ENDIANNESS(GBRP16);
+    PIX_FMT_SWAP_ENDIANNESS(YUVA420P9);
+    PIX_FMT_SWAP_ENDIANNESS(YUVA422P9);
+    PIX_FMT_SWAP_ENDIANNESS(YUVA444P9);
+    PIX_FMT_SWAP_ENDIANNESS(YUVA420P10);
+    PIX_FMT_SWAP_ENDIANNESS(YUVA422P10);
+    PIX_FMT_SWAP_ENDIANNESS(YUVA444P10);
+    PIX_FMT_SWAP_ENDIANNESS(YUVA420P16);
+    PIX_FMT_SWAP_ENDIANNESS(YUVA422P16);
+    PIX_FMT_SWAP_ENDIANNESS(YUVA444P16);
+
+    PIX_FMT_SWAP_ENDIANNESS(XYZ12);
+    default:
+        return AV_PIX_FMT_NONE;
+    }
+#undef PIX_FMT_SWAP_ENDIANNESS
+}
diff --git a/libavutil/pixdesc.h b/libavutil/pixdesc.h
index ef93bfe..312e89a 100644
--- a/libavutil/pixdesc.h
+++ b/libavutil/pixdesc.h
@@ -226,4 +226,15 @@ int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt,
 int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt);
 
 
+/**
+ * Utility function to swap the endianness of a pixel format.
+ *
+ * @param[in]  pix_fmt the pixel format
+ *
+ * @return pixel format with swapped endianness if it exists,
+ * otherwise AV_PIX_FMT_NONE
+ */
+enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt);
+
+
 #endif /* AVUTIL_PIXDESC_H */
diff --git a/libavutil/version.h b/libavutil/version.h
index 6e8daa2..948a28f 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -38,7 +38,7 @@
 
 #define LIBAVUTIL_VERSION_MAJOR 52
 #define LIBAVUTIL_VERSION_MINOR 10
-#define LIBAVUTIL_VERSION_MICRO  0
+#define LIBAVUTIL_VERSION_MICRO  1
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
                                                LIBAVUTIL_VERSION_MINOR, \



More information about the ffmpeg-cvslog mailing list