Coverage Report

Created: 2026-04-12 07:27

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/vlc/include/vlc_block_helper.h
Line
Count
Source
1
/*****************************************************************************
2
 * vlc_block_helper.h: Helper functions for data blocks management.
3
 *****************************************************************************
4
 * Copyright (C) 2003-2017 VLC authors and VideoLAN
5
 *
6
 * Authors: Gildas Bazin <gbazin@netcourrier.com>
7
 *
8
 * This program is free software; you can redistribute it and/or modify it
9
 * under the terms of the GNU Lesser General Public License as published by
10
 * the Free Software Foundation; either version 2.1 of the License, or
11
 * (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
 * GNU Lesser General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU Lesser General Public License
19
 * along with this program; if not, write to the Free Software Foundation,
20
 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21
 *****************************************************************************/
22
23
#ifndef VLC_BLOCK_HELPER_H
24
#define VLC_BLOCK_HELPER_H 1
25
26
#include <vlc_block.h>
27
28
typedef struct block_bytestream_t
29
{
30
    block_t *p_chain;  /**< byte stream head block */
31
    block_t **pp_last; /**< tail ppointer for appends */
32
    block_t *p_block;  /**< byte stream read pointer block */
33
    size_t   i_block_offset; /**< byte stream read pointer offset within block */
34
    size_t   i_base_offset; /**< block base offset (previous blocks total size) */
35
    size_t   i_total;  /**< total bytes over all linked blocks */
36
} block_bytestream_t;
37
38
/*****************************************************************************
39
 * block_bytestream_t management
40
 *****************************************************************************/
41
static inline void block_BytestreamInit( block_bytestream_t *p_bytestream )
42
462k
{
43
462k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
462k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
462k
    p_bytestream->i_block_offset = 0;
46
462k
    p_bytestream->i_base_offset = 0;
47
462k
    p_bytestream->i_total = 0;
48
462k
}
a52.c:block_BytestreamInit
Line
Count
Source
42
10.6k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
10.6k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
10.6k
    p_bytestream->i_block_offset = 0;
46
10.6k
    p_bytestream->i_base_offset = 0;
47
10.6k
    p_bytestream->i_total = 0;
48
10.6k
}
dts.c:block_BytestreamInit
Line
Count
Source
42
4.06k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
4.06k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
4.06k
    p_bytestream->i_block_offset = 0;
46
4.06k
    p_bytestream->i_base_offset = 0;
47
4.06k
    p_bytestream->i_total = 0;
48
4.06k
}
flac.c:block_BytestreamInit
Line
Count
Source
42
27.3k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
27.3k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
27.3k
    p_bytestream->i_block_offset = 0;
46
27.3k
    p_bytestream->i_base_offset = 0;
47
27.3k
    p_bytestream->i_total = 0;
48
27.3k
}
h264.c:block_BytestreamInit
Line
Count
Source
42
227k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
227k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
227k
    p_bytestream->i_block_offset = 0;
46
227k
    p_bytestream->i_base_offset = 0;
47
227k
    p_bytestream->i_total = 0;
48
227k
}
hevc.c:block_BytestreamInit
Line
Count
Source
42
28.2k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
28.2k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
28.2k
    p_bytestream->i_block_offset = 0;
46
28.2k
    p_bytestream->i_base_offset = 0;
47
28.2k
    p_bytestream->i_total = 0;
48
28.2k
}
mlp.c:block_BytestreamInit
Line
Count
Source
42
1.52k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
1.52k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
1.52k
    p_bytestream->i_block_offset = 0;
46
1.52k
    p_bytestream->i_base_offset = 0;
47
1.52k
    p_bytestream->i_total = 0;
48
1.52k
}
mpeg4audio.c:block_BytestreamInit
Line
Count
Source
42
34.5k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
34.5k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
34.5k
    p_bytestream->i_block_offset = 0;
46
34.5k
    p_bytestream->i_base_offset = 0;
47
34.5k
    p_bytestream->i_total = 0;
48
34.5k
}
mpeg4video.c:block_BytestreamInit
Line
Count
Source
42
31.5k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
31.5k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
31.5k
    p_bytestream->i_block_offset = 0;
46
31.5k
    p_bytestream->i_base_offset = 0;
47
31.5k
    p_bytestream->i_total = 0;
48
31.5k
}
mpegaudio.c:block_BytestreamInit
Line
Count
Source
42
32.0k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
32.0k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
32.0k
    p_bytestream->i_block_offset = 0;
46
32.0k
    p_bytestream->i_base_offset = 0;
47
32.0k
    p_bytestream->i_total = 0;
48
32.0k
}
mpegvideo.c:block_BytestreamInit
Line
Count
Source
42
63.8k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
63.8k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
63.8k
    p_bytestream->i_block_offset = 0;
46
63.8k
    p_bytestream->i_base_offset = 0;
47
63.8k
    p_bytestream->i_total = 0;
48
63.8k
}
vc1.c:block_BytestreamInit
Line
Count
Source
42
764
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
764
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
764
    p_bytestream->i_block_offset = 0;
46
764
    p_bytestream->i_base_offset = 0;
47
764
    p_bytestream->i_total = 0;
48
764
}
Unexecuted instantiation: av1.c:block_BytestreamInit
mjpeg.c:block_BytestreamInit
Line
Count
Source
42
474
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
474
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
474
    p_bytestream->i_block_offset = 0;
46
474
    p_bytestream->i_base_offset = 0;
47
474
    p_bytestream->i_total = 0;
48
474
}
49
50
static inline void block_BytestreamRelease( block_bytestream_t *p_bytestream )
51
462k
{
52
462k
    block_ChainRelease( p_bytestream->p_chain );
53
462k
}
a52.c:block_BytestreamRelease
Line
Count
Source
51
10.6k
{
52
10.6k
    block_ChainRelease( p_bytestream->p_chain );
53
10.6k
}
dts.c:block_BytestreamRelease
Line
Count
Source
51
4.06k
{
52
4.06k
    block_ChainRelease( p_bytestream->p_chain );
53
4.06k
}
flac.c:block_BytestreamRelease
Line
Count
Source
51
27.3k
{
52
27.3k
    block_ChainRelease( p_bytestream->p_chain );
53
27.3k
}
h264.c:block_BytestreamRelease
Line
Count
Source
51
227k
{
52
227k
    block_ChainRelease( p_bytestream->p_chain );
53
227k
}
hevc.c:block_BytestreamRelease
Line
Count
Source
51
28.2k
{
52
28.2k
    block_ChainRelease( p_bytestream->p_chain );
53
28.2k
}
mlp.c:block_BytestreamRelease
Line
Count
Source
51
1.52k
{
52
1.52k
    block_ChainRelease( p_bytestream->p_chain );
53
1.52k
}
mpeg4audio.c:block_BytestreamRelease
Line
Count
Source
51
34.5k
{
52
34.5k
    block_ChainRelease( p_bytestream->p_chain );
53
34.5k
}
mpeg4video.c:block_BytestreamRelease
Line
Count
Source
51
31.5k
{
52
31.5k
    block_ChainRelease( p_bytestream->p_chain );
53
31.5k
}
mpegaudio.c:block_BytestreamRelease
Line
Count
Source
51
32.0k
{
52
32.0k
    block_ChainRelease( p_bytestream->p_chain );
53
32.0k
}
mpegvideo.c:block_BytestreamRelease
Line
Count
Source
51
63.8k
{
52
63.8k
    block_ChainRelease( p_bytestream->p_chain );
53
63.8k
}
vc1.c:block_BytestreamRelease
Line
Count
Source
51
764
{
52
764
    block_ChainRelease( p_bytestream->p_chain );
53
764
}
Unexecuted instantiation: av1.c:block_BytestreamRelease
mjpeg.c:block_BytestreamRelease
Line
Count
Source
51
474
{
52
474
    block_ChainRelease( p_bytestream->p_chain );
53
474
}
54
55
/**
56
 * It flush all data (read and unread) from a block_bytestream_t.
57
 */
58
static inline void block_BytestreamEmpty( block_bytestream_t *p_bytestream )
59
279k
{
60
279k
    block_BytestreamRelease( p_bytestream );
61
279k
    block_BytestreamInit( p_bytestream );
62
279k
}
a52.c:block_BytestreamEmpty
Line
Count
Source
59
5.18k
{
60
5.18k
    block_BytestreamRelease( p_bytestream );
61
5.18k
    block_BytestreamInit( p_bytestream );
62
5.18k
}
dts.c:block_BytestreamEmpty
Line
Count
Source
59
261
{
60
261
    block_BytestreamRelease( p_bytestream );
61
261
    block_BytestreamInit( p_bytestream );
62
261
}
flac.c:block_BytestreamEmpty
Line
Count
Source
59
23.3k
{
60
23.3k
    block_BytestreamRelease( p_bytestream );
61
23.3k
    block_BytestreamInit( p_bytestream );
62
23.3k
}
h264.c:block_BytestreamEmpty
Line
Count
Source
59
181k
{
60
181k
    block_BytestreamRelease( p_bytestream );
61
181k
    block_BytestreamInit( p_bytestream );
62
181k
}
hevc.c:block_BytestreamEmpty
Line
Count
Source
59
5.82k
{
60
5.82k
    block_BytestreamRelease( p_bytestream );
61
5.82k
    block_BytestreamInit( p_bytestream );
62
5.82k
}
mlp.c:block_BytestreamEmpty
Line
Count
Source
59
5
{
60
5
    block_BytestreamRelease( p_bytestream );
61
5
    block_BytestreamInit( p_bytestream );
62
5
}
mpeg4audio.c:block_BytestreamEmpty
Line
Count
Source
59
1.18k
{
60
1.18k
    block_BytestreamRelease( p_bytestream );
61
1.18k
    block_BytestreamInit( p_bytestream );
62
1.18k
}
mpeg4video.c:block_BytestreamEmpty
Line
Count
Source
59
25.7k
{
60
25.7k
    block_BytestreamRelease( p_bytestream );
61
25.7k
    block_BytestreamInit( p_bytestream );
62
25.7k
}
mpegaudio.c:block_BytestreamEmpty
Line
Count
Source
59
6.45k
{
60
6.45k
    block_BytestreamRelease( p_bytestream );
61
6.45k
    block_BytestreamInit( p_bytestream );
62
6.45k
}
mpegvideo.c:block_BytestreamEmpty
Line
Count
Source
59
30.3k
{
60
30.3k
    block_BytestreamRelease( p_bytestream );
61
30.3k
    block_BytestreamInit( p_bytestream );
62
30.3k
}
vc1.c:block_BytestreamEmpty
Line
Count
Source
59
34
{
60
34
    block_BytestreamRelease( p_bytestream );
61
34
    block_BytestreamInit( p_bytestream );
62
34
}
Unexecuted instantiation: av1.c:block_BytestreamEmpty
mjpeg.c:block_BytestreamEmpty
Line
Count
Source
59
94
{
60
94
    block_BytestreamRelease( p_bytestream );
61
94
    block_BytestreamInit( p_bytestream );
62
94
}
63
64
/**
65
 * It flushes all already read data from a block_bytestream_t.
66
 */
