Coverage Report

Created: 2026-07-12 08:57

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
714k
{
43
714k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
714k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
714k
    p_bytestream->i_block_offset = 0;
46
714k
    p_bytestream->i_base_offset = 0;
47
714k
    p_bytestream->i_total = 0;
48
714k
}
a52.c:block_BytestreamInit
Line
Count
Source
42
18.2k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
18.2k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
18.2k
    p_bytestream->i_block_offset = 0;
46
18.2k
    p_bytestream->i_base_offset = 0;
47
18.2k
    p_bytestream->i_total = 0;
48
18.2k
}
dts.c:block_BytestreamInit
Line
Count
Source
42
5.27k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
5.27k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
5.27k
    p_bytestream->i_block_offset = 0;
46
5.27k
    p_bytestream->i_base_offset = 0;
47
5.27k
    p_bytestream->i_total = 0;
48
5.27k
}
flac.c:block_BytestreamInit
Line
Count
Source
42
18.6k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
18.6k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
18.6k
    p_bytestream->i_block_offset = 0;
46
18.6k
    p_bytestream->i_base_offset = 0;
47
18.6k
    p_bytestream->i_total = 0;
48
18.6k
}
h264.c:block_BytestreamInit
Line
Count
Source
42
310k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
310k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
310k
    p_bytestream->i_block_offset = 0;
46
310k
    p_bytestream->i_base_offset = 0;
47
310k
    p_bytestream->i_total = 0;
48
310k
}
hevc.c:block_BytestreamInit
Line
Count
Source
42
22.7k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
22.7k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
22.7k
    p_bytestream->i_block_offset = 0;
46
22.7k
    p_bytestream->i_base_offset = 0;
47
22.7k
    p_bytestream->i_total = 0;
48
22.7k
}
mlp.c:block_BytestreamInit
Line
Count
Source
42
5.27k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
5.27k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
5.27k
    p_bytestream->i_block_offset = 0;
46
5.27k
    p_bytestream->i_base_offset = 0;
47
5.27k
    p_bytestream->i_total = 0;
48
5.27k
}
mpeg4audio.c:block_BytestreamInit
Line
Count
Source
42
96.9k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
96.9k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
96.9k
    p_bytestream->i_block_offset = 0;
46
96.9k
    p_bytestream->i_base_offset = 0;
47
96.9k
    p_bytestream->i_total = 0;
48
96.9k
}
mpeg4video.c:block_BytestreamInit
Line
Count
Source
42
41.0k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
41.0k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
41.0k
    p_bytestream->i_block_offset = 0;
46
41.0k
    p_bytestream->i_base_offset = 0;
47
41.0k
    p_bytestream->i_total = 0;
48
41.0k
}
mpegaudio.c:block_BytestreamInit
Line
Count
Source
42
95.0k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
95.0k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
95.0k
    p_bytestream->i_block_offset = 0;
46
95.0k
    p_bytestream->i_base_offset = 0;
47
95.0k
    p_bytestream->i_total = 0;
48
95.0k
}
mpegvideo.c:block_BytestreamInit
Line
Count
Source
42
99.8k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
99.8k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
99.8k
    p_bytestream->i_block_offset = 0;
46
99.8k
    p_bytestream->i_base_offset = 0;
47
99.8k
    p_bytestream->i_total = 0;
48
99.8k
}
vc1.c:block_BytestreamInit
Line
Count
Source
42
528
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
528
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
528
    p_bytestream->i_block_offset = 0;
46
528
    p_bytestream->i_base_offset = 0;
47
528
    p_bytestream->i_total = 0;
48
528
}
Unexecuted instantiation: av1.c:block_BytestreamInit
mjpeg.c:block_BytestreamInit
Line
Count
Source
42
11
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
11
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
11
    p_bytestream->i_block_offset = 0;
46
11
    p_bytestream->i_base_offset = 0;
47
11
    p_bytestream->i_total = 0;
