diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2009-02-13 13:06:29 +0100 |
---|---|---|
committer | Hans Verkuil <hverkuil@xs4all.nl> | 2009-02-13 13:06:29 +0100 |
commit | 4e061e403e8a5ab5f041a54a6852c69e6b00b368 (patch) | |
tree | d288a6a3edad467d22fc7cb7a022b327060a0733 /v4l2-apps/lib/libv4l/libv4lconvert/sn9c10x.c | |
parent | d9fcd7e5495fbd0fe020223823338d21ce31dcaf (diff) | |
download | mediapointer-dvb-s2-4e061e403e8a5ab5f041a54a6852c69e6b00b368.tar.gz mediapointer-dvb-s2-4e061e403e8a5ab5f041a54a6852c69e6b00b368.tar.bz2 |
v4l2-apps: move libraries around to make the directory tree flatter
From: Hans Verkuil <hverkuil@xs4all.nl>
Instead of having libv4l2util in v4l2-apps/lib and libv4l in v4l2-apps/lib/libv4l,
both are now moved to v4l2-apps/libv4l2util and v4l2-apps/libv4l.
This is much cleaner and less confusing.
Priority: normal
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Diffstat (limited to 'v4l2-apps/lib/libv4l/libv4lconvert/sn9c10x.c')
-rw-r--r-- | v4l2-apps/lib/libv4l/libv4lconvert/sn9c10x.c | 287 |
1 files changed, 0 insertions, 287 deletions
diff --git a/v4l2-apps/lib/libv4l/libv4lconvert/sn9c10x.c b/v4l2-apps/lib/libv4l/libv4lconvert/sn9c10x.c deleted file mode 100644 index 4ea526d49..000000000 --- a/v4l2-apps/lib/libv4l/libv4lconvert/sn9c10x.c +++ /dev/null @@ -1,287 +0,0 @@ -/* -# sonix decoder -# Bertrik.Sikken. (C) 2005 - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -# Note this code was originally licensed under the GNU GPL instead of the -# GNU LGPL, its license has been changed with permission, see the permission -# mail at the end of this file. -*/ - -#include "libv4lconvert-priv.h" - -#define CLAMP(x) ((x)<0?0:((x)>255)?255:(x)) - -typedef struct { - int is_abs; - int len; - int val; - int unk; -} code_table_t; - - -/* local storage */ -/* FIXME not thread safe !! */ -static code_table_t table[256]; -static int init_done = 0; - -/* global variable */ -static int sonix_unknown = 0; - -/* - sonix_decompress_init - ===================== - pre-calculates a locally stored table for efficient huffman-decoding. - - Each entry at index x in the table represents the codeword - present at the MSB of byte x. - -*/ -static void sonix_decompress_init(void) -{ - int i; - int is_abs, val, len, unk; - - for (i = 0; i < 256; i++) { - is_abs = 0; - val = 0; - len = 0; - unk = 0; - if ((i & 0x80) == 0) { - /* code 0 */ - val = 0; - len = 1; - } - else if ((i & 0xE0) == 0x80) { - /* code 100 */ - val = +4; - len = 3; - } - else if ((i & 0xE0) == 0xA0) { - /* code 101 */ - val = -4; - len = 3; - } - else if ((i & 0xF0) == 0xD0) { - /* code 1101 */ - val = +11; - len = 4; - } - else if ((i & 0xF0) == 0xF0) { - /* code 1111 */ - val = -11; - len = 4; - } - else if ((i & 0xF8) == 0xC8) { - /* code 11001 */ - val = +20; - len = 5; - } - else if ((i & 0xFC) == 0xC0) { - /* code 110000 */ - val = -20; - len = 6; - } - else if ((i & 0xFC) == 0xC4) { - /* code 110001xx: unknown */ - val = 0; - len = 8; - unk = 1; - } - else if ((i & 0xF0) == 0xE0) { - /* code 1110xxxx */ - is_abs = 1; - val = (i & 0x0F) << 4; - len = 8; - } - table[i].is_abs = is_abs; - table[i].val = val; - table[i].len = len; - table[i].unk = unk; - } - - sonix_unknown = 0; - init_done = 1; -} - - -/* - sonix_decompress - ================ - decompresses an image encoded by a SN9C101 camera controller chip. - - IN width - height - inp pointer to compressed frame (with header already stripped) - OUT outp pointer to decompressed frame - - Returns 0 if the operation was successful. - Returns <0 if operation failed. - -*/ -void v4lconvert_decode_sn9c10x(const unsigned char *inp, unsigned char *outp, - int width, int height) -{ - int row, col; - int val; - int bitpos; - unsigned char code; - const unsigned char *addr; - - if (!init_done) - sonix_decompress_init(); - - bitpos = 0; - for (row = 0; row < height; row++) { - - col = 0; - - /* first two pixels in first two rows are stored as raw 8-bit */ - if (row < 2) { - addr = inp + (bitpos >> 3); - code = (addr[0] << (bitpos & 7)) | (addr[1] >> (8 - (bitpos & 7))); - bitpos += 8; - *outp++ = code; - - addr = inp + (bitpos >> 3); - code = (addr[0] << (bitpos & 7)) | (addr[1] >> (8 - (bitpos & 7))); - bitpos += 8; - *outp++ = code; - - col += 2; - } - - while (col < width) { - /* get bitcode from bitstream */ - addr = inp + (bitpos >> 3); - code = (addr[0] << (bitpos & 7)) | (addr[1] >> (8 - (bitpos & 7))); - - /* update bit position */ - bitpos += table[code].len; - - /* update code statistics */ - sonix_unknown += table[code].unk; - - /* calculate pixel value */ - val = table[code].val; - if (!table[code].is_abs) { - /* value is relative to top and left pixel */ - if (col < 2) { - /* left column: relative to top pixel */ - val += outp[-2*width]; - } - else if (row < 2) { - /* top row: relative to left pixel */ - val += outp[-2]; - } - else { - /* main area: average of left pixel and top pixel */ - val += (outp[-2] + outp[-2*width]) / 2; - } - } - - /* store pixel */ - *outp++ = CLAMP(val); - col++; - } - } -} - -/* -Return-Path: <bertrik@sikken.nl> -Received: from koko.hhs.nl ([145.52.2.16] verified) - by hhs.nl (CommuniGate Pro SMTP 4.3.6) - with ESMTP id 89132066 for j.w.r.degoede@hhs.nl; Thu, 03 Jul 2008 15:19:55 +0200 -Received: from exim (helo=koko) - by koko.hhs.nl with local-smtp (Exim 4.62) - (envelope-from <bertrik@sikken.nl>) - id 1KEOj5-0000nq-KR - for j.w.r.degoede@hhs.nl; Thu, 03 Jul 2008 15:19:55 +0200 -Received: from [192.87.102.69] (port=33783 helo=filter1-ams.mf.surf.net) - by koko.hhs.nl with esmtp (Exim 4.62) - (envelope-from <bertrik@sikken.nl>) - id 1KEOj5-0000nj-7r - for j.w.r.degoede@hhs.nl; Thu, 03 Jul 2008 15:19:55 +0200 -Received: from cardassian.kabelfoon.nl (cardassian3.kabelfoon.nl [62.45.45.105]) - by filter1-ams.mf.surf.net (8.13.8/8.13.8/Debian-3) with ESMTP id m63DJsKW032598 - for <j.w.r.degoede@hhs.nl>; Thu, 3 Jul 2008 15:19:54 +0200 -Received: from [192.168.1.1] (044-013-045-062.dynamic.caiway.nl [62.45.13.44]) - by cardassian.kabelfoon.nl (Postfix) with ESMTP id 77761341D9A - for <j.w.r.degoede@hhs.nl>; Thu, 3 Jul 2008 15:19:54 +0200 (CEST) -Message-ID: <486CD1F9.8000307@sikken.nl> -Date: Thu, 03 Jul 2008 15:19:53 +0200 -From: Bertrik Sikken <bertrik@sikken.nl> -User-Agent: Thunderbird 2.0.0.14 (Windows/20080421) -MIME-Version: 1.0 -To: Hans de Goede <j.w.r.degoede@hhs.nl> -Subject: Re: pac207 bayer decompression algorithm license question -References: <48633F02.3040108@hhs.nl> <4863F611.80104@sikken.nl> <486CC6AF.7050509@hhs.nl> -In-Reply-To: <486CC6AF.7050509@hhs.nl> -X-Enigmail-Version: 0.95.6 -Content-Type: text/plain; charset=ISO-8859-1; format=flowed -Content-Transfer-Encoding: 7bit -X-Canit-CHI2: 0.00 -X-Bayes-Prob: 0.0001 (Score 0, tokens from: @@RPTN) -X-Spam-Score: 0.00 () [Tag at 8.00] -X-CanItPRO-Stream: hhs:j.w.r.degoede@hhs.nl (inherits from hhs:default,base:default) -X-Canit-Stats-ID: 90943081 - 6a9ff19e8165 -X-Scanned-By: CanIt (www . roaringpenguin . com) on 192.87.102.69 -X-Anti-Virus: Kaspersky Anti-Virus for MailServers 5.5.2/RELEASE, bases: 03072008 #811719, status: clean - ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -Hans de Goede wrote: -| Bertrik Sikken wrote: -|> Hallo Hans, -|> -|> Hans de Goede wrote: -|>> I would like to also add support for decompressing the pac207's -|>> compressed -|>> bayer to this lib (and remove it from the kernel driver) and I've -|>> heard from Thomas Kaiser that you are a co-author of the -|>> decompression code. In order to add support for decompressing pac207 -|>> compressed bayer to libv4l I need -|>> permission to relicense the decompression code under the LGPL -|>> (version 2 or later). -|>> -|>> Can you give me permission for this? -|> -|> Ja, vind ik goed. -|> -| -| Thanks! -| -| I'm currently working on adding support for the sn9c10x bayer -| compression to libv4l too, and I noticed this was written by you too. -| -| May I have your permission to relicense the sn9c10x bayer decompression -| code under the LGPL (version 2 or later)? - -I hereby grant you permission to relicense the sn9c10x bayer -decompression code under the LGPL (version 2 or later). - -Kind regards, -Bertrik ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.7 (MingW32) -Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org - -iD8DBQFIbNH5ETD6mlrWxPURAipvAJ9sv1ZpHyb81NMFejr6x0wqHX3i7QCfRDoB -jZi2e5lUjEh5KvS0dqXbi9I= -=KQfR ------END PGP SIGNATURE----- -*/ |