67
static inline void block_BytestreamFlush( block_bytestream_t *p_bytestream )
68
80.6M
{
69
80.6M
    block_t *block = p_bytestream->p_chain;
70
71
91.6M
    while( block != p_bytestream->p_block )
72
11.0M
    {
73
11.0M
        block_t *p_next = block->p_next;
74
75
11.0M
        p_bytestream->i_total -= block->i_buffer;
76
11.0M
        p_bytestream->i_base_offset -= block->i_buffer;
77
11.0M
        block_Release( block );
78
11.0M
        block = p_next;
79
11.0M
    }
80
81
83.8M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
3.21M
    {
83
3.21M
        block_t *p_next = block->p_next;
84
85
3.21M
        p_bytestream->i_total -= block->i_buffer;
86
3.21M
        block_Release( block );
87
3.21M
        block = p_next;
88
3.21M
        p_bytestream->i_block_offset = 0;
89
3.21M
    }
90
91
80.6M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
80.6M
    if( p_bytestream->p_chain == NULL )
93
239k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
80.6M
}
a52.c:block_BytestreamFlush
Line
Count
Source
68
3.09M
{
69
3.09M
    block_t *block = p_bytestream->p_chain;
70
71
5.73M
    while( block != p_bytestream->p_block )
72
2.64M
    {
73
2.64M
        block_t *p_next = block->p_next;
74
75
2.64M
        p_bytestream->i_total -= block->i_buffer;
76
2.64M
        p_bytestream->i_base_offset -= block->i_buffer;
77
2.64M
        block_Release( block );
78
2.64M
        block = p_next;
79
2.64M
    }
80
81
4.99M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.90M
    {
83
1.90M
        block_t *p_next = block->p_next;
84
85
1.90M
        p_bytestream->i_total -= block->i_buffer;
86
1.90M
        block_Release( block );
87
1.90M
        block = p_next;
88
1.90M
        p_bytestream->i_block_offset = 0;
89
1.90M
    }
90
91
3.09M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
3.09M
    if( p_bytestream->p_chain == NULL )
93
30.1k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
3.09M
}
dts.c:block_BytestreamFlush
Line
Count
Source
68
822k
{
69
822k
    block_t *block = p_bytestream->p_chain;
70
71
2.66M
    while( block != p_bytestream->p_block )
72
1.84M
    {
73
1.84M
        block_t *p_next = block->p_next;
74
75
1.84M
        p_bytestream->i_total -= block->i_buffer;
76
1.84M
        p_bytestream->i_base_offset -= block->i_buffer;
77
1.84M
        block_Release( block );
78
1.84M
        block = p_next;
79
1.84M
    }
80
81
1.14M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
318k
    {
83
318k
        block_t *p_next = block->p_next;
84
85
318k
        p_bytestream->i_total -= block->i_buffer;
86
318k
        block_Release( block );
87
318k
        block = p_next;
88
318k
        p_bytestream->i_block_offset = 0;
89
318k
    }
90
91
822k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
822k
    if( p_bytestream->p_chain == NULL )
93
1.68k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
822k
}
flac.c:block_BytestreamFlush
Line
Count
Source
68
2.96M
{
69
2.96M
    block_t *block = p_bytestream->p_chain;
70
71
3.10M
    while( block != p_bytestream->p_block )
72
133k
    {
73
133k
        block_t *p_next = block->p_next;
74
75
133k
        p_bytestream->i_total -= block->i_buffer;
76
133k
        p_bytestream->i_base_offset -= block->i_buffer;
77
133k
        block_Release( block );
78
133k
        block = p_next;
79
133k
    }
80
81
3.08M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
114k
    {
83
114k
        block_t *p_next = block->p_next;
84
85
114k
        p_bytestream->i_total -= block->i_buffer;
86
114k
        block_Release( block );
87
114k
        block = p_next;
88
114k
        p_bytestream->i_block_offset = 0;
89
114k
    }
90
91
2.96M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
2.96M
    if( p_bytestream->p_chain == NULL )
93
46.6k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
2.96M
}
h264.c:block_BytestreamFlush
Line
Count
Source
68
4.37M
{
69
4.37M
    block_t *block = p_bytestream->p_chain;
70
71
4.64M
    while( block != p_bytestream->p_block )
72
264k
    {
73
264k
        block_t *p_next = block->p_next;
74
75
264k
        p_bytestream->i_total -= block->i_buffer;
76
264k
        p_bytestream->i_base_offset -= block->i_buffer;
77
264k
        block_Release( block );
78
264k
        block = p_next;
79
264k
    }
80
81
4.46M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
85.5k
    {
83
85.5k
        block_t *p_next = block->p_next;
84
85
85.5k
        p_bytestream->i_total -= block->i_buffer;
86
85.5k
        block_Release( block );
87
85.5k
        block = p_next;
88
85.5k
        p_bytestream->i_block_offset = 0;
89
85.5k
    }
90
91
4.37M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
4.37M
    if( p_bytestream->p_chain == NULL )
93
49.7k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
4.37M
}
hevc.c:block_BytestreamFlush
Line
Count
Source
68
64.8M
{
69
64.8M
    block_t *block = p_bytestream->p_chain;
70
71
66.4M
    while( block != p_bytestream->p_block )
72
1.52M
    {
73
1.52M
        block_t *p_next = block->p_next;
74
75
1.52M
        p_bytestream->i_total -= block->i_buffer;
76
1.52M
        p_bytestream->i_base_offset -= block->i_buffer;
77
1.52M
        block_Release( block );
78
1.52M
        block = p_next;
79
1.52M
    }
80
81
64.9M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
22.3k
    {
83
22.3k
        block_t *p_next = block->p_next;
84
85
22.3k
        p_bytestream->i_total -= block->i_buffer;
86
22.3k
        block_Release( block );
87
22.3k
        block = p_next;
88
22.3k
        p_bytestream->i_block_offset = 0;
89
22.3k
    }
90
91
64.8M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
64.8M
    if( p_bytestream->p_chain == NULL )
93
18.6k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
64.8M
}
mlp.c:block_BytestreamFlush
Line
Count
Source
68
687k
{
69
687k
    block_t *block = p_bytestream->p_chain;
70
71
1.72M
    while( block != p_bytestream->p_block )
72
1.04M
    {
73
1.04M
        block_t *p_next = block->p_next;
74
75
1.04M
        p_bytestream->i_total -= block->i_buffer;
76
1.04M
        p_bytestream->i_base_offset -= block->i_buffer;
77
1.04M
        block_Release( block );
78
1.04M
        block = p_next;
79
1.04M
    }
80
81
1.07M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
391k
    {
83
391k
        block_t *p_next = block->p_next;
84
85
391k
        p_bytestream->i_total -= block->i_buffer;
86
391k
        block_Release( block );
87
391k
        block = p_next;
88
391k
        p_bytestream->i_block_offset = 0;
89
391k
    }
90
91
687k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
687k
    if( p_bytestream->p_chain == NULL )
93
107
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
687k
}
mpeg4audio.c:block_BytestreamFlush
Line
Count
Source
68
9.83k
{
69
9.83k
    block_t *block = p_bytestream->p_chain;
70
71
26.3k
    while( block != p_bytestream->p_block )
72
16.5k
    {
73
16.5k
        block_t *p_next = block->p_next;
74
75
16.5k
        p_bytestream->i_total -= block->i_buffer;
76
16.5k
        p_bytestream->i_base_offset -= block->i_buffer;
77
16.5k
        block_Release( block );
78
16.5k
        block = p_next;
79
16.5k
    }
80
81
10.1k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
333
    {
83
333
        block_t *p_next = block->p_next;
84
85
333
        p_bytestream->i_total -= block->i_buffer;
86
333
        block_Release( block );
87
333
        block = p_next;
88
333
        p_bytestream->i_block_offset = 0;
89
333
    }
90
91
9.83k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
9.83k
    if( p_bytestream->p_chain == NULL )
93
2.40k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
9.83k
}
mpeg4video.c:block_BytestreamFlush
Line
Count
Source
68
453k
{
69
453k
    block_t *block = p_bytestream->p_chain;
70
71
517k
    while( block != p_bytestream->p_block )
72
63.7k
    {
73
63.7k
        block_t *p_next = block->p_next;
74
75
63.7k
        p_bytestream->i_total -= block->i_buffer;
76
63.7k
        p_bytestream->i_base_offset -= block->i_buffer;
77
63.7k
        block_Release( block );
78
63.7k
        block = p_next;
79
63.7k
    }
80
81
466k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
12.8k
    {
83
12.8k
        block_t *p_next = block->p_next;
84
85
12.8k
        p_bytestream->i_total -= block->i_buffer;
86
12.8k
        block_Release( block );
87
12.8k
        block = p_next;
88
12.8k
        p_bytestream->i_block_offset = 0;
89
12.8k
    }
90
91
453k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
453k
    if( p_bytestream->p_chain == NULL )
93
10.5k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
453k
}
mpegaudio.c:block_BytestreamFlush
Line
Count
Source
68
1.00M
{
69
1.00M
    block_t *block = p_bytestream->p_chain;
70
71
4.22M
    while( block != p_bytestream->p_block )
72
3.22M
    {
73
3.22M
        block_t *p_next = block->p_next;
74
75
3.22M
        p_bytestream->i_total -= block->i_buffer;
76
3.22M
        p_bytestream->i_base_offset -= block->i_buffer;
77
3.22M
        block_Release( block );
78
3.22M
        block = p_next;
79
3.22M
    }
80
81
1.29M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
297k
    {
83
297k
        block_t *p_next = block->p_next;
84
85
297k
        p_bytestream->i_total -= block->i_buffer;
86
297k
        block_Release( block );
87
297k
        block = p_next;
88
297k
        p_bytestream->i_block_offset = 0;
89
297k
    }
90
91
1.00M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.00M
    if( p_bytestream->p_chain == NULL )
93
27.3k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.00M
}
mpegvideo.c:block_BytestreamFlush
Line
Count
Source
68
2.16M
{
69
2.16M
    block_t *block = p_bytestream->p_chain;
70
71
2.44M
    while( block != p_bytestream->p_block )
72
289k
    {
73
289k
        block_t *p_next = block->p_next;
74
75
289k
        p_bytestream->i_total -= block->i_buffer;
76
289k
        p_bytestream->i_base_offset -= block->i_buffer;
77
289k
        block_Release( block );
78
289k
        block = p_next;
79
289k
    }
80
81
2.20M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
45.1k
    {
83
45.1k
        block_t *p_next = block->p_next;
84
85
45.1k
        p_bytestream->i_total -= block->i_buffer;
86
45.1k
        block_Release( block );
87
45.1k
        block = p_next;
88
45.1k
        p_bytestream->i_block_offset = 0;
89
45.1k
    }
90
91
2.16M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
2.16M
    if( p_bytestream->p_chain == NULL )
93
28.5k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
2.16M
}
vc1.c:block_BytestreamFlush
Line
Count
Source
68
114k
{
69
114k
    block_t *block = p_bytestream->p_chain;
70
71
114k
    while( block != p_bytestream->p_block )
72
43
    {
73
43
        block_t *p_next = block->p_next;
74
75
43
        p_bytestream->i_total -= block->i_buffer;
76
43
        p_bytestream->i_base_offset -= block->i_buffer;
77
43
        block_Release( block );
78
43
        block = p_next;
79
43
    }
80
81
115k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.02k
    {
83
1.02k
        block_t *p_next = block->p_next;
84
85
1.02k
        p_bytestream->i_total -= block->i_buffer;
86
1.02k
        block_Release( block );
87
1.02k
        block = p_next;
88
1.02k
        p_bytestream->i_block_offset = 0;
89
1.02k
    }
90
91
114k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
114k
    if( p_bytestream->p_chain == NULL )
93
2
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
114k
}
Unexecuted instantiation: av1.c:block_BytestreamFlush
mjpeg.c:block_BytestreamFlush
Line
Count
Source
68
31.1k
{
69
31.1k
    block_t *block = p_bytestream->p_chain;
70
71
54.4k
    while( block != p_bytestream->p_block )
72
23.2k
    {
73
23.2k
        block_t *p_next = block->p_next;
74
75
23.2k
        p_bytestream->i_total -= block->i_buffer;
76
23.2k
        p_bytestream->i_base_offset -= block->i_buffer;
77
23.2k
        block_Release( block );
78
23.2k
        block = p_next;
79
23.2k
    }
80
81
55.8k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
24.6k
    {
83
24.6k
        block_t *p_next = block->p_next;
84
85
24.6k
        p_bytestream->i_total -= block->i_buffer;
86
24.6k
        block_Release( block );
87
24.6k
        block = p_next;
88
24.6k
        p_bytestream->i_block_offset = 0;
89
24.6k
    }
90
91
31.1k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
31.1k
    if( p_bytestream->p_chain == NULL )
93
23.7k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
31.1k
}
95
96
static inline void block_BytestreamPush( block_bytestream_t *p_bytestream,
97
                                         block_t *p_block )
