10d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/****************************************************************************** 20d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 30d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 40d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 50d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Licensed under the Apache License, Version 2.0 (the "License"); 60d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* you may not use this file except in compliance with the License. 70d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* You may obtain a copy of the License at: 80d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 90d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* http://www.apache.org/licenses/LICENSE-2.0 100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Unless required by applicable law or agreed to in writing, software 120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* distributed under the License is distributed on an "AS IS" BASIS, 130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* See the License for the specific language governing permissions and 150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* limitations under the License. 160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************/ 180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @file 210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* ihevcd_bitps_bitstrm.h 220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief 240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Header for bitps_bitstrm access functions 250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @author 270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Harish 280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @par List of Functions: 300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @remarks 320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* None 330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* 340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar******************************************************************************* 350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#ifndef _IHEVCD_BITSTREAM_H_ 380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define _IHEVCD_BITSTREAM_H_ 390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief defines the maximum number of bits in a bitstream word 410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define WORD_SIZE 32 430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief Twice the WORD_SIZE 450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define DBL_WORD_SIZE (2 * (WORD_SIZE)) 470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar * @brief WORD_SIZE - 1 500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar */ 510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define WORD_SIZE_MINUS1 (WORD_SIZE - 1) 520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief Macro used to copy elements in bistream structure to local variables. 560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define GET_STREAM(m_ps_bitstrm, m_pu4_buf, m_u4_bit_ofst, \ 600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_cur_word, m_u4_nxt_word) \ 610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ \ 620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_pu4_buf = m_ps_bitstrm->pu4_buf; \ 630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bit_ofst = m_ps_bitstrm->u4_bit_ofst; \ 640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_cur_word = m_ps_bitstrm->u4_cur_word; \ 650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_nxt_word = m_ps_bitstrm->u4_nxt_word; \ 660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief Macro used to copy local variables to elements in bistream structure. 710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define SET_STREAM(m_ps_bitstrm, m_pu4_buf, m_u4_bit_ofst, \ 740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_cur_word, m_u4_nxt_word) \ 750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ \ 760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_ps_bitstrm->pu4_buf = m_pu4_buf; \ 770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_ps_bitstrm->u4_bit_ofst = m_u4_bit_ofst; \ 780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_ps_bitstrm->u4_cur_word = m_u4_cur_word; \ 790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_ps_bitstrm->u4_nxt_word = m_u4_nxt_word; \ 800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief Snoop next m_cnt bits without updating offsets or buffer increments. 870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Data is not consumed in this call 880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define BITS_NXT(m_u4_bits, m_pu4_buf, m_u4_bit_ofst, \ 910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_cur_word, m_u4_nxt_word, m_cnt) \ 920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ \ 930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bits = (m_u4_cur_word << m_u4_bit_ofst) >> \ 940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (WORD_SIZE - m_cnt); \ 950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar \ 960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(m_u4_bit_ofst > (WORD_SIZE - m_cnt)) \ 970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { \ 980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bits |= SHR(m_u4_nxt_word, \ 990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (WORD_SIZE + WORD_SIZE - m_cnt \ 1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar - m_u4_bit_ofst)); \ 1010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } \ 1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief Snoop next 32 bits without updating offsets or buffer increments. 1080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Data is not consumed in this call 1090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 1100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define BITS_NXT32(m_u4_bits, m_pu4_buf, m_u4_bit_ofst, \ 1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_cur_word, m_u4_nxt_word) \ 1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ \ 1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bits = (m_u4_cur_word << m_u4_bit_ofst); \ 1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar \ 1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bits |= SHR(m_u4_nxt_word, (WORD_SIZE - m_u4_bit_ofst)); \ 1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief Flush m_u4_bits and updated the buffer pointer. 1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Data is consumed 1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define BITS_FLUSH(m_pu4_buf, m_u4_bit_ofst, m_u4_cur_word, \ 1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_nxt_word, m_cnt) \ 1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ \ 1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 temp; \ 1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar \ 1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bit_ofst += m_cnt; \ 1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if( m_u4_bit_ofst >= WORD_SIZE ) \ 1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { \ 1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_cur_word = m_u4_nxt_word; \ 1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Getting the next word */ \ 1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar temp = *(m_pu4_buf++); \ 1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar \ 1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bit_ofst -= WORD_SIZE; \ 1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Swapping little endian to big endian conversion*/\ 1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_nxt_word = ITT_BIG_ENDIAN(temp); \ 1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } \ 1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief Get m_cnt number of bits and update bffer pointers and offset. 1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Data is consumed 1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define BITS_GET(m_u4_bits, m_pu4_buf, m_u4_bit_ofst, \ 1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_cur_word,m_u4_nxt_word, m_cnt) \ 1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ \ 1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bits = (m_u4_cur_word << m_u4_bit_ofst) \ 1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar >> (WORD_SIZE - m_cnt); \ 1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bit_ofst += m_cnt; \ 1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(m_u4_bit_ofst > WORD_SIZE) \ 1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { \ 1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bits |= SHR(m_u4_nxt_word, \ 1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar (DBL_WORD_SIZE - m_u4_bit_ofst)); \ 1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } \ 1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar \ 1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if( m_u4_bit_ofst >= WORD_SIZE ) \ 1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { \ 1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 pu4_word_tmp; \ 1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_cur_word = m_u4_nxt_word; \ 1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Getting the next word */ \ 1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu4_word_tmp = *(m_pu4_buf++); \ 1670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar \ 1680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bit_ofst -= WORD_SIZE; \ 1690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Swapping little endian to big endian conversion*/ \ 1700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_nxt_word = ITT_BIG_ENDIAN(pu4_word_tmp); \ 1710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } \ 1720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 1730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar/** 1750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 1760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* @brief Get 1 bit and update buffer pointers and offset. 1770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar* Data is consumed 1780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar****************************************************************************** 1790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar*/ 1800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#define BIT_GET(m_u4_bits,m_pu4_buf,m_u4_bit_ofst, \ 1820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_cur_word,m_u4_nxt_word) \ 1830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar{ \ 1840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bits = (m_u4_cur_word << m_u4_bit_ofst) \ 1850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar >> (WORD_SIZE_MINUS1); \ 1860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bit_ofst++; \ 1870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar \ 1880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar if(m_u4_bit_ofst == WORD_SIZE) \ 1890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar { \ 1900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 pu4_word_tmp; \ 1910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_cur_word = m_u4_nxt_word; \ 1920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Getting the next word */ \ 1930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pu4_word_tmp = *m_pu4_buf++; \ 1940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar \ 1950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_bit_ofst = 0; \ 1960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar /* Swapping little endian to big endian conversion*/ \ 1970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar m_u4_nxt_word = ITT_BIG_ENDIAN(pu4_word_tmp); \ 1980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar } \ 1990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar} 2000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevcd_bits_init(bitstrm_t *ps_bitstrm, 2020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD8 *pu1_buf, 2030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar UWORD32 u4_numbytes); 2040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevcd_bits_flush(bitstrm_t *ps_bitstrm, UWORD32 u4_numbits); 2050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevcd_bits_flush_to_byte_boundary(bitstrm_t *ps_bitstrm); 2070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarUWORD32 ihevcd_bits_nxt(bitstrm_t *ps_bitstrm, UWORD32 u4_numbits); 2090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarUWORD32 ihevcd_bits_nxt32(bitstrm_t *ps_bitstrm, UWORD32 u4_numbits); 2110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarUWORD32 ihevcd_bits_get(bitstrm_t *ps_bitstrm, UWORD32 u4_numbits); 2140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarUWORD32 ihevcd_bits_num_bits_remaining(bitstrm_t *ps_bitstrm); 2160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarUWORD32 ihevcd_bits_num_bits_consumed(bitstrm_t *ps_bitstrm); 2190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarUWORD32 ihevcd_uev(bitstrm_t *ps_bitstrm); 2210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish MahendrakarWORD32 ihevcd_sev(bitstrm_t *ps_bitstrm); 2230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarvoid ihevcd_bits_seek(bitstrm_t *ps_bitstrm, WORD32 numbits); 2250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 2260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar#endif /* _IHEVCD_BITSTREAM_H_ */ 227