diff -r 951a5db380a0 -r d87d32eab1a9 videoeditorengine/mp3aacManipLib/inc/nok_bits.h --- a/videoeditorengine/mp3aacManipLib/inc/nok_bits.h Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,295 +0,0 @@ -/* -* Copyright (c) 2010 Ixonos Plc. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - Initial contribution -* -* Contributors: -* Ixonos Plc -* -* Description: -* -*/ - - -/************************************************************************** - nok_bits.h - Interface for bitstream handling. - - Author(s): Juha Ojanpera - Copyright (c) 1999-2004 by Nokia Research Center, Audio-Visual Systems. - *************************************************************************/ - -#ifndef NOKBITSTREAM_H_ -#define NOKBITSTREAM_H_ - -/*-- Project Headers. --*/ -#include "defines.h" - -/*-- Bitstream supports any length... --*/ -#define BITSMODULO_BUFFER - -#ifndef BITSMODULO_BUFFER -#define MOD_OPCODE(x, y) (x & y) -#else -#define MOD_OPCODE(x, y) (x % y) -#endif /*-- MODULO_BUFFER --*/ - -const uint32 bsBitMask[] = -{0x0, 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, 0xFFF, - 0x1FFFL, 0x3FFFL, 0x7FFFL, 0xFFFFL, 0x1FFFFL, 0x3FFFFL, 0x7FFFFL, 0xFFFFFL, - 0x1FFFFFL, 0x3FFFFFL, 0x7FFFFFL, 0xFFFFFFL, 0x1FFFFFFL, 0x3FFFFFFL, 0x7FFFFFFL, - 0xFFFFFFFL, 0x1FFFFFFFL, 0x3FFFFFFFL, 0x7FFFFFFFL, 0xFFFFFFFFL}; - -#ifdef BYTE_16bit -typedef uint16 DSP_BYTE; -#else -typedef uint8 DSP_BYTE; -#endif - -/** - * Data structure for accessing bits from input bitstram. - */ -typedef enum BYTE_MODE -{ - BIT8 = 0, - BIT16 - -} BYTE_MODE; - -#define MAX_BUFS (1) - -typedef struct BufMapperStr -{ - uint8 numBufs; - uint8 **bsBuf; - uint32 *bsBufLen; - uint32 *bytesRead; - -} BufMapper; - -class TBitStream -{ -public: - - - /** - * Bitstream (modulo/ring) buffer. */ - DSP_BYTE *dsp_buffer; - uint8 *bit_buffer; - - /** - * Number of bits in the data type. - */ - int16 slotBits; - - /* Which bit buffer is to be used. */ - BYTE_MODE mode; - - /** - * Size of the buffer. - */ - uint32 buf_len; - - /** - * Bit counter. - */ - int16 bit_counter; - - /** - * Read index. - */ - uint32 buf_index; - - /** - * Write index. - */ - uint32 buf_writeIndex; - - /** - * Bitmask for 'buf_index'. - */ - uint32 buf_mask; - - /** - * Number of bytes read from the buffer. This field will be used to check - * whether there are enough bits in the buffer to result a successfull - * decoding of current frame. - */ - uint32 slots_read; - - /** - * Number of bits read from the buffer. This will be resetted on a call-by-call - * basis and therefore gives the number of bits that each call read from - * the buffer. The buffer is updated according to this value. - */ - uint32 bits_read; - -}; - -/** - * Bitstream manipulation methods. - */ - - -/** - * Initializes input bitstream. - * - * @param bs Bitstream handle - * @param bit_buffer Input bitstream - * @param size Size of input bitstream in bytes - */ -IMPORT_C void BsInit(TBitStream *bs, uint8 *bit_buffer, uint32 size); - -IMPORT_C void BsInit1(TBitStream *bs, uint8 *bit_buffer, uint32 size); - -IMPORT_C void BsInit2(TBitStream *bs, DSP_BYTE *dsp_buffer, uint32 size); - - -/** - * Retrieves size of bitstream in bytes. - * - * @param bs Bitstream handle - * - * @return Size of bitstream - */ -IMPORT_C uint32 BsGetBufSize(TBitStream *bs); - -IMPORT_C uint32 BsGetBufOriginalSize(TBitStream *bs); - -/** - * Retrieves number of bits read from the bitstream. - * - * @param bs Bitstream handle - */ -IMPORT_C uint32 BsGetBitsRead(TBitStream *bs); - -IMPORT_C void BsSetBitsRead(TBitStream *bs, uint32 bits_read); -IMPORT_C void BsClearBitsRead(TBitStream *bs); - -/** - * Resets bitstream. - * - * @param bs Bitstream handle - */ -IMPORT_C void BsReset(TBitStream *bs); - -/** - * Retrieves the number of bytes left in the bitstream. - * - * @param bs Bitstream handle - * - * @return Number of bytes left in the bitstream - */ -IMPORT_C uint32 BsSlotsLeft(TBitStream *bs); - -/** - * Appends bits from one bitstream to another bitstream. - * - * @param bs Source btstream handle - * @param br Destination btstream handle - * @param n Number of bytes to copy - */ -IMPORT_C void BsMoveBytes(TBitStream *bs, TBitStream *br, int16 n); - -/** - * Appends bits from one specified buffer to bitstream. - * - * @param bs Destination btstream handle - * @param outBuf Source buffer - * @param bytesToCopy Number of bytes to copy - * - * @return Number of bytes appended - */ -IMPORT_C uint32 BsCopyBytes(TBitStream *bs, uint8 *outBuf, uint32 bytesToCopy); - -/** - * Appends bits from one source to destination bitstream. - * - * @param bs Destination btstream handle - * @param outBuf Source bitstream handle - * @param bitsToCopy Number of bits to copy - */ -IMPORT_C void -BsCopyBits(TBitStream *bsSrc, TBitStream *bsDst, int32 bitsToCopy); - -/** - * Rewinds the read index of the bitstream. - * - * @param bs Bitstream handle - * @param n Number of bits to rewind - */ -IMPORT_C void BsRewindNBits(TBitStream *bs, uint32 nBits); - -IMPORT_C void BsBufferUpdate(TBitStream *bs, int32 bytesRead); - -IMPORT_C void BsSaveBufState(TBitStream *bsSrc, TBitStream *bsDst); - -/** - * Writes bits to bitstream. - * - * @param bs Bitstream handle - * @param n Number of bits to write - * @param word Data bits to write - */ -IMPORT_C void BsPutBits(TBitStream *bs, int16 n, uint32 word); - -/** - * Byte aligns bitstream by writing '0' bits. - * - * @param bs Bitstream handle - * - * @return Number of bits written - */ -IMPORT_C int16 BsPutBitsByteAlign(TBitStream *bs); - -/** - * Reads bits from bitstream. - * - * @param bs Bitstream handle - * @param n Number of bits to read - * - * @return Read data bits - */ -IMPORT_C uint32 BsGetBits(TBitStream *bs, int16 n); - -/** - * Byte aligns bitstream by advanding read index. - * - * @param bs Bitstream handle - * - * @return Number of bits skipped - */ -IMPORT_C int16 BsByteAlign(TBitStream *bs); - -/** - * Reads bits from bitstream without updating read index. - * - * @param bs Bitstream handle - * @param n Number of bits to lookahead - * - * @return Read data bits - */ -IMPORT_C uint32 BsLookAhead(TBitStream *bs, int16 n); - -/** - * Advances bitstream read index (8 bits at maximum!). - * - * @param bs Bitstream handle - * @param n Number of bits to skip. Note that this can at maximum be 8 bits! - */ -IMPORT_C void BsSkipBits(TBitStream *bs, int16 n); - -/** - * Advances bitstream read index. - * - * @param bs Bitstream handle - * @param n Number of bits to skip - */ -IMPORT_C void BsSkipNBits(TBitStream *bs, int32 n); - -#endif /*-- BITSTREAM_H_ --*/