{
return( 8 * ( s->p - s->p_start ) + 8 - s->i_left );
}
-static inline int bs_eof( bs_t *s )
-{
- return( s->p >= s->p_end ? 1: 0 );
-}
-static inline uint32_t bs_read( bs_t *s, int i_count )
-{
- static uint32_t i_mask[33] ={0x00,
- 0x01, 0x03, 0x07, 0x0f,
- 0x1f, 0x3f, 0x7f, 0xff,
- 0x1ff, 0x3ff, 0x7ff, 0xfff,
- 0x1fff, 0x3fff, 0x7fff, 0xffff,
- 0x1ffff, 0x3ffff, 0x7ffff, 0xfffff,
- 0x1fffff, 0x3fffff, 0x7fffff, 0xffffff,
- 0x1ffffff, 0x3ffffff, 0x7ffffff, 0xfffffff,
- 0x1fffffff,0x3fffffff,0x7fffffff,0xffffffff};
- int i_shr;
- uint32_t i_result = 0;
-
- while( i_count > 0 )
- {
- if( s->p >= s->p_end )
- {
- break;
- }
-
- if( ( i_shr = s->i_left - i_count ) >= 0 )
- {
- /* more in the buffer than requested */
- i_result |= ( *s->p >> i_shr )&i_mask[i_count];
- s->i_left -= i_count;
- if( s->i_left == 0 )
- {
- s->p++;
- s->i_left = 8;
- }
- return( i_result );
- }
- else
- {
- /* less in the buffer than requested */
- i_result |= (*s->p&i_mask[s->i_left]) << -i_shr;
- i_count -= s->i_left;
- s->p++;
- s->i_left = 8;
- }
- }
-
- return( i_result );
-}
-
-static inline uint32_t bs_read1( bs_t *s )
-{
-
- if( s->p < s->p_end )
- {
- unsigned int i_result;
-
- s->i_left--;
- i_result = ( *s->p >> s->i_left )&0x01;
- if( s->i_left == 0 )
- {
- s->p++;
- s->i_left = 8;
- }
- return i_result;
- }
-
- return 0;
-}
-static inline uint32_t bs_show( bs_t *s, int i_count )
-{
- if( s->p < s->p_end && i_count > 0 )
- {
- uint32_t i_cache = ((s->p[0] << 24)+(s->p[1] << 16)+(s->p[2] << 8)+s->p[3]) << (8-s->i_left);
- return( i_cache >> ( 32 - i_count) );
- }
- return 0;
-}
-
-/* TODO optimize */
-static inline void bs_skip( bs_t *s, int i_count )
-{
- s->i_left -= i_count;
-
- while( s->i_left <= 0 )
- {
- s->p++;
- s->i_left += 8;
- }
-}
-
-
-static inline int bs_read_ue( bs_t *s )
-{
- int i = 0;
-
- while( bs_read1( s ) == 0 && s->p < s->p_end && i < 32 )
- {
- i++;
- }
- return( ( 1 << i) - 1 + bs_read( s, i ) );
-}
-static inline int bs_read_se( bs_t *s )
-{
- int val = bs_read_ue( s );
-
- return val&0x01 ? (val+1)/2 : -(val/2);
-}
-
-static inline int bs_read_te( bs_t *s, int x )
-{
- if( x == 1 )
- {
- return 1 - bs_read1( s );
- }
- else if( x > 1 )
- {
- return bs_read_ue( s );
- }
- return 0;
-}
static inline void bs_write( bs_t *s, int i_count, uint32_t i_bits )
{
return 0;
}
-
-
#endif
*/
typedef struct x264_ratecontrol_t x264_ratecontrol_t;
-typedef struct x264_vlc_table_t x264_vlc_table_t;
struct x264_t
{
x264_quant_function_t quantf;
x264_deblock_function_t loopf;
- /* vlc table for decoding purpose only */
- x264_vlc_table_t *x264_coeff_token_lookup[5];
- x264_vlc_table_t *x264_level_prefix_lookup;
- x264_vlc_table_t *x264_total_zeros_lookup[15];
- x264_vlc_table_t *x264_total_zeros_dc_lookup[3];
- x264_vlc_table_t *x264_run_before_lookup[7];
-
#if VISUALIZE
struct visualize_t *visualize;
#endif