98
22.0M
{
99
22.0M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
22.0M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
44.1M
    for( ; p_block; p_block = p_block->p_next )
102
22.0M
        p_bytestream->i_total += p_block->i_buffer;
103
22.0M
}
a52.c:block_BytestreamPush
Line
Count
Source
98
5.95M
{
99
5.95M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
5.95M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
11.9M
    for( ; p_block; p_block = p_block->p_next )
102
5.95M
        p_bytestream->i_total += p_block->i_buffer;
103
5.95M
}
dts.c:block_BytestreamPush
Line
Count
Source
98
3.13M
{
99
3.13M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
3.13M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
6.26M
    for( ; p_block; p_block = p_block->p_next )
102
3.13M
        p_bytestream->i_total += p_block->i_buffer;
103
3.13M
}
flac.c:block_BytestreamPush
Line
Count
Source
98
435k
{
99
435k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
435k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
870k
    for( ; p_block; p_block = p_block->p_next )
102
435k
        p_bytestream->i_total += p_block->i_buffer;
103
435k
}
h264.c:block_BytestreamPush
Line
Count
Source
98
1.09M
{
99
1.09M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
1.09M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
2.18M
    for( ; p_block; p_block = p_block->p_next )
102
1.09M
        p_bytestream->i_total += p_block->i_buffer;
103
1.09M
}
hevc.c:block_BytestreamPush
Line
Count
Source
98
4.26M
{
99
4.26M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
4.26M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
8.52M
    for( ; p_block; p_block = p_block->p_next )
102
4.26M
        p_bytestream->i_total += p_block->i_buffer;
103
4.26M
}
mlp.c:block_BytestreamPush
Line
Count
Source
98
1.91M
{
99
1.91M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
1.91M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
3.83M
    for( ; p_block; p_block = p_block->p_next )
102
1.91M
        p_bytestream->i_total += p_block->i_buffer;
103
1.91M
}
mpeg4audio.c:block_BytestreamPush
Line
Count
Source
98
20.7k
{
99
20.7k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
20.7k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
41.4k
    for( ; p_block; p_block = p_block->p_next )
102
20.7k
        p_bytestream->i_total += p_block->i_buffer;
103
20.7k
}
mpeg4video.c:block_BytestreamPush
Line
Count
Source
98
113k
{
99
113k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
113k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
227k
    for( ; p_block; p_block = p_block->p_next )
102
113k
        p_bytestream->i_total += p_block->i_buffer;
103
113k
}
mpegaudio.c:block_BytestreamPush
Line
Count
Source
98
4.40M
{
99
4.40M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
4.40M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
8.81M
    for( ; p_block; p_block = p_block->p_next )
102
4.40M
        p_bytestream->i_total += p_block->i_buffer;
103
4.40M
}
mpegvideo.c:block_BytestreamPush
Line
Count
Source
98
687k
{
99
687k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
687k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.37M
    for( ; p_block; p_block = p_block->p_next )
102
687k
        p_bytestream->i_total += p_block->i_buffer;
103
687k
}
vc1.c:block_BytestreamPush
Line
Count
Source
98
2.04k
{
99
2.04k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
2.04k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
4.08k
    for( ; p_block; p_block = p_block->p_next )
102
2.04k
        p_bytestream->i_total += p_block->i_buffer;
103
2.04k
}
Unexecuted instantiation: av1.c:block_BytestreamPush
mjpeg.c:block_BytestreamPush
Line
Count
Source
98
52.6k
{
99
52.6k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
52.6k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
105k
    for( ; p_block; p_block = p_block->p_next )
102
52.6k
        p_bytestream->i_total += p_block->i_buffer;
103
52.6k
}
104
105
static inline size_t block_BytestreamRemaining( const block_bytestream_t *p_bytestream )
106
735M
{
107
735M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
735M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
735M
}
a52.c:block_BytestreamRemaining
Line
Count
Source
106
75.1M
{
107
75.1M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
75.1M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
75.1M
}
dts.c:block_BytestreamRemaining
Line
Count
Source
106
237M
{
107
237M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
237M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
237M
}
flac.c:block_BytestreamRemaining
Line
Count
Source
106
83.4M
{
107
83.4M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
83.4M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
83.4M
}
h264.c:block_BytestreamRemaining
Line
Count
Source
106
3.96M
{
107
3.96M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
3.96M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
3.96M
}
hevc.c:block_BytestreamRemaining
Line
Count
Source
106
62.2M
{
107
62.2M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
62.2M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
62.2M
}
mlp.c:block_BytestreamRemaining
Line
Count
Source
106
43.3M
{
107
43.3M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
43.3M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
43.3M
}
mpeg4audio.c:block_BytestreamRemaining
Line
Count
Source
106
6.15M
{
107
6.15M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
6.15M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
6.15M
}
mpeg4video.c:block_BytestreamRemaining
Line
Count
Source
106
474k
{
107
474k
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
474k
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
474k
}
mpegaudio.c:block_BytestreamRemaining
Line
Count
Source
106
220M
{
107
220M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
220M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
220M
}
mpegvideo.c:block_BytestreamRemaining
Line
Count
Source
106
2.05M
{
107
2.05M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
2.05M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
2.05M
}
vc1.c:block_BytestreamRemaining
Line
Count
Source
106
114k
{
107
114k
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
114k
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
114k
}
Unexecuted instantiation: av1.c:block_BytestreamRemaining
mjpeg.c:block_BytestreamRemaining
Line
Count
Source
106
30.6k
{
107
30.6k
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
30.6k
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
30.6k
}
110
111
VLC_USED
112
static inline block_t *block_BytestreamPop( block_bytestream_t *p_bytestream )
113
6.21M
{
114
6.21M
    block_t *p_block;
115
116
6.21M
    block_BytestreamFlush( p_bytestream );
117
118
6.21M
    p_block = p_bytestream->p_block;
119
6.21M
    if( unlikely( p_block == NULL ) )
120
12.1k
    {
121
12.1k
        return NULL;
122
12.1k
    }
123
6.20M
    else if( !p_block->p_next )
124
4.80M
    {
125
4.80M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
4.80M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
4.80M
        p_bytestream->i_block_offset = 0;
128
4.80M
        p_bytestream->i_total = 0;
129
4.80M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
4.80M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
4.80M
        return p_block;
132
4.80M
    }
133
134
41.5M
    while( p_block->p_next && p_block->p_next->p_next )
135
40.1M
        p_block = p_block->p_next;
136
137
1.39M
    block_t *p_block_old = p_block;
138
1.39M
    p_block = p_block->p_next;
139
1.39M
    p_block_old->p_next = NULL;
140
1.39M
    p_bytestream->pp_last = &p_block_old->p_next;
141
1.39M
    if( p_block )
142
1.39M
        p_bytestream->i_total -= p_block->i_buffer;
143
144
1.39M
    return p_block;
145
6.21M
}
a52.c:block_BytestreamPop
Line
Count
Source
113
1.35M
{
114
1.35M
    block_t *p_block;
115
116
1.35M
    block_BytestreamFlush( p_bytestream );
117
118
1.35M
    p_block = p_bytestream->p_block;
119
1.35M
    if( unlikely( p_block == NULL ) )
120
11.2k
    {
121
11.2k
        return NULL;
122
11.2k
    }
123
1.34M
    else if( !p_block->p_next )
124
432k
    {
125
432k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
432k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
432k
        p_bytestream->i_block_offset = 0;
128
432k
        p_bytestream->i_total = 0;
129
432k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
432k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
432k
        return p_block;
132
432k
    }
133
134
35.2M
    while( p_block->p_next && p_block->p_next->p_next )
135
34.3M
        p_block = p_block->p_next;
136
137
914k
    block_t *p_block_old = p_block;
138
914k
    p_block = p_block->p_next;
139
914k
    p_block_old->p_next = NULL;
140
914k
    p_bytestream->pp_last = &p_block_old->p_next;
141
914k
    if( p_block )
142
914k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
914k
    return p_block;
145
1.35M
}
dts.c:block_BytestreamPop
Line
Count
Source
113
169k
{
114
169k
    block_t *p_block;
115
116
169k
    block_BytestreamFlush( p_bytestream );
117
118
169k
    p_block = p_bytestream->p_block;
119
169k
    if( unlikely( p_block == NULL ) )
120
254
    {
121
254
        return NULL;
122
254
    }
123
168k
    else if( !p_block->p_next )
124
140k
    {
125
140k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
140k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
140k
        p_bytestream->i_block_offset = 0;
128
140k
        p_bytestream->i_total = 0;
129
140k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
140k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
140k
        return p_block;
132
140k
    }
133
134
94.6k
    while( p_block->p_next && p_block->p_next->p_next )
135
66.6k
        p_block = p_block->p_next;
136
137
28.0k
    block_t *p_block_old = p_block;
138
28.0k
    p_block = p_block->p_next;
139
28.0k
    p_block_old->p_next = NULL;
140
28.0k
    p_bytestream->pp_last = &p_block_old->p_next;
141
28.0k
    if( p_block )
142
28.0k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
28.0k
    return p_block;
145
169k
}
flac.c:block_BytestreamPop
Line
Count
Source
113
121k
{
114
121k
    block_t *p_block;
115
116
121k
    block_BytestreamFlush( p_bytestream );
117
118
121k
    p_block = p_bytestream->p_block;
119
121k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
121k
    else if( !p_block->p_next )
124
113k
    {
125
113k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
113k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
113k
        p_bytestream->i_block_offset = 0;
128
113k
        p_bytestream->i_total = 0;
129
113k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
113k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
113k
        return p_block;
132
113k
    }
133
134
466k
    while( p_block->p_next && p_block->p_next->p_next )
135
458k
        p_block = p_block->p_next;
136
137
8.09k
    block_t *p_block_old = p_block;
138
8.09k
    p_block = p_block->p_next;
139
8.09k
    p_block_old->p_next = NULL;
140
8.09k
    p_bytestream->pp_last = &p_block_old->p_next;
141
8.09k
    if( p_block )
142
8.09k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
8.09k
    return p_block;
145
121k
}
h264.c:block_BytestreamPop
Line
Count
Source
113
561k
{
114
561k
    block_t *p_block;
115
116
561k
    block_BytestreamFlush( p_bytestream );
117
118
561k
    p_block = p_bytestream->p_block;
119
561k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
561k
    else if( !p_block->p_next )
124
560k
    {
125
560k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
560k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
560k
        p_bytestream->i_block_offset = 0;
128
560k
        p_bytestream->i_total = 0;
129
560k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
560k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
560k
        return p_block;
132
560k
    }
133
134
188
    while( p_block->p_next && p_block->p_next->p_next )
135
10
        p_block = p_block->p_next;
136
137
178
    block_t *p_block_old = p_block;
138
178
    p_block = p_block->p_next;
139
178
    p_block_old->p_next = NULL;
140
178
    p_bytestream->pp_last = &p_block_old->p_next;
141
178
    if( p_block )
142
178
        p_bytestream->i_total -= p_block->i_buffer;
143
144
178
    return p_block;
145
561k
}
hevc.c:block_BytestreamPop
Line
Count
Source
113
2.66M
{
114
2.66M
    block_t *p_block;
115
116
2.66M
    block_BytestreamFlush( p_bytestream );
117
118
2.66M
    p_block = p_bytestream->p_block;
119
2.66M
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
2.66M
    else if( !p_block->p_next )
124
2.66M
    {
125
2.66M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
2.66M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
2.66M
        p_bytestream->i_block_offset = 0;
128
2.66M
        p_bytestream->i_total = 0;
129
2.66M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
2.66M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
2.66M
        return p_block;
132
2.66M
    }
133
134
1.38k
    while( p_block->p_next && p_block->p_next->p_next )
135
0
        p_block = p_block->p_next;
136
137
1.38k
    block_t *p_block_old = p_block;
138
1.38k
    p_block = p_block->p_next;
139
1.38k
    p_block_old->p_next = NULL;
140
1.38k
    p_bytestream->pp_last = &p_block_old->p_next;
141
1.38k
    if( p_block )
142
1.38k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
1.38k
    return p_block;
145
2.66M
}
mlp.c:block_BytestreamPop
Line
Count
Source
113
418k
{
114
418k
    block_t *p_block;
115
116
418k
    block_BytestreamFlush( p_bytestream );
117
118
418k
    p_block = p_bytestream->p_block;
119
418k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
418k
    else if( !p_block->p_next )
124
171k
    {
125
171k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
171k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
171k
        p_bytestream->i_block_offset = 0;
128
171k
        p_bytestream->i_total = 0;
129
171k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
171k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
171k
        return p_block;
132
171k
    }
133
134
2.85M
    while( p_block->p_next && p_block->p_next->p_next )
135
2.60M
        p_block = p_block->p_next;
136
137
246k
    block_t *p_block_old = p_block;
138
246k
    p_block = p_block->p_next;
139
246k
    p_block_old->p_next = NULL;
140
246k
    p_bytestream->pp_last = &p_block_old->p_next;
141
246k
    if( p_block )
142
246k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
246k
    return p_block;
145
418k
}
mpeg4audio.c:block_BytestreamPop
Line
Count
Source
113
19
{
114
19
    block_t *p_block;
115
116
19
    block_BytestreamFlush( p_bytestream );
117
118
19
    p_block = p_bytestream->p_block;
119
19
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
19
    else if( !p_block->p_next )
124
14
    {
125
14
        p_block->p_buffer += p_bytestream->i_block_offset;
126
14
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
14
        p_bytestream->i_block_offset = 0;
128
14
        p_bytestream->i_total = 0;
129
14
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
14
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
14
        return p_block;
132
14
    }
133
134
14
    while( p_block->p_next && p_block->p_next->p_next )
135
9
        p_block = p_block->p_next;
136
137
5
    block_t *p_block_old = p_block;
138
5
    p_block = p_block->p_next;
139
5
    p_block_old->p_next = NULL;
140
5
    p_bytestream->pp_last = &p_block_old->p_next;
141
5
    if( p_block )
142
5
        p_bytestream->i_total -= p_block->i_buffer;
143
144
5
    return p_block;
145
19
}
mpeg4video.c:block_BytestreamPop
Line
Count
Source
113
4.28k
{
114
4.28k
    block_t *p_block;
115
116
4.28k
    block_BytestreamFlush( p_bytestream );
117
118
4.28k
    p_block = p_bytestream->p_block;
119
4.28k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
4.28k
    else if( !p_block->p_next )
124
4.23k
    {
125
4.23k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
4.23k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
4.23k
        p_bytestream->i_block_offset = 0;
128
4.23k
        p_bytestream->i_total = 0;
129
4.23k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
4.23k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
4.23k
        return p_block;
132
4.23k
    }
133
134
88
    while( p_block->p_next && p_block->p_next->p_next )
135
42
        p_block = p_block->p_next;
136
137
46
    block_t *p_block_old = p_block;
138
46
    p_block = p_block->p_next;
139
46
    p_block_old->p_next = NULL;
140
46
    p_bytestream->pp_last = &p_block_old->p_next;
141
46
    if( p_block )
142
46
        p_bytestream->i_total -= p_block->i_buffer;
143
144
46
    return p_block;
145
4.28k
}
mpegaudio.c:block_BytestreamPop
Line
Count
Source
113
776k
{
114
776k
    block_t *p_block;
115
116
776k
    block_BytestreamFlush( p_bytestream );
117
118
776k
    p_block = p_bytestream->p_block;
119
776k
    if( unlikely( p_block == NULL ) )
120
636
    {
121
636
        return NULL;
122
636
    }
123
776k
    else if( !p_block->p_next )
124
580k
    {
125
580k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
580k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
580k
        p_bytestream->i_block_offset = 0;
128
580k
        p_bytestream->i_total = 0;
129
580k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
580k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
580k
        return p_block;
132
580k
    }
133
134
2.89M
    while( p_block->p_next && p_block->p_next->p_next )
135
2.69M
        p_block = p_block->p_next;
136
137
195k
    block_t *p_block_old = p_block;
138
195k
    p_block = p_block->p_next;
139
195k
    p_block_old->p_next = NULL;
140
195k
    p_bytestream->pp_last = &p_block_old->p_next;
141
195k
    if( p_block )
142
195k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
195k
    return p_block;
145
776k
}
mpegvideo.c:block_BytestreamPop
Line
Count
Source
113
137k
{
114
137k
    block_t *p_block;
115
116
137k
    block_BytestreamFlush( p_bytestream );
117
118
137k
    p_block = p_bytestream->p_block;
119
137k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
137k
    else if( !p_block->p_next )
124
136k
    {
125
136k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
136k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
136k
        p_bytestream->i_block_offset = 0;
128
136k
        p_bytestream->i_total = 0;
129
136k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
136k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
136k
        return p_block;
132
136k
    }
133
134
1.31k
    while( p_block->p_next && p_block->p_next->p_next )
135
611
        p_block = p_block->p_next;
136
137
699
    block_t *p_block_old = p_block;
138
699
    p_block = p_block->p_next;
139
699
    p_block_old->p_next = NULL;
140
699
    p_bytestream->pp_last = &p_block_old->p_next;
141
699
    if( p_block )
142
699
        p_bytestream->i_total -= p_block->i_buffer;
143
144
699
    return p_block;
145
137k
}
vc1.c:block_BytestreamPop
Line
Count
Source
113
335
{
114
335
    block_t *p_block;
115
116
335
    block_BytestreamFlush( p_bytestream );
117
118
335
    p_block = p_bytestream->p_block;
119
335
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
335
    else if( !p_block->p_next )
124
335
    {
125
335
        p_block->p_buffer += p_bytestream->i_block_offset;
126
335
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
335
        p_bytestream->i_block_offset = 0;
128
335
        p_bytestream->i_total = 0;
129
335
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
335
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
335
        return p_block;
132
335
    }
133
134
0
    while( p_block->p_next && p_block->p_next->p_next )
135
0
        p_block = p_block->p_next;
136
137
0
    block_t *p_block_old = p_block;
138
0
    p_block = p_block->p_next;
139
0
    p_block_old->p_next = NULL;
140
0
    p_bytestream->pp_last = &p_block_old->p_next;
141
0
    if( p_block )
142
0
        p_bytestream->i_total -= p_block->i_buffer;
143
144
0
    return p_block;
145
335
}
Unexecuted instantiation: av1.c:block_BytestreamPop
mjpeg.c:block_BytestreamPop
Line
Count
Source
113
788
{
114
788
    block_t *p_block;
115
116
788
    block_BytestreamFlush( p_bytestream );
117
118
788
    p_block = p_bytestream->p_block;
119
788
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
788
    else if( !p_block->p_next )
124
788
    {
125
788
        p_block->p_buffer += p_bytestream->i_block_offset;
126
788
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
788
        p_bytestream->i_block_offset = 0;
128
788
        p_bytestream->i_total = 0;
129
788
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
788
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
788
        return p_block;
132
788
    }
133
134
0
    while( p_block->p_next && p_block->p_next->p_next )
135
0
        p_block = p_block->p_next;
136
137
0
    block_t *p_block_old = p_block;
138
0
    p_block = p_block->p_next;
139
0
    p_block_old->p_next = NULL;
140
0
    p_bytestream->pp_last = &p_block_old->p_next;
141
0
    if( p_block )
142
0
        p_bytestream->i_total -= p_block->i_buffer;
143
144
0
    return p_block;
145
788
}
146
147
static inline int block_WaitBytes( block_bytestream_t *p_bytestream,
148
                                   size_t i_data )
