From owner-freebsd-multimedia@FreeBSD.ORG Sat Jan 8 23:16:52 2011 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B3196106566B for ; Sat, 8 Jan 2011 23:16:52 +0000 (UTC) (envelope-from luigi@onelab2.iet.unipi.it) Received: from onelab2.iet.unipi.it (onelab2.iet.unipi.it [131.114.59.238]) by mx1.freebsd.org (Postfix) with ESMTP id 753338FC0A for ; Sat, 8 Jan 2011 23:16:52 +0000 (UTC) Received: by onelab2.iet.unipi.it (Postfix, from userid 275) id 0C883730A1; Sun, 9 Jan 2011 00:31:13 +0100 (CET) Date: Sun, 9 Jan 2011 00:31:13 +0100 From: Luigi Rizzo To: Hans Petter Selasky , hselasky@freebsd.org Message-ID: <20110108233113.GB80865@onelab2.iet.unipi.it> References: <201101081841.10690.hselasky@c2i.net> <20110108231704.GA80865@onelab2.iet.unipi.it> <201101090010.57118.hselasky@c2i.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="VbJkn9YxBvnuCH5J" Content-Disposition: inline In-Reply-To: <201101090010.57118.hselasky@c2i.net> User-Agent: Mutt/1.4.2.3i Cc: freebsd-multimedia@freebsd.org Subject: libv4l1 bug in RGB24/32 formats X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Jan 2011 23:16:52 -0000 --VbJkn9YxBvnuCH5J Content-Type: text/plain; charset=us-ascii Content-Disposition: inline I noticed that a couple of my webcams, when used with libv4l, claim to return RGB24 data but red and blue are swapped. Looking at the code in /usr/ports/multimedia/libv4l/work/v4l-utils-0.8.1/lib/libv4l1/libv4l1.c it seems that the two routines that do conversion format incorrectly map RGB* to BGR* . The attached patch fixes the problem, I think it could be committed to the port. I am not sure if the code modified by the patch was inserted deliberately (one mistake may happen, but two complementary ones are really unlikely). cheers luigi --VbJkn9YxBvnuCH5J Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=patch-v4l1-luigi --- lib/libv4l1/libv4l1.c.orig 2011-01-09 02:13:49.000000000 +0100 +++ lib/libv4l1/libv4l1.c 2011-01-09 02:14:23.000000000 +0100 @@ -87,9 +87,9 @@ case VIDEO_PALETTE_RGB565: return V4L2_PIX_FMT_RGB565; case VIDEO_PALETTE_RGB24: - return V4L2_PIX_FMT_BGR24; + return V4L2_PIX_FMT_RGB24; case VIDEO_PALETTE_RGB32: - return V4L2_PIX_FMT_BGR32; + return V4L2_PIX_FMT_RGB32; case VIDEO_PALETTE_YUYV: return V4L2_PIX_FMT_YUYV; case VIDEO_PALETTE_YUV422: @@ -118,9 +118,9 @@ return VIDEO_PALETTE_RGB555; case V4L2_PIX_FMT_RGB565: return VIDEO_PALETTE_RGB565; - case V4L2_PIX_FMT_BGR24: + case V4L2_PIX_FMT_RGB24: return VIDEO_PALETTE_RGB24; - case V4L2_PIX_FMT_BGR32: + case V4L2_PIX_FMT_RGB32: return VIDEO_PALETTE_RGB32; case V4L2_PIX_FMT_YUYV: return VIDEO_PALETTE_YUYV; --VbJkn9YxBvnuCH5J--