48
11
}
49
50
static inline void block_BytestreamRelease( block_bytestream_t *p_bytestream )
51
714k
{
52
714k
    block_ChainRelease( p_bytestream->p_chain );
53
714k
}
a52.c:block_BytestreamRelease
Line
Count
Source
51
18.2k
{
52
18.2k
    block_ChainRelease( p_bytestream->p_chain );
53
18.2k
}
dts.c:block_BytestreamRelease
Line
Count
Source
51
5.27k
{
52
5.27k
    block_ChainRelease( p_bytestream->p_chain );
53
5.27k
}
flac.c:block_BytestreamRelease
Line
Count
Source
51
18.6k
{
52
18.6k
    block_ChainRelease( p_bytestream->p_chain );
53
18.6k
}
h264.c:block_BytestreamRelease
Line
Count
Source
51
310k
{
52
310k
    block_ChainRelease( p_bytestream->p_chain );
53
310k
}
hevc.c:block_BytestreamRelease
Line
Count
Source
51
22.7k
{
52
22.7k
    block_ChainRelease( p_bytestream->p_chain );
53
22.7k
}
mlp.c:block_BytestreamRelease
Line
Count
Source
51
5.27k
{
52
5.27k
    block_ChainRelease( p_bytestream->p_chain );
53
5.27k
}
mpeg4audio.c:block_BytestreamRelease
Line
Count
Source
51
96.9k
{
52
96.9k
    block_ChainRelease( p_bytestream->p_chain );
53
96.9k
}
mpeg4video.c:block_BytestreamRelease
Line
Count
Source
51
41.0k
{
52
41.0k
    block_ChainRelease( p_bytestream->p_chain );
53
41.0k
}
mpegaudio.c:block_BytestreamRelease
Line
Count
Source
51
95.0k
{
52
95.0k
    block_ChainRelease( p_bytestream->p_chain );
53
95.0k
}
mpegvideo.c:block_BytestreamRelease
Line
Count
Source
51
99.8k
{
52
99.8k
    block_ChainRelease( p_bytestream->p_chain );
53
99.8k
}
vc1.c:block_BytestreamRelease
Line
Count
Source
51
528
{
52
528
    block_ChainRelease( p_bytestream->p_chain );
53
528
}
Unexecuted instantiation: av1.c:block_BytestreamRelease
mjpeg.c:block_BytestreamRelease
Line
Count
Source
51
11
{
52
11
    block_ChainRelease( p_bytestream->p_chain );
53
11
}
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
381k
{
60
381k
    block_BytestreamRelease( p_bytestream );
61
381k
    block_BytestreamInit( p_bytestream );
62
381k
}
a52.c:block_BytestreamEmpty
Line
Count
Source
59
9.49k
{
60
9.49k
    block_BytestreamRelease( p_bytestream );
61
9.49k
    block_BytestreamInit( p_bytestream );
62
9.49k
}
dts.c:block_BytestreamEmpty
Line
Count
Source
59
1.66k
{
60
1.66k
    block_BytestreamRelease( p_bytestream );
61
1.66k
    block_BytestreamInit( p_bytestream );
62
1.66k
}
flac.c:block_BytestreamEmpty
Line
Count
Source
59
17.5k
{
60
17.5k
    block_BytestreamRelease( p_bytestream );
61
17.5k
    block_BytestreamInit( p_bytestream );
62
17.5k
}
h264.c:block_BytestreamEmpty
Line
Count
Source
59
232k
{
60
232k
    block_BytestreamRelease( p_bytestream );
61
232k
    block_BytestreamInit( p_bytestream );
62
232k
}
hevc.c:block_BytestreamEmpty
Line
Count
Source
59
5.03k
{
60
5.03k
    block_BytestreamRelease( p_bytestream );
61
5.03k
    block_BytestreamInit( p_bytestream );
62
5.03k
}
mlp.c:block_BytestreamEmpty
Line
Count
Source
59
4.16k
{
60
4.16k
    block_BytestreamRelease( p_bytestream );
61
4.16k
    block_BytestreamInit( p_bytestream );
62
4.16k
}
mpeg4audio.c:block_BytestreamEmpty
Line
Count
Source
59
8.02k
{
60
8.02k
    block_BytestreamRelease( p_bytestream );
61
8.02k
    block_BytestreamInit( p_bytestream );
62
8.02k
}
mpeg4video.c:block_BytestreamEmpty
Line
Count
Source
59
33.8k
{
60
33.8k
    block_BytestreamRelease( p_bytestream );
61
33.8k
    block_BytestreamInit( p_bytestream );
62
33.8k
}
mpegaudio.c:block_BytestreamEmpty
Line
Count
Source
59
21.0k
{
60
21.0k
    block_BytestreamRelease( p_bytestream );
61
21.0k
    block_BytestreamInit( p_bytestream );
62
21.0k
}
mpegvideo.c:block_BytestreamEmpty
Line
Count
Source
59
48.3k
{
60
48.3k
    block_BytestreamRelease( p_bytestream );
61
48.3k
    block_BytestreamInit( p_bytestream );
62
48.3k
}
vc1.c:block_BytestreamEmpty
Line
Count
Source
59
416
{
60
416
    block_BytestreamRelease( p_bytestream );
61
416
    block_BytestreamInit( p_bytestream );
62
416
}
Unexecuted instantiation: av1.c:block_BytestreamEmpty
Unexecuted instantiation: mjpeg.c:block_BytestreamEmpty
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
29.8M
{
69
29.8M
    block_t *block = p_bytestream->p_chain;
70
71
41.8M
    while( block != p_bytestream->p_block )
72
12.0M
    {
73
12.0M
        block_t *p_next = block->p_next;
74
75
12.0M
        p_bytestream->i_total -= block->i_buffer;
76
12.0M
        p_bytestream->i_base_offset -= block->i_buffer;
77
12.0M
        block_Release( block );
78
12.0M
        block = p_next;
79
12.0M
    }
80
81
36.2M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
6.38M
    {
83
6.38M
        block_t *p_next = block->p_next;
84
85
6.38M
        p_bytestream->i_total -= block->i_buffer;
86
6.38M
        block_Release( block );
87
6.38M
        block = p_next;
88
6.38M
        p_bytestream->i_block_offset = 0;
89
6.38M
    }
90
91
29.8M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
29.8M
    if( p_bytestream->p_chain == NULL )
93
160k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
29.8M
}
a52.c:block_BytestreamFlush
Line
Count
Source
68
4.90M
{
69
4.90M
    block_t *block = p_bytestream->p_chain;
70
71
6.60M
    while( block != p_bytestream->p_block )
72
1.69M
    {
73
1.69M
        block_t *p_next = block->p_next;
74
75
1.69M
        p_bytestream->i_total -= block->i_buffer;
76
1.69M
        p_bytestream->i_base_offset -= block->i_buffer;
77
1.69M
        block_Release( block );
78
1.69M
        block = p_next;
79
1.69M
    }
80
81
6.79M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.89M
    {
83
1.89M
        block_t *p_next = block->p_next;
84
85
1.89M
        p_bytestream->i_total -= block->i_buffer;
86
1.89M
        block_Release( block );
87
1.89M
        block = p_next;
88
1.89M
        p_bytestream->i_block_offset = 0;
89
1.89M
    }
90
91
4.90M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
4.90M
    if( p_bytestream->p_chain == NULL )
93
41.8k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
4.90M
}
dts.c:block_BytestreamFlush
Line
Count
Source
68
1.37M
{
69
1.37M
    block_t *block = p_bytestream->p_chain;
70
71
3.65M
    while( block != p_bytestream->p_block )
72
2.27M
    {
73
2.27M
        block_t *p_next = block->p_next;
74
75
2.27M
        p_bytestream->i_total -= block->i_buffer;
76
2.27M
        p_bytestream->i_base_offset -= block->i_buffer;
77
2.27M
        block_Release( block );
78
2.27M
        block = p_next;
79
2.27M
    }
80
81
1.69M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
315k
    {
83
315k
        block_t *p_next = block->p_next;
84
85
315k
        p_bytestream->i_total -= block->i_buffer;
86
315k
        block_Release( block );
87
315k
        block = p_next;
88
315k
        p_bytestream->i_block_offset = 0;
89
315k
    }
90
91
1.37M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.37M
    if( p_bytestream->p_chain == NULL )
93
3.31k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.37M
}
flac.c:block_BytestreamFlush
Line
Count
Source
68
1.65M
{
69
1.65M
    block_t *block = p_bytestream->p_chain;
70
71
1.71M
    while( block != p_bytestream->p_block )
72
63.1k
    {
73
63.1k
        block_t *p_next = block->p_next;
74
75
63.1k
        p_bytestream->i_total -= block->i_buffer;
76
63.1k
        p_bytestream->i_base_offset -= block->i_buffer;
77
63.1k
        block_Release( block );
78
63.1k
        block = p_next;
79
63.1k
    }
80
81
1.72M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
74.3k
    {
83
74.3k
        block_t *p_next = block->p_next;
84
85
74.3k
        p_bytestream->i_total -= block->i_buffer;
86
74.3k
        block_Release( block );
87
74.3k
        block = p_next;
88
74.3k
        p_bytestream->i_block_offset = 0;
89
74.3k
    }
90
91
1.65M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.65M
    if( p_bytestream->p_chain == NULL )
93
24.7k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.65M
}
h264.c:block_BytestreamFlush
Line
Count
Source
68
3.01M
{
69
3.01M
    block_t *block = p_bytestream->p_chain;
70
71
3.23M
    while( block != p_bytestream->p_block )
72
221k
    {
73
221k
        block_t *p_next = block->p_next;
74
75
221k
        p_bytestream->i_total -= block->i_buffer;
76
221k
        p_bytestream->i_base_offset -= block->i_buffer;
77
221k
        block_Release( block );
78
221k
        block = p_next;
79
221k
    }
80
81
3.04M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
28.7k
    {
83
28.7k
        block_t *p_next = block->p_next;
84
85
28.7k
        p_bytestream->i_total -= block->i_buffer;
86
28.7k
        block_Release( block );
87
28.7k
        block = p_next;
88
28.7k
        p_bytestream->i_block_offset = 0;
89
28.7k
    }
90
91
3.01M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
3.01M
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
3.01M
}
hevc.c:block_BytestreamFlush
Line
Count
Source
68
6.78M
{
69
6.78M
    block_t *block = p_bytestream->p_chain;
70
71
8.17M
    while( block != p_bytestream->p_block )
72
1.38M
    {
73
1.38M
        block_t *p_next = block->p_next;
74
75
1.38M
        p_bytestream->i_total -= block->i_buffer;
76
1.38M
        p_bytestream->i_base_offset -= block->i_buffer;
77
1.38M
        block_Release( block );
78
1.38M
        block = p_next;
79
1.38M
    }
80
81
6.78M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
2.42k
    {
83
2.42k
        block_t *p_next = block->p_next;
84
85
2.42k
        p_bytestream->i_total -= block->i_buffer;
86
2.42k
        block_Release( block );
87
2.42k
        block = p_next;
88
2.42k
        p_bytestream->i_block_offset = 0;
89
2.42k
    }
90
91
6.78M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
6.78M
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
6.78M
}
mlp.c:block_BytestreamFlush
Line
Count
Source
68
405k
{
69
405k
    block_t *block = p_bytestream->p_chain;
70
71
440k
    while( block != p_bytestream->p_block )
72
35.1k
    {
73
35.1k
        block_t *p_next = block->p_next;
74
75
35.1k
        p_bytestream->i_total -= block->i_buffer;
76
35.1k
        p_bytestream->i_base_offset -= block->i_buffer;
77
35.1k
        block_Release( block );
78
35.1k
        block = p_next;
79
35.1k
    }
80
81
587k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
182k
    {
83
182k
        block_t *p_next = block->p_next;
84
85
182k
        p_bytestream->i_total -= block->i_buffer;
86
182k
        block_Release( block );
87
182k
        block = p_next;
88
182k
        p_bytestream->i_block_offset = 0;
89
182k
    }
90
91
405k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
405k
    if( p_bytestream->p_chain == NULL )
93
540
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
405k
}
mpeg4audio.c:block_BytestreamFlush
Line
Count
Source
68
34.8k
{
69
34.8k
    block_t *block = p_bytestream->p_chain;
70
71
76.0k
    while( block != p_bytestream->p_block )
72
41.2k
    {
73
41.2k
        block_t *p_next = block->p_next;
74
75
41.2k
        p_bytestream->i_total -= block->i_buffer;
76
41.2k
        p_bytestream->i_base_offset -= block->i_buffer;
77
41.2k
        block_Release( block );
78
41.2k
        block = p_next;
79
41.2k
    }
80
81
36.6k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.82k
    {
83
1.82k
        block_t *p_next = block->p_next;
84
85
1.82k
        p_bytestream->i_total -= block->i_buffer;
86
1.82k
        block_Release( block );
87
1.82k
        block = p_next;
88
1.82k
        p_bytestream->i_block_offset = 0;
89
1.82k
    }
90
91
34.8k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
34.8k
    if( p_bytestream->p_chain == NULL )
93
11.8k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
34.8k
}
mpeg4video.c:block_BytestreamFlush
Line
Count
Source
68
455k
{
69
455k
    block_t *block = p_bytestream->p_chain;
70
71
494k
    while( block != p_bytestream->p_block )
72
39.0k
    {
73
39.0k
        block_t *p_next = block->p_next;
74
75
39.0k
        p_bytestream->i_total -= block->i_buffer;
76
39.0k
        p_bytestream->i_base_offset -= block->i_buffer;
77
39.0k
        block_Release( block );
78
39.0k
        block = p_next;
79
39.0k
    }
80
81
456k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.07k
    {
83
1.07k
        block_t *p_next = block->p_next;
84
85
1.07k
        p_bytestream->i_total -= block->i_buffer;
86
1.07k
        block_Release( block );
87
1.07k
        block = p_next;
88
1.07k
        p_bytestream->i_block_offset = 0;
89
1.07k
    }
90
91
455k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
455k
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
455k
}
mpegaudio.c:block_BytestreamFlush
Line
Count
Source
68
9.96M
{
69
9.96M
    block_t *block = p_bytestream->p_chain;
70
71
15.9M
    while( block != p_bytestream->p_block )
72
6.03M
    {
73
6.03M
        block_t *p_next = block->p_next;
74
75
6.03M
        p_bytestream->i_total -= block->i_buffer;
76
6.03M
        p_bytestream->i_base_offset -= block->i_buffer;
77
6.03M
        block_Release( block );
78
6.03M
        block = p_next;
79
6.03M
    }
80
81
13.8M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
3.86M
    {
83
3.86M
        block_t *p_next = block->p_next;
84
85
3.86M
        p_bytestream->i_total -= block->i_buffer;
86
3.86M
        block_Release( block );
87
3.86M
        block = p_next;
88
3.86M
        p_bytestream->i_block_offset = 0;
89
3.86M
    }
90
91
9.96M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
9.96M
    if( p_bytestream->p_chain == NULL )
93
78.5k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
9.96M
}
mpegvideo.c:block_BytestreamFlush
Line
Count
Source
68
1.07M
{
69
1.07M
    block_t *block = p_bytestream->p_chain;
70
71
1.29M
    while( block != p_bytestream->p_block )
72
212k
    {
73
212k
        block_t *p_next = block->p_next;
74
75
212k
        p_bytestream->i_total -= block->i_buffer;
76
212k
        p_bytestream->i_base_offset -= block->i_buffer;
77
212k
        block_Release( block );
78
212k
        block = p_next;
79
212k
    }
80
81
1.08M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
5.92k
    {
83
5.92k
        block_t *p_next = block->p_next;
84
85
5.92k
        p_bytestream->i_total -= block->i_buffer;
86
5.92k
        block_Release( block );
87
5.92k
        block = p_next;
88
5.92k
        p_bytestream->i_block_offset = 0;
89
5.92k
    }
90
91
1.07M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.07M
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.07M
}
vc1.c:block_BytestreamFlush
Line
Count
Source
68
180k
{
69
180k
    block_t *block = p_bytestream->p_chain;
70
71
183k
    while( block != p_bytestream->p_block )
72
2.41k
    {
73
2.41k
        block_t *p_next = block->p_next;
74
75
2.41k
        p_bytestream->i_total -= block->i_buffer;
76
2.41k
        p_bytestream->i_base_offset -= block->i_buffer;
77
2.41k
        block_Release( block );
78
2.41k
        block = p_next;
79
2.41k
    }
80
81
199k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
18.8k
    {
83
18.8k
        block_t *p_next = block->p_next;
84
85
18.8k
        p_bytestream->i_total -= block->i_buffer;
86
18.8k
        block_Release( block );
87
18.8k
        block = p_next;
88
18.8k
        p_bytestream->i_block_offset = 0;
89
18.8k
    }
90
91
180k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
180k
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
180k
}
Unexecuted instantiation: av1.c:block_BytestreamFlush
mjpeg.c:block_BytestreamFlush
Line
Count
Source
68
377
{
69
377
    block_t *block = p_bytestream->p_chain;
70
71
10.5k
    while( block != p_bytestream->p_block )
72
10.1k
    {
73
10.1k
        block_t *p_next = block->p_next;
74
75
10.1k
        p_bytestream->i_total -= block->i_buffer;
76
10.1k
        p_bytestream->i_base_offset -= block->i_buffer;
77
10.1k
        block_Release( block );
78
10.1k
        block = p_next;
79
10.1k
    }
80
81
377
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
0
    {
83
0
        block_t *p_next = block->p_next;
84
85
0
        p_bytestream->i_total -= block->i_buffer;
86
0
        block_Release( block );
87
0
        block = p_next;
88
0
        p_bytestream->i_block_offset = 0;
89
0
    }
90
91
377
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
377
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
377
}
95
96
static inline void block_BytestreamPush( block_bytestream_t *p_bytestream,
97
                                         block_t *p_block )