149
2.95M
{
150
2.95M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
2.79M
        return VLC_SUCCESS;
152
157k
    return VLC_EGENERIC;
153
2.95M
}
a52.c:block_WaitBytes
Line
Count
Source
149
1.53M
{
150
1.53M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
1.38M
        return VLC_SUCCESS;
152
153k
    return VLC_EGENERIC;
153
1.53M
}
dts.c:block_WaitBytes
Line
Count
Source
149
177k
{
150
177k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
174k
        return VLC_SUCCESS;
152
3.48k
    return VLC_EGENERIC;
153
177k
}
Unexecuted instantiation: flac.c:block_WaitBytes
Unexecuted instantiation: h264.c:block_WaitBytes
Unexecuted instantiation: hevc.c:block_WaitBytes
mlp.c:block_WaitBytes
Line
Count
Source
149
466k
{
150
466k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
466k
        return VLC_SUCCESS;
152
462
    return VLC_EGENERIC;
153
466k
}
Unexecuted instantiation: mpeg4audio.c:block_WaitBytes
Unexecuted instantiation: mpeg4video.c:block_WaitBytes
mpegaudio.c:block_WaitBytes
Line
Count
Source
149
770k
{
150
770k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
770k
        return VLC_SUCCESS;
152
0
    return VLC_EGENERIC;
153
770k
}
Unexecuted instantiation: mpegvideo.c:block_WaitBytes
Unexecuted instantiation: vc1.c:block_WaitBytes
Unexecuted instantiation: av1.c:block_WaitBytes
Unexecuted instantiation: mjpeg.c:block_WaitBytes
154
155
static inline int block_PeekBytes( block_bytestream_t *p_bytestream,
156
                                   uint8_t *p_data, size_t i_data )
157
234M
{
158
234M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
2.98M
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
231M
    size_t i_offset = p_bytestream->i_block_offset;
163
231M
    size_t i_size = i_data;
164
231M
    for( block_t *p_block = p_bytestream->p_block;
165
337M
         p_block != NULL; p_block = p_block->p_next )
166
337M
    {
167
337M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
337M
        i_size -= i_copy;
169
170
337M
        if( i_copy )
171
332M
        {
172
332M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
332M
            p_data += i_copy;
174
332M
        }
175
176
337M
        i_offset = 0;
177
178
337M
        if( !i_size ) break;
179
337M
    }
180
181
231M
    return VLC_SUCCESS;
182
234M
}
a52.c:block_PeekBytes
Line
Count
Source
157
37.2M
{
158
37.2M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
1.78M
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
35.4M
    size_t i_offset = p_bytestream->i_block_offset;
163
35.4M
    size_t i_size = i_data;
164
35.4M
    for( block_t *p_block = p_bytestream->p_block;
165
39.2M
         p_block != NULL; p_block = p_block->p_next )
166
39.2M
    {
167
39.2M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
39.2M
        i_size -= i_copy;
169
170
39.2M
        if( i_copy )
171
38.3M
        {
172
38.3M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
38.3M
            p_data += i_copy;
174
38.3M
        }
175
176
39.2M
        i_offset = 0;
177
178
39.2M
        if( !i_size ) break;
179
39.2M
    }
180
181
35.4M
    return VLC_SUCCESS;
182
37.2M
}
dts.c:block_PeekBytes
Line
Count
Source
157
85.1M
{
158
85.1M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
669k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
84.5M
    size_t i_offset = p_bytestream->i_block_offset;
163
84.5M
    size_t i_size = i_data;
164
84.5M
    for( block_t *p_block = p_bytestream->p_block;
165
98.1M
         p_block != NULL; p_block = p_block->p_next )
166
98.1M
    {
167
98.1M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
98.1M
        i_size -= i_copy;
169
170
98.1M
        if( i_copy )
171
96.1M
        {
172
96.1M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
96.1M
            p_data += i_copy;
174
96.1M
        }
175
176
98.1M
        i_offset = 0;
177
178
98.1M
        if( !i_size ) break;
179
98.1M
    }
180
181
84.5M
    return VLC_SUCCESS;
182
85.1M
}
flac.c:block_PeekBytes
Line
Count
Source
157
2.48M
{
158
2.48M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
9.40k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
2.47M
    size_t i_offset = p_bytestream->i_block_offset;
163
2.47M
    size_t i_size = i_data;
164
2.47M
    for( block_t *p_block = p_bytestream->p_block;
165
2.50M
         p_block != NULL; p_block = p_block->p_next )
166
2.50M
    {
167
2.50M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
2.50M
        i_size -= i_copy;
169
170
2.50M
        if( i_copy )
171
2.50M
        {
172
2.50M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
2.50M
            p_data += i_copy;
174
2.50M
        }
175
176
2.50M
        i_offset = 0;
177
178
2.50M
        if( !i_size ) break;
179
2.50M
    }
180
181
2.47M
    return VLC_SUCCESS;
182
2.48M
}
Unexecuted instantiation: h264.c:block_PeekBytes
Unexecuted instantiation: hevc.c:block_PeekBytes
mlp.c:block_PeekBytes
Line
Count
Source
157
20.9M
{
158
20.9M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
268k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
20.6M
    size_t i_offset = p_bytestream->i_block_offset;
163
20.6M
    size_t i_size = i_data;
164
20.6M
    for( block_t *p_block = p_bytestream->p_block;
165
104M
         p_block != NULL; p_block = p_block->p_next )
166
104M
    {
167
104M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
104M
        i_size -= i_copy;
169
170
104M
        if( i_copy )
171
103M
        {
172
103M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
103M
            p_data += i_copy;
174
103M
        }
175
176
104M
        i_offset = 0;
177
178
104M
        if( !i_size ) break;
179
104M
    }
180
181
20.6M
    return VLC_SUCCESS;
182
20.9M
}
mpeg4audio.c:block_PeekBytes
Line
Count
Source
157
3.07M
{
158
3.07M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
9.89k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
3.06M
    size_t i_offset = p_bytestream->i_block_offset;
163
3.06M
    size_t i_size = i_data;
164
3.06M
    for( block_t *p_block = p_bytestream->p_block;
165
3.10M
         p_block != NULL; p_block = p_block->p_next )
166
3.10M
    {
167
3.10M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
3.10M
        i_size -= i_copy;
169
170
3.10M
        if( i_copy )
171
3.08M
        {
172
3.08M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
3.08M
            p_data += i_copy;
174
3.08M
        }
175
176
3.10M
        i_offset = 0;
177
178
3.10M
        if( !i_size ) break;
179
3.10M
    }
180
181
3.06M
    return VLC_SUCCESS;
182
3.07M
}
Unexecuted instantiation: mpeg4video.c:block_PeekBytes
mpegaudio.c:block_PeekBytes
Line
Count
Source
157
86.0M
{
158
86.0M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
239k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
85.7M
    size_t i_offset = p_bytestream->i_block_offset;
163
85.7M
    size_t i_size = i_data;
164
85.7M
    for( block_t *p_block = p_bytestream->p_block;
165
90.0M
         p_block != NULL; p_block = p_block->p_next )
166
90.0M
    {
167
90.0M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
90.0M
        i_size -= i_copy;
169
170
90.0M
        if( i_copy )
171
88.2M
        {
172
88.2M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
88.2M
            p_data += i_copy;
174
88.2M
        }
175
176
90.0M
        i_offset = 0;
177
178
90.0M
        if( !i_size ) break;
179
90.0M
    }
180
181
85.7M
    return VLC_SUCCESS;
182
86.0M
}
Unexecuted instantiation: mpegvideo.c:block_PeekBytes
Unexecuted instantiation: vc1.c:block_PeekBytes
Unexecuted instantiation: av1.c:block_PeekBytes
Unexecuted instantiation: mjpeg.c:block_PeekBytes
183
184
static inline int block_GetBytes( block_bytestream_t *p_bytestream,
185
                                  uint8_t *p_data, size_t i_data )
