Coverage Report

Created: 2026-04-01 07:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/x264/common/bitstream.h
Line
Count
Source
1
/*****************************************************************************
2
 * bitstream.h: bitstream writing
3
 *****************************************************************************
4
 * Copyright (C) 2003-2025 x264 project
5
 *
6
 * Authors: Loren Merritt <lorenm@u.washington.edu>
7
 *          Fiona Glaser <fiona@x264.com>
8
 *          Laurent Aimar <fenrir@via.ecp.fr>
9
 *
10
 * This program is free software; you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation; either version 2 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program; if not, write to the Free Software
22
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.
23
 *
24
 * This program is also available under a commercial proprietary license.
25
 * For more information, contact us at licensing@x264.com.
26
 *****************************************************************************/
27
28
#ifndef X264_BS_H
29
#define X264_BS_H
30
31
typedef struct
32
{
33
    uint16_t i_bits;
34
    uint8_t  i_size;
35
    /* Next level table to use */
36
    uint8_t  i_next;
37
} vlc_large_t;
38
39
typedef struct bs_s
40
{
41
    uint8_t *p_start;
42
    uint8_t *p;
43
    uint8_t *p_end;
44
45
    uintptr_t cur_bits;
46
    int     i_left;    /* i_count number of available bits */
47
    int     i_bits_encoded; /* RD only */
48
} bs_t;
49
50
typedef struct
51
{
52
    int32_t last;
53
    int32_t mask;
54
    ALIGNED_16( dctcoef level[18] );
55
} x264_run_level_t;
56
57
typedef struct
58
{
59
    uint8_t *(*nal_escape)( uint8_t *dst, uint8_t *src, uint8_t *end );
60
    void (*cabac_block_residual_internal)( dctcoef *l, int b_interlaced,
61
                                           intptr_t ctx_block_cat, x264_cabac_t *cb );
62
    void (*cabac_block_residual_rd_internal)( dctcoef *l, int b_interlaced,
63
                                              intptr_t ctx_block_cat, x264_cabac_t *cb );
64
    void (*cabac_block_residual_8x8_rd_internal)( dctcoef *l, int b_interlaced,
65
                                                  intptr_t ctx_block_cat, x264_cabac_t *cb );
66
} x264_bitstream_function_t;
67
68
0
#define x264_bitstream_init x264_template(bitstream_init)
69
void x264_bitstream_init( uint32_t cpu, x264_bitstream_function_t *pf );
70
71
/* A larger level table size theoretically could help a bit at extremely
72
 * high bitrates, but the cost in cache is usually too high for it to be
73
 * useful.
74
 * This size appears to be optimal for QP18 encoding on a Nehalem CPU.
75
 * FIXME: Do further testing? */
76
0
#define LEVEL_TABLE_SIZE 128
77
0
#define x264_level_token x264_template(level_token)
78
extern vlc_large_t x264_level_token[7][LEVEL_TABLE_SIZE];
79
80
/* The longest possible set of zero run codes sums to 25 bits.  This leaves
81
 * plenty of room for both the code (25 bits) and size (5 bits) in a uint32_t. */
