diff options
Diffstat (limited to 'encoder/ih264e_bitstream.h')
-rw-r--r-- | encoder/ih264e_bitstream.h | 223 |
1 files changed, 20 insertions, 203 deletions
diff --git a/encoder/ih264e_bitstream.h b/encoder/ih264e_bitstream.h index 4f592f3..aee049b 100644 --- a/encoder/ih264e_bitstream.h +++ b/encoder/ih264e_bitstream.h @@ -36,8 +36,8 @@ ******************************************************************************* */ -#ifndef IH264E_BITSTREAM_H_ -#define IH264E_BITSTREAM_H_ +#ifndef _IH264E_BITSTREAM_H_ +#define _IH264E_BITSTREAM_H_ /*****************************************************************************/ /* Constant Macros */ @@ -265,216 +265,33 @@ static inline IH264E_ERROR_T ih264e_put_byte_epb(bitstrm_t *ps_bitstrm, UWORD8 b UWORD8 u1_next_byte = (ps_bitstrm->u4_cur_word >> (i - 8)) & 0xFF; \ err |= ih264e_put_byte_epb(ps_bitstrm, u1_next_byte); \ } \ - ps_bitstrm->u4_cur_word = 0; \ - ps_bitstrm->i4_bits_left_in_cw = WORD_SIZE; \ -} \ - + if (err == IH264E_SUCCESS) { \ + ps_bitstrm->u4_cur_word = 0; \ + ps_bitstrm->i4_bits_left_in_cw = WORD_SIZE; \ + } \ +} /*****************************************************************************/ -/* Extern Function Declarations */ +/* Function Declarations */ /*****************************************************************************/ -/** -****************************************************************************** -* -* @brief Initializes the encoder bitstream engine -* -* @par Description -* This routine needs to be called at start of slice/frame encode -* -* @param[in] ps_bitstrm -* pointer to bitstream context (handle) -* -* @param[in] p1_bitstrm_buf -* bitstream buffer pointer where the encoded stream is generated in byte order -* -* @param[in] u4_max_bitstrm_size -* indicates maximum bitstream buffer size. (in bytes) -* If actual stream size exceeds the maximum size, encoder should -* 1. Not corrupt data beyond u4_max_bitstrm_size bytes -* 2. Report an error back to application indicating overflow -* -* @return success or failure error code -* -****************************************************************************** -*/ -IH264E_ERROR_T ih264e_bitstrm_init - ( - bitstrm_t *ps_bitstrm, - UWORD8 *pu1_bitstrm_buf, - UWORD32 u4_max_bitstrm_size - ); +IH264E_ERROR_T ih264e_bitstrm_init(bitstrm_t *ps_bitstrm, + UWORD8 *pu1_bitstrm_buf, + UWORD32 u4_max_bitstrm_size); -/** -****************************************************************************** -* -* @brief puts a code with specified number of bits into the bitstream -* -* @par Description -* inserts code_len number of bits from lsb of code_val into the -* bitstream. If the total bytes (u4_strm_buf_offset) exceeds max -* available size (u4_max_strm_size), returns error without corrupting data -* beyond it -* -* @param[in] ps_bitstrm -* pointer to bitstream context (handle) -* -* @param[in] u4_code_val -* code value that needs to be inserted in the stream. -* -* @param[in] code_len -* indicates code length (in bits) of code_val that would be inserted in -* bitstream buffer size. -* -* @remarks Assumptions: all bits from bit position code_len to msb of -* code_val shall be zero -* -* @return success or failure error code -* -****************************************************************************** -*/ -IH264E_ERROR_T ih264e_put_bits - ( - bitstrm_t *ps_bitstrm, - UWORD32 u4_code_val, - WORD32 code_len - ); +IH264E_ERROR_T ih264e_put_bits(bitstrm_t *ps_bitstrm, UWORD32 u4_code_val, + WORD32 code_len); -/** -****************************************************************************** -* -* @brief inserts a 1-bit code into the bitstream -* -* @par Description -* inserts 1bit lsb of code_val into the bitstream -* updates context members like u4_cur_word, u4_strm_buf_offset and -* i4_bits_left_in_cw. If the total words (u4_strm_buf_offset) exceeds max -* available size (u4_max_strm_size), returns error without corrupting data -* beyond it -* -* @param[in] ps_bitstrm -* pointer to bitstream context (handle) -* -* @param[in] u4_code_val -* code value that needs to be inserted in the stream. -* -* @remarks Assumptions: all bits from bit position 1 to msb of code_val -* shall be zero -* -* @return success or failure error code -* -****************************************************************************** -*/ -IH264E_ERROR_T ih264e_put_bit - ( - bitstrm_t *ps_bitstrm, - UWORD32 u4_code_val - ); +IH264E_ERROR_T ih264e_put_bit(bitstrm_t *ps_bitstrm, UWORD32 u4_code_val); -/** -****************************************************************************** -* -* @brief inserts rbsp trailing bits at the end of stream buffer (NAL) -* -* @par Description -* inserts rbsp trailing bits, updates context members like u4_cur_word and -* i4_bits_left_in_cw and flushes the same in the bitstream buffer. If the -* total words (u4_strm_buf_offset) exceeds max available size -* (u4_max_strm_size), returns error without corrupting data beyond it -* -* @param[in] ps_bitstrm -* pointer to bitstream context (handle) -* -* @return success or failure error code -* -****************************************************************************** -*/ -IH264E_ERROR_T ih264e_put_rbsp_trailing_bits - ( - bitstrm_t *ps_bitstrm - ); +IH264E_ERROR_T ih264e_put_rbsp_trailing_bits(bitstrm_t *ps_bitstrm); -/** -****************************************************************************** -* -* @brief puts exponential golomb code of a unsigned integer into bitstream -* -* @par Description -* computes uev code for given syntax element and inserts the same into -* bitstream by calling ih264e_put_bits() interface. -* -* @param[in] ps_bitstrm -* pointer to bitstream context (handle) -* -* @param[in] u4_code_num -* unsigned integer input whose golomb code is written in stream -* -* @remarks Assumptions: code value can be represented in less than 16bits -* -* @return success or failure error code -* -****************************************************************************** -*/ -IH264E_ERROR_T ih264e_put_uev - ( - bitstrm_t *ps_bitstrm, - UWORD32 u4_code_num - ); +IH264E_ERROR_T ih264e_put_uev(bitstrm_t *ps_bitstrm, UWORD32 u4_code_num); -/** -****************************************************************************** -* -* @brief puts exponential golomb code of a signed integer into bitstream -* -* @par Description -* computes sev code for given syntax element and inserts the same into -* bitstream by calling ih264e_put_bits() interface. -* -* @param[in] ps_bitstrm -* pointer to bitstream context (handle) -* -* @param[in] syntax_elem -* signed integer input whose golomb code is written in stream -* -* @remarks Assumptions: code value can be represented in less than 16bits -* -* @return success or failure error code -* -****************************************************************************** -*/ -IH264E_ERROR_T ih264e_put_sev - ( - bitstrm_t *ps_bitstrm, - WORD32 syntax_elem - ); +IH264E_ERROR_T ih264e_put_sev(bitstrm_t *ps_bitstrm, WORD32 syntax_elem); -/** -****************************************************************************** -* -* @brief insert NAL start code prefix (0x000001) into bitstream with an option -* of inserting leading_zero_8bits (which makes startcode prefix as 0x00000001) -* -* @par Description -* Although start code prefix could have been put by calling ih264e_put_bits(), -* ih264e_put_nal_start_code_prefix() is specially added to make sure emulation -* prevention insertion is not done for the NAL start code prefix which will -* surely happen otherwise by calling ih264e_put_bits() interface. -* -* @param[in] ps_bitstrm -* pointer to bitstream context (handle) -* -* @param[in] insert_leading_zero_8bits -* flag indicating if one more zero bytes needs to prefixed before start code -* -* @return success or failure error code -* -****************************************************************************** -*/ -IH264E_ERROR_T ih264e_put_nal_start_code_prefix - ( - bitstrm_t *ps_bitstrm, - WORD32 insert_leading_zero_8bits - ); +IH264E_ERROR_T ih264e_put_nal_start_code_prefix(bitstrm_t *ps_bitstrm, + WORD32 insert_leading_zero_8bits); -#endif /* IH264E_BITSTREAM_H_ */ +#endif /* _IH264E_BITSTREAM_H_ */ |