10c0d06caSMauro Carvalho Chehab /* Linux driver for Philips webcam 20c0d06caSMauro Carvalho Chehab (C) 2004-2006 Luc Saillard (luc@saillard.org) 30c0d06caSMauro Carvalho Chehab 40c0d06caSMauro Carvalho Chehab NOTE: this version of pwc is an unofficial (modified) release of pwc & pcwx 50c0d06caSMauro Carvalho Chehab driver and thus may have bugs that are not present in the original version. 60c0d06caSMauro Carvalho Chehab Please send bug reports and support requests to <luc@saillard.org>. 70c0d06caSMauro Carvalho Chehab The decompression routines have been implemented by reverse-engineering the 80c0d06caSMauro Carvalho Chehab Nemosoft binary pwcx module. Caveat emptor. 90c0d06caSMauro Carvalho Chehab 100c0d06caSMauro Carvalho Chehab This program is free software; you can redistribute it and/or modify 110c0d06caSMauro Carvalho Chehab it under the terms of the GNU General Public License as published by 120c0d06caSMauro Carvalho Chehab the Free Software Foundation; either version 2 of the License, or 130c0d06caSMauro Carvalho Chehab (at your option) any later version. 140c0d06caSMauro Carvalho Chehab 150c0d06caSMauro Carvalho Chehab This program is distributed in the hope that it will be useful, 160c0d06caSMauro Carvalho Chehab but WITHOUT ANY WARRANTY; without even the implied warranty of 170c0d06caSMauro Carvalho Chehab MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 180c0d06caSMauro Carvalho Chehab GNU General Public License for more details. 190c0d06caSMauro Carvalho Chehab 200c0d06caSMauro Carvalho Chehab You should have received a copy of the GNU General Public License 210c0d06caSMauro Carvalho Chehab along with this program; if not, write to the Free Software 220c0d06caSMauro Carvalho Chehab Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 230c0d06caSMauro Carvalho Chehab */ 240c0d06caSMauro Carvalho Chehab 250c0d06caSMauro Carvalho Chehab #ifndef PWC_DEC23_H 260c0d06caSMauro Carvalho Chehab #define PWC_DEC23_H 270c0d06caSMauro Carvalho Chehab 280c0d06caSMauro Carvalho Chehab struct pwc_device; 290c0d06caSMauro Carvalho Chehab 300c0d06caSMauro Carvalho Chehab struct pwc_dec23_private 310c0d06caSMauro Carvalho Chehab { 320c0d06caSMauro Carvalho Chehab struct mutex lock; 330c0d06caSMauro Carvalho Chehab 340c0d06caSMauro Carvalho Chehab unsigned char last_cmd, last_cmd_valid; 350c0d06caSMauro Carvalho Chehab 360c0d06caSMauro Carvalho Chehab unsigned int scalebits; 370c0d06caSMauro Carvalho Chehab unsigned int nbitsmask, nbits; /* Number of bits of a color in the compressed stream */ 380c0d06caSMauro Carvalho Chehab 390c0d06caSMauro Carvalho Chehab unsigned int reservoir; 400c0d06caSMauro Carvalho Chehab unsigned int nbits_in_reservoir; 410c0d06caSMauro Carvalho Chehab 420c0d06caSMauro Carvalho Chehab const unsigned char *stream; 430c0d06caSMauro Carvalho Chehab int temp_colors[16]; 440c0d06caSMauro Carvalho Chehab 450c0d06caSMauro Carvalho Chehab unsigned char table_0004_pass1[16][1024]; 460c0d06caSMauro Carvalho Chehab unsigned char table_0004_pass2[16][1024]; 470c0d06caSMauro Carvalho Chehab unsigned char table_8004_pass1[16][256]; 480c0d06caSMauro Carvalho Chehab unsigned char table_8004_pass2[16][256]; 490c0d06caSMauro Carvalho Chehab unsigned int table_subblock[256][12]; 500c0d06caSMauro Carvalho Chehab 510c0d06caSMauro Carvalho Chehab unsigned char table_bitpowermask[8][256]; 520c0d06caSMauro Carvalho Chehab unsigned int table_d800[256]; 530c0d06caSMauro Carvalho Chehab unsigned int table_dc00[256]; 540c0d06caSMauro Carvalho Chehab 550c0d06caSMauro Carvalho Chehab }; 560c0d06caSMauro Carvalho Chehab 570c0d06caSMauro Carvalho Chehab void pwc_dec23_init(struct pwc_device *pdev, const unsigned char *cmd); 580c0d06caSMauro Carvalho Chehab void pwc_dec23_decompress(struct pwc_device *pdev, 590c0d06caSMauro Carvalho Chehab const void *src, 600c0d06caSMauro Carvalho Chehab void *dst); 610c0d06caSMauro Carvalho Chehab #endif 62