[vlc-commits] XCB/XVideo: allow mixed endian format if 8 or 4 bits per component

Rémi Denis-Courmont git at videolan.org
Mon Oct 31 21:22:59 CET 2011


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Mon Oct 31 22:21:23 2011 +0200| [aa1d564909d15463bab3f737269633fb39820fab] | committer: Rémi Denis-Courmont

XCB/XVideo: allow mixed endian format if 8 or 4 bits per component

Mixed endianess is only an issue if the component values are not
aligned inside octets. This fixes Debian #604687.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=aa1d564909d15463bab3f737269633fb39820fab
---

 modules/video_output/xcb/xvideo.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/modules/video_output/xcb/xvideo.c b/modules/video_output/xcb/xvideo.c
index 9d45bcf..fd7f5bd 100644
--- a/modules/video_output/xcb/xvideo.c
+++ b/modules/video_output/xcb/xvideo.c
@@ -134,9 +134,6 @@ static bool CheckXVideo (vout_display_t *vd, xcb_connection_t *conn)
 static vlc_fourcc_t ParseFormat (vlc_object_t *obj,
                                  const xcb_xv_image_format_info_t *restrict f)
 {
-    if (f->byte_order != ORDER && f->bpp != 8)
-        return 0; /* Argh! */
-
     switch (f->type)
     {
       case XCB_XV_IMAGE_FORMAT_INFO_TYPE_RGB:
@@ -154,10 +151,14 @@ static vlc_fourcc_t ParseFormat (vlc_object_t *obj,
                     return VLC_CODEC_RGB24;
                 break;
               case 16:
+                if (f->byte_order != ORDER)
+                    return 0; /* Mixed endian! */
                 if (f->bpp == 16 && f->depth == 16)
                     return VLC_CODEC_RGB16;
                 break;
               case 15:
+                if (f->byte_order != ORDER)
+                    return 0; /* Mixed endian! */
                 if (f->bpp == 16 && f->depth == 16)
                     return VLC_CODEC_RGBT;
                 if (f->bpp == 16 && f->depth == 15)



More information about the vlc-commits mailing list