98
36.6M
{
99
36.6M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
36.6M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
73.3M
    for( ; p_block; p_block = p_block->p_next )
102
36.6M
        p_bytestream->i_total += p_block->i_buffer;
103
36.6M
}
a52.c:block_BytestreamPush
Line
Count
Source
98
7.57M
{
99
7.57M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
7.57M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
15.1M
    for( ; p_block; p_block = p_block->p_next )
102
7.57M
        p_bytestream->i_total += p_block->i_buffer;
103
7.57M
}
dts.c:block_BytestreamPush
Line
Count
Source
98
3.27M
{
99
3.27M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
3.27M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
6.54M
    for( ; p_block; p_block = p_block->p_next )
102
3.27M
        p_bytestream->i_total += p_block->i_buffer;
103
3.27M
}
flac.c:block_BytestreamPush
Line
Count
Source
98
270k
{
99
270k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
270k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
541k
    for( ; p_block; p_block = p_block->p_next )
102
270k
        p_bytestream->i_total += p_block->i_buffer;
103
270k
}
h264.c:block_BytestreamPush
Line
Count
Source
98
865k
{
99
865k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
865k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.73M
    for( ; p_block; p_block = p_block->p_next )
102
865k
        p_bytestream->i_total += p_block->i_buffer;
103
865k
}
hevc.c:block_BytestreamPush
Line
Count
Source
98
4.08M
{
99
4.08M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
4.08M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
8.16M
    for( ; p_block; p_block = p_block->p_next )
102
4.08M
        p_bytestream->i_total += p_block->i_buffer;
103
4.08M
}
mlp.c:block_BytestreamPush
Line
Count
Source
98
618k
{
99
618k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
618k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.23M
    for( ; p_block; p_block = p_block->p_next )
102
618k
        p_bytestream->i_total += p_block->i_buffer;
103
618k
}
mpeg4audio.c:block_BytestreamPush
Line
Count
Source
98
83.5k
{
99
83.5k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
83.5k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
167k
    for( ; p_block; p_block = p_block->p_next )
102
83.5k
        p_bytestream->i_total += p_block->i_buffer;
103
83.5k
}
mpeg4video.c:block_BytestreamPush
Line
Count
Source
98
93.4k
{
99
93.4k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
93.4k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
186k
    for( ; p_block; p_block = p_block->p_next )
102
93.4k
        p_bytestream->i_total += p_block->i_buffer;
103
93.4k
}
mpegaudio.c:block_BytestreamPush
Line
Count
Source
98
19.2M
{
99
19.2M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
19.2M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
38.4M
    for( ; p_block; p_block = p_block->p_next )
102
19.2M
        p_bytestream->i_total += p_block->i_buffer;
103
19.2M
}
mpegvideo.c:block_BytestreamPush
Line
Count
Source
98
526k
{
99
526k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
526k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.05M
    for( ; p_block; p_block = p_block->p_next )
102
526k
        p_bytestream->i_total += p_block->i_buffer;
103
526k
}
vc1.c:block_BytestreamPush
Line
Count
Source
98
38.3k
{
99
38.3k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
38.3k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
76.6k
    for( ; p_block; p_block = p_block->p_next )
102
38.3k
        p_bytestream->i_total += p_block->i_buffer;
103
38.3k
}
Unexecuted instantiation: av1.c:block_BytestreamPush
mjpeg.c:block_BytestreamPush
Line
Count
Source
98
11.0k
{
99
11.0k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
11.0k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
22.0k
    for( ; p_block; p_block = p_block->p_next )
102
11.0k
        p_bytestream->i_total += p_block->i_buffer;
103
11.0k
}
104
105
static inline size_t block_BytestreamRemaining( const block_bytestream_t *p_bytestream )
106
1.69G
{
107
1.69G
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.69G
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.69G
}
a52.c:block_BytestreamRemaining
Line
Count
Source
106
157M
{
107
157M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
157M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
157M
}
dts.c:block_BytestreamRemaining
Line
Count
Source
106
194M
{
107
194M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
194M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
194M
}
flac.c:block_BytestreamRemaining
Line
Count
Source
106
39.1M
{
107
39.1M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
39.1M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
39.1M
}
h264.c:block_BytestreamRemaining
Line
Count
Source
106
2.84M
{
107
2.84M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
2.83M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
2.84M
}
hevc.c:block_BytestreamRemaining
Line
Count
Source
106
4.15M
{
107
4.15M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
4.15M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
4.15M
}
mlp.c:block_BytestreamRemaining
Line
Count
Source
106
44.6M
{
107
44.6M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
44.6M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
44.6M
}
mpeg4audio.c:block_BytestreamRemaining
Line
Count
Source
106
29.2M
{
107
29.2M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
29.2M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
29.2M
}
mpeg4video.c:block_BytestreamRemaining
Line
Count
Source
106
477k
{
107
477k
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
477k
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
477k
}
mpegaudio.c:block_BytestreamRemaining
Line
Count
Source
106
1.21G
{
107
1.21G
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.21G
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.21G
}
mpegvideo.c:block_BytestreamRemaining
Line
Count
Source
106
1.04M
{
107
1.04M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.04M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.04M
}
vc1.c:block_BytestreamRemaining
Line
Count
Source
106
165k
{
107
165k
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
165k
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
165k
}
Unexecuted instantiation: av1.c:block_BytestreamRemaining
mjpeg.c:block_BytestreamRemaining
Line
Count
Source
106
227
{
107
227
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
227
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
227
}
110
111
VLC_USED
112
static inline block_t *block_BytestreamPop( block_bytestream_t *p_bytestream )
113
17.0M
{
114
17.0M
    block_t *p_block;
115
116
17.0M
    block_BytestreamFlush( p_bytestream );
117
118
17.0M
    p_block = p_bytestream->p_block;
119
17.0M
    if( unlikely( p_block == NULL ) )
120
22.3k
    {
121
22.3k
        return NULL;
122
22.3k
    }
123
17.0M
    else if( !p_block->p_next )
124
10.3M
    {
125
10.3M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
10.3M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
10.3M
        p_bytestream->i_block_offset = 0;
128
10.3M
        p_bytestream->i_total = 0;
129
10.3M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
10.3M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
10.3M
        return p_block;
132
10.3M
    }
133
134
138M
    while( p_block->p_next && p_block->p_next->p_next )
135
131M
        p_block = p_block->p_next;
136
137
6.67M
    block_t *p_block_old = p_block;
138
6.67M
    p_block = p_block->p_next;
139
6.67M
    p_block_old->p_next = NULL;
140
6.67M
    p_bytestream->pp_last = &p_block_old->p_next;
141
6.67M
    if( p_block )
142
6.67M
        p_bytestream->i_total -= p_block->i_buffer;
143
144
6.67M
    return p_block;
145
17.0M
}
a52.c:block_BytestreamPop
Line
Count
Source
113
3.91M
{
114
3.91M
    block_t *p_block;
115
116
3.91M
    block_BytestreamFlush( p_bytestream );
117
118
3.91M
    p_block = p_bytestream->p_block;
119
3.91M
    if( unlikely( p_block == NULL ) )
120
16.3k
    {
121
16.3k
        return NULL;
122
16.3k
    }
123
3.89M
    else if( !p_block->p_next )
124
1.51M
    {
125
1.51M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
1.51M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
1.51M
        p_bytestream->i_block_offset = 0;
128
1.51M
        p_bytestream->i_total = 0;
129
1.51M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
1.51M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
1.51M
        return p_block;
132
1.51M
    }
133
134
62.4M
    while( p_block->p_next && p_block->p_next->p_next )
135
60.0M
        p_block = p_block->p_next;
136
137
2.37M
    block_t *p_block_old = p_block;
138
2.37M
    p_block = p_block->p_next;
139
2.37M
    p_block_old->p_next = NULL;
140
2.37M
    p_bytestream->pp_last = &p_block_old->p_next;
141
2.37M
    if( p_block )
142
2.37M
        p_bytestream->i_total -= p_block->i_buffer;
143
144
2.37M
    return p_block;
145
3.91M
}
dts.c:block_BytestreamPop
Line
Count
Source
113
332k
{
114
332k
    block_t *p_block;
115
116
332k
    block_BytestreamFlush( p_bytestream );
117
118
332k
    p_block = p_bytestream->p_block;
119
332k
    if( unlikely( p_block == NULL ) )
120
941
    {
121
941
        return NULL;
122
941
    }
123
331k
    else if( !p_block->p_next )
124
298k
    {
125
298k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
298k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
298k
        p_bytestream->i_block_offset = 0;
128
298k
        p_bytestream->i_total = 0;
129
298k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
298k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
298k
        return p_block;
132
298k
    }
133
134
190k
    while( p_block->p_next && p_block->p_next->p_next )
135
157k
        p_block = p_block->p_next;
136
137
33.1k
    block_t *p_block_old = p_block;
138
33.1k
    p_block = p_block->p_next;
139
33.1k
    p_block_old->p_next = NULL;
140
33.1k
    p_bytestream->pp_last = &p_block_old->p_next;
141
33.1k
    if( p_block )
142
33.1k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
33.1k
    return p_block;
145
332k
}
flac.c:block_BytestreamPop
Line
Count
Source
113
100k
{
114
100k
    block_t *p_block;
115
116
100k
    block_BytestreamFlush( p_bytestream );
117
118
100k
    p_block = p_bytestream->p_block;
119
100k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
100k
    else if( !p_block->p_next )
124
84.6k
    {
125
84.6k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
84.6k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
84.6k
        p_bytestream->i_block_offset = 0;
128
84.6k
        p_bytestream->i_total = 0;
129
84.6k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
84.6k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
84.6k
        return p_block;
132
84.6k
    }
133
134
435k
    while( p_block->p_next && p_block->p_next->p_next )
135
419k
        p_block = p_block->p_next;
136
137
15.6k
    block_t *p_block_old = p_block;
138
15.6k
    p_block = p_block->p_next;
139
15.6k
    p_block_old->p_next = NULL;
140
15.6k
    p_bytestream->pp_last = &p_block_old->p_next;
141
15.6k
    if( p_block )
142
15.6k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
15.6k
    return p_block;
145
100k
}
h264.c:block_BytestreamPop
Line
Count
Source
113
346k
{
114
346k
    block_t *p_block;
115
116
346k
    block_BytestreamFlush( p_bytestream );
117
118
346k
    p_block = p_bytestream->p_block;
119
346k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
346k
    else if( !p_block->p_next )
124
328k
    {
125
328k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
328k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
328k
        p_bytestream->i_block_offset = 0;
128
328k
        p_bytestream->i_total = 0;
129
328k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
328k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
328k
        return p_block;
132
328k
    }
133
134
162k
    while( p_block->p_next && p_block->p_next->p_next )
135
145k
        p_block = p_block->p_next;
136
137
17.8k
    block_t *p_block_old = p_block;
138
17.8k
    p_block = p_block->p_next;
139
17.8k
    p_block_old->p_next = NULL;
140
17.8k
    p_bytestream->pp_last = &p_block_old->p_next;
141
17.8k
    if( p_block )
142
17.8k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
17.8k
    return p_block;
145
346k
}
hevc.c:block_BytestreamPop
Line
Count
Source
113
2.65M
{
114
2.65M
    block_t *p_block;
115
116
2.65M
    block_BytestreamFlush( p_bytestream );
117
118
2.65M
    p_block = p_bytestream->p_block;
119
2.65M
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
2.65M
    else if( !p_block->p_next )
124
2.63M
    {
125
2.63M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
2.63M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
2.63M
        p_bytestream->i_block_offset = 0;
128
2.63M
        p_bytestream->i_total = 0;
129
2.63M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
2.63M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
2.63M
        return p_block;
132
2.63M
    }
133
134
225k
    while( p_block->p_next && p_block->p_next->p_next )
135
205k
        p_block = p_block->p_next;
136
137
19.5k
    block_t *p_block_old = p_block;
138
19.5k
    p_block = p_block->p_next;
139
19.5k
    p_block_old->p_next = NULL;
140
19.5k
    p_bytestream->pp_last = &p_block_old->p_next;
141
19.5k
    if( p_block )
142
19.5k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
19.5k
    return p_block;
145
2.65M
}
mlp.c:block_BytestreamPop
Line
Count
Source
113
384k
{
114
384k
    block_t *p_block;
115
116
384k
    block_BytestreamFlush( p_bytestream );
117
118
384k
    p_block = p_bytestream->p_block;
119
384k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
384k
    else if( !p_block->p_next )
124
158k
    {
125
158k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
158k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
158k
        p_bytestream->i_block_offset = 0;
128
158k
        p_bytestream->i_total = 0;
129
158k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
158k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
158k
        return p_block;
132
158k
    }
133
134
1.46M
    while( p_block->p_next && p_block->p_next->p_next )
135
1.24M
        p_block = p_block->p_next;
136
137
225k
    block_t *p_block_old = p_block;
138
225k
    p_block = p_block->p_next;
139
225k
    p_block_old->p_next = NULL;
140
225k
    p_bytestream->pp_last = &p_block_old->p_next;
141
225k
    if( p_block )
142
225k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
225k
    return p_block;
145
384k
}
mpeg4audio.c:block_BytestreamPop
Line
Count
Source
113
2.40k
{
114
2.40k
    block_t *p_block;
115
116
2.40k
    block_BytestreamFlush( p_bytestream );
117
118
2.40k
    p_block = p_bytestream->p_block;
119
2.40k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
2.40k
    else if( !p_block->p_next )
124
2.01k
    {
125
2.01k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
2.01k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
2.01k
        p_bytestream->i_block_offset = 0;
128
2.01k
        p_bytestream->i_total = 0;
129
2.01k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
2.01k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
2.01k
        return p_block;
132
2.01k
    }
133
134
2.10k
    while( p_block->p_next && p_block->p_next->p_next )
135
1.71k
        p_block = p_block->p_next;
136
137
388
    block_t *p_block_old = p_block;
138
388
    p_block = p_block->p_next;
139
388
    p_block_old->p_next = NULL;
140
388
    p_bytestream->pp_last = &p_block_old->p_next;
141
388
    if( p_block )
142
388
        p_bytestream->i_total -= p_block->i_buffer;
143
144
388
    return p_block;
145
2.40k
}
mpeg4video.c:block_BytestreamPop
Line
Count
Source
113
9.74k
{
114
9.74k
    block_t *p_block;
115
116
9.74k
    block_BytestreamFlush( p_bytestream );
117
118
9.74k
    p_block = p_bytestream->p_block;
119
9.74k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
9.74k
    else if( !p_block->p_next )
124
9.10k
    {
125
9.10k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
9.10k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
9.10k
        p_bytestream->i_block_offset = 0;
128
9.10k
        p_bytestream->i_total = 0;
129
9.10k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
9.10k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
9.10k
        return p_block;
132
9.10k
    }
133
134
672
    while( p_block->p_next && p_block->p_next->p_next )
135
31
        p_block = p_block->p_next;
136
137
641
    block_t *p_block_old = p_block;
138
641
    p_block = p_block->p_next;
139
641
    p_block_old->p_next = NULL;
140
641
    p_bytestream->pp_last = &p_block_old->p_next;
141
641
    if( p_block )
142
641
        p_bytestream->i_total -= p_block->i_buffer;
143
144
641
    return p_block;
145
9.74k
}
mpegaudio.c:block_BytestreamPop
Line
Count
Source
113
9.23M
{
114
9.23M
    block_t *p_block;
115
116
9.23M
    block_BytestreamFlush( p_bytestream );
117
118
9.23M
    p_block = p_bytestream->p_block;
119
9.23M
    if( unlikely( p_block == NULL ) )
120
5.01k
    {
121
5.01k
        return NULL;
122
5.01k
    }
123
9.22M
    else if( !p_block->p_next )
124
5.24M
    {
125
5.24M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
5.24M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
5.24M
        p_bytestream->i_block_offset = 0;
128
5.24M
        p_bytestream->i_total = 0;
129
5.24M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
5.24M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
5.24M
        return p_block;
132
5.24M
    }
133
134
73.6M
    while( p_block->p_next && p_block->p_next->p_next )
135
69.6M
        p_block = p_block->p_next;
136
137
3.97M
    block_t *p_block_old = p_block;
138
3.97M
    p_block = p_block->p_next;
139
3.97M
    p_block_old->p_next = NULL;
140
3.97M
    p_bytestream->pp_last = &p_block_old->p_next;
141
3.97M
    if( p_block )
142
3.97M
        p_bytestream->i_total -= p_block->i_buffer;
143
144
3.97M
    return p_block;
145
9.23M
}
mpegvideo.c:block_BytestreamPop
Line
Count
Source
113
80.9k
{
114
80.9k
    block_t *p_block;
115
116
80.9k
    block_BytestreamFlush( p_bytestream );
117
118
80.9k
    p_block = p_bytestream->p_block;
119
80.9k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
80.9k
    else if( !p_block->p_next )
124
73.8k
    {
125
73.8k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
73.8k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
73.8k
        p_bytestream->i_block_offset = 0;
128
73.8k
        p_bytestream->i_total = 0;
129
73.8k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
73.8k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
73.8k
        return p_block;
132
73.8k
    }
133
134
26.8k
    while( p_block->p_next && p_block->p_next->p_next )
135
19.6k
        p_block = p_block->p_next;
136
137
7.12k
    block_t *p_block_old = p_block;
138
7.12k
    p_block = p_block->p_next;
139
7.12k
    p_block_old->p_next = NULL;
140
7.12k
    p_bytestream->pp_last = &p_block_old->p_next;
141
7.12k
    if( p_block )
142
7.12k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
7.12k
    return p_block;
145
80.9k
}
vc1.c:block_BytestreamPop
Line
Count
Source
113
15.5k
{
114
15.5k
    block_t *p_block;
115
116
15.5k
    block_BytestreamFlush( p_bytestream );
117
118
15.5k
    p_block = p_bytestream->p_block;
119
15.5k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
15.5k
    else if( !p_block->p_next )
124
15.0k
    {
125
15.0k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
15.0k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
15.0k
        p_bytestream->i_block_offset = 0;
128
15.0k
        p_bytestream->i_total = 0;
129
15.0k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
15.0k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
15.0k
        return p_block;
132
15.0k
    }
133
134
568
    while( p_block->p_next && p_block->p_next->p_next )
135
33
        p_block = p_block->p_next;
136
137
535
    block_t *p_block_old = p_block;
138
535
    p_block = p_block->p_next;
139
535
    p_block_old->p_next = NULL;
140
535
    p_bytestream->pp_last = &p_block_old->p_next;
141
535
    if( p_block )
142
535
        p_bytestream->i_total -= p_block->i_buffer;
143
144
535
    return p_block;
145
15.5k
}
Unexecuted instantiation: av1.c:block_BytestreamPop
mjpeg.c:block_BytestreamPop
Line
Count
Source
113
159
{
114
159
    block_t *p_block;
115
116
159
    block_BytestreamFlush( p_bytestream );
117
118
159
    p_block = p_bytestream->p_block;
119
159
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
159
    else if( !p_block->p_next )
124
149
    {
125
149
        p_block->p_buffer += p_bytestream->i_block_offset;
126
149
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
149
        p_bytestream->i_block_offset = 0;
128
149
        p_bytestream->i_total = 0;
129
149
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
149
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
149
        return p_block;
132
149
    }
133
134
10
    while( p_block->p_next && p_block->p_next->p_next )
135
0
        p_block = p_block->p_next;
136
137
10
    block_t *p_block_old = p_block;
138
10
    p_block = p_block->p_next;
139
10
    p_block_old->p_next = NULL;
140
10
    p_bytestream->pp_last = &p_block_old->p_next;
141
10
    if( p_block )
142
10
        p_bytestream->i_total -= p_block->i_buffer;
143
144
10
    return p_block;
145
159
}
146
147
static inline int block_WaitBytes( block_bytestream_t *p_bytestream,
148
                                   size_t i_data )