186
280M
{
187
280M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
135k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
280M
    size_t i_offset = p_bytestream->i_block_offset;
192
280M
    size_t i_size = i_data;
193
280M
    size_t i_copy = 0;
194
280M
    block_t *p_block;
195
280M
    for( p_block = p_bytestream->p_block;
196
292M
         p_block != NULL; p_block = p_block->p_next )
197
292M
    {
198
292M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
292M
        i_size -= i_copy;
200
201
292M
        if( i_copy && p_data != NULL )
202
77.8M
        {
203
77.8M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
77.8M
            p_data += i_copy;
205
77.8M
        }
206
207
292M
        if( i_size == 0 )
208
280M
            break;
209
210
11.9M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
11.9M
        i_offset = 0;
212
11.9M
    }
213
214
280M
    p_bytestream->p_block = p_block;
215
280M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
280M
    return VLC_SUCCESS;
218
280M
}
a52.c:block_GetBytes
Line
Count
Source
186
32.3M
{
187
32.3M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
84.7k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
32.3M
    size_t i_offset = p_bytestream->i_block_offset;
192
32.3M
    size_t i_size = i_data;
193
32.3M
    size_t i_copy = 0;
194
32.3M
    block_t *p_block;
195
32.3M
    for( p_block = p_bytestream->p_block;
196
34.9M
         p_block != NULL; p_block = p_block->p_next )
197
34.9M
    {
198
34.9M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
34.9M
        i_size -= i_copy;
200
201
34.9M
        if( i_copy && p_data != NULL )
202
3.11M
        {
203
3.11M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
3.11M
            p_data += i_copy;
205
3.11M
        }
206
207
34.9M
        if( i_size == 0 )
208
32.3M
            break;
209
210
2.65M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
2.65M
        i_offset = 0;
212
2.65M
    }
213
214
32.3M
    p_bytestream->p_block = p_block;
215
32.3M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
32.3M
    return VLC_SUCCESS;
218
32.3M
}
dts.c:block_GetBytes
Line
Count
Source
186
81.7M
{
187
81.7M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
44.7k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
81.7M
    size_t i_offset = p_bytestream->i_block_offset;
192
81.7M
    size_t i_size = i_data;
193
81.7M
    size_t i_copy = 0;
194
81.7M
    block_t *p_block;
195
81.7M
    for( p_block = p_bytestream->p_block;
196
84.1M
         p_block != NULL; p_block = p_block->p_next )
197
84.1M
    {
198
84.1M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
84.1M
        i_size -= i_copy;
200
201
84.1M
        if( i_copy && p_data != NULL )
202
598k
        {
203
598k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
598k
            p_data += i_copy;
205
598k
        }
206
207
84.1M
        if( i_size == 0 )
208
81.7M
            break;
209
210
2.38M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
2.38M
        i_offset = 0;
212
2.38M
    }
213
214
81.7M
    p_bytestream->p_block = p_block;
215
81.7M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
81.7M
    return VLC_SUCCESS;
218
81.7M
}
flac.c:block_GetBytes
Line
Count
Source
186
4.96M
{
187
4.96M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
689
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
4.96M
    size_t i_offset = p_bytestream->i_block_offset;
192
4.96M
    size_t i_size = i_data;
193
4.96M
    size_t i_copy = 0;
194
4.96M
    block_t *p_block;
195
4.96M
    for( p_block = p_bytestream->p_block;
196
5.10M
         p_block != NULL; p_block = p_block->p_next )
197
5.09M
    {
198
5.09M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
5.09M
        i_size -= i_copy;
200
201
5.09M
        if( i_copy && p_data != NULL )
202
0
        {
203
0
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
0
            p_data += i_copy;
205
0
        }
206
207
5.09M
        if( i_size == 0 )
208
4.96M
            break;
209
210
133k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
133k
        i_offset = 0;
212
133k
    }
213
214
4.96M
    p_bytestream->p_block = p_block;
215
4.96M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
4.96M
    return VLC_SUCCESS;
218
4.96M
}
h264.c:block_GetBytes
Line
Count
Source
186
3.81M
{
187
3.81M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
3.81M
    size_t i_offset = p_bytestream->i_block_offset;
192
3.81M
    size_t i_size = i_data;
193
3.81M
    size_t i_copy = 0;
194
3.81M
    block_t *p_block;
195
3.81M
    for( p_block = p_bytestream->p_block;
196
4.10M
         p_block != NULL; p_block = p_block->p_next )
197
4.10M
    {
198
4.10M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
4.10M
        i_size -= i_copy;
200
201
4.10M
        if( i_copy && p_data != NULL )
202
3.96M
        {
203
3.96M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
3.96M
            p_data += i_copy;
205
3.96M
        }
206
207
4.10M
        if( i_size == 0 )
208
3.81M
            break;
209
210
290k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
290k
        i_offset = 0;
212
290k
    }
213
214
3.81M
    p_bytestream->p_block = p_block;
215
3.81M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
3.81M
    return VLC_SUCCESS;
218
3.81M
}
hevc.c:block_GetBytes
Line
Count
Source
186
62.2M
{
187
62.2M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
62.2M
    size_t i_offset = p_bytestream->i_block_offset;
192
62.2M
    size_t i_size = i_data;
193
62.2M
    size_t i_copy = 0;
194
62.2M
    block_t *p_block;
195
62.2M
    for( p_block = p_bytestream->p_block;
196
63.7M
         p_block != NULL; p_block = p_block->p_next )
197
63.7M
    {
198
63.7M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
63.7M
        i_size -= i_copy;
200
201
63.7M
        if( i_copy && p_data != NULL )
202
63.7M
        {
203
63.7M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
63.7M
            p_data += i_copy;
205
63.7M
        }
206
207
63.7M
        if( i_size == 0 )
208
62.2M
            break;
209
210
1.54M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
1.54M
        i_offset = 0;
212
1.54M
    }
213
214
62.2M
    p_bytestream->p_block = p_block;
215
62.2M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
62.2M
    return VLC_SUCCESS;
218
62.2M
}
mlp.c:block_GetBytes
Line
Count
Source
186
19.7M
{
187
19.7M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
19.7M
    size_t i_offset = p_bytestream->i_block_offset;
192
19.7M
    size_t i_size = i_data;
193
19.7M
    size_t i_copy = 0;
194
19.7M
    block_t *p_block;
195
19.7M
    for( p_block = p_bytestream->p_block;
196
20.8M
         p_block != NULL; p_block = p_block->p_next )
197
20.8M
    {
198
20.8M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
20.8M
        i_size -= i_copy;
200
201
20.8M
        if( i_copy && p_data != NULL )
202
871k
        {
203
871k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
871k
            p_data += i_copy;
205
871k
        }
206
207
20.8M
        if( i_size == 0 )
208
19.7M
            break;
209
210
1.06M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
1.06M
        i_offset = 0;
212
1.06M
    }
213
214
19.7M
    p_bytestream->p_block = p_block;
215
19.7M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
19.7M
    return VLC_SUCCESS;
218
19.7M
}
mpeg4audio.c:block_GetBytes
Line
Count
Source
186
3.05M
{
187
3.05M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
1.32k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
3.05M
    size_t i_offset = p_bytestream->i_block_offset;
192
3.05M
    size_t i_size = i_data;
193
3.05M
    size_t i_copy = 0;
194
3.05M
    block_t *p_block;
195
3.05M
    for( p_block = p_bytestream->p_block;
196
3.07M
         p_block != NULL; p_block = p_block->p_next )
197
3.07M
    {
198
3.07M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
3.07M
        i_size -= i_copy;
200
201
3.07M
        if( i_copy && p_data != NULL )
202
638
        {
203
638
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
638
            p_data += i_copy;
205
638
        }
206
207
3.07M
        if( i_size == 0 )
208
3.05M
            break;
209
210
19.4k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
19.4k
        i_offset = 0;
212
19.4k
    }
213
214
3.05M
    p_bytestream->p_block = p_block;
215
3.05M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
3.05M
    return VLC_SUCCESS;
218
3.05M
}
mpeg4video.c:block_GetBytes
Line
Count
Source
186
449k
{
187
449k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
449k
    size_t i_offset = p_bytestream->i_block_offset;
192
449k
    size_t i_size = i_data;
193
449k
    size_t i_copy = 0;
194
449k
    block_t *p_block;
195
449k
    for( p_block = p_bytestream->p_block;
196
520k
         p_block != NULL; p_block = p_block->p_next )
197
520k
    {
198
520k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
520k
        i_size -= i_copy;
200
201
520k
        if( i_copy && p_data != NULL )
202
474k
        {
203
474k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
474k
            p_data += i_copy;
205
474k
        }
206
207
520k
        if( i_size == 0 )
208
449k
            break;
209
210
70.9k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
70.9k
        i_offset = 0;
212
70.9k
    }
213
214
449k
    p_bytestream->p_block = p_block;
215
449k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
449k
    return VLC_SUCCESS;
218
449k
}
mpegaudio.c:block_GetBytes
Line
Count
Source
186
69.9M
{
187
69.9M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
3.59k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
69.9M
    size_t i_offset = p_bytestream->i_block_offset;
192
69.9M
    size_t i_size = i_data;
193
69.9M
    size_t i_copy = 0;
194
69.9M
    block_t *p_block;
195
69.9M
    for( p_block = p_bytestream->p_block;
196
73.2M
         p_block != NULL; p_block = p_block->p_next )
197
73.2M
    {
198
73.2M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
73.2M
        i_size -= i_copy;
200
201
73.2M
        if( i_copy && p_data != NULL )
202
2.61M
        {
203
2.61M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
2.61M
            p_data += i_copy;
205
2.61M
        }
206
207
73.2M
        if( i_size == 0 )
208
69.9M
            break;
209
210
3.29M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
3.29M
        i_offset = 0;
212
3.29M
    }
213
214
69.9M
    p_bytestream->p_block = p_block;
215
69.9M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
69.9M
    return VLC_SUCCESS;
218
69.9M
}
mpegvideo.c:block_GetBytes
Line
Count
Source
186
2.02M
{
187
2.02M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
2.02M
    size_t i_offset = p_bytestream->i_block_offset;
192
2.02M
    size_t i_size = i_data;
193
2.02M
    size_t i_copy = 0;
194
2.02M
    block_t *p_block;
195
2.02M
    for( p_block = p_bytestream->p_block;
196
2.49M
         p_block != NULL; p_block = p_block->p_next )
197
2.49M
    {
198
2.49M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
2.49M
        i_size -= i_copy;
200
201
2.49M
        if( i_copy && p_data != NULL )
202
2.38M
        {
203
2.38M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
2.38M
            p_data += i_copy;
205
2.38M
        }
206
207
2.49M
        if( i_size == 0 )
208
2.02M
            break;
209
210
471k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
471k
        i_offset = 0;
212
471k
    }
213
214
2.02M
    p_bytestream->p_block = p_block;
215
2.02M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
2.02M
    return VLC_SUCCESS;
218
2.02M
}
vc1.c:block_GetBytes
Line
Count
Source
186
114k
{
187
114k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
114k
    size_t i_offset = p_bytestream->i_block_offset;
192
114k
    size_t i_size = i_data;
193
114k
    size_t i_copy = 0;
194
114k
    block_t *p_block;
195
114k
    for( p_block = p_bytestream->p_block;
196
114k
         p_block != NULL; p_block = p_block->p_next )
197
114k
    {
198
114k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
114k
        i_size -= i_copy;
200
201
114k
        if( i_copy && p_data != NULL )
202
114k
        {
203
114k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
114k
            p_data += i_copy;
205
114k
        }
206
207
114k
        if( i_size == 0 )
208
114k
            break;
209
210
43
        p_bytestream->i_base_offset += p_block->i_buffer;
211
43
        i_offset = 0;
212
43
    }
213
214
114k
    p_bytestream->p_block = p_block;
215
114k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
114k
    return VLC_SUCCESS;
218
114k
}
Unexecuted instantiation: av1.c:block_GetBytes
mjpeg.c:block_GetBytes
Line
Count
Source
186
30.3k
{
187
30.3k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
30.3k
    size_t i_offset = p_bytestream->i_block_offset;
192
30.3k
    size_t i_size = i_data;
193
30.3k
    size_t i_copy = 0;
194
30.3k
    block_t *p_block;
195
30.3k
    for( p_block = p_bytestream->p_block;
196
55.8k
         p_block != NULL; p_block = p_block->p_next )
197
55.8k
    {
198
55.8k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
55.8k
        i_size -= i_copy;
200
201
55.8k
        if( i_copy && p_data != NULL )
202
25.5k
        {
203
25.5k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
25.5k
            p_data += i_copy;
205
25.5k
        }
206
207
55.8k
        if( i_size == 0 )
208
30.3k
            break;
209
210
25.5k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
25.5k
        i_offset = 0;
212
25.5k
    }
213
214
30.3k
    p_bytestream->p_block = p_block;
215
30.3k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
30.3k
    return VLC_SUCCESS;
218
30.3k
}
219
220
static inline int block_SkipBytes( block_bytestream_t *p_bytestream,
221
                                   size_t i_data )
