Coverage Report

Created: 2025-07-11 06:16

/src/vlc/include/vlc_bits.h
Line
Count
Source (jump to first uncovered line)
1
/*****************************************************************************
2
 * vlc_bits.h : Bit handling helpers
3
 *****************************************************************************
4
 * Copyright (C) 2001, 2002, 2003, 2006, 2015 VLC authors and VideoLAN
5
 *
6
 * Authors: Laurent Aimar <fenrir@via.ecp.fr>
7
 *          Gildas Bazin <gbazin at videolan dot org>
8
 *          Rafaël Carré <funman at videolan dot org>
9
 *
10
 * This program is free software; you can redistribute it and/or modify it
11
 * under the terms of the GNU Lesser General Public License as published by
12
 * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU Lesser General Public License
21
 * along with this program; if not, write to the Free Software Foundation,
22
 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23
 *****************************************************************************/
24
#ifndef VLC_BITS_H
25
#define VLC_BITS_H 1
26
27
#include <vlc_common.h>
28
29
/**
30
 * \file
31
 * This file defines functions, structures for handling streams of bits in vlc
32
 */
33
34
typedef struct bs_s bs_t;
35
36
typedef struct
37
{
38
    /* forward read modifier (p_start, p_end, p_fwpriv, count, pos) */
39
    size_t (*pf_byte_forward)(bs_t *, size_t);
40
    size_t (*pf_byte_pos)(const bs_t *);
41
} bs_byte_callbacks_t;
42
43
typedef struct bs_s
44
{
45
    uint8_t *p_start;
46
    uint8_t *p;         /* points to currently read/written byte */
47
    uint8_t *p_end;
48
49
    uint8_t  i_left;    /* i_count number of available bits */
50
    bool     b_read_only;
51
    bool     b_error;
52
53
    bs_byte_callbacks_t cb;
54
    void    *p_priv;
55
} bs_t;
56
57
static size_t bs_impl_bytes_forward( bs_t *s, size_t i_count )
58
0
{
59
0
    if( s->p == NULL )
60
0
    {
61
0
        s->p = s->p_start;
62
0
        return 1;
63
0
    }
64
65
0
    if( s->p >= s->p_end )
66
0
        return 0;
67
68
0
    if( (size_t) (s->p_end - s->p) < i_count )
69
0
        i_count = s->p_end - s->p;
70
0
    s->p += i_count;
71
0
    return i_count;
72
0
}
Unexecuted instantiation: avi.c:bs_impl_bytes_forward
Unexecuted instantiation: es.c:bs_impl_bytes_forward
Unexecuted instantiation: dts_header.c:bs_impl_bytes_forward
Unexecuted instantiation: h26x.c:bs_impl_bytes_forward
Unexecuted instantiation: mp4.c:bs_impl_bytes_forward
Unexecuted instantiation: ty.c:bs_impl_bytes_forward
Unexecuted instantiation: a52.c:bs_impl_bytes_forward
Unexecuted instantiation: copy.c:bs_impl_bytes_forward
Unexecuted instantiation: h264.c:bs_impl_bytes_forward
Unexecuted instantiation: hxxx_sei.c:bs_impl_bytes_forward
Unexecuted instantiation: hxxx_common.c:bs_impl_bytes_forward
Unexecuted instantiation: h264_nal.c:bs_impl_bytes_forward
Unexecuted instantiation: h264_slice.c:bs_impl_bytes_forward
Unexecuted instantiation: hevc.c:bs_impl_bytes_forward
Unexecuted instantiation: hevc_nal.c:bs_impl_bytes_forward
Unexecuted instantiation: mlp.c:bs_impl_bytes_forward
Unexecuted instantiation: mpeg4audio.c:bs_impl_bytes_forward
Unexecuted instantiation: mpeg4video.c:bs_impl_bytes_forward
Unexecuted instantiation: mpegvideo.c:bs_impl_bytes_forward
Unexecuted instantiation: vc1.c:bs_impl_bytes_forward
Unexecuted instantiation: ogg.c:bs_impl_bytes_forward
Unexecuted instantiation: cvdsub.c:bs_impl_bytes_forward
Unexecuted instantiation: dvbsub.c:bs_impl_bytes_forward
Unexecuted instantiation: scte27.c:bs_impl_bytes_forward
Unexecuted instantiation: svcdsub.c:bs_impl_bytes_forward
73
74
static size_t bs_impl_bytes_pos( const bs_t *s )
75
0
{
76
0
    if( s->p )
77
0
        return s->p < s->p_end ? s->p - s->p_start + 1 : s->p - s->p_start;
78
0
    else
79
0
        return 0;
80
0
}
Unexecuted instantiation: avi.c:bs_impl_bytes_pos
Unexecuted instantiation: es.c:bs_impl_bytes_pos
Unexecuted instantiation: dts_header.c:bs_impl_bytes_pos
Unexecuted instantiation: h26x.c:bs_impl_bytes_pos
Unexecuted instantiation: mp4.c:bs_impl_bytes_pos
Unexecuted instantiation: ty.c:bs_impl_bytes_pos
Unexecuted instantiation: a52.c:bs_impl_bytes_pos
Unexecuted instantiation: copy.c:bs_impl_bytes_pos
Unexecuted instantiation: h264.c:bs_impl_bytes_pos
Unexecuted instantiation: hxxx_sei.c:bs_impl_bytes_pos
Unexecuted instantiation: hxxx_common.c:bs_impl_bytes_pos
Unexecuted instantiation: h264_nal.c:bs_impl_bytes_pos
Unexecuted instantiation: h264_slice.c:bs_impl_bytes_pos
Unexecuted instantiation: hevc.c:bs_impl_bytes_pos
Unexecuted instantiation: hevc_nal.c:bs_impl_bytes_pos
Unexecuted instantiation: mlp.c:bs_impl_bytes_pos
Unexecuted instantiation: mpeg4audio.c:bs_impl_bytes_pos
Unexecuted instantiation: mpeg4video.c:bs_impl_bytes_pos
Unexecuted instantiation: mpegvideo.c:bs_impl_bytes_pos
Unexecuted instantiation: vc1.c:bs_impl_bytes_pos
Unexecuted instantiation: ogg.c:bs_impl_bytes_pos
Unexecuted instantiation: cvdsub.c:bs_impl_bytes_pos
Unexecuted instantiation: dvbsub.c:bs_impl_bytes_pos
Unexecuted instantiation: scte27.c:bs_impl_bytes_pos
Unexecuted instantiation: svcdsub.c:bs_impl_bytes_pos
81
82
static inline void bs_init_custom( bs_t *s, const void *p_data, size_t i_data,
83
                                   const bs_byte_callbacks_t *cb, void *priv )