149
13.9M
{
150
13.9M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
13.8M
        return VLC_SUCCESS;
152
38.5k
    return VLC_EGENERIC;
153
13.9M
}
a52.c:block_WaitBytes
Line
Count
Source
149
4.00M
{
150
4.00M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
3.97M
        return VLC_SUCCESS;
152
31.3k
    return VLC_EGENERIC;
153
4.00M
}
dts.c:block_WaitBytes
Line
Count
Source
149
343k
{
150
343k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
337k
        return VLC_SUCCESS;
152
5.77k
    return VLC_EGENERIC;
153
343k
}
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
390k
{
150
390k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
389k
        return VLC_SUCCESS;
152
1.40k
    return VLC_EGENERIC;
153
390k
}
Unexecuted instantiation: mpeg4audio.c:block_WaitBytes
Unexecuted instantiation: mpeg4video.c:block_WaitBytes
mpegaudio.c:block_WaitBytes
Line
Count
Source
149
9.19M
{
150
9.19M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
9.19M
        return VLC_SUCCESS;
152
0
    return VLC_EGENERIC;
153
9.19M
}
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
419M
{
158
419M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
2.90M
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
416M
    size_t i_offset = p_bytestream->i_block_offset;
163
416M
    size_t i_size = i_data;
164
416M
    for( block_t *p_block = p_bytestream->p_block;
165
443M
         p_block != NULL; p_block = p_block->p_next )
166
443M
    {
167
443M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
443M
        i_size -= i_copy;
169
170
443M
        if( i_copy )
171
438M
        {
172
438M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
438M
            p_data += i_copy;
174
438M
        }
175
176
443M
        i_offset = 0;
177
178
443M
        if( !i_size ) break;
179
443M
    }
180
181
416M
    return VLC_SUCCESS;
182
419M
}
a52.c:block_PeekBytes
Line
Count
Source
157
76.9M
{
158
76.9M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
1.01M
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
75.8M
    size_t i_offset = p_bytestream->i_block_offset;
163
75.8M
    size_t i_size = i_data;
164
75.8M
    for( block_t *p_block = p_bytestream->p_block;
165
78.4M
         p_block != NULL; p_block = p_block->p_next )
166
78.4M
    {
167
78.4M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
78.4M
        i_size -= i_copy;
169
170
78.4M
        if( i_copy )
171
77.2M
        {
172
77.2M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
77.2M
            p_data += i_copy;
174
77.2M
        }
175
176
78.4M
        i_offset = 0;
177
178
78.4M
        if( !i_size ) break;
179
78.4M
    }
180
181
75.8M
    return VLC_SUCCESS;
182
76.9M
}
dts.c:block_PeekBytes
Line
Count
Source
157
77.7M
{
158
77.7M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
1.07M
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
76.7M
    size_t i_offset = p_bytestream->i_block_offset;
163
76.7M
    size_t i_size = i_data;
164
76.7M
    for( block_t *p_block = p_bytestream->p_block;
165
92.0M
         p_block != NULL; p_block = p_block->p_next )
166
92.0M
    {
167
92.0M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
92.0M
        i_size -= i_copy;
169
170
92.0M
        if( i_copy )
171
89.4M
        {
172
89.4M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
89.4M
            p_data += i_copy;
174
89.4M
        }
175
176
92.0M
        i_offset = 0;
177
178
92.0M
        if( !i_size ) break;
179
92.0M
    }
180
181
76.7M
    return VLC_SUCCESS;
182
77.7M
}
flac.c:block_PeekBytes
Line
Count
Source
157
1.31M
{
158
1.31M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
9.52k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
1.30M
    size_t i_offset = p_bytestream->i_block_offset;
163
1.30M
    size_t i_size = i_data;
164
1.30M
    for( block_t *p_block = p_bytestream->p_block;
165
1.32M
         p_block != NULL; p_block = p_block->p_next )
166
1.32M
    {
167
1.32M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
1.32M
        i_size -= i_copy;
169
170
1.32M
        if( i_copy )
171
1.32M
        {
172
1.32M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
1.32M
            p_data += i_copy;
174
1.32M
        }
175
176
1.32M
        i_offset = 0;
177
178
1.32M
        if( !i_size ) break;
179
1.32M
    }
180
181
1.30M
    return VLC_SUCCESS;
182
1.31M
}
Unexecuted instantiation: h264.c:block_PeekBytes
Unexecuted instantiation: hevc.c:block_PeekBytes
mlp.c:block_PeekBytes
Line
Count
Source
157
22.0M
{
158
22.0M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
21.4k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
21.9M
    size_t i_offset = p_bytestream->i_block_offset;
163
21.9M
    size_t i_size = i_data;
164
21.9M
    for( block_t *p_block = p_bytestream->p_block;
165
26.6M
         p_block != NULL; p_block = p_block->p_next )
166
26.6M
    {
167
26.6M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
26.6M
        i_size -= i_copy;
169
170
26.6M
        if( i_copy )
171
26.4M
        {
172
26.4M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
26.4M
            p_data += i_copy;
174
26.4M
        }
175
176
26.6M
        i_offset = 0;
177
178
26.6M
        if( !i_size ) break;
179
26.6M
    }
180
181
21.9M
    return VLC_SUCCESS;
182
22.0M
}
mpeg4audio.c:block_PeekBytes
Line
Count
Source
157
14.6M
{
158
14.6M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
34.7k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
14.5M
    size_t i_offset = p_bytestream->i_block_offset;
163
14.5M
    size_t i_size = i_data;
164
14.5M
    for( block_t *p_block = p_bytestream->p_block;
165
14.6M
         p_block != NULL; p_block = p_block->p_next )
166
14.6M
    {
167
14.6M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
14.6M
        i_size -= i_copy;
169
170
14.6M
        if( i_copy )
171
14.6M
        {
172
14.6M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
14.6M
            p_data += i_copy;
174
14.6M
        }
175
176
14.6M
        i_offset = 0;
177
178
14.6M
        if( !i_size ) break;
179
14.6M
    }
180
181
14.5M
    return VLC_SUCCESS;
182
14.6M
}
Unexecuted instantiation: mpeg4video.c:block_PeekBytes
mpegaudio.c:block_PeekBytes
Line
Count
Source
157
226M
{
158
226M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
754k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
225M
    size_t i_offset = p_bytestream->i_block_offset;
163
225M
    size_t i_size = i_data;
164
225M
    for( block_t *p_block = p_bytestream->p_block;
165
230M
         p_block != NULL; p_block = p_block->p_next )
166
230M
    {
167
230M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
230M
        i_size -= i_copy;
169
170
230M
        if( i_copy )
171
228M
        {
172
228M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
228M
            p_data += i_copy;
174
228M
        }
175
176
230M
        i_offset = 0;
177
178
230M
        if( !i_size ) break;
179
230M
    }
180
181
225M
    return VLC_SUCCESS;
182
226M
}
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
371M
{
187
371M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
138k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
371M
    size_t i_offset = p_bytestream->i_block_offset;
192
371M
    size_t i_size = i_data;
193
371M
    size_t i_copy = 0;
194
371M
    block_t *p_block;
195
371M
    for( p_block = p_bytestream->p_block;
196
384M
         p_block != NULL; p_block = p_block->p_next )
197
384M
    {
198
384M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
384M
        i_size -= i_copy;
200
201
384M
        if( i_copy && p_data != NULL )
202
29.4M
        {
203
29.4M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
29.4M
            p_data += i_copy;
205
29.4M
        }
206
207
384M
        if( i_size == 0 )
208
371M
            break;
209
210
12.6M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
12.6M
        i_offset = 0;
212
12.6M
    }
213
214
371M
    p_bytestream->p_block = p_block;
215
371M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
371M
    return VLC_SUCCESS;
218
371M
}
a52.c:block_GetBytes
Line
Count
Source
186
70.3M
{
187
70.3M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
102k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
70.2M
    size_t i_offset = p_bytestream->i_block_offset;
192
70.2M
    size_t i_size = i_data;
193
70.2M
    size_t i_copy = 0;
194
70.2M
    block_t *p_block;
195
70.2M
    for( p_block = p_bytestream->p_block;
196
71.9M
         p_block != NULL; p_block = p_block->p_next )
197
71.9M
    {
198
71.9M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
71.9M
        i_size -= i_copy;
200
201
71.9M
        if( i_copy && p_data != NULL )
202
4.59M
        {
203
4.59M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
4.59M
            p_data += i_copy;
205
4.59M
        }
206
207
71.9M
        if( i_size == 0 )
208
70.2M
            break;
209
210
1.72M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
1.72M
        i_offset = 0;
212
1.72M
    }
213
214
70.2M
    p_bytestream->p_block = p_block;
215
70.2M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
70.2M
    return VLC_SUCCESS;
218
70.3M
}
dts.c:block_GetBytes
Line
Count
Source
186
74.2M
{
187
74.2M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
19.2k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
74.2M
    size_t i_offset = p_bytestream->i_block_offset;
192
74.2M
    size_t i_size = i_data;
193
74.2M
    size_t i_copy = 0;
194
74.2M
    block_t *p_block;
195
74.2M
    for( p_block = p_bytestream->p_block;
196
76.8M
         p_block != NULL; p_block = p_block->p_next )
197
76.8M
    {
198
76.8M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
76.8M
        i_size -= i_copy;
200
201
76.8M
        if( i_copy && p_data != NULL )
202
462k
        {
203
462k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
462k
            p_data += i_copy;
205
462k
        }
206
207
76.8M
        if( i_size == 0 )
208
74.2M
            break;
209
210
2.56M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
2.56M
        i_offset = 0;
212
2.56M
    }
213
214
74.2M
    p_bytestream->p_block = p_block;
215
74.2M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
74.2M
    return VLC_SUCCESS;
218
74.2M
}
flac.c:block_GetBytes
Line
Count
Source
186
2.63M
{
187
2.63M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
247
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
2.63M
    size_t i_offset = p_bytestream->i_block_offset;
192
2.63M
    size_t i_size = i_data;
193
2.63M
    size_t i_copy = 0;
194
2.63M
    block_t *p_block;
195
2.63M
    for( p_block = p_bytestream->p_block;
196
2.69M
         p_block != NULL; p_block = p_block->p_next )
197
2.69M
    {
198
2.69M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
2.69M
        i_size -= i_copy;
200
201
2.69M
        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
2.69M
        if( i_size == 0 )
208
2.62M
            break;
209
210
63.1k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
63.1k
        i_offset = 0;
212
63.1k
    }
213
214
2.63M
    p_bytestream->p_block = p_block;
215
2.63M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
2.63M
    return VLC_SUCCESS;
218
2.63M
}
h264.c:block_GetBytes
Line
Count
Source
186
2.67M
{
187
2.67M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
2.67M
    size_t i_offset = p_bytestream->i_block_offset;
192
2.67M
    size_t i_size = i_data;
193
2.67M
    size_t i_copy = 0;
194
2.67M
    block_t *p_block;
195
2.67M
    for( p_block = p_bytestream->p_block;
196
2.92M
         p_block != NULL; p_block = p_block->p_next )
197
2.92M
    {
198
2.92M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
2.92M
        i_size -= i_copy;
200
201
2.92M
        if( i_copy && p_data != NULL )
202
2.80M
        {
203
2.80M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
2.80M
            p_data += i_copy;
205
2.80M
        }
206
207
2.92M
        if( i_size == 0 )
208
2.67M
            break;
209
210
250k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
250k
        i_offset = 0;
212
250k
    }
213
214
2.67M
    p_bytestream->p_block = p_block;
215
2.67M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
2.67M
    return VLC_SUCCESS;
218
2.67M
}
hevc.c:block_GetBytes
Line
Count
Source
186
4.13M
{
187
4.13M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
4.13M
    size_t i_offset = p_bytestream->i_block_offset;
192
4.13M
    size_t i_size = i_data;
193
4.13M
    size_t i_copy = 0;
194
4.13M
    block_t *p_block;
195
4.13M
    for( p_block = p_bytestream->p_block;
196
5.54M
         p_block != NULL; p_block = p_block->p_next )
197
5.54M
    {
198
5.54M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
5.54M
        i_size -= i_copy;
200
201
5.54M
        if( i_copy && p_data != NULL )
202
5.51M
        {
203
5.51M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
5.51M
            p_data += i_copy;
205
5.51M
        }
206
207
5.54M
        if( i_size == 0 )
208
4.13M
            break;
209
210
1.40M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
1.40M
        i_offset = 0;
212
1.40M
    }
213
214
4.13M
    p_bytestream->p_block = p_block;
215
4.13M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
4.13M
    return VLC_SUCCESS;
218
4.13M
}
mlp.c:block_GetBytes
Line
Count
Source
186
21.2M
{
187
21.2M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
21.2M
    size_t i_offset = p_bytestream->i_block_offset;
192
21.2M
    size_t i_size = i_data;
193
21.2M
    size_t i_copy = 0;
194
21.2M
    block_t *p_block;
195
21.2M
    for( p_block = p_bytestream->p_block;
196
21.2M
         p_block != NULL; p_block = p_block->p_next )
197
21.2M
    {
198
21.2M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
21.2M
        i_size -= i_copy;
200
201
21.2M
        if( i_copy && p_data != NULL )
202
401k
        {
203
401k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
401k
            p_data += i_copy;
205
401k
        }
206
207
21.2M
        if( i_size == 0 )
208
21.2M
            break;
209
210
38.4k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
38.4k
        i_offset = 0;
212
38.4k
    }
213
214
21.2M
    p_bytestream->p_block = p_block;
215
21.2M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
21.2M
    return VLC_SUCCESS;
218
21.2M
}
mpeg4audio.c:block_GetBytes
Line
Count
Source
186
14.5M
{
187
14.5M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
14.5M
    size_t i_offset = p_bytestream->i_block_offset;
192
14.5M
    size_t i_size = i_data;
193
14.5M
    size_t i_copy = 0;
194
14.5M
    block_t *p_block;
195
14.5M
    for( p_block = p_bytestream->p_block;
196
14.6M
         p_block != NULL; p_block = p_block->p_next )
197
14.6M
    {
198
14.6M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
14.6M
        i_size -= i_copy;
200
201
14.6M
        if( i_copy && p_data != NULL )
202
22.2k
        {
203
22.2k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
22.2k
            p_data += i_copy;
205
22.2k
        }
206
207
14.6M
        if( i_size == 0 )
208
14.5M
            break;
209
210
64.2k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
64.2k
        i_offset = 0;
212
64.2k
    }
213
214
14.5M
    p_bytestream->p_block = p_block;
215
14.5M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
14.5M
    return VLC_SUCCESS;
218
14.5M
}
mpeg4video.c:block_GetBytes
Line
Count
Source
186
446k
{
187
446k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
446k
    size_t i_offset = p_bytestream->i_block_offset;
192
446k
    size_t i_size = i_data;
193
446k
    size_t i_copy = 0;
194
446k
    block_t *p_block;
195
446k
    for( p_block = p_bytestream->p_block;
196
489k
         p_block != NULL; p_block = p_block->p_next )
197
489k
    {
198
489k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
489k
        i_size -= i_copy;
200
201
489k
        if( i_copy && p_data != NULL )
202
452k
        {
203
452k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
452k
            p_data += i_copy;
205
452k
        }
206
207
489k
        if( i_size == 0 )
208
446k
            break;
209
210
43.2k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
43.2k
        i_offset = 0;
212
43.2k
    }
213
214
446k
    p_bytestream->p_block = p_block;
215
446k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
446k
    return VLC_SUCCESS;
218
446k
}
mpegaudio.c:block_GetBytes
Line
Count
Source
186
180M
{
187
180M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
16.5k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
180M
    size_t i_offset = p_bytestream->i_block_offset;
192
180M
    size_t i_size = i_data;
193
180M
    size_t i_copy = 0;
194
180M
    block_t *p_block;
195
180M
    for( p_block = p_bytestream->p_block;
196
186M
         p_block != NULL; p_block = p_block->p_next )
197
186M
    {
198
186M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
186M
        i_size -= i_copy;
200
201
186M
        if( i_copy && p_data != NULL )
202
13.7M
        {
203
13.7M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
13.7M
            p_data += i_copy;
205
13.7M
        }
206
207
186M
        if( i_size == 0 )
208
180M
            break;
209
210
6.09M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
6.09M
        i_offset = 0;
212
6.09M
    }
213
214
180M
    p_bytestream->p_block = p_block;
215
180M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
180M
    return VLC_SUCCESS;
218
180M
}
mpegvideo.c:block_GetBytes
Line
Count
Source
186
998k
{
187
998k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
998k
    size_t i_offset = p_bytestream->i_block_offset;
192
998k
    size_t i_size = i_data;
193
998k
    size_t i_copy = 0;
194
998k
    block_t *p_block;
195
998k
    for( p_block = p_bytestream->p_block;
196
1.34M
         p_block != NULL; p_block = p_block->p_next )
197
1.34M
    {
198
1.34M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
1.34M
        i_size -= i_copy;
200
201
1.34M
        if( i_copy && p_data != NULL )
202
1.27M
        {
203
1.27M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
1.27M
            p_data += i_copy;
205
1.27M
        }
206
207
1.34M
        if( i_size == 0 )
208
998k
            break;
209
210
349k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
349k
        i_offset = 0;
212
349k
    }
213
214
998k
    p_bytestream->p_block = p_block;
215
998k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
998k
    return VLC_SUCCESS;
218
998k
}
vc1.c:block_GetBytes
Line
Count
Source
186
165k
{
187
165k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
165k
    size_t i_offset = p_bytestream->i_block_offset;
192
165k
    size_t i_size = i_data;
193
165k
    size_t i_copy = 0;
194
165k
    block_t *p_block;
195
165k
    for( p_block = p_bytestream->p_block;
196
167k
         p_block != NULL; p_block = p_block->p_next )
197
167k
    {
198
167k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
167k
        i_size -= i_copy;
200
201
167k
        if( i_copy && p_data != NULL )
202
165k
        {
203
165k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
165k
            p_data += i_copy;
205
165k
        }
206
207
167k
        if( i_size == 0 )
208
165k
            break;
209
210
2.86k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
2.86k
        i_offset = 0;
212
2.86k
    }
213
214
165k
    p_bytestream->p_block = p_block;
215
165k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
165k
    return VLC_SUCCESS;
218
165k
}
Unexecuted instantiation: av1.c:block_GetBytes
mjpeg.c:block_GetBytes
Line
Count
Source
186
218
{
187
218
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
218
    size_t i_offset = p_bytestream->i_block_offset;
192
218
    size_t i_size = i_data;
193
218
    size_t i_copy = 0;
194
218
    block_t *p_block;
195
218
    for( p_block = p_bytestream->p_block;
196
10.9k
         p_block != NULL; p_block = p_block->p_next )
197
10.9k
    {
198
10.9k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
10.9k
        i_size -= i_copy;
200
201
10.9k
        if( i_copy && p_data != NULL )
202
2.32k
        {
203
2.32k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
2.32k
            p_data += i_copy;
205
2.32k
        }
206
207
10.9k
        if( i_size == 0 )
208
218
            break;
209
210
10.7k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
10.7k
        i_offset = 0;
212
10.7k
    }
213
214
218
    p_bytestream->p_block = p_block;
215
218
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
218
    return VLC_SUCCESS;
218
218
}
219
220
static inline int block_SkipBytes( block_bytestream_t *p_bytestream,
221
                                   size_t i_data )