222
3.69M
{
223
3.69M
    return block_GetBytes( p_bytestream, NULL, i_data );
224
3.69M
}
a52.c:block_SkipBytes
Line
Count
Source
222
457k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
457k
}
dts.c:block_SkipBytes
Line
Count
Source
222
88.5k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
88.5k
}
flac.c:block_SkipBytes
Line
Count
Source
222
2.84M
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
2.84M
}
h264.c:block_SkipBytes
Line
Count
Source
222
133k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
133k
}
hevc.c:block_SkipBytes
Line
Count
Source
222
43.1k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
43.1k
}
Unexecuted instantiation: mlp.c:block_SkipBytes
mpeg4audio.c:block_SkipBytes
Line
Count
Source
222
1.36k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
1.36k
}
mpeg4video.c:block_SkipBytes
Line
Count
Source
222
38.3k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
38.3k
}
Unexecuted instantiation: mpegaudio.c:block_SkipBytes
mpegvideo.c:block_SkipBytes
Line
Count
Source
222
64.6k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
64.6k
}
vc1.c:block_SkipBytes
Line
Count
Source
222
97
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
97
}
Unexecuted instantiation: av1.c:block_SkipBytes
mjpeg.c:block_SkipBytes
Line
Count
Source
222
25.2k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
25.2k
}
225
226
static inline int block_SkipByte( block_bytestream_t *p_bytestream )
227
205M
{
228
205M
    return block_GetBytes( p_bytestream, NULL, 1 );
229
205M
}
a52.c:block_SkipByte
Line
Count
Source
227
30.5M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
30.5M
}
dts.c:block_SkipByte
Line
Count
Source
227
81.5M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
81.5M
}
flac.c:block_SkipByte
Line
Count
Source
227
2.12M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
2.12M
}
Unexecuted instantiation: h264.c:block_SkipByte
Unexecuted instantiation: hevc.c:block_SkipByte
mlp.c:block_SkipByte
Line
Count
Source
227
19.2M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
19.2M
}
mpeg4audio.c:block_SkipByte
Line
Count
Source
227
3.05M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
3.05M
}
Unexecuted instantiation: mpeg4video.c:block_SkipByte
mpegaudio.c:block_SkipByte
Line
Count
Source
227
69.2M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
69.2M
}
Unexecuted instantiation: mpegvideo.c:block_SkipByte
Unexecuted instantiation: vc1.c:block_SkipByte
Unexecuted instantiation: av1.c:block_SkipByte
Unexecuted instantiation: mjpeg.c:block_SkipByte
230
231
static inline int block_PeekOffsetBytes( block_bytestream_t *p_bytestream,
232
    size_t i_peek_offset, uint8_t *p_data, size_t i_data )
233
216M
{
234
216M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
216M
    if( i_remain < i_data + i_peek_offset )
236
9.52M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
206M
    size_t i_offset = p_bytestream->i_block_offset;
240
206M
    size_t i_size = i_peek_offset;
241
206M
    size_t i_copy = 0;
242
206M
    block_t *p_block;
243
206M
    for( p_block = p_bytestream->p_block;
244
4.01G
         p_block != NULL; p_block = p_block->p_next )
245
4.01G
    {
246
4.01G
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
4.01G
        i_size -= i_copy;
248
249
4.01G
        if( !i_size ) break;
250
251
3.80G
        i_offset = 0;
252
3.80G
    }
253
254
    /* Copy the data */
255
206M
    i_offset += i_copy;
256
206M
    i_size = i_data;
257
234M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
234M
    {
259
234M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
234M
        i_size -= i_copy;
261
262
234M
        if( i_copy )
263
229M
        {
264
229M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
229M
            p_data += i_copy;
266
229M
        }
267
268
234M
        i_offset = 0;
269
270
234M
        if( !i_size ) break;
271
234M
    }
272
273
206M
    return VLC_SUCCESS;
274
216M
}
a52.c:block_PeekOffsetBytes
Line
Count
Source
233
3.96M
{
234
3.96M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
3.96M
    if( i_remain < i_data + i_peek_offset )
236
2.57M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
1.39M
    size_t i_offset = p_bytestream->i_block_offset;
240
1.39M
    size_t i_size = i_peek_offset;
241
1.39M
    size_t i_copy = 0;
242
1.39M
    block_t *p_block;
243
1.39M
    for( p_block = p_bytestream->p_block;
244
36.8M
         p_block != NULL; p_block = p_block->p_next )
245
36.8M
    {
246
36.8M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
36.8M
        i_size -= i_copy;
248
249
36.8M
        if( !i_size ) break;
250
251
35.4M
        i_offset = 0;
252
35.4M
    }
253
254
    /* Copy the data */
255
1.39M
    i_offset += i_copy;
256
1.39M
    i_size = i_data;
257
2.18M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
2.18M
    {
259
2.18M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
2.18M
        i_size -= i_copy;
261
262
2.18M
        if( i_copy )
263
1.98M
        {
264
1.98M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
1.98M
            p_data += i_copy;
266
1.98M
        }
267
268
2.18M
        i_offset = 0;
269
270
2.18M
        if( !i_size ) break;
271
2.18M
    }
272
273
1.39M
    return VLC_SUCCESS;
274
3.96M
}
dts.c:block_PeekOffsetBytes
Line
Count
Source
233
70.7M
{
234
70.7M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
70.7M
    if( i_remain < i_data + i_peek_offset )
236
2.25M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
68.5M
    size_t i_offset = p_bytestream->i_block_offset;
240
68.5M
    size_t i_size = i_peek_offset;
241
68.5M
    size_t i_copy = 0;
242
68.5M
    block_t *p_block;
243
68.5M
    for( p_block = p_bytestream->p_block;
244
876M
         p_block != NULL; p_block = p_block->p_next )
245
876M
    {
246
876M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
876M
        i_size -= i_copy;
248
249
876M
        if( !i_size ) break;
250
251
807M
        i_offset = 0;
252
807M
    }
253
254
    /* Copy the data */
255
68.5M
    i_offset += i_copy;
256
68.5M
    i_size = i_data;
257
69.3M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
69.3M
    {
259
69.3M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
69.3M
        i_size -= i_copy;
261
262
69.3M
        if( i_copy )
263
69.2M
        {
264
69.2M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
69.2M
            p_data += i_copy;
266
69.2M
        }
267
268
69.3M
        i_offset = 0;
269
270
69.3M
        if( !i_size ) break;
271
69.3M
    }
272
273
68.5M
    return VLC_SUCCESS;
274
70.7M
}
flac.c:block_PeekOffsetBytes
Line
Count
Source
233
75.6M
{
234
75.6M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
75.6M
    if( i_remain < i_data + i_peek_offset )
236
17.6k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
75.6M
    size_t i_offset = p_bytestream->i_block_offset;
240
75.6M
    size_t i_size = i_peek_offset;
241
75.6M
    size_t i_copy = 0;
242
75.6M
    block_t *p_block;
243
75.6M
    for( p_block = p_bytestream->p_block;
244
1.45G
         p_block != NULL; p_block = p_block->p_next )
245
1.45G
    {
246
1.45G
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
1.45G
        i_size -= i_copy;
248
249
1.45G
        if( !i_size ) break;
250
251
1.37G
        i_offset = 0;
252
1.37G
    }
253
254
    /* Copy the data */
255
75.6M
    i_offset += i_copy;
256
75.6M
    i_size = i_data;
257
76.9M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
76.9M
    {
259
76.9M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
76.9M
        i_size -= i_copy;
261
262
76.9M
        if( i_copy )
263
75.8M
        {
264
75.8M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
75.8M
            p_data += i_copy;
266
75.8M
        }
267
268
76.9M
        i_offset = 0;
269
270
76.9M
        if( !i_size ) break;
271
76.9M
    }
272
273
75.6M
    return VLC_SUCCESS;
274
75.6M
}
Unexecuted instantiation: h264.c:block_PeekOffsetBytes
Unexecuted instantiation: hevc.c:block_PeekOffsetBytes
mlp.c:block_PeekOffsetBytes
Line
Count
Source
233
2.15M
{
234
2.15M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
2.15M
    if( i_remain < i_data + i_peek_offset )
236
1.23M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
919k
    size_t i_offset = p_bytestream->i_block_offset;
240
919k
    size_t i_size = i_peek_offset;
241
919k
    size_t i_copy = 0;
242
919k
    block_t *p_block;
243
919k
    for( p_block = p_bytestream->p_block;
244
3.08M
         p_block != NULL; p_block = p_block->p_next )
245
3.08M
    {
246
3.08M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
3.08M
        i_size -= i_copy;
248
249
3.08M
        if( !i_size ) break;
250
251
2.16M
        i_offset = 0;
252
2.16M
    }
253
254
    /* Copy the data */
255
919k
    i_offset += i_copy;
256
919k
    i_size = i_data;
257
2.66M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
2.66M
    {
259
2.66M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
2.66M
        i_size -= i_copy;
261
262
2.66M
        if( i_copy )
263
2.46M
        {
264
2.46M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
2.46M
            p_data += i_copy;
266
2.46M
        }
267
268
2.66M
        i_offset = 0;
269
270
2.66M
        if( !i_size ) break;
271
2.66M
    }
272
273
919k
    return VLC_SUCCESS;
274
2.15M
}
mpeg4audio.c:block_PeekOffsetBytes
Line
Count
Source
233
21.8k
{
234
21.8k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
21.8k
    if( i_remain < i_data + i_peek_offset )
236
15.4k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
6.36k
    size_t i_offset = p_bytestream->i_block_offset;
240
6.36k
    size_t i_size = i_peek_offset;
241
6.36k
    size_t i_copy = 0;
242
6.36k
    block_t *p_block;
243
6.36k
    for( p_block = p_bytestream->p_block;
244
209k
         p_block != NULL; p_block = p_block->p_next )
245
209k
    {
246
209k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
209k
        i_size -= i_copy;
248
249
209k
        if( !i_size ) break;
250
251
203k
        i_offset = 0;
252
203k
    }
253
254
    /* Copy the data */
255
6.36k
    i_offset += i_copy;
256
6.36k
    i_size = i_data;
257
6.59k
    for( ; p_block != NULL; p_block = p_block->p_next )
258
6.59k
    {
259
6.59k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
6.59k
        i_size -= i_copy;
261
262
6.59k
        if( i_copy )
263
6.44k
        {
264
6.44k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
6.44k
            p_data += i_copy;
266
6.44k
        }
267
268
6.59k
        i_offset = 0;
269
270
6.59k
        if( !i_size ) break;
271
6.59k
    }
272
273
6.36k
    return VLC_SUCCESS;
274
21.8k
}
Unexecuted instantiation: mpeg4video.c:block_PeekOffsetBytes
mpegaudio.c:block_PeekOffsetBytes
Line
Count
Source
233
63.6M
{
234
63.6M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
63.6M
    if( i_remain < i_data + i_peek_offset )
236
3.43M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
60.2M
    size_t i_offset = p_bytestream->i_block_offset;
240
60.2M
    size_t i_size = i_peek_offset;
241
60.2M
    size_t i_copy = 0;
242
60.2M
    block_t *p_block;
243
60.2M
    for( p_block = p_bytestream->p_block;
244
1.64G
         p_block != NULL; p_block = p_block->p_next )
245
1.64G
    {
246
1.64G
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
1.64G
        i_size -= i_copy;
248
249
1.64G
        if( !i_size ) break;
250
251
1.58G
        i_offset = 0;
252
1.58G
    }
253
254
    /* Copy the data */
255
60.2M
    i_offset += i_copy;
256
60.2M
    i_size = i_data;
257
83.3M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
83.3M
    {
259
83.3M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
83.3M
        i_size -= i_copy;
261
262
83.3M
        if( i_copy )
263
80.2M
        {
264
80.2M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
80.2M
            p_data += i_copy;
266
80.2M
        }
267
268
83.3M
        i_offset = 0;
269
270
83.3M
        if( !i_size ) break;
271
83.3M
    }
272
273
60.2M
    return VLC_SUCCESS;
274
63.6M
}
Unexecuted instantiation: mpegvideo.c:block_PeekOffsetBytes
Unexecuted instantiation: vc1.c:block_PeekOffsetBytes
Unexecuted instantiation: av1.c:block_PeekOffsetBytes
Unexecuted instantiation: mjpeg.c:block_PeekOffsetBytes
275
276
typedef const uint8_t * (*block_startcode_helper_t)( const uint8_t *, const uint8_t * );
277
typedef bool (*block_startcode_matcher_t)( uint8_t, size_t, const uint8_t * );
278
279
static inline int block_FindStartcodeFromOffset(
280
    block_bytestream_t *p_bytestream, size_t *pi_offset,
281
    const uint8_t *p_startcode, int i_startcode_length,
282
    block_startcode_helper_t p_startcode_helper,
283
    block_startcode_matcher_t p_startcode_matcher )