84
0
{
85
0
    s->p_start = (uint8_t *)p_data;
86
0
    s->p       = NULL;
87
0
    s->p_end   = s->p_start + i_data;
88
0
    s->i_left  = 0;
89
0
    s->b_read_only = true;
90
0
    s->b_error = false;
91
0
    s->p_priv = priv;
92
0
    s->cb = *cb;
93
0
}
Unexecuted instantiation: avi.c:bs_init_custom
Unexecuted instantiation: es.c:bs_init_custom
Unexecuted instantiation: dts_header.c:bs_init_custom
Unexecuted instantiation: h26x.c:bs_init_custom
Unexecuted instantiation: mp4.c:bs_init_custom
Unexecuted instantiation: ty.c:bs_init_custom
Unexecuted instantiation: a52.c:bs_init_custom
Unexecuted instantiation: copy.c:bs_init_custom
Unexecuted instantiation: h264.c:bs_init_custom
Unexecuted instantiation: hxxx_sei.c:bs_init_custom
Unexecuted instantiation: hxxx_common.c:bs_init_custom
Unexecuted instantiation: h264_nal.c:bs_init_custom
Unexecuted instantiation: h264_slice.c:bs_init_custom
Unexecuted instantiation: hevc.c:bs_init_custom
Unexecuted instantiation: hevc_nal.c:bs_init_custom
Unexecuted instantiation: mlp.c:bs_init_custom
Unexecuted instantiation: mpeg4audio.c:bs_init_custom
Unexecuted instantiation: mpeg4video.c:bs_init_custom
Unexecuted instantiation: mpegvideo.c:bs_init_custom
Unexecuted instantiation: vc1.c:bs_init_custom
Unexecuted instantiation: ogg.c:bs_init_custom
Unexecuted instantiation: cvdsub.c:bs_init_custom
Unexecuted instantiation: dvbsub.c:bs_init_custom
Unexecuted instantiation: scte27.c:bs_init_custom
Unexecuted instantiation: svcdsub.c:bs_init_custom
94
95
static inline void bs_init( bs_t *s, const void *p_data, size_t i_data )
96
0
{
97
0
    bs_byte_callbacks_t cb = {
98
0
        bs_impl_bytes_forward,
99
0
        bs_impl_bytes_pos,
100
0
    };
101
0
    bs_init_custom( s, p_data, i_data, &cb, NULL );
102
0
}
Unexecuted instantiation: avi.c:bs_init
Unexecuted instantiation: es.c:bs_init
Unexecuted instantiation: dts_header.c:bs_init
Unexecuted instantiation: h26x.c:bs_init
Unexecuted instantiation: mp4.c:bs_init
Unexecuted instantiation: ty.c:bs_init
Unexecuted instantiation: a52.c:bs_init
Unexecuted instantiation: copy.c:bs_init
Unexecuted instantiation: h264.c:bs_init
Unexecuted instantiation: hxxx_sei.c:bs_init
Unexecuted instantiation: hxxx_common.c:bs_init
Unexecuted instantiation: h264_nal.c:bs_init
Unexecuted instantiation: h264_slice.c:bs_init
Unexecuted instantiation: hevc.c:bs_init
Unexecuted instantiation: hevc_nal.c:bs_init
Unexecuted instantiation: mlp.c:bs_init
Unexecuted instantiation: mpeg4audio.c:bs_init
Unexecuted instantiation: mpeg4video.c:bs_init
Unexecuted instantiation: mpegvideo.c:bs_init
Unexecuted instantiation: vc1.c:bs_init
Unexecuted instantiation: ogg.c:bs_init
Unexecuted instantiation: cvdsub.c:bs_init
Unexecuted instantiation: dvbsub.c:bs_init
Unexecuted instantiation: scte27.c:bs_init
Unexecuted instantiation: svcdsub.c:bs_init
103
104
static inline void bs_write_init( bs_t *s, void *p_data, size_t i_data )
105
0
{
106
0
    bs_init( s, (const void *) p_data, i_data );
107
0
    s->b_read_only = false;
108
0
}
Unexecuted instantiation: avi.c:bs_write_init
Unexecuted instantiation: es.c:bs_write_init
Unexecuted instantiation: dts_header.c:bs_write_init
Unexecuted instantiation: h26x.c:bs_write_init
Unexecuted instantiation: mp4.c:bs_write_init
Unexecuted instantiation: ty.c:bs_write_init
Unexecuted instantiation: a52.c:bs_write_init
Unexecuted instantiation: copy.c:bs_write_init
Unexecuted instantiation: h264.c:bs_write_init
Unexecuted instantiation: hxxx_sei.c:bs_write_init
Unexecuted instantiation: hxxx_common.c:bs_write_init
Unexecuted instantiation: h264_nal.c:bs_write_init
Unexecuted instantiation: h264_slice.c:bs_write_init
Unexecuted instantiation: hevc.c:bs_write_init
Unexecuted instantiation: hevc_nal.c:bs_write_init
Unexecuted instantiation: mlp.c:bs_write_init
Unexecuted instantiation: mpeg4audio.c:bs_write_init
Unexecuted instantiation: mpeg4video.c:bs_write_init
Unexecuted instantiation: mpegvideo.c:bs_write_init
Unexecuted instantiation: vc1.c:bs_write_init
Unexecuted instantiation: ogg.c:bs_write_init
Unexecuted instantiation: cvdsub.c:bs_write_init
Unexecuted instantiation: dvbsub.c:bs_write_init
Unexecuted instantiation: scte27.c:bs_write_init
Unexecuted instantiation: svcdsub.c:bs_write_init
109
110
static inline int bs_refill( bs_t *s )
111
0
{
112
0
    if( s->i_left == 0 )
113
0
    {
114
0
       if( s->cb.pf_byte_forward( s, 1 ) != 1 )
115
0
           return -1;
116
117
0
       if( s->p < s->p_end )
118
0
            s->i_left = 8;
119
0
    }
120
0
    return s->i_left > 0 ? 0 : 1;
121
0
}
Unexecuted instantiation: avi.c:bs_refill
Unexecuted instantiation: es.c:bs_refill
Unexecuted instantiation: dts_header.c:bs_refill
Unexecuted instantiation: h26x.c:bs_refill
Unexecuted instantiation: mp4.c:bs_refill
Unexecuted instantiation: ty.c:bs_refill
Unexecuted instantiation: a52.c:bs_refill
Unexecuted instantiation: copy.c:bs_refill
Unexecuted instantiation: h264.c:bs_refill
Unexecuted instantiation: hxxx_sei.c:bs_refill
Unexecuted instantiation: hxxx_common.c:bs_refill
Unexecuted instantiation: h264_nal.c:bs_refill
Unexecuted instantiation: h264_slice.c:bs_refill
Unexecuted instantiation: hevc.c:bs_refill
Unexecuted instantiation: hevc_nal.c:bs_refill
Unexecuted instantiation: mlp.c:bs_refill
Unexecuted instantiation: mpeg4audio.c:bs_refill
Unexecuted instantiation: mpeg4video.c:bs_refill
Unexecuted instantiation: mpegvideo.c:bs_refill
Unexecuted instantiation: vc1.c:bs_refill
Unexecuted instantiation: ogg.c:bs_refill
Unexecuted instantiation: cvdsub.c:bs_refill
Unexecuted instantiation: dvbsub.c:bs_refill
Unexecuted instantiation: scte27.c:bs_refill
Unexecuted instantiation: svcdsub.c:bs_refill
122
123
static inline bool bs_error( const bs_t *s )
124
0
{
125
0
    return s->b_error;
126
0
}
Unexecuted instantiation: avi.c:bs_error
Unexecuted instantiation: es.c:bs_error
Unexecuted instantiation: dts_header.c:bs_error
Unexecuted instantiation: h26x.c:bs_error
Unexecuted instantiation: mp4.c:bs_error
Unexecuted instantiation: ty.c:bs_error
Unexecuted instantiation: a52.c:bs_error
Unexecuted instantiation: copy.c:bs_error
Unexecuted instantiation: h264.c:bs_error
Unexecuted instantiation: hxxx_sei.c:bs_error
Unexecuted instantiation: hxxx_common.c:bs_error
Unexecuted instantiation: h264_nal.c:bs_error
Unexecuted instantiation: h264_slice.c:bs_error
Unexecuted instantiation: hevc.c:bs_error
Unexecuted instantiation: hevc_nal.c:bs_error
Unexecuted instantiation: mlp.c:bs_error
Unexecuted instantiation: mpeg4audio.c:bs_error
Unexecuted instantiation: mpeg4video.c:bs_error
Unexecuted instantiation: mpegvideo.c:bs_error
Unexecuted instantiation: vc1.c:bs_error
Unexecuted instantiation: ogg.c:bs_error
Unexecuted instantiation: cvdsub.c:bs_error
Unexecuted instantiation: dvbsub.c:bs_error
Unexecuted instantiation: scte27.c:bs_error
Unexecuted instantiation: svcdsub.c:bs_error
127
128
static inline bool bs_eof( bs_t *s )
129
0
{
130
0
    return bs_refill( s ) != 0;
131
0
}
Unexecuted instantiation: avi.c:bs_eof
Unexecuted instantiation: es.c:bs_eof
Unexecuted instantiation: dts_header.c:bs_eof
Unexecuted instantiation: h26x.c:bs_eof
Unexecuted instantiation: mp4.c:bs_eof
Unexecuted instantiation: ty.c:bs_eof
Unexecuted instantiation: a52.c:bs_eof
Unexecuted instantiation: copy.c:bs_eof
Unexecuted instantiation: h264.c:bs_eof
Unexecuted instantiation: hxxx_sei.c:bs_eof
Unexecuted instantiation: hxxx_common.c:bs_eof
Unexecuted instantiation: h264_nal.c:bs_eof
Unexecuted instantiation: h264_slice.c:bs_eof
Unexecuted instantiation: hevc.c:bs_eof
Unexecuted instantiation: hevc_nal.c:bs_eof
Unexecuted instantiation: mlp.c:bs_eof
Unexecuted instantiation: mpeg4audio.c:bs_eof
Unexecuted instantiation: mpeg4video.c:bs_eof
Unexecuted instantiation: mpegvideo.c:bs_eof
Unexecuted instantiation: vc1.c:bs_eof
Unexecuted instantiation: ogg.c:bs_eof
Unexecuted instantiation: cvdsub.c:bs_eof
Unexecuted instantiation: dvbsub.c:bs_eof
Unexecuted instantiation: scte27.c:bs_eof
Unexecuted instantiation: svcdsub.c:bs_eof
132
133
static inline size_t bs_pos( const bs_t *s )
134
0
{
135
0
    return 8 * s->cb.pf_byte_pos( s ) - s->i_left;
136
0
}
Unexecuted instantiation: avi.c:bs_pos
Unexecuted instantiation: es.c:bs_pos
Unexecuted instantiation: dts_header.c:bs_pos
Unexecuted instantiation: h26x.c:bs_pos
Unexecuted instantiation: mp4.c:bs_pos
Unexecuted instantiation: ty.c:bs_pos
Unexecuted instantiation: a52.c:bs_pos
Unexecuted instantiation: copy.c:bs_pos
Unexecuted instantiation: h264.c:bs_pos
Unexecuted instantiation: hxxx_sei.c:bs_pos
Unexecuted instantiation: hxxx_common.c:bs_pos
Unexecuted instantiation: h264_nal.c:bs_pos
Unexecuted instantiation: h264_slice.c:bs_pos
Unexecuted instantiation: hevc.c:bs_pos
Unexecuted instantiation: hevc_nal.c:bs_pos
Unexecuted instantiation: mlp.c:bs_pos
Unexecuted instantiation: mpeg4audio.c:bs_pos
Unexecuted instantiation: mpeg4video.c:bs_pos
Unexecuted instantiation: mpegvideo.c:bs_pos
Unexecuted instantiation: vc1.c:bs_pos
Unexecuted instantiation: ogg.c:bs_pos
Unexecuted instantiation: cvdsub.c:bs_pos
Unexecuted instantiation: dvbsub.c:bs_pos
Unexecuted instantiation: scte27.c:bs_pos
Unexecuted instantiation: svcdsub.c:bs_pos
137
138
static inline void bs_skip( bs_t *s, size_t i_count )
139
0
{
140
0
    if( i_count == 0 )
141
0
        return;
142
143
0
    if( bs_refill( s ) )
144
0
    {
145
0
        s->b_error = true;
146
0
        return;
147
0
    }
148
149
0
    if( i_count > s->i_left )
150
0
    {
151
0
        i_count -= s->i_left;
152
0
        s->i_left = 0;
153
0
        size_t bytes = i_count / 8;
154
0
        if( bytes && s->cb.pf_byte_forward( s, bytes ) != bytes )
155
0
        {
156
0
            s->b_error = true;
157
0
            return;
158
0
        }
159
0
        i_count = i_count % 8;
160
0
        if( i_count > 0 )
161
0
        {
162
0
            if( !bs_refill( s ) )
163
0
                s->i_left = 8 - i_count;
164
0
            else
165
0
                s->b_error = true;
166
0
        }
167
0
    }
168
0
    else s->i_left -= i_count;
169
0
}
Unexecuted instantiation: avi.c:bs_skip
Unexecuted instantiation: es.c:bs_skip
Unexecuted instantiation: dts_header.c:bs_skip
Unexecuted instantiation: h26x.c:bs_skip
Unexecuted instantiation: mp4.c:bs_skip
Unexecuted instantiation: ty.c:bs_skip
Unexecuted instantiation: a52.c:bs_skip
Unexecuted instantiation: copy.c:bs_skip
Unexecuted instantiation: h264.c:bs_skip
Unexecuted instantiation: hxxx_sei.c:bs_skip
Unexecuted instantiation: hxxx_common.c:bs_skip
Unexecuted instantiation: h264_nal.c:bs_skip
Unexecuted instantiation: h264_slice.c:bs_skip
Unexecuted instantiation: hevc.c:bs_skip
Unexecuted instantiation: hevc_nal.c:bs_skip
Unexecuted instantiation: mlp.c:bs_skip
Unexecuted instantiation: mpeg4audio.c:bs_skip
Unexecuted instantiation: mpeg4video.c:bs_skip
Unexecuted instantiation: mpegvideo.c:bs_skip
Unexecuted instantiation: vc1.c:bs_skip
Unexecuted instantiation: ogg.c:bs_skip
Unexecuted instantiation: cvdsub.c:bs_skip
Unexecuted instantiation: dvbsub.c:bs_skip
Unexecuted instantiation: scte27.c:bs_skip
Unexecuted instantiation: svcdsub.c:bs_skip
170
171
static inline uint32_t bs_read( bs_t *s, uint8_t i_count )
172
0
{
173
0
    uint8_t  i_shr, i_drop = 0;
174
0
    uint32_t i_result = 0;
175
176
0
    if( i_count > 32 )
177
0
    {
178
0
        i_drop = i_count - 32;
179
0
        i_count = 32;
180
0
    }
181
182
0
    while( i_count > 0 )
183
0
    {
184
0
        if( bs_refill( s ) )
185
0
        {
186
0
            s->b_error = true;
187
0
            break;
188
0
        }
189
190
0
        if( s->i_left > i_count )
191
0
        {
192
0
            uint_fast32_t mask = (UINT64_C(1) << i_count) - 1;
193
194
0
            i_shr = s->i_left - i_count;
195
            /* more in the buffer than requested */
196
0
            i_result |= ( *s->p >> i_shr ) & mask;
197
0
            s->i_left -= i_count;
198
0
            break;
199
0
        }
200
0
        else
201
0
        {
202
0
            uint_fast32_t mask = (UINT64_C(1) << s->i_left) - 1;
203
204
0
            i_shr = i_count - s->i_left;
205
            /* less in the buffer than requested */
206
0
            if( i_shr >= 32 )
207
0
                i_result = 0;
208
0
            else
209
0
                i_result |= (*s->p & mask) << i_shr;
210
0
            i_count  -= s->i_left;
211
0
            s->i_left = 0;
212
0
        }
213
0
    }
214
215
0
    if( i_drop )
216
0
        bs_skip( s, i_drop );
217
218
0
    return( i_result );
219
0
}
Unexecuted instantiation: avi.c:bs_read
Unexecuted instantiation: es.c:bs_read
Unexecuted instantiation: dts_header.c:bs_read
Unexecuted instantiation: h26x.c:bs_read
Unexecuted instantiation: mp4.c:bs_read
Unexecuted instantiation: ty.c:bs_read
Unexecuted instantiation: a52.c:bs_read
Unexecuted instantiation: copy.c:bs_read
Unexecuted instantiation: h264.c:bs_read
Unexecuted instantiation: hxxx_sei.c:bs_read
Unexecuted instantiation: hxxx_common.c:bs_read
Unexecuted instantiation: h264_nal.c:bs_read
Unexecuted instantiation: h264_slice.c:bs_read
Unexecuted instantiation: hevc.c:bs_read
Unexecuted instantiation: hevc_nal.c:bs_read
Unexecuted instantiation: mlp.c:bs_read
Unexecuted instantiation: mpeg4audio.c:bs_read
Unexecuted instantiation: mpeg4video.c:bs_read
Unexecuted instantiation: mpegvideo.c:bs_read
Unexecuted instantiation: vc1.c:bs_read
Unexecuted instantiation: ogg.c:bs_read
Unexecuted instantiation: cvdsub.c:bs_read
Unexecuted instantiation: dvbsub.c:bs_read
Unexecuted instantiation: scte27.c:bs_read
Unexecuted instantiation: svcdsub.c:bs_read
220
221
static inline uint32_t bs_read1( bs_t *s )
222
0
{
223
0
    if( bs_refill( s ) )
224
0
    {
225
0
        s->b_error = true;
226
0
        return 0;
227
0
    }
228
0
    s->i_left--;
229
0
    return ( *s->p >> s->i_left )&0x01;
230
0
}
Unexecuted instantiation: avi.c:bs_read1
Unexecuted instantiation: es.c:bs_read1
Unexecuted instantiation: dts_header.c:bs_read1
Unexecuted instantiation: h26x.c:bs_read1
Unexecuted instantiation: mp4.c:bs_read1
Unexecuted instantiation: ty.c:bs_read1
Unexecuted instantiation: a52.c:bs_read1
Unexecuted instantiation: copy.c:bs_read1
Unexecuted instantiation: h264.c:bs_read1
Unexecuted instantiation: hxxx_sei.c:bs_read1
Unexecuted instantiation: hxxx_common.c:bs_read1
Unexecuted instantiation: h264_nal.c:bs_read1
Unexecuted instantiation: h264_slice.c:bs_read1
Unexecuted instantiation: hevc.c:bs_read1
Unexecuted instantiation: hevc_nal.c:bs_read1
Unexecuted instantiation: mlp.c:bs_read1
Unexecuted instantiation: mpeg4audio.c:bs_read1
Unexecuted instantiation: mpeg4video.c:bs_read1
Unexecuted instantiation: mpegvideo.c:bs_read1
Unexecuted instantiation: vc1.c:bs_read1
Unexecuted instantiation: ogg.c:bs_read1
Unexecuted instantiation: cvdsub.c:bs_read1
Unexecuted instantiation: dvbsub.c:bs_read1
Unexecuted instantiation: scte27.c:bs_read1
Unexecuted instantiation: svcdsub.c:bs_read1
231
232
static inline void bs_write( bs_t *s, uint8_t i_count, uint32_t i_bits )
233
0
{
234
0
    if( s->b_read_only )
235
0
        return;
236
237
0
    while( i_count > 0 )
238
0
    {
239
0
        if( bs_refill( s ) )
240
0
        {
241
0
            s->b_error = true;
242
0
            break;
243
0
        }
244
245
0
        i_count--;
246
247
0
        if( ( i_bits >> i_count )&0x01 )
248
0
        {
249
0
            *s->p |= 1 << ( s->i_left - 1 );
250
0
        }
251
0
        else
252
0
        {
253
0
            *s->p &= ~( 1 << ( s->i_left - 1 ) );
254
0
        }
255
0
        s->i_left--;
256
0
    }
257
0
}
Unexecuted instantiation: avi.c:bs_write
Unexecuted instantiation: es.c:bs_write
Unexecuted instantiation: dts_header.c:bs_write
Unexecuted instantiation: h26x.c:bs_write
Unexecuted instantiation: mp4.c:bs_write
Unexecuted instantiation: ty.c:bs_write
Unexecuted instantiation: a52.c:bs_write
Unexecuted instantiation: copy.c:bs_write
Unexecuted instantiation: h264.c:bs_write
Unexecuted instantiation: hxxx_sei.c:bs_write
Unexecuted instantiation: hxxx_common.c:bs_write
Unexecuted instantiation: h264_nal.c:bs_write
Unexecuted instantiation: h264_slice.c:bs_write
Unexecuted instantiation: hevc.c:bs_write
Unexecuted instantiation: hevc_nal.c:bs_write
Unexecuted instantiation: mlp.c:bs_write
Unexecuted instantiation: mpeg4audio.c:bs_write
Unexecuted instantiation: mpeg4video.c:bs_write
Unexecuted instantiation: mpegvideo.c:bs_write
Unexecuted instantiation: vc1.c:bs_write
Unexecuted instantiation: ogg.c:bs_write
Unexecuted instantiation: cvdsub.c:bs_write
Unexecuted instantiation: dvbsub.c:bs_write
Unexecuted instantiation: scte27.c:bs_write
Unexecuted instantiation: svcdsub.c:bs_write
258
259
static inline bool bs_aligned( bs_t *s )
260
0
{
261
0
    return s->i_left % 8 == 0;
262
0
}
Unexecuted instantiation: avi.c:bs_aligned
Unexecuted instantiation: es.c:bs_aligned
Unexecuted instantiation: dts_header.c:bs_aligned
Unexecuted instantiation: h26x.c:bs_aligned
Unexecuted instantiation: mp4.c:bs_aligned
Unexecuted instantiation: ty.c:bs_aligned
Unexecuted instantiation: a52.c:bs_aligned
Unexecuted instantiation: copy.c:bs_aligned
Unexecuted instantiation: h264.c:bs_aligned
Unexecuted instantiation: hxxx_sei.c:bs_aligned
Unexecuted instantiation: hxxx_common.c:bs_aligned
Unexecuted instantiation: h264_nal.c:bs_aligned
Unexecuted instantiation: h264_slice.c:bs_aligned
Unexecuted instantiation: hevc.c:bs_aligned
Unexecuted instantiation: hevc_nal.c:bs_aligned
Unexecuted instantiation: mlp.c:bs_aligned
Unexecuted instantiation: mpeg4audio.c:bs_aligned
Unexecuted instantiation: mpeg4video.c:bs_aligned
Unexecuted instantiation: mpegvideo.c:bs_aligned
Unexecuted instantiation: vc1.c:bs_aligned
Unexecuted instantiation: ogg.c:bs_aligned
Unexecuted instantiation: cvdsub.c:bs_aligned
Unexecuted instantiation: dvbsub.c:bs_aligned
Unexecuted instantiation: scte27.c:bs_aligned
Unexecuted instantiation: svcdsub.c:bs_aligned
263
264
static inline void bs_align( bs_t *s )
265
0
{
266
0
    if( s->i_left % 8 )
267
0
        s->i_left = 0;
268
0
}
Unexecuted instantiation: avi.c:bs_align
Unexecuted instantiation: es.c:bs_align
Unexecuted instantiation: dts_header.c:bs_align
Unexecuted instantiation: h26x.c:bs_align
Unexecuted instantiation: mp4.c:bs_align
Unexecuted instantiation: ty.c:bs_align
Unexecuted instantiation: a52.c:bs_align
Unexecuted instantiation: copy.c:bs_align
Unexecuted instantiation: h264.c:bs_align
Unexecuted instantiation: hxxx_sei.c:bs_align
Unexecuted instantiation: hxxx_common.c:bs_align
Unexecuted instantiation: h264_nal.c:bs_align
Unexecuted instantiation: h264_slice.c:bs_align
Unexecuted instantiation: hevc.c:bs_align
Unexecuted instantiation: hevc_nal.c:bs_align
Unexecuted instantiation: mlp.c:bs_align
Unexecuted instantiation: mpeg4audio.c:bs_align
Unexecuted instantiation: mpeg4video.c:bs_align
Unexecuted instantiation: mpegvideo.c:bs_align
Unexecuted instantiation: vc1.c:bs_align
Unexecuted instantiation: ogg.c:bs_align
Unexecuted instantiation: cvdsub.c:bs_align
Unexecuted instantiation: dvbsub.c:bs_align
Unexecuted instantiation: scte27.c:bs_align
Unexecuted instantiation: svcdsub.c:bs_align
269
270
static inline void bs_write_align( bs_t *s, uint8_t v )
271
0
{
272
0
    if( !s->b_read_only && (s->i_left % 8) )
273
0
        bs_write( s, s->i_left, v ? 0xFF : 0 );
274
0
}
Unexecuted instantiation: avi.c:bs_write_align
Unexecuted instantiation: es.c:bs_write_align
Unexecuted instantiation: dts_header.c:bs_write_align
Unexecuted instantiation: h26x.c:bs_write_align
Unexecuted instantiation: mp4.c:bs_write_align
Unexecuted instantiation: ty.c:bs_write_align
Unexecuted instantiation: a52.c:bs_write_align
Unexecuted instantiation: copy.c:bs_write_align
Unexecuted instantiation: h264.c:bs_write_align
Unexecuted instantiation: hxxx_sei.c:bs_write_align
Unexecuted instantiation: hxxx_common.c:bs_write_align
Unexecuted instantiation: h264_nal.c:bs_write_align
Unexecuted instantiation: h264_slice.c:bs_write_align
Unexecuted instantiation: hevc.c:bs_write_align
Unexecuted instantiation: hevc_nal.c:bs_write_align
Unexecuted instantiation: mlp.c:bs_write_align
Unexecuted instantiation: mpeg4audio.c:bs_write_align
Unexecuted instantiation: mpeg4video.c:bs_write_align
Unexecuted instantiation: mpegvideo.c:bs_write_align
Unexecuted instantiation: vc1.c:bs_write_align
Unexecuted instantiation: ogg.c:bs_write_align
Unexecuted instantiation: cvdsub.c:bs_write_align
Unexecuted instantiation: dvbsub.c:bs_write_align
Unexecuted instantiation: scte27.c:bs_write_align
Unexecuted instantiation: svcdsub.c:bs_write_align
275
276
0
#define bs_align_0( s ) bs_write_align( s, 0 )
277
#define bs_align_1( s ) bs_write_align( s, 1 )
278
279
/* Read unsigned Exp-Golomb code */
280
static inline uint_fast32_t bs_read_ue( bs_t * bs )
281
0
{
282
0
    unsigned i = 0;
283
284
0
    while( !bs->b_error &&
285
0
           bs_read1( bs ) == 0 &&
286
0
           bs->p < bs->p_end && i < 31 )
287
0
        i++;
288
289
0
    return (1U << i) - 1 + bs_read( bs, i );
290
0
}
Unexecuted instantiation: avi.c:bs_read_ue
Unexecuted instantiation: es.c:bs_read_ue
Unexecuted instantiation: dts_header.c:bs_read_ue
Unexecuted instantiation: h26x.c:bs_read_ue
Unexecuted instantiation: mp4.c:bs_read_ue
Unexecuted instantiation: ty.c:bs_read_ue
Unexecuted instantiation: a52.c:bs_read_ue
Unexecuted instantiation: copy.c:bs_read_ue
Unexecuted instantiation: h264.c:bs_read_ue
Unexecuted instantiation: hxxx_sei.c:bs_read_ue
Unexecuted instantiation: hxxx_common.c:bs_read_ue
Unexecuted instantiation: h264_nal.c:bs_read_ue
Unexecuted instantiation: h264_slice.c:bs_read_ue
Unexecuted instantiation: hevc.c:bs_read_ue
Unexecuted instantiation: hevc_nal.c:bs_read_ue
Unexecuted instantiation: mlp.c:bs_read_ue
Unexecuted instantiation: mpeg4audio.c:bs_read_ue
Unexecuted instantiation: mpeg4video.c:bs_read_ue
Unexecuted instantiation: mpegvideo.c:bs_read_ue
Unexecuted instantiation: vc1.c:bs_read_ue
Unexecuted instantiation: ogg.c:bs_read_ue
Unexecuted instantiation: cvdsub.c:bs_read_ue
Unexecuted instantiation: dvbsub.c:bs_read_ue
Unexecuted instantiation: scte27.c:bs_read_ue
Unexecuted instantiation: svcdsub.c:bs_read_ue
291
292
/* Read signed Exp-Golomb code */
293
static inline int_fast32_t bs_read_se( bs_t *s )
294
0
{
295
0
    uint_fast32_t val = bs_read_ue( s );
296
297
0
    return (val & 0x01) ? (int_fast32_t)((val + 1) / 2)
298
0
                        : -(int_fast32_t)(val / 2);
299
0
}
Unexecuted instantiation: avi.c:bs_read_se
Unexecuted instantiation: es.c:bs_read_se
Unexecuted instantiation: dts_header.c:bs_read_se
Unexecuted instantiation: h26x.c:bs_read_se
Unexecuted instantiation: mp4.c:bs_read_se
Unexecuted instantiation: ty.c:bs_read_se
Unexecuted instantiation: a52.c:bs_read_se
Unexecuted instantiation: copy.c:bs_read_se
Unexecuted instantiation: h264.c:bs_read_se
Unexecuted instantiation: hxxx_sei.c:bs_read_se
Unexecuted instantiation: hxxx_common.c:bs_read_se
Unexecuted instantiation: h264_nal.c:bs_read_se
Unexecuted instantiation: h264_slice.c:bs_read_se
Unexecuted instantiation: hevc.c:bs_read_se
Unexecuted instantiation: hevc_nal.c:bs_read_se
Unexecuted instantiation: mlp.c:bs_read_se
Unexecuted instantiation: mpeg4audio.c:bs_read_se
Unexecuted instantiation: mpeg4video.c:bs_read_se
Unexecuted instantiation: mpegvideo.c:bs_read_se
Unexecuted instantiation: vc1.c:bs_read_se
Unexecuted instantiation: ogg.c:bs_read_se
Unexecuted instantiation: cvdsub.c:bs_read_se
Unexecuted instantiation: dvbsub.c:bs_read_se
Unexecuted instantiation: scte27.c:bs_read_se
Unexecuted instantiation: svcdsub.c:bs_read_se
300
301
#undef bs_forward
302
303
#endif