82
83
0
#define x264_run_before x264_template(run_before)
84
extern uint32_t x264_run_before[1<<16];
85
86
static inline void bs_init( bs_t *s, void *p_data, int i_data )
87
0
{
88
0
    int offset = ((intptr_t)p_data & 3);
89
0
    s->p       = s->p_start = (uint8_t*)p_data - offset;
90
0
    s->p_end   = (uint8_t*)p_data + i_data;
91
0
    s->i_left  = (WORD_SIZE - offset)*8;
92
0
    if( offset )
93
0
    {
94
0
        s->cur_bits = endian_fix32( M32(s->p) );
95
0
        s->cur_bits >>= (4-offset)*8;
96
0
    }
97
0
    else
98
0
        s->cur_bits = 0;
99
0
}
Unexecuted instantiation: bitstream.c:bs_init
Unexecuted instantiation: encoder.c:bs_init
Unexecuted instantiation: lookahead.c:bs_init
Unexecuted instantiation: threadpool.c:bs_init
Unexecuted instantiation: mc.c:bs_init
Unexecuted instantiation: predict.c:bs_init
Unexecuted instantiation: pixel.c:bs_init
Unexecuted instantiation: macroblock.c:bs_init
Unexecuted instantiation: frame.c:bs_init
Unexecuted instantiation: dct.c:bs_init
Unexecuted instantiation: cabac.c:bs_init
Unexecuted instantiation: common.c:bs_init
Unexecuted instantiation: set.c:bs_init
Unexecuted instantiation: quant.c:bs_init
Unexecuted instantiation: deblock.c:bs_init
Unexecuted instantiation: vlc.c:bs_init
Unexecuted instantiation: mvpred.c:bs_init
Unexecuted instantiation: analyse.c:bs_init
Unexecuted instantiation: me.c:bs_init
Unexecuted instantiation: ratecontrol.c:bs_init
Unexecuted instantiation: cavlc.c:bs_init
Unexecuted instantiation: rectangle.c:bs_init
100
static inline int bs_pos( bs_t *s )
101
0
{
102
0
    return( 8 * (s->p - s->p_start) + (WORD_SIZE*8) - s->i_left );
103
0
}
Unexecuted instantiation: bitstream.c:bs_pos
Unexecuted instantiation: encoder.c:bs_pos
Unexecuted instantiation: lookahead.c:bs_pos
Unexecuted instantiation: threadpool.c:bs_pos
Unexecuted instantiation: mc.c:bs_pos
Unexecuted instantiation: predict.c:bs_pos
Unexecuted instantiation: pixel.c:bs_pos
Unexecuted instantiation: macroblock.c:bs_pos
Unexecuted instantiation: frame.c:bs_pos
Unexecuted instantiation: dct.c:bs_pos
Unexecuted instantiation: cabac.c:bs_pos
Unexecuted instantiation: common.c:bs_pos
Unexecuted instantiation: set.c:bs_pos
Unexecuted instantiation: quant.c:bs_pos
Unexecuted instantiation: deblock.c:bs_pos
Unexecuted instantiation: vlc.c:bs_pos
Unexecuted instantiation: mvpred.c:bs_pos
Unexecuted instantiation: analyse.c:bs_pos
Unexecuted instantiation: me.c:bs_pos
Unexecuted instantiation: ratecontrol.c:bs_pos
Unexecuted instantiation: cavlc.c:bs_pos
Unexecuted instantiation: rectangle.c:bs_pos
104
105
/* Write the rest of cur_bits to the bitstream; results in a bitstream no longer 32-bit aligned. */
106
static inline void bs_flush( bs_t *s )
107
0
{
108
0
    M32( s->p ) = endian_fix32( s->cur_bits << (s->i_left&31) );
109
0
    s->p += WORD_SIZE - (s->i_left >> 3);
110
0
    s->i_left = WORD_SIZE*8;
111
0
}
Unexecuted instantiation: bitstream.c:bs_flush
Unexecuted instantiation: encoder.c:bs_flush
Unexecuted instantiation: lookahead.c:bs_flush
Unexecuted instantiation: threadpool.c:bs_flush
Unexecuted instantiation: mc.c:bs_flush
Unexecuted instantiation: predict.c:bs_flush
Unexecuted instantiation: pixel.c:bs_flush
Unexecuted instantiation: macroblock.c:bs_flush
Unexecuted instantiation: frame.c:bs_flush
Unexecuted instantiation: dct.c:bs_flush
Unexecuted instantiation: cabac.c:bs_flush
Unexecuted instantiation: common.c:bs_flush
Unexecuted instantiation: set.c:bs_flush
Unexecuted instantiation: quant.c:bs_flush
Unexecuted instantiation: deblock.c:bs_flush
Unexecuted instantiation: vlc.c:bs_flush
Unexecuted instantiation: mvpred.c:bs_flush
Unexecuted instantiation: analyse.c:bs_flush
Unexecuted instantiation: me.c:bs_flush
Unexecuted instantiation: ratecontrol.c:bs_flush
Unexecuted instantiation: cavlc.c:bs_flush
Unexecuted instantiation: rectangle.c:bs_flush
112
/* The inverse of bs_flush: prepare the bitstream to be written to again. */
113
static inline void bs_realign( bs_t *s )
114
0
{
115
0
    int offset = ((intptr_t)s->p & 3);
116
0
    if( offset )
117
0
    {
118
0
        s->p       = (uint8_t*)s->p - offset;
119
0
        s->i_left  = (WORD_SIZE - offset)*8;
120
0
        s->cur_bits = endian_fix32( M32(s->p) );
121
0
        s->cur_bits >>= (4-offset)*8;
122
0
    }
123
0
}
Unexecuted instantiation: bitstream.c:bs_realign
Unexecuted instantiation: encoder.c:bs_realign
Unexecuted instantiation: lookahead.c:bs_realign
Unexecuted instantiation: threadpool.c:bs_realign
Unexecuted instantiation: mc.c:bs_realign
Unexecuted instantiation: predict.c:bs_realign
Unexecuted instantiation: pixel.c:bs_realign
Unexecuted instantiation: macroblock.c:bs_realign
Unexecuted instantiation: frame.c:bs_realign
Unexecuted instantiation: dct.c:bs_realign
Unexecuted instantiation: cabac.c:bs_realign
Unexecuted instantiation: common.c:bs_realign
Unexecuted instantiation: set.c:bs_realign
Unexecuted instantiation: quant.c:bs_realign
Unexecuted instantiation: deblock.c:bs_realign
Unexecuted instantiation: vlc.c:bs_realign
Unexecuted instantiation: mvpred.c:bs_realign
Unexecuted instantiation: analyse.c:bs_realign
Unexecuted instantiation: me.c:bs_realign
Unexecuted instantiation: ratecontrol.c:bs_realign
Unexecuted instantiation: cavlc.c:bs_realign
Unexecuted instantiation: rectangle.c:bs_realign
124
125
static inline void bs_write( bs_t *s, int i_count, uint32_t i_bits )
126
0
{
127
0
    if( WORD_SIZE == 8 )
128
0
    {
129
0
        s->cur_bits = (s->cur_bits << i_count) | i_bits;
130
0
        s->i_left -= i_count;
131
0
        if( s->i_left <= 32 )
132
0
        {
133
#if WORDS_BIGENDIAN
134
            M32( s->p ) = s->cur_bits >> (32 - s->i_left);
135
#else
136
0
            M32( s->p ) = endian_fix( s->cur_bits << s->i_left );
137
0
#endif
138
0
            s->i_left += 32;
139
0
            s->p += 4;
140
0
        }
141
0
    }
142
0
    else
143
0
    {
144
0
        if( i_count < s->i_left )
145
0
        {
146
0
            s->cur_bits = (s->cur_bits << i_count) | i_bits;
147
0
            s->i_left -= i_count;
148
0
        }
149
0
        else
150
0
        {
151
0
            i_count -= s->i_left;
152
0
            s->cur_bits = (s->cur_bits << s->i_left) | (i_bits >> i_count);
153
0
            M32( s->p ) = endian_fix( s->cur_bits );
154
0
            s->p += 4;
155
0
            s->cur_bits = i_bits;
156
0
            s->i_left = 32 - i_count;
157
0
        }
158
0
    }
159
0
}
Unexecuted instantiation: bitstream.c:bs_write
Unexecuted instantiation: encoder.c:bs_write
Unexecuted instantiation: lookahead.c:bs_write
Unexecuted instantiation: threadpool.c:bs_write
Unexecuted instantiation: mc.c:bs_write
Unexecuted instantiation: predict.c:bs_write
Unexecuted instantiation: pixel.c:bs_write
Unexecuted instantiation: macroblock.c:bs_write
Unexecuted instantiation: frame.c:bs_write
Unexecuted instantiation: dct.c:bs_write
Unexecuted instantiation: cabac.c:bs_write
Unexecuted instantiation: common.c:bs_write
Unexecuted instantiation: set.c:bs_write
Unexecuted instantiation: quant.c:bs_write
Unexecuted instantiation: deblock.c:bs_write
Unexecuted instantiation: vlc.c:bs_write
Unexecuted instantiation: mvpred.c:bs_write
Unexecuted instantiation: analyse.c:bs_write
Unexecuted instantiation: me.c:bs_write
Unexecuted instantiation: ratecontrol.c:bs_write
Unexecuted instantiation: cavlc.c:bs_write
Unexecuted instantiation: rectangle.c:bs_write
160
161
/* Special case to eliminate branch in normal bs_write. */
162
/* Golomb never writes an even-size code, so this is only used in slice headers. */
163
static inline void bs_write32( bs_t *s, uint32_t i_bits )
164
0
{
165
0
    bs_write( s, 16, i_bits >> 16 );
166
0
    bs_write( s, 16, i_bits );
167
0
}
Unexecuted instantiation: bitstream.c:bs_write32
Unexecuted instantiation: encoder.c:bs_write32
Unexecuted instantiation: lookahead.c:bs_write32
Unexecuted instantiation: threadpool.c:bs_write32
Unexecuted instantiation: mc.c:bs_write32
Unexecuted instantiation: predict.c:bs_write32
Unexecuted instantiation: pixel.c:bs_write32
Unexecuted instantiation: macroblock.c:bs_write32
Unexecuted instantiation: frame.c:bs_write32
Unexecuted instantiation: dct.c:bs_write32
Unexecuted instantiation: cabac.c:bs_write32
Unexecuted instantiation: common.c:bs_write32
Unexecuted instantiation: set.c:bs_write32
Unexecuted instantiation: quant.c:bs_write32
Unexecuted instantiation: deblock.c:bs_write32
Unexecuted instantiation: vlc.c:bs_write32
Unexecuted instantiation: mvpred.c:bs_write32
Unexecuted instantiation: analyse.c:bs_write32
Unexecuted instantiation: me.c:bs_write32
Unexecuted instantiation: ratecontrol.c:bs_write32
Unexecuted instantiation: cavlc.c:bs_write32
Unexecuted instantiation: rectangle.c:bs_write32
168
169
static inline void bs_write1( bs_t *s, uint32_t i_bit )
170
0
{
171
0
    s->cur_bits <<= 1;
172
0
    s->cur_bits |= i_bit;
173
0
    s->i_left--;
174
0
    if( s->i_left == WORD_SIZE*8-32 )
175
0
    {
176
0
        M32( s->p ) = endian_fix32( s->cur_bits );
177
0
        s->p += 4;
178
0
        s->i_left = WORD_SIZE*8;
179
0
    }
180
0
}
Unexecuted instantiation: bitstream.c:bs_write1
Unexecuted instantiation: encoder.c:bs_write1
Unexecuted instantiation: lookahead.c:bs_write1
Unexecuted instantiation: threadpool.c:bs_write1
Unexecuted instantiation: mc.c:bs_write1
Unexecuted instantiation: predict.c:bs_write1
Unexecuted instantiation: pixel.c:bs_write1
Unexecuted instantiation: macroblock.c:bs_write1
Unexecuted instantiation: frame.c:bs_write1
Unexecuted instantiation: dct.c:bs_write1
Unexecuted instantiation: cabac.c:bs_write1
Unexecuted instantiation: common.c:bs_write1
Unexecuted instantiation: set.c:bs_write1
Unexecuted instantiation: quant.c:bs_write1
Unexecuted instantiation: deblock.c:bs_write1
Unexecuted instantiation: vlc.c:bs_write1
Unexecuted instantiation: mvpred.c:bs_write1
Unexecuted instantiation: analyse.c:bs_write1
Unexecuted instantiation: me.c:bs_write1
Unexecuted instantiation: ratecontrol.c:bs_write1
Unexecuted instantiation: cavlc.c:bs_write1
Unexecuted instantiation: rectangle.c:bs_write1
181
182
static inline void bs_align_0( bs_t *s )
183
0
{
184
0
    bs_write( s, s->i_left&7, 0 );
185
0
    bs_flush( s );
186
0
}
Unexecuted instantiation: bitstream.c:bs_align_0
Unexecuted instantiation: encoder.c:bs_align_0
Unexecuted instantiation: lookahead.c:bs_align_0
Unexecuted instantiation: threadpool.c:bs_align_0
Unexecuted instantiation: mc.c:bs_align_0
Unexecuted instantiation: predict.c:bs_align_0
Unexecuted instantiation: pixel.c:bs_align_0
Unexecuted instantiation: macroblock.c:bs_align_0
Unexecuted instantiation: frame.c:bs_align_0
Unexecuted instantiation: dct.c:bs_align_0
Unexecuted instantiation: cabac.c:bs_align_0
Unexecuted instantiation: common.c:bs_align_0
Unexecuted instantiation: set.c:bs_align_0
Unexecuted instantiation: quant.c:bs_align_0
Unexecuted instantiation: deblock.c:bs_align_0
Unexecuted instantiation: vlc.c:bs_align_0
Unexecuted instantiation: mvpred.c:bs_align_0
Unexecuted instantiation: analyse.c:bs_align_0
Unexecuted instantiation: me.c:bs_align_0
Unexecuted instantiation: ratecontrol.c:bs_align_0
Unexecuted instantiation: cavlc.c:bs_align_0
Unexecuted instantiation: rectangle.c:bs_align_0
187
static inline void bs_align_1( bs_t *s )
188
0
{
189
0
    bs_write( s, s->i_left&7, (1 << (s->i_left&7)) - 1 );
190
0
    bs_flush( s );
191
0
}
Unexecuted instantiation: bitstream.c:bs_align_1
Unexecuted instantiation: encoder.c:bs_align_1
Unexecuted instantiation: lookahead.c:bs_align_1
Unexecuted instantiation: threadpool.c:bs_align_1
Unexecuted instantiation: mc.c:bs_align_1
Unexecuted instantiation: predict.c:bs_align_1
Unexecuted instantiation: pixel.c:bs_align_1
Unexecuted instantiation: macroblock.c:bs_align_1
Unexecuted instantiation: frame.c:bs_align_1
Unexecuted instantiation: dct.c:bs_align_1
Unexecuted instantiation: cabac.c:bs_align_1
Unexecuted instantiation: common.c:bs_align_1
Unexecuted instantiation: set.c:bs_align_1
Unexecuted instantiation: quant.c:bs_align_1
Unexecuted instantiation: deblock.c:bs_align_1
Unexecuted instantiation: vlc.c:bs_align_1
Unexecuted instantiation: mvpred.c:bs_align_1
Unexecuted instantiation: analyse.c:bs_align_1
Unexecuted instantiation: me.c:bs_align_1
Unexecuted instantiation: ratecontrol.c:bs_align_1
Unexecuted instantiation: cavlc.c:bs_align_1
Unexecuted instantiation: rectangle.c:bs_align_1
192
static inline void bs_align_10( bs_t *s )
193
0
{
194
0
    if( s->i_left&7 )
195
0
        bs_write( s, s->i_left&7, 1 << ( (s->i_left&7) - 1 ) );
196
0
    bs_flush( s );
197
0
}
Unexecuted instantiation: bitstream.c:bs_align_10
Unexecuted instantiation: encoder.c:bs_align_10
Unexecuted instantiation: lookahead.c:bs_align_10
Unexecuted instantiation: threadpool.c:bs_align_10
Unexecuted instantiation: mc.c:bs_align_10
Unexecuted instantiation: predict.c:bs_align_10
Unexecuted instantiation: pixel.c:bs_align_10
Unexecuted instantiation: macroblock.c:bs_align_10
Unexecuted instantiation: frame.c:bs_align_10
Unexecuted instantiation: dct.c:bs_align_10
Unexecuted instantiation: cabac.c:bs_align_10
Unexecuted instantiation: common.c:bs_align_10
Unexecuted instantiation: set.c:bs_align_10
Unexecuted instantiation: quant.c:bs_align_10
Unexecuted instantiation: deblock.c:bs_align_10
Unexecuted instantiation: vlc.c:bs_align_10
Unexecuted instantiation: mvpred.c:bs_align_10
Unexecuted instantiation: analyse.c:bs_align_10
Unexecuted instantiation: me.c:bs_align_10
Unexecuted instantiation: ratecontrol.c:bs_align_10
Unexecuted instantiation: cavlc.c:bs_align_10
Unexecuted instantiation: rectangle.c:bs_align_10
198
199
/* golomb functions */
200
201
static const uint8_t x264_ue_size_tab[256] =
202
{
203
     1, 1, 3, 3, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7,
204
     9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
205
    11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
206
    11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
207
    13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
208
    13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
209
    13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
210
    13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
211
    15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
212
    15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
213
    15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
214
    15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
215
    15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
216
    15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
217
    15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
218
    15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
219
};
220
221
static inline void bs_write_ue_big( bs_t *s, unsigned int val )
222
0
{
223
0
    int size = 0;
224
0
    int tmp = ++val;
225
0
    if( tmp >= 0x10000 )
226
0
    {
227
0
        size = 32;
228
0
        tmp >>= 16;
229
0
    }
230
0
    if( tmp >= 0x100 )
231
0
    {
232
0
        size += 16;
233
0
        tmp >>= 8;
234
0
    }
235
0
    size += x264_ue_size_tab[tmp];
236
0
    bs_write( s, size>>1, 0 );
237
0
    bs_write( s, (size>>1)+1, val );
238
0
}
Unexecuted instantiation: bitstream.c:bs_write_ue_big
Unexecuted instantiation: encoder.c:bs_write_ue_big
Unexecuted instantiation: lookahead.c:bs_write_ue_big
Unexecuted instantiation: threadpool.c:bs_write_ue_big
Unexecuted instantiation: mc.c:bs_write_ue_big
Unexecuted instantiation: predict.c:bs_write_ue_big
Unexecuted instantiation: pixel.c:bs_write_ue_big
Unexecuted instantiation: macroblock.c:bs_write_ue_big
Unexecuted instantiation: frame.c:bs_write_ue_big
Unexecuted instantiation: dct.c:bs_write_ue_big
Unexecuted instantiation: cabac.c:bs_write_ue_big
Unexecuted instantiation: common.c:bs_write_ue_big
Unexecuted instantiation: set.c:bs_write_ue_big
Unexecuted instantiation: quant.c:bs_write_ue_big
Unexecuted instantiation: deblock.c:bs_write_ue_big
Unexecuted instantiation: vlc.c:bs_write_ue_big
Unexecuted instantiation: mvpred.c:bs_write_ue_big
Unexecuted instantiation: analyse.c:bs_write_ue_big
Unexecuted instantiation: me.c:bs_write_ue_big
Unexecuted instantiation: ratecontrol.c:bs_write_ue_big
Unexecuted instantiation: cavlc.c:bs_write_ue_big
Unexecuted instantiation: rectangle.c:bs_write_ue_big
239
240
/* Only works on values under 255. */
241
static inline void bs_write_ue( bs_t *s, int val )
242
0
{
243
0
    bs_write( s, x264_ue_size_tab[val+1], val+1 );
244
0
}
Unexecuted instantiation: bitstream.c:bs_write_ue
Unexecuted instantiation: encoder.c:bs_write_ue
Unexecuted instantiation: lookahead.c:bs_write_ue
Unexecuted instantiation: threadpool.c:bs_write_ue
Unexecuted instantiation: mc.c:bs_write_ue
Unexecuted instantiation: predict.c:bs_write_ue
Unexecuted instantiation: pixel.c:bs_write_ue
Unexecuted instantiation: macroblock.c:bs_write_ue
Unexecuted instantiation: frame.c:bs_write_ue
Unexecuted instantiation: dct.c:bs_write_ue
Unexecuted instantiation: cabac.c:bs_write_ue
Unexecuted instantiation: common.c:bs_write_ue
Unexecuted instantiation: set.c:bs_write_ue
Unexecuted instantiation: quant.c:bs_write_ue
Unexecuted instantiation: deblock.c:bs_write_ue
Unexecuted instantiation: vlc.c:bs_write_ue
Unexecuted instantiation: mvpred.c:bs_write_ue
Unexecuted instantiation: analyse.c:bs_write_ue
Unexecuted instantiation: me.c:bs_write_ue
Unexecuted instantiation: ratecontrol.c:bs_write_ue
Unexecuted instantiation: cavlc.c:bs_write_ue
Unexecuted instantiation: rectangle.c:bs_write_ue
245
246
static inline void bs_write_se( bs_t *s, int val )
247
0
{
248
0
    int size = 0;
249
    /* Faster than (val <= 0 ? -val*2+1 : val*2) */
250
    /* 4 instructions on x86, 3 on ARM */
251
0
    int tmp = 1 - val*2;
252
0
    if( tmp < 0 ) tmp = val*2;
253
0
    val = tmp;
254
255
0
    if( tmp >= 0x100 )
256
0
    {
257
0
        size = 16;
258
0
        tmp >>= 8;
259
0
    }
260
0
    size += x264_ue_size_tab[tmp];
261
0
    bs_write( s, size, val );
262
0
}
Unexecuted instantiation: bitstream.c:bs_write_se
Unexecuted instantiation: encoder.c:bs_write_se
Unexecuted instantiation: lookahead.c:bs_write_se
Unexecuted instantiation: threadpool.c:bs_write_se
Unexecuted instantiation: mc.c:bs_write_se
Unexecuted instantiation: predict.c:bs_write_se
Unexecuted instantiation: pixel.c:bs_write_se
Unexecuted instantiation: macroblock.c:bs_write_se
Unexecuted instantiation: frame.c:bs_write_se
Unexecuted instantiation: dct.c:bs_write_se
Unexecuted instantiation: cabac.c:bs_write_se
Unexecuted instantiation: common.c:bs_write_se
Unexecuted instantiation: set.c:bs_write_se
Unexecuted instantiation: quant.c:bs_write_se
Unexecuted instantiation: deblock.c:bs_write_se
Unexecuted instantiation: vlc.c:bs_write_se
Unexecuted instantiation: mvpred.c:bs_write_se
Unexecuted instantiation: analyse.c:bs_write_se
Unexecuted instantiation: me.c:bs_write_se
Unexecuted instantiation: ratecontrol.c:bs_write_se
Unexecuted instantiation: cavlc.c:bs_write_se
Unexecuted instantiation: rectangle.c:bs_write_se
263
264
static inline void bs_write_te( bs_t *s, int x, int val )
265
0
{
266
0
    if( x == 1 )
267
0
        bs_write1( s, 1^val );
268
0
    else //if( x > 1 )
269
0
        bs_write_ue( s, val );
270
0
}
Unexecuted instantiation: bitstream.c:bs_write_te
Unexecuted instantiation: encoder.c:bs_write_te
Unexecuted instantiation: lookahead.c:bs_write_te
Unexecuted instantiation: threadpool.c:bs_write_te
Unexecuted instantiation: mc.c:bs_write_te
Unexecuted instantiation: predict.c:bs_write_te
Unexecuted instantiation: pixel.c:bs_write_te
Unexecuted instantiation: macroblock.c:bs_write_te
Unexecuted instantiation: frame.c:bs_write_te
Unexecuted instantiation: dct.c:bs_write_te
Unexecuted instantiation: cabac.c:bs_write_te
Unexecuted instantiation: common.c:bs_write_te
Unexecuted instantiation: set.c:bs_write_te
Unexecuted instantiation: quant.c:bs_write_te
Unexecuted instantiation: deblock.c:bs_write_te
Unexecuted instantiation: vlc.c:bs_write_te
Unexecuted instantiation: mvpred.c:bs_write_te
Unexecuted instantiation: analyse.c:bs_write_te
Unexecuted instantiation: me.c:bs_write_te
Unexecuted instantiation: ratecontrol.c:bs_write_te
Unexecuted instantiation: cavlc.c:bs_write_te
Unexecuted instantiation: rectangle.c:bs_write_te
271
272
static inline void bs_rbsp_trailing( bs_t *s )
273
0
{
274
0
    bs_write1( s, 1 );
275
0
    bs_write( s, s->i_left&7, 0  );
276
0
}
Unexecuted instantiation: bitstream.c:bs_rbsp_trailing
Unexecuted instantiation: encoder.c:bs_rbsp_trailing
Unexecuted instantiation: lookahead.c:bs_rbsp_trailing
Unexecuted instantiation: threadpool.c:bs_rbsp_trailing
Unexecuted instantiation: mc.c:bs_rbsp_trailing
Unexecuted instantiation: predict.c:bs_rbsp_trailing
Unexecuted instantiation: pixel.c:bs_rbsp_trailing
Unexecuted instantiation: macroblock.c:bs_rbsp_trailing
Unexecuted instantiation: frame.c:bs_rbsp_trailing
Unexecuted instantiation: dct.c:bs_rbsp_trailing
Unexecuted instantiation: cabac.c:bs_rbsp_trailing
Unexecuted instantiation: common.c:bs_rbsp_trailing
Unexecuted instantiation: set.c:bs_rbsp_trailing
Unexecuted instantiation: quant.c:bs_rbsp_trailing
Unexecuted instantiation: deblock.c:bs_rbsp_trailing
Unexecuted instantiation: vlc.c:bs_rbsp_trailing
Unexecuted instantiation: mvpred.c:bs_rbsp_trailing
Unexecuted instantiation: analyse.c:bs_rbsp_trailing
Unexecuted instantiation: me.c:bs_rbsp_trailing
Unexecuted instantiation: ratecontrol.c:bs_rbsp_trailing
Unexecuted instantiation: cavlc.c:bs_rbsp_trailing
Unexecuted instantiation: rectangle.c:bs_rbsp_trailing
277
278
static ALWAYS_INLINE int bs_size_ue( unsigned int val )
279
0
{
280
0
    return x264_ue_size_tab[val+1];
281
0
}
Unexecuted instantiation: bitstream.c:bs_size_ue
Unexecuted instantiation: encoder.c:bs_size_ue
Unexecuted instantiation: lookahead.c:bs_size_ue
Unexecuted instantiation: threadpool.c:bs_size_ue
Unexecuted instantiation: mc.c:bs_size_ue
Unexecuted instantiation: predict.c:bs_size_ue
Unexecuted instantiation: pixel.c:bs_size_ue
Unexecuted instantiation: macroblock.c:bs_size_ue
Unexecuted instantiation: frame.c:bs_size_ue
Unexecuted instantiation: dct.c:bs_size_ue
Unexecuted instantiation: cabac.c:bs_size_ue
Unexecuted instantiation: common.c:bs_size_ue
Unexecuted instantiation: set.c:bs_size_ue
Unexecuted instantiation: quant.c:bs_size_ue
Unexecuted instantiation: deblock.c:bs_size_ue
Unexecuted instantiation: vlc.c:bs_size_ue
Unexecuted instantiation: mvpred.c:bs_size_ue
Unexecuted instantiation: analyse.c:bs_size_ue
Unexecuted instantiation: me.c:bs_size_ue
Unexecuted instantiation: ratecontrol.c:bs_size_ue
Unexecuted instantiation: cavlc.c:bs_size_ue
Unexecuted instantiation: rectangle.c:bs_size_ue
282
283
static ALWAYS_INLINE int bs_size_ue_big( unsigned int val )
284
0
{
285
0
    if( val < 255 )
286
0
        return x264_ue_size_tab[val+1];
287
0
    else
288
0
        return x264_ue_size_tab[(val+1)>>8] + 16;
289
0
}
Unexecuted instantiation: bitstream.c:bs_size_ue_big
Unexecuted instantiation: encoder.c:bs_size_ue_big
Unexecuted instantiation: lookahead.c:bs_size_ue_big
Unexecuted instantiation: threadpool.c:bs_size_ue_big
Unexecuted instantiation: mc.c:bs_size_ue_big
Unexecuted instantiation: predict.c:bs_size_ue_big
Unexecuted instantiation: pixel.c:bs_size_ue_big
Unexecuted instantiation: macroblock.c:bs_size_ue_big
Unexecuted instantiation: frame.c:bs_size_ue_big
Unexecuted instantiation: dct.c:bs_size_ue_big
Unexecuted instantiation: cabac.c:bs_size_ue_big
Unexecuted instantiation: common.c:bs_size_ue_big
Unexecuted instantiation: set.c:bs_size_ue_big
Unexecuted instantiation: quant.c:bs_size_ue_big
Unexecuted instantiation: deblock.c:bs_size_ue_big
Unexecuted instantiation: vlc.c:bs_size_ue_big
Unexecuted instantiation: mvpred.c:bs_size_ue_big
Unexecuted instantiation: analyse.c:bs_size_ue_big
Unexecuted instantiation: me.c:bs_size_ue_big
Unexecuted instantiation: ratecontrol.c:bs_size_ue_big
Unexecuted instantiation: cavlc.c:bs_size_ue_big
Unexecuted instantiation: rectangle.c:bs_size_ue_big
290
291
static ALWAYS_INLINE int bs_size_se( int val )
292
0
{
293
0
    int tmp = 1 - val*2;
294
0
    if( tmp < 0 ) tmp = val*2;
295
0
    if( tmp < 256 )
296
0
        return x264_ue_size_tab[tmp];
297
0
    else
298
0
        return x264_ue_size_tab[tmp>>8]+16;
299
0
}
Unexecuted instantiation: bitstream.c:bs_size_se
Unexecuted instantiation: encoder.c:bs_size_se
Unexecuted instantiation: lookahead.c:bs_size_se
Unexecuted instantiation: threadpool.c:bs_size_se
Unexecuted instantiation: mc.c:bs_size_se
Unexecuted instantiation: predict.c:bs_size_se
Unexecuted instantiation: pixel.c:bs_size_se
Unexecuted instantiation: macroblock.c:bs_size_se
Unexecuted instantiation: frame.c:bs_size_se
Unexecuted instantiation: dct.c:bs_size_se
Unexecuted instantiation: cabac.c:bs_size_se
Unexecuted instantiation: common.c:bs_size_se
Unexecuted instantiation: set.c:bs_size_se
Unexecuted instantiation: quant.c:bs_size_se
Unexecuted instantiation: deblock.c:bs_size_se
Unexecuted instantiation: vlc.c:bs_size_se
Unexecuted instantiation: mvpred.c:bs_size_se
Unexecuted instantiation: analyse.c:bs_size_se
Unexecuted instantiation: me.c:bs_size_se
Unexecuted instantiation: ratecontrol.c:bs_size_se
Unexecuted instantiation: cavlc.c:bs_size_se
Unexecuted instantiation: rectangle.c:bs_size_se
300
301
static ALWAYS_INLINE int bs_size_te( int x, int val )
302
0
{
303
0
    if( x == 1 )
304
0
        return 1;
305
0
    else //if( x > 1 )
306
0
        return x264_ue_size_tab[val+1];
307
0
}
Unexecuted instantiation: bitstream.c:bs_size_te
Unexecuted instantiation: encoder.c:bs_size_te
Unexecuted instantiation: lookahead.c:bs_size_te
Unexecuted instantiation: threadpool.c:bs_size_te
Unexecuted instantiation: mc.c:bs_size_te
Unexecuted instantiation: predict.c:bs_size_te
Unexecuted instantiation: pixel.c:bs_size_te
Unexecuted instantiation: macroblock.c:bs_size_te
Unexecuted instantiation: frame.c:bs_size_te
Unexecuted instantiation: dct.c:bs_size_te
Unexecuted instantiation: cabac.c:bs_size_te
Unexecuted instantiation: common.c:bs_size_te
Unexecuted instantiation: set.c:bs_size_te
Unexecuted instantiation: quant.c:bs_size_te
Unexecuted instantiation: deblock.c:bs_size_te
Unexecuted instantiation: vlc.c:bs_size_te
Unexecuted instantiation: mvpred.c:bs_size_te
Unexecuted instantiation: analyse.c:bs_size_te
Unexecuted instantiation: me.c:bs_size_te
Unexecuted instantiation: ratecontrol.c:bs_size_te
Unexecuted instantiation: cavlc.c:bs_size_te
Unexecuted instantiation: rectangle.c:bs_size_te
308
309
#endif