284
200M
{
285
200M
    block_t *p_block, *p_block_backup = 0;
286
200M
    ssize_t i_size = 0;
287
200M
    size_t i_offset, i_offset_backup = 0;
288
200M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
200M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
200M
    for( p_block = p_bytestream->p_block;
293
2.13G
         p_block != NULL; p_block = p_block->p_next )
294
2.13G
    {
295
2.13G
        i_size -= p_block->i_buffer;
296
2.13G
        if( i_size < 0 ) break;
297
2.13G
    }
298
299
200M
    if( unlikely( i_size >= 0 ) )
300
507k
    {
301
        /* Not enough data, bail out */
302
507k
        return VLC_EGENERIC;
303
507k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
199M
    i_size += p_block->i_buffer;
309
199M
    *pi_offset -= i_size;
310
199M
    i_match = 0;
311
206M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
203M
    {
313
230M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
223M
        {
315
            /* Use optimized helper when possible */
316
223M
            if( p_startcode_helper && !i_match &&
317
202M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
198M
            {
319
198M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
198M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
198M
                if( p_res )
322
195M
                {
323
195M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
195M
                    return VLC_SUCCESS;
325
195M
                }
326
                /* Then parsing boundary with legacy code */
327
3.14M
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
3.14M
            }
329
330
223M
            bool b_matched = ( p_startcode_matcher )
331
28.0M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
28.0M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
28.0M
            if( b_matched )
334
4.80M
            {
335
4.80M
                if( i_match == 0 )
336
2.78M
                {
337
2.78M
                    p_block_backup = p_block;
338
2.78M
                    i_offset_backup = i_offset;
339
2.78M
                    i_caller_offset_backup = *pi_offset;
340
2.78M
                }
341
342
4.80M
                if( i_match + 1 == i_startcode_length )
343
1.02M
                {
344
                    /* We have it */
345
1.02M
                    *pi_offset += i_offset - i_match;
346
1.02M
                    return VLC_SUCCESS;
347
1.02M
                }
348
349
3.77M
                i_match++;
350
3.77M
            }
351
23.2M
            else if ( i_match > 0 )
352
1.28M
            {
353
                /* False positive */
354
1.28M
                p_block = p_block_backup;
355
1.28M
                i_offset = i_offset_backup;
356
1.28M
                *pi_offset = i_caller_offset_backup;
357
1.28M
                i_match = 0;
358
1.28M
            }
359
360
28.0M
        }
361
6.48M
        i_size = 0;
362
6.48M
        *pi_offset += i_offset;
363
6.48M
    }
364
365
3.11M
    *pi_offset -= i_match;
366
3.11M
    return VLC_EGENERIC;
367
199M
}
a52.c:block_FindStartcodeFromOffset
Line
Count
Source
284
990k
{
285
990k
    block_t *p_block, *p_block_backup = 0;
286
990k
    ssize_t i_size = 0;
287
990k
    size_t i_offset, i_offset_backup = 0;
288
990k
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
990k
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
990k
    for( p_block = p_bytestream->p_block;
293
1.11M
         p_block != NULL; p_block = p_block->p_next )
294
1.11M
    {
295
1.11M
        i_size -= p_block->i_buffer;
296
1.11M
        if( i_size < 0 ) break;
297
1.11M
    }
298
299
990k
    if( unlikely( i_size >= 0 ) )
300
0
    {
301
        /* Not enough data, bail out */
302
0
        return VLC_EGENERIC;
303
0
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
990k
    i_size += p_block->i_buffer;
309
990k
    *pi_offset -= i_size;
310
990k
    i_match = 0;
311
2.29M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
2.29M
    {
313
20.6M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
19.3M
        {
315
            /* Use optimized helper when possible */
316
19.3M
            if( p_startcode_helper && !i_match &&
317
0
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
0
            {
319
0
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
0
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
0
                if( p_res )
322
0
                {
323
0
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
0
                    return VLC_SUCCESS;
325
0
                }
326
                /* Then parsing boundary with legacy code */
327
0
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
0
            }
329
330
19.3M
            bool b_matched = ( p_startcode_matcher )
331
19.3M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
19.3M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
19.3M
            if( b_matched )
334
2.44M
            {
335
2.44M
                if( i_match == 0 )
336
1.46M
                {
337
1.46M
                    p_block_backup = p_block;
338
1.46M
                    i_offset_backup = i_offset;
339
1.46M
                    i_caller_offset_backup = *pi_offset;
340
1.46M
                }
341
342
2.44M
                if( i_match + 1 == i_startcode_length )
343
983k
                {
344
                    /* We have it */
345
983k
                    *pi_offset += i_offset - i_match;
346
983k
                    return VLC_SUCCESS;
347
983k
                }
348
349
1.46M
                i_match++;
350
1.46M
            }
351
16.8M
            else if ( i_match > 0 )
352
476k
            {
353
                /* False positive */
354
476k
                p_block = p_block_backup;
355
476k
                i_offset = i_offset_backup;
356
476k
                *pi_offset = i_caller_offset_backup;
357
476k
                i_match = 0;
358
476k
            }
359
360
19.3M
        }
361
1.30M
        i_size = 0;
362
1.30M
        *pi_offset += i_offset;
363
1.30M
    }
364
365
6.36k
    *pi_offset -= i_match;
366
6.36k
    return VLC_EGENERIC;
367
990k
}
Unexecuted instantiation: dts.c:block_FindStartcodeFromOffset
flac.c:block_FindStartcodeFromOffset
Line
Count
Source
284
59.3M
{
285
59.3M
    block_t *p_block, *p_block_backup = 0;
286
59.3M
    ssize_t i_size = 0;
287
59.3M
    size_t i_offset, i_offset_backup = 0;
288
59.3M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
59.3M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
59.3M
    for( p_block = p_bytestream->p_block;
293
1.17G
         p_block != NULL; p_block = p_block->p_next )
294
1.17G
    {
295
1.17G
        i_size -= p_block->i_buffer;
296
1.17G
        if( i_size < 0 ) break;
297
1.17G
    }
298
299
59.3M
    if( unlikely( i_size >= 0 ) )
300
10.5k
    {
301
        /* Not enough data, bail out */
302
10.5k
        return VLC_EGENERIC;
303
10.5k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
59.3M
    i_size += p_block->i_buffer;
309
59.3M
    *pi_offset -= i_size;
310
59.3M
    i_match = 0;
311
60.3M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
60.1M
    {
313
61.1M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
60.0M
        {
315
            /* Use optimized helper when possible */
316
60.0M
            if( p_startcode_helper && !i_match &&
317
60.0M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
59.7M
            {
319
59.7M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
59.7M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
59.7M
                if( p_res )
322
59.0M
                {
323
59.0M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
59.0M
                    return VLC_SUCCESS;
325
59.0M
                }
326
                /* Then parsing boundary with legacy code */
327
706k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
706k
            }
329
330
60.0M
            bool b_matched = ( p_startcode_matcher )
331
1.03M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
1.03M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
1.03M
            if( b_matched )
334
51.3k
            {
335
51.3k
                if( i_match == 0 )
336
45.9k
                {
337
45.9k
                    p_block_backup = p_block;
338
45.9k
                    i_offset_backup = i_offset;
339
45.9k
                    i_caller_offset_backup = *pi_offset;
340
45.9k
                }
341
342
51.3k
                if( i_match + 1 == i_startcode_length )
343
5.46k
                {
344
                    /* We have it */
345
5.46k
                    *pi_offset += i_offset - i_match;
346
5.46k
                    return VLC_SUCCESS;
347
5.46k
                }
348
349
45.9k
                i_match++;
350
45.9k
            }
351
982k
            else if ( i_match > 0 )
352
22.6k
            {
353
                /* False positive */
354
22.6k
                p_block = p_block_backup;
355
22.6k
                i_offset = i_offset_backup;
356
22.6k
                *pi_offset = i_caller_offset_backup;
357
22.6k
                i_match = 0;
358
22.6k
            }
359
360
1.03M
        }
361
1.04M
        i_size = 0;
362
1.04M
        *pi_offset += i_offset;
363
1.04M
    }
364
365
281k
    *pi_offset -= i_match;
366
281k
    return VLC_EGENERIC;
367
59.3M
}
h264.c:block_FindStartcodeFromOffset
Line
Count
Source
284
8.06M
{
285
8.06M
    block_t *p_block, *p_block_backup = 0;
286
8.06M
    ssize_t i_size = 0;
287
8.06M
    size_t i_offset, i_offset_backup = 0;
288
8.06M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
8.06M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
8.06M
    for( p_block = p_bytestream->p_block;
293
71.5M
         p_block != NULL; p_block = p_block->p_next )
294
71.2M
    {
295
71.2M
        i_size -= p_block->i_buffer;
296
71.2M
        if( i_size < 0 ) break;
297
71.2M
    }
298
299
8.06M
    if( unlikely( i_size >= 0 ) )
300
302k
    {
301
        /* Not enough data, bail out */
302
302k
        return VLC_EGENERIC;
303
302k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
7.75M
    i_size += p_block->i_buffer;
309
7.75M
    *pi_offset -= i_size;
310
7.75M
    i_match = 0;
311
8.37M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
7.83M
    {
313
8.97M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
8.35M
        {
315
            /* Use optimized helper when possible */
316
8.35M
            if( p_startcode_helper && !i_match &&
317
8.23M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
7.66M
            {
319
7.66M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
7.66M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
7.66M
                if( p_res )
322
7.21M
                {
323
7.21M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
7.21M
                    return VLC_SUCCESS;
325
7.21M
                }
326
                /* Then parsing boundary with legacy code */
327
455k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
455k
            }
329
330
8.35M
            bool b_matched = ( p_startcode_matcher )
331
1.14M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
1.14M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
1.14M
            if( b_matched )
334
173k
            {
335
173k
                if( i_match == 0 )
336
106k
                {
337
106k
                    p_block_backup = p_block;
338
106k
                    i_offset_backup = i_offset;
339
106k
                    i_caller_offset_backup = *pi_offset;
340
106k
                }
341
342
173k
                if( i_match + 1 == i_startcode_length )
343
2.90k
                {
344
                    /* We have it */
345
2.90k
                    *pi_offset += i_offset - i_match;
346
2.90k
                    return VLC_SUCCESS;
347
2.90k
                }
348
349
170k
                i_match++;
350
170k
            }
351
967k
            else if ( i_match > 0 )
352
50.0k
            {
353
                /* False positive */
354
50.0k
                p_block = p_block_backup;
355
50.0k
                i_offset = i_offset_backup;
356
50.0k
                *pi_offset = i_caller_offset_backup;
357
50.0k
                i_match = 0;
358
50.0k
            }
359
360
1.14M
        }
361
618k
        i_size = 0;
362
618k
        *pi_offset += i_offset;
363
618k
    }
364
365
542k
    *pi_offset -= i_match;
366
542k
    return VLC_EGENERIC;
367
7.75M
}
hevc.c:block_FindStartcodeFromOffset
Line
Count
Source
284
125M
{
285
125M
    block_t *p_block, *p_block_backup = 0;
286
125M
    ssize_t i_size = 0;
287
125M
    size_t i_offset, i_offset_backup = 0;
288
125M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
125M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
125M
    for( p_block = p_bytestream->p_block;
293
192M
         p_block != NULL; p_block = p_block->p_next )
294
191M
    {
295
191M
        i_size -= p_block->i_buffer;
296
191M
        if( i_size < 0 ) break;
297
191M
    }
298
299
125M
    if( unlikely( i_size >= 0 ) )
300
43.1k
    {
301
        /* Not enough data, bail out */
302
43.1k
        return VLC_EGENERIC;
303
43.1k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
125M
    i_size += p_block->i_buffer;
309
125M
    *pi_offset -= i_size;
310
125M
    i_match = 0;
311
127M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
126M
    {
313
130M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
128M
        {
315
            /* Use optimized helper when possible */
316
128M
            if( p_startcode_helper && !i_match &&
317
127M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
125M
            {
319
125M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
125M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
125M
                if( p_res )
322
124M
                {
323
124M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
124M
                    return VLC_SUCCESS;
325
124M
                }
326
                /* Then parsing boundary with legacy code */
327
1.56M
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
1.56M
            }
329
330
128M
            bool b_matched = ( p_startcode_matcher )
331
4.09M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
4.09M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
4.09M
            if( b_matched )
334
931k
            {
335
931k
                if( i_match == 0 )
336
492k
                {
337
492k
                    p_block_backup = p_block;
338
492k
                    i_offset_backup = i_offset;
339
492k
                    i_caller_offset_backup = *pi_offset;
340
492k
                }
341
342
931k
                if( i_match + 1 == i_startcode_length )
343
6.32k
                {
344
                    /* We have it */
345
6.32k
                    *pi_offset += i_offset - i_match;
346
6.32k
                    return VLC_SUCCESS;
347
6.32k
                }
348
349
924k
                i_match++;
350
924k
            }
351
3.16M
            else if ( i_match > 0 )
352
322k
            {
353
                /* False positive */
354
322k
                p_block = p_block_backup;
355
322k
                i_offset = i_offset_backup;
356
322k
                *pi_offset = i_caller_offset_backup;
357
322k
                i_match = 0;
358
322k
            }
359
360
4.09M
        }
361
2.04M
        i_size = 0;
362
2.04M
        *pi_offset += i_offset;
363
2.04M
    }
364
365
1.60M
    *pi_offset -= i_match;
366
1.60M
    return VLC_EGENERIC;
367
125M
}
Unexecuted instantiation: mlp.c:block_FindStartcodeFromOffset
Unexecuted instantiation: mpeg4audio.c:block_FindStartcodeFromOffset
mpeg4video.c:block_FindStartcodeFromOffset
Line
Count
Source
284
957k
{
285
957k
    block_t *p_block, *p_block_backup = 0;
286
957k
    ssize_t i_size = 0;
287
957k
    size_t i_offset, i_offset_backup = 0;
288
957k
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
957k
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
957k
    for( p_block = p_bytestream->p_block;
293
4.21M
         p_block != NULL; p_block = p_block->p_next )
294
4.15M
    {
295
4.15M
        i_size -= p_block->i_buffer;
296
4.15M
        if( i_size < 0 ) break;
297
4.15M
    }
298
299
957k
    if( unlikely( i_size >= 0 ) )
300
52.2k
    {
301
        /* Not enough data, bail out */
302
52.2k
        return VLC_EGENERIC;
303
52.2k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
905k
    i_size += p_block->i_buffer;
309
905k
    *pi_offset -= i_size;
310
905k
    i_match = 0;
311
1.10M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
1.00M
    {
313
1.32M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
1.12M
        {
315
            /* Use optimized helper when possible */
316
1.12M
            if( p_startcode_helper && !i_match &&
317
1.02M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
862k
            {
319
862k
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
862k
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
862k
                if( p_res )
322
795k
                {
323
795k
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
795k
                    return VLC_SUCCESS;
325
795k
                }
326
                /* Then parsing boundary with legacy code */
327
66.8k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
66.8k
            }
329
330
1.12M
            bool b_matched = ( p_startcode_matcher )
331
328k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
328k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
328k
            if( b_matched )
334
136k
            {
335
136k
                if( i_match == 0 )
336
77.1k
                {
337
77.1k
                    p_block_backup = p_block;
338
77.1k
                    i_offset_backup = i_offset;
339
77.1k
                    i_caller_offset_backup = *pi_offset;
340
77.1k
                }
341
342
136k
                if( i_match + 1 == i_startcode_length )
343
2.20k
                {
344
                    /* We have it */
345
2.20k
                    *pi_offset += i_offset - i_match;
346
2.20k
                    return VLC_SUCCESS;
347
2.20k
                }
348
349
134k
                i_match++;
350
134k
            }
351
191k
            else if ( i_match > 0 )
352
43.5k
            {
353
                /* False positive */
354
43.5k
                p_block = p_block_backup;
355
43.5k
                i_offset = i_offset_backup;
356
43.5k
                *pi_offset = i_caller_offset_backup;
357
43.5k
                i_match = 0;
358
43.5k
            }
359
360
328k
        }
361
204k
        i_size = 0;
362
204k
        *pi_offset += i_offset;
363
204k
    }
364
365
107k
    *pi_offset -= i_match;
366
107k
    return VLC_EGENERIC;
367
905k
}
Unexecuted instantiation: mpegaudio.c:block_FindStartcodeFromOffset
mpegvideo.c:block_FindStartcodeFromOffset
Line
Count
Source
284
4.50M
{
285
4.50M
    block_t *p_block, *p_block_backup = 0;
286
4.50M
    ssize_t i_size = 0;
287
4.50M
    size_t i_offset, i_offset_backup = 0;
288
4.50M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
4.50M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
4.50M
    for( p_block = p_bytestream->p_block;
293
608M
         p_block != NULL; p_block = p_block->p_next )
294
608M
    {
295
608M
        i_size -= p_block->i_buffer;
296
608M
        if( i_size < 0 ) break;
297
608M
    }
298
299
4.50M
    if( unlikely( i_size >= 0 ) )
300
93.3k
    {
301
        /* Not enough data, bail out */
302
93.3k
        return VLC_EGENERIC;
303
93.3k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
4.40M
    i_size += p_block->i_buffer;
309
4.40M
    *pi_offset -= i_size;
310
4.40M
    i_match = 0;
311
5.60M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
5.07M
    {
313
7.06M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
5.87M
        {
315
            /* Use optimized helper when possible */
316
5.87M
            if( p_startcode_helper && !i_match &&
317
5.05M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
4.16M
            {
319
4.16M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
4.16M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
4.16M
                if( p_res )
322
3.86M
                {
323
3.86M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
3.86M
                    return VLC_SUCCESS;
325
3.86M
                }
326
                /* Then parsing boundary with legacy code */
327
299k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
299k
            }
329
330
5.87M
            bool b_matched = ( p_startcode_matcher )
331
2.00M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
2.00M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
2.00M
            if( b_matched )
334
1.05M
            {
335
1.05M
                if( i_match == 0 )
336
596k
                {
337
596k
                    p_block_backup = p_block;
338
596k
                    i_offset_backup = i_offset;
339
596k
                    i_caller_offset_backup = *pi_offset;
340
596k
                }
341
342
1.05M
                if( i_match + 1 == i_startcode_length )
343
24.5k
                {
344
                    /* We have it */
345
24.5k
                    *pi_offset += i_offset - i_match;
346
24.5k
                    return VLC_SUCCESS;
347
24.5k
                }
348
349
1.02M
                i_match++;
350
1.02M
            }
351
956k
            else if ( i_match > 0 )
352
360k
            {
353
                /* False positive */
354
360k
                p_block = p_block_backup;
355
360k
                i_offset = i_offset_backup;
356
360k
                *pi_offset = i_caller_offset_backup;
357
360k
                i_match = 0;
358
360k
            }
359
360
2.00M
        }
361
1.19M
        i_size = 0;
362
1.19M
        *pi_offset += i_offset;
363
1.19M
    }
364
365
522k
    *pi_offset -= i_match;
366
522k
    return VLC_EGENERIC;
367
4.40M
}
vc1.c:block_FindStartcodeFromOffset
Line
Count
Source
284
230k
{
285
230k
    block_t *p_block, *p_block_backup = 0;
286
230k
    ssize_t i_size = 0;
287
230k
    size_t i_offset, i_offset_backup = 0;
288
230k
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
230k
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
230k
    for( p_block = p_bytestream->p_block;
293
235k
         p_block != NULL; p_block = p_block->p_next )
294
234k
    {
295
234k
        i_size -= p_block->i_buffer;
296
234k
        if( i_size < 0 ) break;
297
234k
    }
298
299
230k
    if( unlikely( i_size >= 0 ) )
300
976
    {
301
        /* Not enough data, bail out */
302
976
        return VLC_EGENERIC;
303
976
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
229k
    i_size += p_block->i_buffer;
309
229k
    *pi_offset -= i_size;
310
229k
    i_match = 0;
311
232k
    for( ; p_block != NULL; p_block = p_block->p_next )
312
230k
    {
313
236k
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
233k
        {
315
            /* Use optimized helper when possible */
316
233k
            if( p_startcode_helper && !i_match &&
317
231k
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
229k
            {
319
229k
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
229k
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
229k
                if( p_res )
322
227k
                {
323
227k
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
227k
                    return VLC_SUCCESS;
325
227k
                }
326
                /* Then parsing boundary with legacy code */
327
1.69k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
1.69k
            }
329
330
233k
            bool b_matched = ( p_startcode_matcher )
331
6.05k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
6.05k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
6.05k
            if( b_matched )
334
3.15k
            {
335
3.15k
                if( i_match == 0 )
336
1.90k
                {
337
1.90k
                    p_block_backup = p_block;
338
1.90k
                    i_offset_backup = i_offset;
339
1.90k
                    i_caller_offset_backup = *pi_offset;
340
1.90k
                }
341
342
3.15k
                if( i_match + 1 == i_startcode_length )
343
0
                {
344
                    /* We have it */
345
0
                    *pi_offset += i_offset - i_match;
346
0
                    return VLC_SUCCESS;
347
0
                }
348
349
3.15k
                i_match++;
350
3.15k
            }
351
2.89k
            else if ( i_match > 0 )
352
752
            {
353
                /* False positive */
354
752
                p_block = p_block_backup;
355
752
                i_offset = i_offset_backup;
356
752
                *pi_offset = i_caller_offset_backup;
357
752
                i_match = 0;
358
752
            }
359
360
6.05k
        }
361
3.25k
        i_size = 0;
362
3.25k
        *pi_offset += i_offset;
363
3.25k
    }
364
365
1.99k
    *pi_offset -= i_match;
366
1.99k
    return VLC_EGENERIC;
367
229k
}
Unexecuted instantiation: av1.c:block_FindStartcodeFromOffset
mjpeg.c:block_FindStartcodeFromOffset
Line
Count
Source
284
62.3k
{
285
62.3k
    block_t *p_block, *p_block_backup = 0;
286
62.3k
    ssize_t i_size = 0;
287
62.3k
    size_t i_offset, i_offset_backup = 0;
288
62.3k
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
62.3k
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
62.3k
    for( p_block = p_bytestream->p_block;
293
78.8M
         p_block != NULL; p_block = p_block->p_next )
294
78.8M
    {
295
78.8M
        i_size -= p_block->i_buffer;
296
78.8M
        if( i_size < 0 ) break;
297
78.8M
    }
298
299
62.3k
    if( unlikely( i_size >= 0 ) )
300
4.74k
    {
301
        /* Not enough data, bail out */
302
4.74k
        return VLC_EGENERIC;
303
4.74k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
57.6k
    i_size += p_block->i_buffer;
309
57.6k
    *pi_offset -= i_size;
310
57.6k
    i_match = 0;
311
122k
    for( ; p_block != NULL; p_block = p_block->p_next )
312
74.9k
    {
313
222k
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
157k
        {
315
            /* Use optimized helper when possible */
316
157k
            if( p_startcode_helper && !i_match &&
317
152k
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
56.2k
            {
319
56.2k
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
56.2k
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
56.2k
                if( p_res )
322
9.82k
                {
323
9.82k
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
9.82k
                    return VLC_SUCCESS;
325
9.82k
                }
326
                /* Then parsing boundary with legacy code */
327
46.4k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
46.4k
            }
329
330
157k
            bool b_matched = ( p_startcode_matcher )
331
148k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
148k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
148k
            if( b_matched )
334
8.80k
            {
335
8.80k
                if( i_match == 0 )
336
8.45k
                {
337
8.45k
                    p_block_backup = p_block;
338
8.45k
                    i_offset_backup = i_offset;
339
8.45k
                    i_caller_offset_backup = *pi_offset;
340
8.45k
                }
341
342
8.80k
                if( i_match + 1 == i_startcode_length )
343
6
                {
344
                    /* We have it */
345
6
                    *pi_offset += i_offset - i_match;
346
6
                    return VLC_SUCCESS;
347
6
                }
348
349
8.79k
                i_match++;
350
8.79k
            }
351
139k
            else if ( i_match > 0 )
352
5.40k
            {
353
                /* False positive */
354
5.40k
                p_block = p_block_backup;
355
5.40k
                i_offset = i_offset_backup;
356
5.40k
                *pi_offset = i_caller_offset_backup;
357
5.40k
                i_match = 0;
358
5.40k
            }
359
360
148k
        }
361
65.0k
        i_size = 0;
362
65.0k
        *pi_offset += i_offset;
363
65.0k
    }
364
365
47.7k
    *pi_offset -= i_match;
366
47.7k
    return VLC_EGENERIC;
367
57.6k
}
368
369
#endif /* VLC_BLOCK_HELPER_H */