--- trunk/xvidcore/src/bitstream/bitstream.c 2002/09/12 19:06:37 478 +++ trunk/xvidcore/src/bitstream/bitstream.c 2002/11/17 00:57:58 655 @@ -3,32 +3,54 @@ * XVID MPEG-4 VIDEO CODEC * - Bitstream reader/writer functions - * - * Copyright (C) 2001-2002 - Peter Ross + * Copyright (C) 2001-2002 - Peter Ross * - * This program is an implementation of a part of one or more MPEG-4 - * Video tools as specified in ISO/IEC 14496-2 standard. Those intending - * to use this software module in hardware or software products are - * advised that its use may infringe existing patents or copyrights, and - * any such use would be at such party's own risk. The original - * developer of this software module and his/her company, and subsequent - * editors and their companies, will have no liability for use of this - * software or modifications or derivatives thereof. - * - * This program is free software ; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation ; either version 2 of the License, or + * This file is part of XviD, a free MPEG-4 video encoder/decoder + * + * XviD is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 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 + * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program ; if not, write to the Free Software + * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: bitstream.c,v 1.30 2002-09-12 19:06:37 edgomez Exp $ + * Under section 8 of the GNU General Public License, the copyright + * holders of XVID explicitly forbid distribution in the following + * countries: + * + * - Japan + * - United States of America + * + * Linking XviD statically or dynamically with other modules is making a + * combined work based on XviD. Thus, the terms and conditions of the + * GNU General Public License cover the whole combination. + * + * As a special exception, the copyright holders of XviD give you + * permission to link XviD with independent modules that communicate with + * XviD solely through the VFW1.1 and DShow interfaces, regardless of the + * license terms of these independent modules, and to copy and distribute + * the resulting combined work under terms of your choice, provided that + * every copy of the combined work is accompanied by a complete copy of + * the source code of XviD (the version of XviD used to produce the + * combined work), being distributed under the terms of the GNU General + * Public License plus this exception. An independent module is a module + * which is not derived from or based on XviD. + * + * Note that people who make modified versions of XviD are not obligated + * to grant this special exception for their modified versions; it is + * their choice whether to do so. The GNU General Public License gives + * permission to release a modified version without this exception; this + * exception also makes it possible to release a modified version which + * carries forward this exception. + * + * $Id: bitstream.c,v 1.35 2002-11-17 00:57:56 edgomez Exp $ * ****************************************************************************/ @@ -44,7 +66,7 @@ log2bin(uint32_t value) { /* Changed by Chenm001 */ -#ifndef WIN32 +#if !defined(_MSC_VER) int n = 0; while (value) { @@ -417,7 +439,7 @@ if (vol_ver_id != 1) { - DEBUG("QUARTERPEL BITSTREAM"); + DPRINTF(DPRINTF_DEBUG, "QUARTERPEL BITSTREAM"); dec->quarterpel = BitstreamGetBit(bs); // quarter_sample } else @@ -688,40 +710,27 @@ BitstreamPutBit(bs, 1); // vol_control_parameters BitstreamPutBits(bs, 1, 2); // chroma_format 1="4:2:0" -#ifdef BFRAMES - if (pParam->max_bframes > 0) { - BitstreamPutBit(bs, 0); // low_delay - } else -#endif - { - BitstreamPutBit(bs, 1); // low_delay - } + BitstreamPutBit(bs, 1); // low_delay + BitstreamPutBit(bs, 0); // vbv_parameters (0=not given) BitstreamPutBits(bs, 0, 2); // video_object_layer_shape (0=rectangular) WRITE_MARKER(); - /* time_increment_resolution; ignored by current decore versions - eg. 2fps res=2 inc=1 - 25fps res=25 inc=1 - 29.97fps res=30000 inc=1001 + /* + * time_increment_resolution; ignored by current decore versions + * eg. 2fps res=2 inc=1 + * 25fps res=25 inc=1 + * 29.97fps res=30000 inc=1001 */ -#ifdef BFRAMES - BitstreamPutBits(bs, pParam->fbase, 16); -#else BitstreamPutBits(bs, pParam->fbase, 16); -#endif + WRITE_MARKER(); -#ifdef BFRAMES BitstreamPutBit(bs, 1); // fixed_vop_rate = 1 BitstreamPutBits(bs, pParam->fincr, log2bin(pParam->fbase)); // fixed_vop_time_increment -#else - BitstreamPutBit(bs, 1); // fixed_vop_rate = 1 - BitstreamPutBits(bs, pParam->fincr, log2bin(pParam->fbase)); // fixed_vop_time_increment -#endif WRITE_MARKER(); BitstreamPutBits(bs, pParam->width, 13); // width @@ -779,31 +788,15 @@ BitstreamPutBits(bs, frame->coding_type, 2); // time_base = 0 write n x PutBit(1), PutBit(0) -#ifdef BFRAMES for (i = 0; i < frame->seconds; i++) { BitstreamPutBit(bs, 1); } BitstreamPutBit(bs, 0); -#else - for (i = 0; i < frame->seconds; i++) { - BitstreamPutBit(bs, 1); - } - BitstreamPutBit(bs, 0); -// BitstreamPutBits(bs, 0, 1); -#endif WRITE_MARKER(); // time_increment: value=nth_of_sec, nbits = log2(resolution) -#ifdef BFRAMES BitstreamPutBits(bs, frame->ticks, log2bin(pParam->fbase)); - /*DPRINTF("[%i:%i] %c\n", frame->seconds, frame->ticks, - frame->coding_type == I_VOP ? 'I' : frame->coding_type == - P_VOP ? 'P' : 'B');*/ -#else - BitstreamPutBits(bs, frame->ticks, log2bin(pParam->fbase)); -// BitstreamPutBits(bs, 1, 1); -#endif WRITE_MARKER();