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