222
2.31M
{
223
2.31M
    return block_GetBytes( p_bytestream, NULL, i_data );
224
2.31M
}
a52.c:block_SkipBytes
Line
Count
Source
222
362k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
362k
}
dts.c:block_SkipBytes
Line
Count
Source
222
176k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
176k
}
flac.c:block_SkipBytes
Line
Count
Source
222
1.55M
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
1.55M
}
h264.c:block_SkipBytes
Line
Count
Source
222
110k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
110k
}
hevc.c:block_SkipBytes
Line
Count
Source
222
20.0k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
20.0k
}
Unexecuted instantiation: mlp.c:block_SkipBytes
mpeg4audio.c:block_SkipBytes
Line
Count
Source
222
6.50k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
6.50k
}
mpeg4video.c:block_SkipBytes
Line
Count
Source
222
33.6k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
33.6k
}
Unexecuted instantiation: mpegaudio.c:block_SkipBytes
mpegvideo.c:block_SkipBytes
Line
Count
Source
222
51.7k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
51.7k
}
vc1.c:block_SkipBytes
Line
Count
Source
222
1.53k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
1.53k
}
Unexecuted instantiation: av1.c:block_SkipBytes
mjpeg.c:block_SkipBytes
Line
Count
Source
222
51
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
51
}
225
226
static inline int block_SkipByte( block_bytestream_t *p_bytestream )
227
347M
{
228
347M
    return block_GetBytes( p_bytestream, NULL, 1 );
229
347M
}
a52.c:block_SkipByte
Line
Count
Source
227
65.9M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
65.9M
}
dts.c:block_SkipByte
Line
Count
Source
227
73.7M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
73.7M
}
flac.c:block_SkipByte
Line
Count
Source
227
1.07M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
1.07M
}
Unexecuted instantiation: h264.c:block_SkipByte
Unexecuted instantiation: hevc.c:block_SkipByte
mlp.c:block_SkipByte
Line
Count
Source
227
20.8M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
20.8M
}
mpeg4audio.c:block_SkipByte
Line
Count
Source
227
14.5M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
14.5M
}
Unexecuted instantiation: mpeg4video.c:block_SkipByte
mpegaudio.c:block_SkipByte
Line
Count
Source
227
171M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
171M
}
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
886M
{
234
886M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
886M
    if( i_remain < i_data + i_peek_offset )
236
14.0M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
872M
    size_t i_offset = p_bytestream->i_block_offset;
240
872M
    size_t i_size = i_peek_offset;
241
872M
    size_t i_copy = 0;
242
872M
    block_t *p_block;
243
872M
    for( p_block = p_bytestream->p_block;
244
7.98G
         p_block != NULL; p_block = p_block->p_next )
245
7.98G
    {
246
7.98G
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
7.98G
        i_size -= i_copy;
248
249
7.98G
        if( !i_size ) break;
250
251
7.11G
        i_offset = 0;
252
7.11G
    }
253
254
    /* Copy the data */
255
872M
    i_offset += i_copy;
256
872M
    i_size = i_data;
257
931M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
931M
    {
259
931M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
931M
        i_size -= i_copy;
261
262
931M
        if( i_copy )
263
921M
        {
264
921M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
921M
            p_data += i_copy;
266
921M
        }
267
268
931M
        i_offset = 0;
269
270
931M
        if( !i_size ) break;
271
931M
    }
272
273
872M
    return VLC_SUCCESS;
274
886M
}
a52.c:block_PeekOffsetBytes
Line
Count
Source
233
6.47M
{
234
6.47M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
6.47M
    if( i_remain < i_data + i_peek_offset )
236
2.49M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
3.97M
    size_t i_offset = p_bytestream->i_block_offset;
240
3.97M
    size_t i_size = i_peek_offset;
241
3.97M
    size_t i_copy = 0;
242
3.97M
    block_t *p_block;
243
3.97M
    for( p_block = p_bytestream->p_block;
244
65.0M
         p_block != NULL; p_block = p_block->p_next )
245
65.0M
    {
246
65.0M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
65.0M
        i_size -= i_copy;
248
249
65.0M
        if( !i_size ) break;
250
251
61.0M
        i_offset = 0;
252
61.0M
    }
253
254
    /* Copy the data */
255
3.97M
    i_offset += i_copy;
256
3.97M
    i_size = i_data;
257
5.37M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
5.37M
    {
259
5.37M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
5.37M
        i_size -= i_copy;
261
262
5.37M
        if( i_copy )
263
5.08M
        {
264
5.08M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
5.08M
            p_data += i_copy;
266
5.08M
        }
267
268
5.37M
        i_offset = 0;
269
270
5.37M
        if( !i_size ) break;
271
5.37M
    }
272
273
3.97M
    return VLC_SUCCESS;
274
6.47M
}
dts.c:block_PeekOffsetBytes
Line
Count
Source
233
42.0M
{
234
42.0M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
42.0M
    if( i_remain < i_data + i_peek_offset )
236
1.85M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
40.1M
    size_t i_offset = p_bytestream->i_block_offset;
240
40.1M
    size_t i_size = i_peek_offset;
241
40.1M
    size_t i_copy = 0;
242
40.1M
    block_t *p_block;
243
40.1M
    for( p_block = p_bytestream->p_block;
244
476M
         p_block != NULL; p_block = p_block->p_next )
245
476M
    {
246
476M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
476M
        i_size -= i_copy;
248
249
476M
        if( !i_size ) break;
250
251
436M
        i_offset = 0;
252
436M
    }
253
254
    /* Copy the data */
255
40.1M
    i_offset += i_copy;
256
40.1M
    i_size = i_data;
257
40.6M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
40.6M
    {
259
40.6M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
40.6M
        i_size -= i_copy;
261
262
40.6M
        if( i_copy )
263
40.4M
        {
264
40.4M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
40.4M
            p_data += i_copy;
266
40.4M
        }
267
268
40.6M
        i_offset = 0;
269
270
40.6M
        if( !i_size ) break;
271
40.6M
    }
272
273
40.1M
    return VLC_SUCCESS;
274
42.0M
}
flac.c:block_PeekOffsetBytes
Line
Count
Source
233
34.9M
{
234
34.9M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
34.9M
    if( i_remain < i_data + i_peek_offset )
236
13.5k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
34.9M
    size_t i_offset = p_bytestream->i_block_offset;
240
34.9M
    size_t i_size = i_peek_offset;
241
34.9M
    size_t i_copy = 0;
242
34.9M
    block_t *p_block;
243
34.9M
    for( p_block = p_bytestream->p_block;
244
1.12G
         p_block != NULL; p_block = p_block->p_next )
245
1.12G
    {
246
1.12G
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
1.12G
        i_size -= i_copy;
248
249
1.12G
        if( !i_size ) break;
250
251
1.08G
        i_offset = 0;
252
1.08G
    }
253
254
    /* Copy the data */
255
34.9M
    i_offset += i_copy;
256
34.9M
    i_size = i_data;
257
36.5M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
36.5M
    {
259
36.5M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
36.5M
        i_size -= i_copy;
261
262
36.5M
        if( i_copy )
263
35.1M
        {
264
35.1M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
35.1M
            p_data += i_copy;
266
35.1M
        }
267
268
36.5M
        i_offset = 0;
269
270
36.5M
        if( !i_size ) break;
271
36.5M
    }
272
273
34.9M
    return VLC_SUCCESS;
274
34.9M
}
Unexecuted instantiation: h264.c:block_PeekOffsetBytes
Unexecuted instantiation: hevc.c:block_PeekOffsetBytes
mlp.c:block_PeekOffsetBytes
Line
Count
Source
233
969k
{
234
969k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
969k
    if( i_remain < i_data + i_peek_offset )
236
219k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
749k
    size_t i_offset = p_bytestream->i_block_offset;
240
749k
    size_t i_size = i_peek_offset;
241
749k
    size_t i_copy = 0;
242
749k
    block_t *p_block;
243
749k
    for( p_block = p_bytestream->p_block;
244
948k
         p_block != NULL; p_block = p_block->p_next )
245
948k
    {
246
948k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
948k
        i_size -= i_copy;
248
249
948k
        if( !i_size ) break;
250
251
199k
        i_offset = 0;
252
199k
    }
253
254
    /* Copy the data */
255
749k
    i_offset += i_copy;
256
749k
    i_size = i_data;
257
1.99M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
1.99M
    {
259
1.99M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
1.99M
        i_size -= i_copy;
261
262
1.99M
        if( i_copy )
263
1.80M
        {
264
1.80M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
1.80M
            p_data += i_copy;
266
1.80M
        }
267
268
1.99M
        i_offset = 0;
269
270
1.99M
        if( !i_size ) break;
271
1.99M
    }
272
273
749k
    return VLC_SUCCESS;
274
969k
}
mpeg4audio.c:block_PeekOffsetBytes
Line
Count
Source
233
105k
{
234
105k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
105k
    if( i_remain < i_data + i_peek_offset )
236
61.2k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
43.7k
    size_t i_offset = p_bytestream->i_block_offset;
240
43.7k
    size_t i_size = i_peek_offset;
241
43.7k
    size_t i_copy = 0;
242
43.7k
    block_t *p_block;
243
43.7k
    for( p_block = p_bytestream->p_block;
244
717k
         p_block != NULL; p_block = p_block->p_next )
245
717k
    {
246
717k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
717k
        i_size -= i_copy;
248
249
717k
        if( !i_size ) break;
250
251
673k
        i_offset = 0;
252
673k
    }
253
254
    /* Copy the data */
255
43.7k
    i_offset += i_copy;
256
43.7k
    i_size = i_data;
257
45.5k
    for( ; p_block != NULL; p_block = p_block->p_next )
258
45.5k
    {
259
45.5k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
45.5k
        i_size -= i_copy;
261
262
45.5k
        if( i_copy )
263
44.9k
        {
264
44.9k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
44.9k
            p_data += i_copy;
266
44.9k
        }
267
268
45.5k
        i_offset = 0;
269
270
45.5k
        if( !i_size ) break;
271
45.5k
    }
272
273
43.7k
    return VLC_SUCCESS;
274
105k
}
Unexecuted instantiation: mpeg4video.c:block_PeekOffsetBytes
mpegaudio.c:block_PeekOffsetBytes
Line
Count
Source
233
801M
{
234
801M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
801M
    if( i_remain < i_data + i_peek_offset )
236
9.43M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
792M
    size_t i_offset = p_bytestream->i_block_offset;
240
792M
    size_t i_size = i_peek_offset;
241
792M
    size_t i_copy = 0;
242
792M
    block_t *p_block;
243
792M
    for( p_block = p_bytestream->p_block;
244
6.31G
         p_block != NULL; p_block = p_block->p_next )
245
6.31G
    {
246
6.31G
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
6.31G
        i_size -= i_copy;
248
249
6.31G
        if( !i_size ) break;
250
251
5.52G
        i_offset = 0;
252
5.52G
    }
253
254
    /* Copy the data */
255
792M
    i_offset += i_copy;
256
792M
    i_size = i_data;
257
847M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
847M
    {
259
847M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
847M
        i_size -= i_copy;
261
262
847M
        if( i_copy )
263
838M
        {
264
838M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
838M
            p_data += i_copy;
266
838M
        }
267
268
847M
        i_offset = 0;
269
270
847M
        if( !i_size ) break;
271
847M
    }
272
273
792M
    return VLC_SUCCESS;
274
801M
}
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
    const block_bytestream_t *p_bytestream, size_t *pi_offset,
281
    const uint8_t *p_startcode, size_t i_startcode_length,
282
    block_startcode_helper_t p_startcode_helper,
283
    block_startcode_matcher_t p_startcode_matcher )
284
49.2M
{
285
49.2M
    block_t *p_block, *p_block_backup = NULL;
286
49.2M
    ssize_t i_size;
287
49.2M
    size_t i_offset, i_offset_backup = 0;
288
49.2M
    size_t i_caller_offset_backup = 0;
289
49.2M
    size_t i_match;
290
291
    /* Find the right place */
292
49.2M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
49.2M
    for( p_block = p_bytestream->p_block;
294
707M
         p_block != NULL; p_block = p_block->p_next )
295
707M
    {
296
707M
        i_size -= p_block->i_buffer;
297
707M
        if( i_size < 0 ) break;
298
707M
    }
299
300
49.2M
    if( unlikely( i_size >= 0 ) )
301
301k
    {
302
        /* Not enough data, bail out */
303
301k
        return VLC_EGENERIC;
304
301k
    }
305
306
    /* Begin the search.
307
     * We first look for an occurrence of the 1st startcode byte and
308
     * if found, we do a more thorough check. */
309
48.9M
    i_size += p_block->i_buffer;
310
48.9M
    *pi_offset -= i_size;
311
48.9M
    i_match = 0;
312
884M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
881M
    {
314
2.40G
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
1.56G
        {
316
            /* Use optimized helper when possible */
317
1.56G
            if( p_startcode_helper && !i_match &&
318
929M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
256M
            {
320
256M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
256M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
256M
                if( p_res )
323
42.6M
                {
324
42.6M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
42.6M
                    return VLC_SUCCESS;
326
42.6M
                }
327
                /* Then parsing boundary with legacy code */
328
214M
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
214M
            }
330
331
1.56G
            bool b_matched = ( p_startcode_matcher )
332
1.52G
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
1.52G
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
1.52G
            if( b_matched )
335
602M
            {
336
602M
                if( i_match == 0 )
337
374M
                {
338
374M
                    p_block_backup = p_block;
339
374M
                    i_offset_backup = i_offset;
340
374M
                    i_caller_offset_backup = *pi_offset;
341
374M
                }
342
343
602M
                if( i_match + 1 == i_startcode_length )
344
3.29M
                {
345
                    /* We have it */
346
3.29M
                    *pi_offset += i_offset - i_match;
347
3.29M
                    return VLC_SUCCESS;
348
3.29M
                }
349
350
599M
                i_match++;
351
599M
            }
352
919M
            else if ( i_match != 0 )
353
371M
            {
354
                /* False positive */
355
371M
                p_block = p_block_backup;
356
371M
                i_offset = i_offset_backup;
357
371M
                *pi_offset = i_caller_offset_backup;
358
371M
                i_match = 0;
359
371M
            }
360
361
1.52G
        }
362
835M
        i_size = 0;
363
835M
        *pi_offset += i_offset;
364
835M
    }
365
366
2.95M
    *pi_offset -= i_match;
367
2.95M
    return VLC_EGENERIC;
368
48.9M
}
a52.c:block_FindStartcodeFromOffset
Line
Count
Source
284
3.28M
{
285
3.28M
    block_t *p_block, *p_block_backup = NULL;
286
3.28M
    ssize_t i_size;
287
3.28M
    size_t i_offset, i_offset_backup = 0;
288
3.28M
    size_t i_caller_offset_backup = 0;
289
3.28M
    size_t i_match;
290
291
    /* Find the right place */
292
3.28M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
3.28M
    for( p_block = p_bytestream->p_block;
294
3.32M
         p_block != NULL; p_block = p_block->p_next )
295
3.32M
    {
296
3.32M
        i_size -= p_block->i_buffer;
297
3.32M
        if( i_size < 0 ) break;
298
3.32M
    }
299
300
3.28M
    if( unlikely( i_size >= 0 ) )
301
0
    {
302
        /* Not enough data, bail out */
303
0
        return VLC_EGENERIC;
304
0
    }
305
306
    /* Begin the search.
307
     * We first look for an occurrence of the 1st startcode byte and
308
     * if found, we do a more thorough check. */
309
3.28M
    i_size += p_block->i_buffer;
310
3.28M
    *pi_offset -= i_size;
311
3.28M
    i_match = 0;
312
4.92M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
4.91M
    {
314
42.3M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
40.6M
        {
316
            /* Use optimized helper when possible */
317
40.6M
            if( p_startcode_helper && !i_match &&
318
0
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
0
            {
320
0
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
0
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
0
                if( p_res )
323
0
                {
324
0
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
0
                    return VLC_SUCCESS;
326
0
                }
327
                /* Then parsing boundary with legacy code */
328
0
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
0
            }
330
331
40.6M
            bool b_matched = ( p_startcode_matcher )
332
40.6M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
40.6M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
40.6M
            if( b_matched )
335
7.30M
            {
336
7.30M
                if( i_match == 0 )
337
4.02M
                {
338
4.02M
                    p_block_backup = p_block;
339
4.02M
                    i_offset_backup = i_offset;
340
4.02M
                    i_caller_offset_backup = *pi_offset;
341
4.02M
                }
342
343
7.30M
                if( i_match + 1 == i_startcode_length )
344
3.27M
                {
345
                    /* We have it */
346
3.27M
                    *pi_offset += i_offset - i_match;
347
3.27M
                    return VLC_SUCCESS;
348
3.27M
                }
349
350
4.02M
                i_match++;
351
4.02M
            }
352
33.3M
            else if ( i_match != 0 )
353
751k
            {
354
                /* False positive */
355
751k
                p_block = p_block_backup;
356
751k
                i_offset = i_offset_backup;
357
751k
                *pi_offset = i_caller_offset_backup;
358
751k
                i_match = 0;
359
751k
            }
360
361
40.6M
        }
362
1.64M
        i_size = 0;
363
1.64M
        *pi_offset += i_offset;
364
1.64M
    }
365
366
5.33k
    *pi_offset -= i_match;
367
5.33k
    return VLC_EGENERIC;
368
3.28M
}
Unexecuted instantiation: dts.c:block_FindStartcodeFromOffset
flac.c:block_FindStartcodeFromOffset
Line
Count
Source
284
26.6M
{
285
26.6M
    block_t *p_block, *p_block_backup = NULL;
286
26.6M
    ssize_t i_size;
287
26.6M
    size_t i_offset, i_offset_backup = 0;
288
26.6M
    size_t i_caller_offset_backup = 0;
289
26.6M
    size_t i_match;
290
291
    /* Find the right place */
292
26.6M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
26.6M
    for( p_block = p_bytestream->p_block;
294
684M
         p_block != NULL; p_block = p_block->p_next )
295
684M
    {
296
684M
        i_size -= p_block->i_buffer;
297
684M
        if( i_size < 0 ) break;
298
684M
    }
299
300
26.6M
    if( unlikely( i_size >= 0 ) )
301
5.21k
    {
302
        /* Not enough data, bail out */
303
5.21k
        return VLC_EGENERIC;
304
5.21k
    }
305
306
    /* Begin the search.
307
     * We first look for an occurrence of the 1st startcode byte and
308
     * if found, we do a more thorough check. */
309
26.6M
    i_size += p_block->i_buffer;
310
26.6M
    *pi_offset -= i_size;
311
26.6M
    i_match = 0;
312
27.6M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
27.5M
    {
314
28.5M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
27.5M
        {
316
            /* Use optimized helper when possible */
317
27.5M
            if( p_startcode_helper && !i_match &&
318
27.5M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
27.3M
            {
320
27.3M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
27.3M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
27.3M
                if( p_res )
323
26.5M
                {
324
26.5M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
26.5M
                    return VLC_SUCCESS;
326
26.5M
                }
327
                /* Then parsing boundary with legacy code */
328
830k
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
830k
            }
330
331
27.5M
            bool b_matched = ( p_startcode_matcher )
332
1.00M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
1.00M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
1.00M
            if( b_matched )
335
22.5k
            {
336
22.5k
                if( i_match == 0 )
337
20.4k
                {
338
20.4k
                    p_block_backup = p_block;
339
20.4k
                    i_offset_backup = i_offset;
340
20.4k
                    i_caller_offset_backup = *pi_offset;
341
20.4k
                }
342
343
22.5k
                if( i_match + 1 == i_startcode_length )
344
2.10k
                {
345
                    /* We have it */
346
2.10k
                    *pi_offset += i_offset - i_match;
347
2.10k
                    return VLC_SUCCESS;
348
2.10k
                }
349
350
20.4k
                i_match++;
351
20.4k
            }
352
978k
            else if ( i_match != 0 )
353
9.74k
            {
354
                /* False positive */
355
9.74k
                p_block = p_block_backup;
356
9.74k
                i_offset = i_offset_backup;
357
9.74k
                *pi_offset = i_caller_offset_backup;
358
9.74k
                i_match = 0;
359
9.74k
            }
360
361
1.00M
        }
362
1.00M
        i_size = 0;
363
1.00M
        *pi_offset += i_offset;
364
1.00M
    }
365
366
143k
    *pi_offset -= i_match;
367
143k
    return VLC_EGENERIC;
368
26.6M
}
h264.c:block_FindStartcodeFromOffset
Line
Count
Source
284
5.88M
{
285
5.88M
    block_t *p_block, *p_block_backup = NULL;
286
5.88M
    ssize_t i_size;
287
5.88M
    size_t i_offset, i_offset_backup = 0;
288
5.88M
    size_t i_caller_offset_backup = 0;
289
5.88M
    size_t i_match;
290
291
    /* Find the right place */
292
5.88M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
5.88M
    for( p_block = p_bytestream->p_block;
294
6.15M
         p_block != NULL; p_block = p_block->p_next )
295
5.97M
    {
296
5.97M
        i_size -= p_block->i_buffer;
297
5.97M
        if( i_size < 0 ) break;
298
5.97M
    }
299
300
5.88M
    if( unlikely( i_size >= 0 ) )
301
182k
    {
302
        /* Not enough data, bail out */
303
182k
        return VLC_EGENERIC;
304
182k
    }
305
306
    /* Begin the search.
307
     * We first look for an occurrence of the 1st startcode byte and
308
     * if found, we do a more thorough check. */
309
5.69M
    i_size += p_block->i_buffer;
310
5.69M
    *pi_offset -= i_size;
311
5.69M
    i_match = 0;
312
13.0M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
12.3M
    {
314
26.9M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
19.5M
        {
316
            /* Use optimized helper when possible */
317
19.5M
            if( p_startcode_helper && !i_match &&
318
15.3M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
10.1M
            {
320
10.1M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
10.1M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
10.1M
                if( p_res )
323
4.96M
                {
324
4.96M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
4.96M
                    return VLC_SUCCESS;
326
4.96M
                }
327
                /* Then parsing boundary with legacy code */
328
5.15M
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
5.15M
            }
330
331
19.5M
            bool b_matched = ( p_startcode_matcher )
332
14.6M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
14.6M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
14.6M
            if( b_matched )
335
4.29M
            {
336
4.29M
                if( i_match == 0 )
337
2.44M
                {
338
2.44M
                    p_block_backup = p_block;
339
2.44M
                    i_offset_backup = i_offset;
340
2.44M
                    i_caller_offset_backup = *pi_offset;
341
2.44M
                }
342
343
4.29M
                if( i_match + 1 == i_startcode_length )
344
1.75k
                {
345
                    /* We have it */
346
1.75k
                    *pi_offset += i_offset - i_match;
347
1.75k
                    return VLC_SUCCESS;
348
1.75k
                }
349
350
4.29M
                i_match++;
351
4.29M
            }
352
10.3M
            else if ( i_match != 0 )
353
2.39M
            {
354
                /* False positive */
355
2.39M
                p_block = p_block_backup;
356
2.39M
                i_offset = i_offset_backup;
357
2.39M
                *pi_offset = i_caller_offset_backup;
358
2.39M
                i_match = 0;
359
2.39M
            }
360
361
14.6M
        }
362
7.39M
        i_size = 0;
363
7.39M
        *pi_offset += i_offset;
364
7.39M
    }
365
366
732k
    *pi_offset -= i_match;
367
732k
    return VLC_EGENERIC;
368
5.69M
}
hevc.c:block_FindStartcodeFromOffset
Line
Count
Source
284
9.68M
{
285
9.68M
    block_t *p_block, *p_block_backup = NULL;
286
9.68M
    ssize_t i_size;
287
9.68M
    size_t i_offset, i_offset_backup = 0;
288
9.68M
    size_t i_caller_offset_backup = 0;
289
9.68M
    size_t i_match;
290
291
    /* Find the right place */
292
9.68M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
9.68M
    for( p_block = p_bytestream->p_block;
294
9.72M
         p_block != NULL; p_block = p_block->p_next )
295
9.69M
    {
296
9.69M
        i_size -= p_block->i_buffer;
297
9.69M
        if( i_size < 0 ) break;
298
9.69M
    }
299
300
9.68M
    if( unlikely( i_size >= 0 ) )
301
25.3k
    {
302
        /* Not enough data, bail out */
303
25.3k
        return VLC_EGENERIC;
304
25.3k
    }
305
306
    /* Begin the search.
307
     * We first look for an occurrence of the 1st startcode byte and
308
     * if found, we do a more thorough check. */
309
9.66M
    i_size += p_block->i_buffer;
310
9.66M
    *pi_offset -= i_size;
311
9.66M
    i_match = 0;
312
20.0M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
18.6M
    {
314
39.1M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
28.7M
        {
316
            /* Use optimized helper when possible */
317
28.7M
            if( p_startcode_helper && !i_match &&
318
23.5M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
15.8M
            {
320
15.8M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
15.8M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
15.8M
                if( p_res )
323
8.21M
                {
324
8.21M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
8.21M
                    return VLC_SUCCESS;
326
8.21M
                }
327
                /* Then parsing boundary with legacy code */
328
7.63M
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
7.63M
            }
330
331
28.7M
            bool b_matched = ( p_startcode_matcher )
332
20.5M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
20.5M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
20.5M
            if( b_matched )
335
5.26M
            {
336
5.26M
                if( i_match == 0 )
337
2.85M
                {
338
2.85M
                    p_block_backup = p_block;
339
2.85M
                    i_offset_backup = i_offset;
340
2.85M
                    i_caller_offset_backup = *pi_offset;
341
2.85M
                }
342
343
5.26M
                if( i_match + 1 == i_startcode_length )
344
3.73k
                {
345
                    /* We have it */
346
3.73k
                    *pi_offset += i_offset - i_match;
347
3.73k
                    return VLC_SUCCESS;
348
3.73k
                }
349
350
5.26M
                i_match++;
351
5.26M
            }
352
15.2M
            else if ( i_match != 0 )
353
2.81M
            {
354
                /* False positive */
355
2.81M
                p_block = p_block_backup;
356
2.81M
                i_offset = i_offset_backup;
357
2.81M
                *pi_offset = i_caller_offset_backup;
358
2.81M
                i_match = 0;
359
2.81M
            }
360
361
20.5M
        }
362
10.3M
        i_size = 0;
363
10.3M
        *pi_offset += i_offset;
364
10.3M
    }
365
366
1.43M
    *pi_offset -= i_match;
367
1.43M
    return VLC_EGENERIC;
368
9.66M
}
Unexecuted instantiation: mlp.c:block_FindStartcodeFromOffset
Unexecuted instantiation: mpeg4audio.c:block_FindStartcodeFromOffset
mpeg4video.c:block_FindStartcodeFromOffset
Line
Count
Source
284
947k
{
285
947k
    block_t *p_block, *p_block_backup = NULL;
286
947k
    ssize_t i_size;
287
947k
    size_t i_offset, i_offset_backup = 0;
288
947k
    size_t i_caller_offset_backup = 0;
289
947k
    size_t i_match;
290
291
    /* Find the right place */
292
947k
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
947k
    for( p_block = p_bytestream->p_block;
294
1.03M
         p_block != NULL; p_block = p_block->p_next )
295
1.00M
    {
296
1.00M
        i_size -= p_block->i_buffer;
297
1.00M
        if( i_size < 0 ) break;
298
1.00M
    }
299
300
947k
    if( unlikely( i_size >= 0 ) )
301
33.2k
    {
302
        /* Not enough data, bail out */
303
33.2k
        return VLC_EGENERIC;
304
33.2k
    }
305
306
    /* Begin the search.
307
     * We first look for an occurrence of the 1st startcode byte and
308
     * if found, we do a more thorough check. */
309
913k
    i_size += p_block->i_buffer;
310
913k
    *pi_offset -= i_size;
311
913k
    i_match = 0;
312
2.72M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
2.61M
    {
314
6.03M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
4.22M
        {
316
            /* Use optimized helper when possible */
317
4.22M
            if( p_startcode_helper && !i_match &&
318
3.47M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
1.12M
            {
320
1.12M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
1.12M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
1.12M
                if( p_res )
323
798k
                {
324
798k
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
798k
                    return VLC_SUCCESS;
326
798k
                }
327
                /* Then parsing boundary with legacy code */
328
329k
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
329k
            }
330
331
4.22M
            bool b_matched = ( p_startcode_matcher )
332
3.42M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
3.42M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
3.42M
            if( b_matched )
335
777k
            {
336
777k
                if( i_match == 0 )
337
508k
                {
338
508k
                    p_block_backup = p_block;
339
508k
                    i_offset_backup = i_offset;
340
508k
                    i_caller_offset_backup = *pi_offset;
341
508k
                }
342
343
777k
                if( i_match + 1 == i_startcode_length )
344
1.24k
                {
345
                    /* We have it */
346
1.24k
                    *pi_offset += i_offset - i_match;
347
1.24k
                    return VLC_SUCCESS;
348
1.24k
                }
349
350
776k
                i_match++;
351
776k
            }
352
2.64M
            else if ( i_match != 0 )
353
483k
            {
354
                /* False positive */
355
483k
                p_block = p_block_backup;
356
483k
                i_offset = i_offset_backup;
357
483k
                *pi_offset = i_caller_offset_backup;
358
483k
                i_match = 0;
359
483k
            }
360
361
3.42M
        }
362
1.81M
        i_size = 0;
363
1.81M
        *pi_offset += i_offset;
364
1.81M
    }
365
366
114k
    *pi_offset -= i_match;
367
114k
    return VLC_EGENERIC;
368
913k
}
Unexecuted instantiation: mpegaudio.c:block_FindStartcodeFromOffset
mpegvideo.c:block_FindStartcodeFromOffset
Line
Count
Source
284
2.40M
{
285
2.40M
    block_t *p_block, *p_block_backup = NULL;
286
2.40M
    ssize_t i_size;
287
2.40M
    size_t i_offset, i_offset_backup = 0;
288
2.40M
    size_t i_caller_offset_backup = 0;
289
2.40M
    size_t i_match;
290
291
    /* Find the right place */
292
2.40M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
2.40M
    for( p_block = p_bytestream->p_block;
294
2.68M
         p_block != NULL; p_block = p_block->p_next )
295
2.63M
    {
296
2.63M
        i_size -= p_block->i_buffer;
297
2.63M
        if( i_size < 0 ) break;
298
2.63M
    }
299
300
2.40M
    if( unlikely( i_size >= 0 ) )
301
53.9k
    {
302
        /* Not enough data, bail out */
303
53.9k
        return VLC_EGENERIC;
304
53.9k
    }
305
306
    /* Begin the search.
307
     * We first look for an occurrence of the 1st startcode byte and
308
     * if found, we do a more thorough check. */
309
2.35M
    i_size += p_block->i_buffer;
310
2.35M
    *pi_offset -= i_size;
311
2.35M
    i_match = 0;
312
791M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
790M
    {
314
2.15G
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
1.36G
        {
316
            /* Use optimized helper when possible */
317
1.36G
            if( p_startcode_helper && !i_match &&
318
785M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
177M
            {
320
177M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
177M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
177M
                if( p_res )
323
1.85M
                {
324
1.85M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
1.85M
                    return VLC_SUCCESS;
326
1.85M
                }
327
                /* Then parsing boundary with legacy code */
328
175M
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
175M
            }
330
331
1.36G
            bool b_matched = ( p_startcode_matcher )
332
1.36G
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
1.36G
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
1.36G
            if( b_matched )
335
583M
            {
336
583M
                if( i_match == 0 )
337
363M
                {
338
363M
                    p_block_backup = p_block;
339
363M
                    i_offset_backup = i_offset;
340
363M
                    i_caller_offset_backup = *pi_offset;
341
363M
                }
342
343
583M
                if( i_match + 1 == i_startcode_length )
344
10.0k
                {
345
                    /* We have it */
346
10.0k
                    *pi_offset += i_offset - i_match;
347
10.0k
                    return VLC_SUCCESS;
348
10.0k
                }
349
350
583M
                i_match++;
351
583M
            }
352
783M
            else if ( i_match != 0 )
353
363M
            {
354
                /* False positive */
355
363M
                p_block = p_block_backup;
356
363M
                i_offset = i_offset_backup;
357
363M
                *pi_offset = i_caller_offset_backup;
358
363M
                i_match = 0;
359
363M
            }
360
361
1.36G
        }
362
788M
        i_size = 0;
363
788M
        *pi_offset += i_offset;
364
788M
    }
365
366
484k
    *pi_offset -= i_match;
367
484k
    return VLC_EGENERIC;
368
2.35M
}
vc1.c:block_FindStartcodeFromOffset
Line
Count
Source
284
351k
{
285
351k
    block_t *p_block, *p_block_backup = NULL;
286
351k
    ssize_t i_size;
287
351k
    size_t i_offset, i_offset_backup = 0;
288
351k
    size_t i_caller_offset_backup = 0;
289
351k
    size_t i_match;
290
291
    /* Find the right place */
292
351k
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
351k
    for( p_block = p_bytestream->p_block;
294
376k
         p_block != NULL; p_block = p_block->p_next )
295
375k
    {
296
375k
        i_size -= p_block->i_buffer;
297
375k
        if( i_size < 0 ) break;
298
375k
    }
299
300
351k
    if( unlikely( i_size >= 0 ) )
301
673
    {
302
        /* Not enough data, bail out */
303
673
        return VLC_EGENERIC;
304
673
    }
305
306
    /* Begin the search.
307
     * We first look for an occurrence of the 1st startcode byte and
308
     * if found, we do a more thorough check. */
309
350k
    i_size += p_block->i_buffer;
310
350k
    *pi_offset -= i_size;
311
350k
    i_match = 0;
312
469k
    for( ; p_block != NULL; p_block = p_block->p_next )
313
448k
    {
314
680k
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
561k
        {
316
            /* Use optimized helper when possible */
317
561k
            if( p_startcode_helper && !i_match &&
318
512k
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
423k
            {
320
423k
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
423k
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
423k
                if( p_res )
323
329k
                {
324
329k
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
329k
                    return VLC_SUCCESS;
326
329k
                }
327
                /* Then parsing boundary with legacy code */
328
93.9k
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
93.9k
            }
330
331
561k
            bool b_matched = ( p_startcode_matcher )
332
232k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
232k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
232k
            if( b_matched )
335
58.9k
            {
336
58.9k
                if( i_match == 0 )
337
35.0k
                {
338
35.0k
                    p_block_backup = p_block;
339
35.0k
                    i_offset_backup = i_offset;
340
35.0k
                    i_caller_offset_backup = *pi_offset;
341
35.0k
                }
342
343
58.9k
                if( i_match + 1 == i_startcode_length )
344
31
                {
345
                    /* We have it */
346
31
                    *pi_offset += i_offset - i_match;
347
31
                    return VLC_SUCCESS;
348
31
                }
349
350
58.9k
                i_match++;
351
58.9k
            }
352
173k
            else if ( i_match != 0 )
353
25.0k
            {
354
                /* False positive */
355
25.0k
                p_block = p_block_backup;
356
25.0k
                i_offset = i_offset_backup;
357
25.0k
                *pi_offset = i_caller_offset_backup;
358
25.0k
                i_match = 0;
359
25.0k
            }
360
361
232k
        }
362
119k
        i_size = 0;
363
119k
        *pi_offset += i_offset;
364
119k
    }
365
366
21.6k
    *pi_offset -= i_match;
367
21.6k
    return VLC_EGENERIC;
368
350k
}
Unexecuted instantiation: av1.c:block_FindStartcodeFromOffset
mjpeg.c:block_FindStartcodeFromOffset
Line
Count
Source
284
11.2k
{
285
11.2k
    block_t *p_block, *p_block_backup = NULL;
286
11.2k
    ssize_t i_size;
287
11.2k
    size_t i_offset, i_offset_backup = 0;
288
11.2k
    size_t i_caller_offset_backup = 0;
289
11.2k
    size_t i_match;
290
291
    /* Find the right place */
292
11.2k
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
11.2k
    for( p_block = p_bytestream->p_block;
294
11.2k
         p_block != NULL; p_block = p_block->p_next )
295
11.2k
    {
296
11.2k
        i_size -= p_block->i_buffer;
297
11.2k
        if( i_size < 0 ) break;
298
11.2k
    }
299
300
11.2k
    if( unlikely( i_size >= 0 ) )
301
8
    {
302
        /* Not enough data, bail out */
303
8
        return VLC_EGENERIC;
304
8
    }
305
306
    /* Begin the search.
307
     * We first look for an occurrence of the 1st startcode byte and
308
     * if found, we do a more thorough check. */
309
11.2k
    i_size += p_block->i_buffer;
310
11.2k
    *pi_offset -= i_size;
311
11.2k
    i_match = 0;
312
24.7M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
24.7M
    {
314
98.7M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
74.0M
        {
316
            /* Use optimized helper when possible */
317
74.0M
            if( p_startcode_helper && !i_match &&
318
73.1M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
24.3M
            {
320
24.3M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
24.3M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
24.3M
                if( p_res )
323
411
                {
324
411
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
411
                    return VLC_SUCCESS;
326
411
                }
327
                /* Then parsing boundary with legacy code */
328
24.3M
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
24.3M
            }
330
331
74.0M
            bool b_matched = ( p_startcode_matcher )
332
74.0M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
74.0M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
74.0M
            if( b_matched )
335
888k
            {
336
888k
                if( i_match == 0 )
337
886k
                {
338
886k
                    p_block_backup = p_block;
339
886k
                    i_offset_backup = i_offset;
340
886k
                    i_caller_offset_backup = *pi_offset;
341
886k
                }
342
343
888k
                if( i_match + 1 == i_startcode_length )
344
0
                {
345
                    /* We have it */
346
0
                    *pi_offset += i_offset - i_match;
347
0
                    return VLC_SUCCESS;
348
0
                }
349
350
888k
                i_match++;
351
888k
            }
352
73.1M
            else if ( i_match != 0 )
353
886k
            {
354
                /* False positive */
355
886k
                p_block = p_block_backup;
356
886k
                i_offset = i_offset_backup;
357
886k
                *pi_offset = i_caller_offset_backup;
358
886k
                i_match = 0;
359
886k
            }
360
361
74.0M
        }
362
24.7M
        i_size = 0;
363
24.7M
        *pi_offset += i_offset;
364
24.7M
    }
365
366
10.8k
    *pi_offset -= i_match;
367
10.8k
    return VLC_EGENERIC;
368
11.2k
}
369
370
#endif /* VLC_BLOCK_HELPER_H */