[Ffmpeg-devel] [PATCH] Support for bgr15/16 on imgconvert.c

Reynaldo H. Verdejo Pinochet reynaldo
Tue Oct 31 03:05:54 CET 2006


Hi there

Currently imgconvert doesn't have support for bgr15/16, seemed
easy to add some so here is a patch, hope to get some comments from
you.

	Reynaldo
-------------- next part --------------
Index: libavcodec/imgconvert.c
===================================================================
--- libavcodec/imgconvert.c	(revision 6812)
+++ libavcodec/imgconvert.c	(working copy)
@@ -1648,6 +1648,37 @@
 
 #include "imgconvert_template.h"
 
+/* bgr555 handling */
+
+#define RGB_NAME bgr555
+
+#define RGB_IN(r, g, b, s)\
+{\
+    unsigned int v = ((const uint16_t *)(s))[0];\
+    b = bitcopy_n(v >> (10 - 3), 3);\
+    g = bitcopy_n(v >> (5 - 3), 3);\
+    r = bitcopy_n(v << 3, 3);\
+}
+
+#define RGBA_IN(r, g, b, a, s)\
+{\
+    unsigned int v = ((const uint16_t *)(s))[0];\
+    b = bitcopy_n(v >> (10 - 3), 3);\
+    g = bitcopy_n(v >> (5 - 3), 3);\
+    r = bitcopy_n(v << 3, 3);\
+    a = (-(v >> 15)) & 0xff;\
+}
+
+#define RGBA_OUT(d, r, g, b, a)\
+{\
+    ((uint16_t *)(d))[0] = ((b >> 3) << 10) | ((g >> 3) << 5) | (r >> 3) | \
+                           ((a << 8) & 0x8000);\
+}
+
+#define BPP 2
+
+#include "imgconvert_template.h"
+
 /* rgb565 handling */
 
 #define RGB_NAME rgb565
@@ -1669,6 +1700,27 @@
 
 #include "imgconvert_template.h"
 
+/* bgr565 handling */
+
+#define RGB_NAME bgr565
+
+#define RGB_IN(r, g, b, s)\
+{\
+    unsigned int v = ((const uint16_t *)(s))[0];\
+    b = bitcopy_n(v >> (11 - 3), 3);\
+    g = bitcopy_n(v >> (5 - 2), 2);\
+    r = bitcopy_n(v << 3, 3);\
+}
+
+#define RGB_OUT(d, r, g, b)\
+{\
+    ((uint16_t *)(d))[0] = ((b >> 3) << 11) | ((g >> 2) << 5) | (r >> 3);\
+}
+
+#define BPP 2
+
+#include "imgconvert_template.h"
+
 /* bgr24 handling */
 
 #define RGB_NAME bgr24
@@ -2109,6 +2161,31 @@
             .convert = rgb565_to_gray
         },
     },
+    [PIX_FMT_BGR555] = {
+        [PIX_FMT_RGB24] = {
+            .convert = bgr555_to_rgb24
+        },
+        [PIX_FMT_RGBA32] = {
+            .convert = bgr555_to_rgba32
+        },
+        [PIX_FMT_YUV420P] = {
+            .convert = bgr555_to_yuv420p
+        },
+        [PIX_FMT_GRAY8] = {
+            .convert = bgr555_to_gray
+        },
+    },
+    [PIX_FMT_BGR565] = {
+        [PIX_FMT_RGB24] = {
+            .convert = bgr565_to_rgb24
+        },
+        [PIX_FMT_YUV420P] = {
+            .convert = bgr565_to_yuv420p
+        },
+        [PIX_FMT_GRAY8] = {
+            .convert = bgr565_to_gray
+        },
+    },
     [PIX_FMT_GRAY16BE] = {
         [PIX_FMT_GRAY8] = {
             .convert = gray16be_to_gray
-------------- 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/20061030/068ea7e7/attachment.pgp>



More information about the ffmpeg-devel mailing list