sl@0: /* sl@0: * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: #include sl@0: sl@0: #include "jpeg_bits.h" sl@0: sl@0: /* FIXME */ sl@0: #define TRUE 1 sl@0: #define FALSE 0 sl@0: sl@0: int jpeg_bits_error (JpegBits *bits) sl@0: { sl@0: return bits->error; sl@0: } sl@0: sl@0: int jpeg_bits_get_u8 (JpegBits *bits) sl@0: { sl@0: if (bits->ptr < bits->end) { sl@0: return *bits->ptr++; sl@0: } sl@0: bits->error = TRUE; sl@0: return 0; sl@0: } sl@0: sl@0: void jpeg_bits_skip (JpegBits *bits, int n) sl@0: { sl@0: bits->ptr += n; sl@0: if (bits->ptr > bits->end) { sl@0: bits->error = TRUE; sl@0: bits->ptr = bits->end; sl@0: } sl@0: } sl@0: sl@0: int jpeg_bits_get_u16_be (JpegBits *bits) sl@0: { sl@0: int x; sl@0: sl@0: x = jpeg_bits_get_u8 (bits) << 8; sl@0: x |= jpeg_bits_get_u8 (bits); sl@0: sl@0: return x; sl@0: } sl@0: sl@0: int jpeg_bits_available (JpegBits *bits) sl@0: { sl@0: return bits->end - bits->ptr; sl@0: } sl@0: sl@0: int bits_needbits(JpegBits *b, int n_bytes) sl@0: { sl@0: if(b->ptr==NULL)return 1; sl@0: if(b->ptr + n_bytes > b->end)return 1; sl@0: sl@0: return 0; sl@0: } sl@0: sl@0: int getbit(JpegBits *b) sl@0: { sl@0: int r; sl@0: sl@0: r = ((*b->ptr)>>(7-b->idx))&1; sl@0: sl@0: b->idx++; sl@0: if(b->idx>=8){ sl@0: b->ptr++; sl@0: b->idx = 0; sl@0: } sl@0: sl@0: return r; sl@0: } sl@0: sl@0: unsigned int getbits(JpegBits *b, int n) sl@0: { sl@0: unsigned long r = 0; sl@0: int i; sl@0: sl@0: for(i=0;iptr; sl@0: } sl@0: sl@0: unsigned int get_u8(JpegBits *b) sl@0: { sl@0: return *b->ptr++; sl@0: } sl@0: sl@0: unsigned int get_u16(JpegBits *b) sl@0: { sl@0: unsigned int r; sl@0: sl@0: r = b->ptr[0] | (b->ptr[1]<<8); sl@0: b->ptr+=2; sl@0: sl@0: return r; sl@0: } sl@0: sl@0: unsigned int get_be_u16(JpegBits *b) sl@0: { sl@0: unsigned int r; sl@0: sl@0: r = (b->ptr[0]<<8) | b->ptr[1]; sl@0: b->ptr+=2; sl@0: sl@0: return r; sl@0: } sl@0: sl@0: unsigned int get_u32(JpegBits *b) sl@0: { sl@0: unsigned int r; sl@0: sl@0: r = b->ptr[0] | (b->ptr[1]<<8) | (b->ptr[2]<<16) | (b->ptr[3]<<24); sl@0: b->ptr+=4; sl@0: sl@0: return r; sl@0: } sl@0: sl@0: void syncbits(JpegBits *b) sl@0: { sl@0: if(b->idx){ sl@0: b->ptr++; sl@0: b->idx=0; sl@0: } sl@0: sl@0: } sl@0: