Coverage Report

Created: 2026-08-31 08:22

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
728k
{
43
728k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
728k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
728k
    p_bytestream->i_block_offset = 0;
46
728k
    p_bytestream->i_base_offset = 0;
47
728k
    p_bytestream->i_total = 0;
48
728k
}
a52.c:block_BytestreamInit
Line
Count
Source
42
21.2k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
21.2k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
21.2k
    p_bytestream->i_block_offset = 0;
46
21.2k
    p_bytestream->i_base_offset = 0;
47
21.2k
    p_bytestream->i_total = 0;
48
21.2k
}
dts.c:block_BytestreamInit
Line
Count
Source
42
5.56k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
5.56k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
5.56k
    p_bytestream->i_block_offset = 0;
46
5.56k
    p_bytestream->i_base_offset = 0;
47
5.56k
    p_bytestream->i_total = 0;
48
5.56k
}
flac.c:block_BytestreamInit
Line
Count
Source
42
17.9k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
17.9k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
17.9k
    p_bytestream->i_block_offset = 0;
46
17.9k
    p_bytestream->i_base_offset = 0;
47
17.9k
    p_bytestream->i_total = 0;
48
17.9k
}
h264.c:block_BytestreamInit
Line
Count
Source
42
291k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
291k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
291k
    p_bytestream->i_block_offset = 0;
46
291k
    p_bytestream->i_base_offset = 0;
47
291k
    p_bytestream->i_total = 0;
48
291k
}
hevc.c:block_BytestreamInit
Line
Count
Source
42
17.5k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
17.5k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
17.5k
    p_bytestream->i_block_offset = 0;
46
17.5k
    p_bytestream->i_base_offset = 0;
47
17.5k
    p_bytestream->i_total = 0;
48
17.5k
}
mlp.c:block_BytestreamInit
Line
Count
Source
42
8.80k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
8.80k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
8.80k
    p_bytestream->i_block_offset = 0;
46
8.80k
    p_bytestream->i_base_offset = 0;
47
8.80k
    p_bytestream->i_total = 0;
48
8.80k
}
mpeg4audio.c:block_BytestreamInit
Line
Count
Source
42
98.0k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
98.0k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
98.0k
    p_bytestream->i_block_offset = 0;
46
98.0k
    p_bytestream->i_base_offset = 0;
47
98.0k
    p_bytestream->i_total = 0;
48
98.0k
}
mpeg4video.c:block_BytestreamInit
Line
Count
Source
42
38.6k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
38.6k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
38.6k
    p_bytestream->i_block_offset = 0;
46
38.6k
    p_bytestream->i_base_offset = 0;
47
38.6k
    p_bytestream->i_total = 0;
48
38.6k
}
mpegaudio.c:block_BytestreamInit
Line
Count
Source
42
112k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
112k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
112k
    p_bytestream->i_block_offset = 0;
46
112k
    p_bytestream->i_base_offset = 0;
47
112k
    p_bytestream->i_total = 0;
48
112k
}
mpegvideo.c:block_BytestreamInit
Line
Count
Source
42
109k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
109k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
109k
    p_bytestream->i_block_offset = 0;
46
109k
    p_bytestream->i_base_offset = 0;
47
109k
    p_bytestream->i_total = 0;
48
109k
}
vc1.c:block_BytestreamInit
Line
Count
Source
42
8.09k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
8.09k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
8.09k
    p_bytestream->i_block_offset = 0;
46
8.09k
    p_bytestream->i_base_offset = 0;
47
8.09k
    p_bytestream->i_total = 0;
48
8.09k
}
Unexecuted instantiation: av1.c:block_BytestreamInit
mjpeg.c:block_BytestreamInit
Line
Count
Source
42
7
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
7
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
7
    p_bytestream->i_block_offset = 0;
46
7
    p_bytestream->i_base_offset = 0;
47
7
    p_bytestream->i_total = 0;
48
7
}
49
50
static inline void block_BytestreamRelease( block_bytestream_t *p_bytestream )
51
728k
{
52
728k
    block_ChainRelease( p_bytestream->p_chain );
53
728k
}
a52.c:block_BytestreamRelease
Line
Count
Source
51
21.2k
{
52
21.2k
    block_ChainRelease( p_bytestream->p_chain );
53
21.2k
}
dts.c:block_BytestreamRelease
Line
Count
Source
51
5.56k
{
52
5.56k
    block_ChainRelease( p_bytestream->p_chain );
53
5.56k
}
flac.c:block_BytestreamRelease
Line
Count
Source
51
17.9k
{
52
17.9k
    block_ChainRelease( p_bytestream->p_chain );
53
17.9k
}
h264.c:block_BytestreamRelease
Line
Count
Source
51
291k
{
52
291k
    block_ChainRelease( p_bytestream->p_chain );
53
291k
}
hevc.c:block_BytestreamRelease
Line
Count
Source
51
17.5k
{
52
17.5k
    block_ChainRelease( p_bytestream->p_chain );
53
17.5k
}
mlp.c:block_BytestreamRelease
Line
Count
Source
51
8.80k
{
52
8.80k
    block_ChainRelease( p_bytestream->p_chain );
53
8.80k
}
mpeg4audio.c:block_BytestreamRelease
Line
Count
Source
51
98.0k
{
52
98.0k
    block_ChainRelease( p_bytestream->p_chain );
53
98.0k
}
mpeg4video.c:block_BytestreamRelease
Line
Count
Source
51
38.6k
{
52
38.6k
    block_ChainRelease( p_bytestream->p_chain );
53
38.6k
}
mpegaudio.c:block_BytestreamRelease
Line
Count
Source
51
112k
{
52
112k
    block_ChainRelease( p_bytestream->p_chain );
53
112k
}
mpegvideo.c:block_BytestreamRelease
Line
Count
Source
51
109k
{
52
109k
    block_ChainRelease( p_bytestream->p_chain );
53
109k
}
vc1.c:block_BytestreamRelease
Line
Count
Source
51
8.09k
{
52
8.09k
    block_ChainRelease( p_bytestream->p_chain );
53
8.09k
}
Unexecuted instantiation: av1.c:block_BytestreamRelease
mjpeg.c:block_BytestreamRelease
Line
Count
Source
51
7
{
52
7
    block_ChainRelease( p_bytestream->p_chain );
53
7
}
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
401k
{
60
401k
    block_BytestreamRelease( p_bytestream );
61
401k
    block_BytestreamInit( p_bytestream );
62
401k
}
a52.c:block_BytestreamEmpty
Line
Count
Source
59
12.7k
{
60
12.7k
    block_BytestreamRelease( p_bytestream );
61
12.7k
    block_BytestreamInit( p_bytestream );
62
12.7k
}
dts.c:block_BytestreamEmpty
Line
Count
Source
59
2.29k
{
60
2.29k
    block_BytestreamRelease( p_bytestream );
61
2.29k
    block_BytestreamInit( p_bytestream );
62
2.29k
}
flac.c:block_BytestreamEmpty
Line
Count
Source
59
16.9k
{
60
16.9k
    block_BytestreamRelease( p_bytestream );
61
16.9k
    block_BytestreamInit( p_bytestream );
62
16.9k
}
h264.c:block_BytestreamEmpty
Line
Count
Source
59
226k
{
60
226k
    block_BytestreamRelease( p_bytestream );
61
226k
    block_BytestreamInit( p_bytestream );
62
226k
}
hevc.c:block_BytestreamEmpty
Line
Count
Source
59
6.28k
{
60
6.28k
    block_BytestreamRelease( p_bytestream );
61
6.28k
    block_BytestreamInit( p_bytestream );
62
6.28k
}
mlp.c:block_BytestreamEmpty
Line
Count
Source
59
5.81k
{
60
5.81k
    block_BytestreamRelease( p_bytestream );
61
5.81k
    block_BytestreamInit( p_bytestream );
62
5.81k
}
mpeg4audio.c:block_BytestreamEmpty
Line
Count
Source
59
9.32k
{
60
9.32k
    block_BytestreamRelease( p_bytestream );
61
9.32k
    block_BytestreamInit( p_bytestream );
62
9.32k
}
mpeg4video.c:block_BytestreamEmpty
Line
Count
Source
59
31.4k
{
60
31.4k
    block_BytestreamRelease( p_bytestream );
61
31.4k
    block_BytestreamInit( p_bytestream );
62
31.4k
}
mpegaudio.c:block_BytestreamEmpty
Line
Count
Source
59
39.1k
{
60
39.1k
    block_BytestreamRelease( p_bytestream );
61
39.1k
    block_BytestreamInit( p_bytestream );
62
39.1k
}
mpegvideo.c:block_BytestreamEmpty
Line
Count
Source
59
48.8k
{
60
48.8k
    block_BytestreamRelease( p_bytestream );
61
48.8k
    block_BytestreamInit( p_bytestream );
62
48.8k
}
vc1.c:block_BytestreamEmpty
Line
Count
Source
59
2.79k
{
60
2.79k
    block_BytestreamRelease( p_bytestream );
61
2.79k
    block_BytestreamInit( p_bytestream );
62
2.79k
}
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
37.6M
{
69
37.6M
    block_t *block = p_bytestream->p_chain;
70
71
49.5M
    while( block != p_bytestream->p_block )
72
11.8M
    {
73
11.8M
        block_t *p_next = block->p_next;
74
75
11.8M
        p_bytestream->i_total -= block->i_buffer;
76
11.8M
        p_bytestream->i_base_offset -= block->i_buffer;
77
11.8M
        block_Release( block );
78
11.8M
        block = p_next;
79
11.8M
    }
80
81
44.0M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
6.36M
    {
83
6.36M
        block_t *p_next = block->p_next;
84
85
6.36M
        p_bytestream->i_total -= block->i_buffer;
86
6.36M
        block_Release( block );
87
6.36M
        block = p_next;
88
6.36M
        p_bytestream->i_block_offset = 0;
89
6.36M
    }
90
91
37.6M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
37.6M
    if( p_bytestream->p_chain == NULL )
93
166k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
37.6M
}
a52.c:block_BytestreamFlush
Line
Count
Source
68
3.82M
{
69
3.82M
    block_t *block = p_bytestream->p_chain;
70
71
5.31M
    while( block != p_bytestream->p_block )
72
1.49M
    {
73
1.49M
        block_t *p_next = block->p_next;
74
75
1.49M
        p_bytestream->i_total -= block->i_buffer;
76
1.49M
        p_bytestream->i_base_offset -= block->i_buffer;
77
1.49M
        block_Release( block );
78
1.49M
        block = p_next;
79
1.49M
    }
80
81
5.25M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.42M
    {
83
1.42M
        block_t *p_next = block->p_next;
84
85
1.42M
        p_bytestream->i_total -= block->i_buffer;
86
1.42M
        block_Release( block );
87
1.42M
        block = p_next;
88
1.42M
        p_bytestream->i_block_offset = 0;
89
1.42M
    }
90
91
3.82M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
3.82M
    if( p_bytestream->p_chain == NULL )
93
42.0k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
3.82M
}
dts.c:block_BytestreamFlush
Line
Count
Source
68
1.21M
{
69
1.21M
    block_t *block = p_bytestream->p_chain;
70
71
3.36M
    while( block != p_bytestream->p_block )
72
2.14M
    {
73
2.14M
        block_t *p_next = block->p_next;
74
75
2.14M
        p_bytestream->i_total -= block->i_buffer;
76
2.14M
        p_bytestream->i_base_offset -= block->i_buffer;
77
2.14M
        block_Release( block );
78
2.14M
        block = p_next;
79
2.14M
    }
80
81
1.50M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
291k
    {
83
291k
        block_t *p_next = block->p_next;
84
85
291k
        p_bytestream->i_total -= block->i_buffer;
86
291k
        block_Release( block );
87
291k
        block = p_next;
88
291k
        p_bytestream->i_block_offset = 0;
89
291k
    }
90
91
1.21M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.21M
    if( p_bytestream->p_chain == NULL )
93
3.42k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.21M
}
flac.c:block_BytestreamFlush
Line
Count
Source
68
1.78M
{
69
1.78M
    block_t *block = p_bytestream->p_chain;
70
71
1.84M
    while( block != p_bytestream->p_block )
72
61.2k
    {
73
61.2k
        block_t *p_next = block->p_next;
74
75
61.2k
        p_bytestream->i_total -= block->i_buffer;
76
61.2k
        p_bytestream->i_base_offset -= block->i_buffer;
77
61.2k
        block_Release( block );
78
61.2k
        block = p_next;
79
61.2k
    }
80
81
1.86M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
73.9k
    {
83
73.9k
        block_t *p_next = block->p_next;
84
85
73.9k
        p_bytestream->i_total -= block->i_buffer;
86
73.9k
        block_Release( block );
87
73.9k
        block = p_next;
88
73.9k
        p_bytestream->i_block_offset = 0;
89
73.9k
    }
90
91
1.78M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.78M
    if( p_bytestream->p_chain == NULL )
93
25.0k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.78M
}
h264.c:block_BytestreamFlush
Line
Count
Source
68
1.78M
{
69
1.78M
    block_t *block = p_bytestream->p_chain;
70
71
1.85M
    while( block != p_bytestream->p_block )
72
68.3k
    {
73
68.3k
        block_t *p_next = block->p_next;
74
75
68.3k
        p_bytestream->i_total -= block->i_buffer;
76
68.3k
        p_bytestream->i_base_offset -= block->i_buffer;
77
68.3k
        block_Release( block );
78
68.3k
        block = p_next;
79
68.3k
    }
80
81
1.81M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
28.0k
    {
83
28.0k
        block_t *p_next = block->p_next;
84
85
28.0k
        p_bytestream->i_total -= block->i_buffer;
86
28.0k
        block_Release( block );
87
28.0k
        block = p_next;
88
28.0k
        p_bytestream->i_block_offset = 0;
89
28.0k
    }
90
91
1.78M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.78M
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.78M
}
hevc.c:block_BytestreamFlush
Line
Count
Source
68
12.1M
{
69
12.1M
    block_t *block = p_bytestream->p_chain;
70
71
14.0M
    while( block != p_bytestream->p_block )
72
1.95M
    {
73
1.95M
        block_t *p_next = block->p_next;
74
75
1.95M
        p_bytestream->i_total -= block->i_buffer;
76
1.95M
        p_bytestream->i_base_offset -= block->i_buffer;
77
1.95M
        block_Release( block );
78
1.95M
        block = p_next;
79
1.95M
    }
80
81
12.1M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
4.31k
    {
83
4.31k
        block_t *p_next = block->p_next;
84
85
4.31k
        p_bytestream->i_total -= block->i_buffer;
86
4.31k
        block_Release( block );
87
4.31k
        block = p_next;
88
4.31k
        p_bytestream->i_block_offset = 0;
89
4.31k
    }
90
91
12.1M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
12.1M
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
12.1M
}
mlp.c:block_BytestreamFlush
Line
Count
Source
68
370k
{
69
370k
    block_t *block = p_bytestream->p_chain;
70
71
425k
    while( block != p_bytestream->p_block )
72
54.6k
    {
73
54.6k
        block_t *p_next = block->p_next;
74
75
54.6k
        p_bytestream->i_total -= block->i_buffer;
76
54.6k
        p_bytestream->i_base_offset -= block->i_buffer;
77
54.6k
        block_Release( block );
78
54.6k
        block = p_next;
79
54.6k
    }
80
81
519k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
149k
    {
83
149k
        block_t *p_next = block->p_next;
84
85
149k
        p_bytestream->i_total -= block->i_buffer;
86
149k
        block_Release( block );
87
149k
        block = p_next;
88
149k
        p_bytestream->i_block_offset = 0;
89
149k
    }
90
91
370k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
370k
    if( p_bytestream->p_chain == NULL )
93
1.15k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
370k
}
mpeg4audio.c:block_BytestreamFlush
Line
Count
Source
68
42.2k
{
69
42.2k
    block_t *block = p_bytestream->p_chain;
70
71
83.7k
    while( block != p_bytestream->p_block )
72
41.5k
    {
73
41.5k
        block_t *p_next = block->p_next;
74
75
41.5k
        p_bytestream->i_total -= block->i_buffer;
76
41.5k
        p_bytestream->i_base_offset -= block->i_buffer;
77
41.5k
        block_Release( block );
78
41.5k
        block = p_next;
79
41.5k
    }
80
81
44.6k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
2.36k
    {
83
2.36k
        block_t *p_next = block->p_next;
84
85
2.36k
        p_bytestream->i_total -= block->i_buffer;
86
2.36k
        block_Release( block );
87
2.36k
        block = p_next;
88
2.36k
        p_bytestream->i_block_offset = 0;
89
2.36k
    }
90
91
42.2k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
42.2k
    if( p_bytestream->p_chain == NULL )
93
13.2k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
42.2k
}
mpeg4video.c:block_BytestreamFlush
Line
Count
Source
68
422k
{
69
422k
    block_t *block = p_bytestream->p_chain;
70
71
462k
    while( block != p_bytestream->p_block )
72
39.4k
    {
73
39.4k
        block_t *p_next = block->p_next;
74
75
39.4k
        p_bytestream->i_total -= block->i_buffer;
76
39.4k
        p_bytestream->i_base_offset -= block->i_buffer;
77
39.4k
        block_Release( block );
78
39.4k
        block = p_next;
79
39.4k
    }
80
81
424k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.31k
    {
83
1.31k
        block_t *p_next = block->p_next;
84
85
1.31k
        p_bytestream->i_total -= block->i_buffer;
86
1.31k
        block_Release( block );
87
1.31k
        block = p_next;
88
1.31k
        p_bytestream->i_block_offset = 0;
89
1.31k
    }
90
91
422k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
422k
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
422k
}
mpegaudio.c:block_BytestreamFlush
Line
Count
Source
68
10.2M
{
69
10.2M
    block_t *block = p_bytestream->p_chain;
70
71
16.0M
    while( block != p_bytestream->p_block )
72
5.79M
    {
73
5.79M
        block_t *p_next = block->p_next;
74
75
5.79M
        p_bytestream->i_total -= block->i_buffer;
76
5.79M
        p_bytestream->i_base_offset -= block->i_buffer;
77
5.79M
        block_Release( block );
78
5.79M
        block = p_next;
79
5.79M
    }
80
81
14.3M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
4.07M
    {
83
4.07M
        block_t *p_next = block->p_next;
84
85
4.07M
        p_bytestream->i_total -= block->i_buffer;
86
4.07M
        block_Release( block );
87
4.07M
        block = p_next;
88
4.07M
        p_bytestream->i_block_offset = 0;
89
4.07M
    }
90
91
10.2M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
10.2M
    if( p_bytestream->p_chain == NULL )
93
81.4k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
10.2M
}
mpegvideo.c:block_BytestreamFlush
Line
Count
Source
68
3.20M
{
69
3.20M
    block_t *block = p_bytestream->p_chain;
70
71
3.39M
    while( block != p_bytestream->p_block )
72
191k
    {
73
191k
        block_t *p_next = block->p_next;
74
75
191k
        p_bytestream->i_total -= block->i_buffer;
76
191k
        p_bytestream->i_base_offset -= block->i_buffer;
77
191k
        block_Release( block );
78
191k
        block = p_next;
79
191k
    }
80
81
3.33M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
123k
    {
83
123k
        block_t *p_next = block->p_next;
84
85
123k
        p_bytestream->i_total -= block->i_buffer;
86
123k
        block_Release( block );
87
123k
        block = p_next;
88
123k
        p_bytestream->i_block_offset = 0;
89
123k
    }
90
91
3.20M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
3.20M
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
3.20M
}
vc1.c:block_BytestreamFlush
Line
Count
Source
68
2.59M
{
69
2.59M
    block_t *block = p_bytestream->p_chain;
70
71
2.61M
    while( block != p_bytestream->p_block )
72
16.8k
    {
73
16.8k
        block_t *p_next = block->p_next;
74
75
16.8k
        p_bytestream->i_total -= block->i_buffer;
76
16.8k
        p_bytestream->i_base_offset -= block->i_buffer;
77
16.8k
        block_Release( block );
78
16.8k
        block = p_next;
79
16.8k
    }
80
81
2.78M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
192k
    {
83
192k
        block_t *p_next = block->p_next;
84
85
192k
        p_bytestream->i_total -= block->i_buffer;
86
192k
        block_Release( block );
87
192k
        block = p_next;
88
192k
        p_bytestream->i_block_offset = 0;
89
192k
    }
90
91
2.59M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
2.59M
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
2.59M
}
Unexecuted instantiation: av1.c:block_BytestreamFlush
mjpeg.c:block_BytestreamFlush
Line
Count
Source
68
261
{
69
261
    block_t *block = p_bytestream->p_chain;
70
71
1.98k
    while( block != p_bytestream->p_block )
72
1.72k
    {
73
1.72k
        block_t *p_next = block->p_next;
74
75
1.72k
        p_bytestream->i_total -= block->i_buffer;
76
1.72k
        p_bytestream->i_base_offset -= block->i_buffer;
77
1.72k
        block_Release( block );
78
1.72k
        block = p_next;
79
1.72k
    }
80
81
261
    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
261
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
261
    if( p_bytestream->p_chain == NULL )
93
0
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
261
}
95
96
static inline void block_BytestreamPush( block_bytestream_t *p_bytestream,
97
                                         block_t *p_block )
98
37.1M
{
99
37.1M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
37.1M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
74.3M
    for( ; p_block; p_block = p_block->p_next )
102
37.1M
        p_bytestream->i_total += p_block->i_buffer;
103
37.1M
}
a52.c:block_BytestreamPush
Line
Count
Source
98
5.89M
{
99
5.89M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
5.89M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
11.7M
    for( ; p_block; p_block = p_block->p_next )
102
5.89M
        p_bytestream->i_total += p_block->i_buffer;
103
5.89M
}
dts.c:block_BytestreamPush
Line
Count
Source
98
2.96M
{
99
2.96M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
2.96M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
5.93M
    for( ; p_block; p_block = p_block->p_next )
102
2.96M
        p_bytestream->i_total += p_block->i_buffer;
103
2.96M
}
flac.c:block_BytestreamPush
Line
Count
Source
98
265k
{
99
265k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
265k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
531k
    for( ; p_block; p_block = p_block->p_next )
102
265k
        p_bytestream->i_total += p_block->i_buffer;
103
265k
}
h264.c:block_BytestreamPush
Line
Count
Source
98
430k
{
99
430k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
430k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
860k
    for( ; p_block; p_block = p_block->p_next )
102
430k
        p_bytestream->i_total += p_block->i_buffer;
103
430k
}
hevc.c:block_BytestreamPush
Line
Count
Source
98
5.71M
{
99
5.71M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
5.71M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
11.4M
    for( ; p_block; p_block = p_block->p_next )
102
5.71M
        p_bytestream->i_total += p_block->i_buffer;
103
5.71M
}
mlp.c:block_BytestreamPush
Line
Count
Source
98
552k
{
99
552k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
552k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.10M
    for( ; p_block; p_block = p_block->p_next )
102
552k
        p_bytestream->i_total += p_block->i_buffer;
103
552k
}
mpeg4audio.c:block_BytestreamPush
Line
Count
Source
98
88.8k
{
99
88.8k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
88.8k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
177k
    for( ; p_block; p_block = p_block->p_next )
102
88.8k
        p_bytestream->i_total += p_block->i_buffer;
103
88.8k
}
mpeg4video.c:block_BytestreamPush
Line
Count
Source
98
87.0k
{
99
87.0k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
87.0k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
174k
    for( ; p_block; p_block = p_block->p_next )
102
87.0k
        p_bytestream->i_total += p_block->i_buffer;
103
87.0k
}
mpegaudio.c:block_BytestreamPush
Line
Count
Source
98
19.4M
{
99
19.4M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
19.4M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
38.9M
    for( ; p_block; p_block = p_block->p_next )
102
19.4M
        p_bytestream->i_total += p_block->i_buffer;
103
19.4M
}
mpegvideo.c:block_BytestreamPush
Line
Count
Source
98
740k
{
99
740k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
740k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.48M
    for( ; p_block; p_block = p_block->p_next )
102
740k
        p_bytestream->i_total += p_block->i_buffer;
103
740k
}
vc1.c:block_BytestreamPush
Line
Count
Source
98
938k
{
99
938k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
938k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.87M
    for( ; p_block; p_block = p_block->p_next )
102
938k
        p_bytestream->i_total += p_block->i_buffer;
103
938k
}
Unexecuted instantiation: av1.c:block_BytestreamPush
mjpeg.c:block_BytestreamPush
Line
Count
Source
98
2.22k
{
99
2.22k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
2.22k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
4.44k
    for( ; p_block; p_block = p_block->p_next )
102
2.22k
        p_bytestream->i_total += p_block->i_buffer;
103
2.22k
}
104
105
static inline size_t block_BytestreamRemaining( const block_bytestream_t *p_bytestream )
106
1.67G
{
107
1.67G
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.67G
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.67G
}
a52.c:block_BytestreamRemaining
Line
Count
Source
106
138M
{
107
138M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
138M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
138M
}
dts.c:block_BytestreamRemaining
Line
Count
Source
106
143M
{
107
143M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
143M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
143M
}
flac.c:block_BytestreamRemaining
Line
Count
Source
106
36.0M
{
107
36.0M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
36.0M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
36.0M
}
h264.c:block_BytestreamRemaining
Line
Count
Source
106
1.84M
{
107
1.84M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.84M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.84M
}
hevc.c:block_BytestreamRemaining
Line
Count
Source
106
8.41M
{
107
8.41M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
8.41M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
8.41M
}
mlp.c:block_BytestreamRemaining
Line
Count
Source
106
38.5M
{
107
38.5M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
38.5M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
38.5M
}
mpeg4audio.c:block_BytestreamRemaining
Line
Count
Source
106
51.3M
{
107
51.3M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
51.3M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
51.3M
}
mpeg4video.c:block_BytestreamRemaining
Line
Count
Source
106
450k
{
107
450k
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
450k
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
450k
}
mpegaudio.c:block_BytestreamRemaining
Line
Count
Source
106
1.25G
{
107
1.25G
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.25G
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.25G
}
mpegvideo.c:block_BytestreamRemaining
Line
Count
Source
106
2.97M
{
107
2.97M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
2.97M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
2.97M
}
vc1.c:block_BytestreamRemaining
Line
Count
Source
106
1.88M
{
107
1.88M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.88M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.88M
}
Unexecuted instantiation: av1.c:block_BytestreamRemaining
mjpeg.c:block_BytestreamRemaining
Line
Count
Source
106
147
{
107
147
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
147
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
147
}
110
111
VLC_USED
112
static inline block_t *block_BytestreamPop( block_bytestream_t *p_bytestream )
113
17.8M
{
114
17.8M
    block_t *p_block;
115
116
17.8M
    block_BytestreamFlush( p_bytestream );
117
118
17.8M
    p_block = p_bytestream->p_block;
119
17.8M
    if( unlikely( p_block == NULL ) )
120
22.4k
    {
121
22.4k
        return NULL;
122
22.4k
    }
123
17.8M
    else if( !p_block->p_next )
124
11.2M
    {
125
11.2M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
11.2M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
11.2M
        p_bytestream->i_block_offset = 0;
128
11.2M
        p_bytestream->i_total = 0;
129
11.2M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
11.2M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
11.2M
        return p_block;
132
11.2M
    }
133
134
139M
    while( p_block->p_next && p_block->p_next->p_next )
135
132M
        p_block = p_block->p_next;
136
137
6.60M
    block_t *p_block_old = p_block;
138
6.60M
    p_block = p_block->p_next;
139
6.60M
    p_block_old->p_next = NULL;
140
6.60M
    p_bytestream->pp_last = &p_block_old->p_next;
141
6.60M
    if( p_block )
142
6.60M
        p_bytestream->i_total -= p_block->i_buffer;
143
144
6.60M
    return p_block;
145
17.8M
}
a52.c:block_BytestreamPop
Line
Count
Source
113
2.90M
{
114
2.90M
    block_t *p_block;
115
116
2.90M
    block_BytestreamFlush( p_bytestream );
117
118
2.90M
    p_block = p_bytestream->p_block;
119
2.90M
    if( unlikely( p_block == NULL ) )
120
16.4k
    {
121
16.4k
        return NULL;
122
16.4k
    }
123
2.88M
    else if( !p_block->p_next )
124
1.14M
    {
125
1.14M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
1.14M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
1.14M
        p_bytestream->i_block_offset = 0;
128
1.14M
        p_bytestream->i_total = 0;
129
1.14M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
1.14M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
1.14M
        return p_block;
132
1.14M
    }
133
134
47.3M
    while( p_block->p_next && p_block->p_next->p_next )
135
45.6M
        p_block = p_block->p_next;
136
137
1.74M
    block_t *p_block_old = p_block;
138
1.74M
    p_block = p_block->p_next;
139
1.74M
    p_block_old->p_next = NULL;
140
1.74M
    p_bytestream->pp_last = &p_block_old->p_next;
141
1.74M
    if( p_block )
142
1.74M
        p_bytestream->i_total -= p_block->i_buffer;
143
144
1.74M
    return p_block;
145
2.90M
}
dts.c:block_BytestreamPop
Line
Count
Source
113
199k
{
114
199k
    block_t *p_block;
115
116
199k
    block_BytestreamFlush( p_bytestream );
117
118
199k
    p_block = p_bytestream->p_block;
119
199k
    if( unlikely( p_block == NULL ) )
120
985
    {
121
985
        return NULL;
122
985
    }
123
198k
    else if( !p_block->p_next )
124
176k
    {
125
176k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
176k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
176k
        p_bytestream->i_block_offset = 0;
128
176k
        p_bytestream->i_total = 0;
129
176k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
176k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
176k
        return p_block;
132
176k
    }
133
134
164k
    while( p_block->p_next && p_block->p_next->p_next )
135
143k
        p_block = p_block->p_next;
136
137
21.2k
    block_t *p_block_old = p_block;
138
21.2k
    p_block = p_block->p_next;
139
21.2k
    p_block_old->p_next = NULL;
140
21.2k
    p_bytestream->pp_last = &p_block_old->p_next;
141
21.2k
    if( p_block )
142
21.2k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
21.2k
    return p_block;
145
199k
}
flac.c:block_BytestreamPop
Line
Count
Source
113
98.4k
{
114
98.4k
    block_t *p_block;
115
116
98.4k
    block_BytestreamFlush( p_bytestream );
117
118
98.4k
    p_block = p_bytestream->p_block;
119
98.4k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
98.4k
    else if( !p_block->p_next )
124
82.9k
    {
125
82.9k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
82.9k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
82.9k
        p_bytestream->i_block_offset = 0;
128
82.9k
        p_bytestream->i_total = 0;
129
82.9k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
82.9k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
82.9k
        return p_block;
132
82.9k
    }
133
134
433k
    while( p_block->p_next && p_block->p_next->p_next )
135
417k
        p_block = p_block->p_next;
136
137
15.4k
    block_t *p_block_old = p_block;
138
15.4k
    p_block = p_block->p_next;
139
15.4k
    p_block_old->p_next = NULL;
140
15.4k
    p_bytestream->pp_last = &p_block_old->p_next;
141
15.4k
    if( p_block )
142
15.4k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
15.4k
    return p_block;
145
98.4k
}
h264.c:block_BytestreamPop
Line
Count
Source
113
93.5k
{
114
93.5k
    block_t *p_block;
115
116
93.5k
    block_BytestreamFlush( p_bytestream );
117
118
93.5k
    p_block = p_bytestream->p_block;
119
93.5k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
93.5k
    else if( !p_block->p_next )
124
85.7k
    {
125
85.7k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
85.7k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
85.7k
        p_bytestream->i_block_offset = 0;
128
85.7k
        p_bytestream->i_total = 0;
129
85.7k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
85.7k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
85.7k
        return p_block;
132
85.7k
    }
133
134
10.9k
    while( p_block->p_next && p_block->p_next->p_next )
135
3.09k
        p_block = p_block->p_next;
136
137
7.81k
    block_t *p_block_old = p_block;
138
7.81k
    p_block = p_block->p_next;
139
7.81k
    p_block_old->p_next = NULL;
140
7.81k
    p_bytestream->pp_last = &p_block_old->p_next;
141
7.81k
    if( p_block )
142
7.81k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
7.81k
    return p_block;
145
93.5k
}
hevc.c:block_BytestreamPop
Line
Count
Source
113
3.73M
{
114
3.73M
    block_t *p_block;
115
116
3.73M
    block_BytestreamFlush( p_bytestream );
117
118
3.73M
    p_block = p_bytestream->p_block;
119
3.73M
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
3.73M
    else if( !p_block->p_next )
124
3.71M
    {
125
3.71M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
3.71M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
3.71M
        p_bytestream->i_block_offset = 0;
128
3.71M
        p_bytestream->i_total = 0;
129
3.71M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
3.71M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
3.71M
        return p_block;
132
3.71M
    }
133
134
95.8k
    while( p_block->p_next && p_block->p_next->p_next )
135
80.0k
        p_block = p_block->p_next;
136
137
15.8k
    block_t *p_block_old = p_block;
138
15.8k
    p_block = p_block->p_next;
139
15.8k
    p_block_old->p_next = NULL;
140
15.8k
    p_bytestream->pp_last = &p_block_old->p_next;
141
15.8k
    if( p_block )
142
15.8k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
15.8k
    return p_block;
145
3.73M
}
mlp.c:block_BytestreamPop
Line
Count
Source
113
321k
{
114
321k
    block_t *p_block;
115
116
321k
    block_BytestreamFlush( p_bytestream );
117
118
321k
    p_block = p_bytestream->p_block;
119
321k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
321k
    else if( !p_block->p_next )
124
133k
    {
125
133k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
133k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
133k
        p_bytestream->i_block_offset = 0;
128
133k
        p_bytestream->i_total = 0;
129
133k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
133k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
133k
        return p_block;
132
133k
    }
133
134
1.23M
    while( p_block->p_next && p_block->p_next->p_next )
135
1.04M
        p_block = p_block->p_next;
136
137
188k
    block_t *p_block_old = p_block;
138
188k
    p_block = p_block->p_next;
139
188k
    p_block_old->p_next = NULL;
140
188k
    p_bytestream->pp_last = &p_block_old->p_next;
141
188k
    if( p_block )
142
188k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
188k
    return p_block;
145
321k
}
mpeg4audio.c:block_BytestreamPop
Line
Count
Source
113
5.87k
{
114
5.87k
    block_t *p_block;
115
116
5.87k
    block_BytestreamFlush( p_bytestream );
117
118
5.87k
    p_block = p_bytestream->p_block;
119
5.87k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
5.87k
    else if( !p_block->p_next )
124
5.40k
    {
125
5.40k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
5.40k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
5.40k
        p_bytestream->i_block_offset = 0;
128
5.40k
        p_bytestream->i_total = 0;
129
5.40k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
5.40k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
5.40k
        return p_block;
132
5.40k
    }
133
134
2.10k
    while( p_block->p_next && p_block->p_next->p_next )
135
1.63k
        p_block = p_block->p_next;
136
137
470
    block_t *p_block_old = p_block;
138
470
    p_block = p_block->p_next;
139
470
    p_block_old->p_next = NULL;
140
470
    p_bytestream->pp_last = &p_block_old->p_next;
141
470
    if( p_block )
142
470
        p_bytestream->i_total -= p_block->i_buffer;
143
144
470
    return p_block;
145
5.87k
}
mpeg4video.c:block_BytestreamPop
Line
Count
Source
113
2.67k
{
114
2.67k
    block_t *p_block;
115
116
2.67k
    block_BytestreamFlush( p_bytestream );
117
118
2.67k
    p_block = p_bytestream->p_block;
119
2.67k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
2.67k
    else if( !p_block->p_next )
124
2.03k
    {
125
2.03k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
2.03k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
2.03k
        p_bytestream->i_block_offset = 0;
128
2.03k
        p_bytestream->i_total = 0;
129
2.03k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
2.03k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
2.03k
        return p_block;
132
2.03k
    }
133
134
674
    while( p_block->p_next && p_block->p_next->p_next )
135
40
        p_block = p_block->p_next;
136
137
634
    block_t *p_block_old = p_block;
138
634
    p_block = p_block->p_next;
139
634
    p_block_old->p_next = NULL;
140
634
    p_bytestream->pp_last = &p_block_old->p_next;
141
634
    if( p_block )
142
634
        p_bytestream->i_total -= p_block->i_buffer;
143
144
634
    return p_block;
145
2.67k
}
mpegaudio.c:block_BytestreamPop
Line
Count
Source
113
9.51M
{
114
9.51M
    block_t *p_block;
115
116
9.51M
    block_BytestreamFlush( p_bytestream );
117
118
9.51M
    p_block = p_bytestream->p_block;
119
9.51M
    if( unlikely( p_block == NULL ) )
120
5.08k
    {
121
5.08k
        return NULL;
122
5.08k
    }
123
9.50M
    else if( !p_block->p_next )
124
5.05M
    {
125
5.05M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
5.05M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
5.05M
        p_bytestream->i_block_offset = 0;
128
5.05M
        p_bytestream->i_total = 0;
129
5.05M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
5.05M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
5.05M
        return p_block;
132
5.05M
    }
133
134
88.3M
    while( p_block->p_next && p_block->p_next->p_next )
135
83.8M
        p_block = p_block->p_next;
136
137
4.44M
    block_t *p_block_old = p_block;
138
4.44M
    p_block = p_block->p_next;
139
4.44M
    p_block_old->p_next = NULL;
140
4.44M
    p_bytestream->pp_last = &p_block_old->p_next;
141
4.44M
    if( p_block )
142
4.44M
        p_bytestream->i_total -= p_block->i_buffer;
143
144
4.44M
    return p_block;
145
9.51M
}
mpegvideo.c:block_BytestreamPop
Line
Count
Source
113
282k
{
114
282k
    block_t *p_block;
115
116
282k
    block_BytestreamFlush( p_bytestream );
117
118
282k
    p_block = p_bytestream->p_block;
119
282k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
282k
    else if( !p_block->p_next )
124
235k
    {
125
235k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
235k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
235k
        p_bytestream->i_block_offset = 0;
128
235k
        p_bytestream->i_total = 0;
129
235k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
235k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
235k
        return p_block;
132
235k
    }
133
134
944k
    while( p_block->p_next && p_block->p_next->p_next )
135
897k
        p_block = p_block->p_next;
136
137
47.0k
    block_t *p_block_old = p_block;
138
47.0k
    p_block = p_block->p_next;
139
47.0k
    p_block_old->p_next = NULL;
140
47.0k
    p_bytestream->pp_last = &p_block_old->p_next;
141
47.0k
    if( p_block )
142
47.0k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
47.0k
    return p_block;
145
282k
}
vc1.c:block_BytestreamPop
Line
Count
Source
113
716k
{
114
716k
    block_t *p_block;
115
116
716k
    block_BytestreamFlush( p_bytestream );
117
118
716k
    p_block = p_bytestream->p_block;
119
716k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
716k
    else if( !p_block->p_next )
124
607k
    {
125
607k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
607k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
607k
        p_bytestream->i_block_offset = 0;
128
607k
        p_bytestream->i_total = 0;
129
607k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
607k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
607k
        return p_block;
132
607k
    }
133
134
785k
    while( p_block->p_next && p_block->p_next->p_next )
135
676k
        p_block = p_block->p_next;
136
137
109k
    block_t *p_block_old = p_block;
138
109k
    p_block = p_block->p_next;
139
109k
    p_block_old->p_next = NULL;
140
109k
    p_bytestream->pp_last = &p_block_old->p_next;
141
109k
    if( p_block )
142
109k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
109k
    return p_block;
145
716k
}
Unexecuted instantiation: av1.c:block_BytestreamPop
mjpeg.c:block_BytestreamPop
Line
Count
Source
113
119
{
114
119
    block_t *p_block;
115
116
119
    block_BytestreamFlush( p_bytestream );
117
118
119
    p_block = p_bytestream->p_block;
119
119
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
119
    else if( !p_block->p_next )
124
109
    {
125
109
        p_block->p_buffer += p_bytestream->i_block_offset;
126
109
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
109
        p_bytestream->i_block_offset = 0;
128
109
        p_bytestream->i_total = 0;
129
109
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
109
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
109
        return p_block;
132
109
    }
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
119
}
146
147
static inline int block_WaitBytes( block_bytestream_t *p_bytestream,
148
                                   size_t i_data )
149
13.0M
{
150
13.0M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
12.9M
        return VLC_SUCCESS;
152
37.6k
    return VLC_EGENERIC;
153
13.0M
}
a52.c:block_WaitBytes
Line
Count
Source
149
2.99M
{
150
2.99M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
2.96M
        return VLC_SUCCESS;
152
30.9k
    return VLC_EGENERIC;
153
2.99M
}
dts.c:block_WaitBytes
Line
Count
Source
149
207k
{
150
207k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
202k
        return VLC_SUCCESS;
152
5.34k
    return VLC_EGENERIC;
153
207k
}
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
327k
{
150
327k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
325k
        return VLC_SUCCESS;
152
1.40k
    return VLC_EGENERIC;
153
327k
}
Unexecuted instantiation: mpeg4audio.c:block_WaitBytes
Unexecuted instantiation: mpeg4video.c:block_WaitBytes
mpegaudio.c:block_WaitBytes
Line
Count
Source
149
9.46M
{
150
9.46M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
9.46M
        return VLC_SUCCESS;
152
0
    return VLC_EGENERIC;
153
9.46M
}
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
378M
{
158
378M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
2.84M
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
375M
    size_t i_offset = p_bytestream->i_block_offset;
163
375M
    size_t i_size = i_data;
164
375M
    for( block_t *p_block = p_bytestream->p_block;
165
403M
         p_block != NULL; p_block = p_block->p_next )
166
403M
    {
167
403M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
403M
        i_size -= i_copy;
169
170
403M
        if( i_copy )
171
398M
        {
172
398M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
398M
            p_data += i_copy;
174
398M
        }
175
176
403M
        i_offset = 0;
177
178
403M
        if( !i_size ) break;
179
403M
    }
180
181
375M
    return VLC_SUCCESS;
182
378M
}
a52.c:block_PeekBytes
Line
Count
Source
157
68.0M
{
158
68.0M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
941k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
67.0M
    size_t i_offset = p_bytestream->i_block_offset;
163
67.0M
    size_t i_size = i_data;
164
67.0M
    for( block_t *p_block = p_bytestream->p_block;
165
69.4M
         p_block != NULL; p_block = p_block->p_next )
166
69.4M
    {
167
69.4M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
69.4M
        i_size -= i_copy;
169
170
69.4M
        if( i_copy )
171
68.3M
        {
172
68.3M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
68.3M
            p_data += i_copy;
174
68.3M
        }
175
176
69.4M
        i_offset = 0;
177
178
69.4M
        if( !i_size ) break;
179
69.4M
    }
180
181
67.0M
    return VLC_SUCCESS;
182
68.0M
}
dts.c:block_PeekBytes
Line
Count
Source
157
56.1M
{
158
56.1M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
1.03M
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
55.0M
    size_t i_offset = p_bytestream->i_block_offset;
163
55.0M
    size_t i_size = i_data;
164
55.0M
    for( block_t *p_block = p_bytestream->p_block;
165
69.7M
         p_block != NULL; p_block = p_block->p_next )
166
69.7M
    {
167
69.7M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
69.7M
        i_size -= i_copy;
169
170
69.7M
        if( i_copy )
171
67.4M
        {
172
67.4M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
67.4M
            p_data += i_copy;
174
67.4M
        }
175
176
69.7M
        i_offset = 0;
177
178
69.7M
        if( !i_size ) break;
179
69.7M
    }
180
181
55.0M
    return VLC_SUCCESS;
182
56.1M
}
flac.c:block_PeekBytes
Line
Count
Source
157
1.48M
{
158
1.48M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
9.58k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
1.47M
    size_t i_offset = p_bytestream->i_block_offset;
163
1.47M
    size_t i_size = i_data;
164
1.47M
    for( block_t *p_block = p_bytestream->p_block;
165
1.49M
         p_block != NULL; p_block = p_block->p_next )
166
1.49M
    {
167
1.49M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
1.49M
        i_size -= i_copy;
169
170
1.49M
        if( i_copy )
171
1.49M
        {
172
1.49M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
1.49M
            p_data += i_copy;
174
1.49M
        }
175
176
1.49M
        i_offset = 0;
177
178
1.49M
        if( !i_size ) break;
179
1.49M
    }
180
181
1.47M
    return VLC_SUCCESS;
182
1.48M
}
Unexecuted instantiation: h264.c:block_PeekBytes
Unexecuted instantiation: hevc.c:block_PeekBytes
mlp.c:block_PeekBytes
Line
Count
Source
157
19.0M
{
158
19.0M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
48.6k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
18.9M
    size_t i_offset = p_bytestream->i_block_offset;
163
18.9M
    size_t i_size = i_data;
164
18.9M
    for( block_t *p_block = p_bytestream->p_block;
165
25.1M
         p_block != NULL; p_block = p_block->p_next )
166
25.1M
    {
167
25.1M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
25.1M
        i_size -= i_copy;
169
170
25.1M
        if( i_copy )
171
24.9M
        {
172
24.9M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
24.9M
            p_data += i_copy;
174
24.9M
        }
175
176
25.1M
        i_offset = 0;
177
178
25.1M
        if( !i_size ) break;
179
25.1M
    }
180
181
18.9M
    return VLC_SUCCESS;
182
19.0M
}
mpeg4audio.c:block_PeekBytes
Line
Count
Source
157
25.6M
{
158
25.6M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
39.0k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
25.5M
    size_t i_offset = p_bytestream->i_block_offset;
163
25.5M
    size_t i_size = i_data;
164
25.5M
    for( block_t *p_block = p_bytestream->p_block;
165
25.7M
         p_block != NULL; p_block = p_block->p_next )
166
25.7M
    {
167
25.7M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
25.7M
        i_size -= i_copy;
169
170
25.7M
        if( i_copy )
171
25.6M
        {
172
25.6M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
25.6M
            p_data += i_copy;
174
25.6M
        }
175
176
25.7M
        i_offset = 0;
177
178
25.7M
        if( !i_size ) break;
179
25.7M
    }
180
181
25.5M
    return VLC_SUCCESS;
182
25.6M
}
Unexecuted instantiation: mpeg4video.c:block_PeekBytes
mpegaudio.c:block_PeekBytes
Line
Count
Source
157
208M
{
158
208M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
775k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
207M
    size_t i_offset = p_bytestream->i_block_offset;
163
207M
    size_t i_size = i_data;
164
207M
    for( block_t *p_block = p_bytestream->p_block;
165
212M
         p_block != NULL; p_block = p_block->p_next )
166
212M
    {
167
212M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
212M
        i_size -= i_copy;
169
170
212M
        if( i_copy )
171
210M
        {
172
210M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
210M
            p_data += i_copy;
174
210M
        }
175
176
212M
        i_offset = 0;
177
178
212M
        if( !i_size ) break;
179
212M
    }
180
181
207M
    return VLC_SUCCESS;
182
208M
}
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
344M
{
187
344M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
146k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
344M
    size_t i_offset = p_bytestream->i_block_offset;
192
344M
    size_t i_size = i_data;
193
344M
    size_t i_copy = 0;
194
344M
    block_t *p_block;
195
344M
    for( p_block = p_bytestream->p_block;
196
356M
         p_block != NULL; p_block = p_block->p_next )
197
356M
    {
198
356M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
356M
        i_size -= i_copy;
200
201
356M
        if( i_copy && p_data != NULL )
202
35.3M
        {
203
35.3M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
35.3M
            p_data += i_copy;
205
35.3M
        }
206
207
356M
        if( i_size == 0 )
208
344M
            break;
209
210
12.3M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
12.3M
        i_offset = 0;
212
12.3M
    }
213
214
344M
    p_bytestream->p_block = p_block;
215
344M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
344M
    return VLC_SUCCESS;
218
344M
}
a52.c:block_GetBytes
Line
Count
Source
186
62.7M
{
187
62.7M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
99.3k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
62.6M
    size_t i_offset = p_bytestream->i_block_offset;
192
62.6M
    size_t i_size = i_data;
193
62.6M
    size_t i_copy = 0;
194
62.6M
    block_t *p_block;
195
62.6M
    for( p_block = p_bytestream->p_block;
196
64.2M
         p_block != NULL; p_block = p_block->p_next )
197
64.2M
    {
198
64.2M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
64.2M
        i_size -= i_copy;
200
201
64.2M
        if( i_copy && p_data != NULL )
202
3.47M
        {
203
3.47M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
3.47M
            p_data += i_copy;
205
3.47M
        }
206
207
64.2M
        if( i_size == 0 )
208
62.6M
            break;
209
210
1.51M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
1.51M
        i_offset = 0;
212
1.51M
    }
213
214
62.6M
    p_bytestream->p_block = p_block;
215
62.6M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
62.6M
    return VLC_SUCCESS;
218
62.7M
}
dts.c:block_GetBytes
Line
Count
Source
186
53.4M
{
187
53.4M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
24.5k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
53.3M
    size_t i_offset = p_bytestream->i_block_offset;
192
53.3M
    size_t i_size = i_data;
193
53.3M
    size_t i_copy = 0;
194
53.3M
    block_t *p_block;
195
53.3M
    for( p_block = p_bytestream->p_block;
196
55.8M
         p_block != NULL; p_block = p_block->p_next )
197
55.8M
    {
198
55.8M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
55.8M
        i_size -= i_copy;
200
201
55.8M
        if( i_copy && p_data != NULL )
202
326k
        {
203
326k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
326k
            p_data += i_copy;
205
326k
        }
206
207
55.8M
        if( i_size == 0 )
208
53.3M
            break;
209
210
2.41M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
2.41M
        i_offset = 0;
212
2.41M
    }
213
214
53.3M
    p_bytestream->p_block = p_block;
215
53.3M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
53.3M
    return VLC_SUCCESS;
218
53.4M
}
flac.c:block_GetBytes
Line
Count
Source
186
2.97M
{
187
2.97M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
192
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
2.97M
    size_t i_offset = p_bytestream->i_block_offset;
192
2.97M
    size_t i_size = i_data;
193
2.97M
    size_t i_copy = 0;
194
2.97M
    block_t *p_block;
195
2.97M
    for( p_block = p_bytestream->p_block;
196
3.03M
         p_block != NULL; p_block = p_block->p_next )
197
3.03M
    {
198
3.03M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
3.03M
        i_size -= i_copy;
200
201
3.03M
        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
3.03M
        if( i_size == 0 )
208
2.97M
            break;
209
210
61.2k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
61.2k
        i_offset = 0;
212
61.2k
    }
213
214
2.97M
    p_bytestream->p_block = p_block;
215
2.97M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
2.97M
    return VLC_SUCCESS;
218
2.97M
}
h264.c:block_GetBytes
Line
Count
Source
186
1.69M
{
187
1.69M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
1.69M
    size_t i_offset = p_bytestream->i_block_offset;
192
1.69M
    size_t i_size = i_data;
193
1.69M
    size_t i_copy = 0;
194
1.69M
    block_t *p_block;
195
1.69M
    for( p_block = p_bytestream->p_block;
196
1.78M
         p_block != NULL; p_block = p_block->p_next )
197
1.78M
    {
198
1.78M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
1.78M
        i_size -= i_copy;
200
201
1.78M
        if( i_copy && p_data != NULL )
202
1.67M
        {
203
1.67M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
1.67M
            p_data += i_copy;
205
1.67M
        }
206
207
1.78M
        if( i_size == 0 )
208
1.69M
            break;
209
210
86.0k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
86.0k
        i_offset = 0;
212
86.0k
    }
213
214
1.69M
    p_bytestream->p_block = p_block;
215
1.69M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
1.69M
    return VLC_SUCCESS;
218
1.69M
}
hevc.c:block_GetBytes
Line
Count
Source
186
8.40M
{
187
8.40M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
8.40M
    size_t i_offset = p_bytestream->i_block_offset;
192
8.40M
    size_t i_size = i_data;
193
8.40M
    size_t i_copy = 0;
194
8.40M
    block_t *p_block;
195
8.40M
    for( p_block = p_bytestream->p_block;
196
10.3M
         p_block != NULL; p_block = p_block->p_next )
197
10.3M
    {
198
10.3M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
10.3M
        i_size -= i_copy;
200
201
10.3M
        if( i_copy && p_data != NULL )
202
10.3M
        {
203
10.3M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
10.3M
            p_data += i_copy;
205
10.3M
        }
206
207
10.3M
        if( i_size == 0 )
208
8.40M
            break;
209
210
1.96M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
1.96M
        i_offset = 0;
212
1.96M
    }
213
214
8.40M
    p_bytestream->p_block = p_block;
215
8.40M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
8.40M
    return VLC_SUCCESS;
218
8.40M
}
mlp.c:block_GetBytes
Line
Count
Source
186
18.3M
{
187
18.3M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
18.3M
    size_t i_offset = p_bytestream->i_block_offset;
192
18.3M
    size_t i_size = i_data;
193
18.3M
    size_t i_copy = 0;
194
18.3M
    block_t *p_block;
195
18.3M
    for( p_block = p_bytestream->p_block;
196
18.4M
         p_block != NULL; p_block = p_block->p_next )
197
18.4M
    {
198
18.4M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
18.4M
        i_size -= i_copy;
200
201
18.4M
        if( i_copy && p_data != NULL )
202
338k
        {
203
338k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
338k
            p_data += i_copy;
205
338k
        }
206
207
18.4M
        if( i_size == 0 )
208
18.3M
            break;
209
210
58.0k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
58.0k
        i_offset = 0;
212
58.0k
    }
213
214
18.3M
    p_bytestream->p_block = p_block;
215
18.3M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
18.3M
    return VLC_SUCCESS;
218
18.3M
}
mpeg4audio.c:block_GetBytes
Line
Count
Source
186
25.5M
{
187
25.5M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
25.5M
    size_t i_offset = p_bytestream->i_block_offset;
192
25.5M
    size_t i_size = i_data;
193
25.5M
    size_t i_copy = 0;
194
25.5M
    block_t *p_block;
195
25.5M
    for( p_block = p_bytestream->p_block;
196
25.6M
         p_block != NULL; p_block = p_block->p_next )
197
25.6M
    {
198
25.6M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
25.6M
        i_size -= i_copy;
200
201
25.6M
        if( i_copy && p_data != NULL )
202
30.4k
        {
203
30.4k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
30.4k
            p_data += i_copy;
205
30.4k
        }
206
207
25.6M
        if( i_size == 0 )
208
25.5M
            break;
209
210
63.5k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
63.5k
        i_offset = 0;
212
63.5k
    }
213
214
25.5M
    p_bytestream->p_block = p_block;
215
25.5M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
25.5M
    return VLC_SUCCESS;
218
25.5M
}
mpeg4video.c:block_GetBytes
Line
Count
Source
186
421k
{
187
421k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
421k
    size_t i_offset = p_bytestream->i_block_offset;
192
421k
    size_t i_size = i_data;
193
421k
    size_t i_copy = 0;
194
421k
    block_t *p_block;
195
421k
    for( p_block = p_bytestream->p_block;
196
466k
         p_block != NULL; p_block = p_block->p_next )
197
466k
    {
198
466k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
466k
        i_size -= i_copy;
200
201
466k
        if( i_copy && p_data != NULL )
202
430k
        {
203
430k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
430k
            p_data += i_copy;
205
430k
        }
206
207
466k
        if( i_size == 0 )
208
421k
            break;
209
210
45.1k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
45.1k
        i_offset = 0;
212
45.1k
    }
213
214
421k
    p_bytestream->p_block = p_block;
215
421k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
421k
    return VLC_SUCCESS;
218
421k
}
mpegaudio.c:block_GetBytes
Line
Count
Source
186
165M
{
187
165M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
22.9k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
165M
    size_t i_offset = p_bytestream->i_block_offset;
192
165M
    size_t i_size = i_data;
193
165M
    size_t i_copy = 0;
194
165M
    block_t *p_block;
195
165M
    for( p_block = p_bytestream->p_block;
196
171M
         p_block != NULL; p_block = p_block->p_next )
197
171M
    {
198
171M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
171M
        i_size -= i_copy;
200
201
171M
        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
171M
        if( i_size == 0 )
208
165M
            break;
209
210
5.82M
        p_bytestream->i_base_offset += p_block->i_buffer;
211
5.82M
        i_offset = 0;
212
5.82M
    }
213
214
165M
    p_bytestream->p_block = p_block;
215
165M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
165M
    return VLC_SUCCESS;
218
165M
}
mpegvideo.c:block_GetBytes
Line
Count
Source
186
2.92M
{
187
2.92M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
2.92M
    size_t i_offset = p_bytestream->i_block_offset;
192
2.92M
    size_t i_size = i_data;
193
2.92M
    size_t i_copy = 0;
194
2.92M
    block_t *p_block;
195
2.92M
    for( p_block = p_bytestream->p_block;
196
3.16M
         p_block != NULL; p_block = p_block->p_next )
197
3.16M
    {
198
3.16M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
3.16M
        i_size -= i_copy;
200
201
3.16M
        if( i_copy && p_data != NULL )
202
3.06M
        {
203
3.06M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
3.06M
            p_data += i_copy;
205
3.06M
        }
206
207
3.16M
        if( i_size == 0 )
208
2.92M
            break;
209
210
241k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
241k
        i_offset = 0;
212
241k
    }
213
214
2.92M
    p_bytestream->p_block = p_block;
215
2.92M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
2.92M
    return VLC_SUCCESS;
218
2.92M
}
vc1.c:block_GetBytes
Line
Count
Source
186
1.87M
{
187
1.87M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
1.87M
    size_t i_offset = p_bytestream->i_block_offset;
192
1.87M
    size_t i_size = i_data;
193
1.87M
    size_t i_copy = 0;
194
1.87M
    block_t *p_block;
195
1.87M
    for( p_block = p_bytestream->p_block;
196
1.89M
         p_block != NULL; p_block = p_block->p_next )
197
1.89M
    {
198
1.89M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
1.89M
        i_size -= i_copy;
200
201
1.89M
        if( i_copy && p_data != NULL )
202
1.88M
        {
203
1.88M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
1.88M
            p_data += i_copy;
205
1.88M
        }
206
207
1.89M
        if( i_size == 0 )
208
1.87M
            break;
209
210
20.0k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
20.0k
        i_offset = 0;
212
20.0k
    }
213
214
1.87M
    p_bytestream->p_block = p_block;
215
1.87M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
1.87M
    return VLC_SUCCESS;
218
1.87M
}
Unexecuted instantiation: av1.c:block_GetBytes
mjpeg.c:block_GetBytes
Line
Count
Source
186
142
{
187
142
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
142
    size_t i_offset = p_bytestream->i_block_offset;
192
142
    size_t i_size = i_data;
193
142
    size_t i_copy = 0;
194
142
    block_t *p_block;
195
142
    for( p_block = p_bytestream->p_block;
196
2.10k
         p_block != NULL; p_block = p_block->p_next )
197
2.10k
    {
198
2.10k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
2.10k
        i_size -= i_copy;
200
201
2.10k
        if( i_copy && p_data != NULL )
202
458
        {
203
458
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
458
            p_data += i_copy;
205
458
        }
206
207
2.10k
        if( i_size == 0 )
208
142
            break;
209
210
1.96k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
1.96k
        i_offset = 0;
212
1.96k
    }
213
214
142
    p_bytestream->p_block = p_block;
215
142
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
142
    return VLC_SUCCESS;
218
142
}
219
220
static inline int block_SkipBytes( block_bytestream_t *p_bytestream,
221
                                   size_t i_data )
222
2.35M
{
223
2.35M
    return block_GetBytes( p_bytestream, NULL, i_data );
224
2.35M
}
a52.c:block_SkipBytes
Line
Count
Source
222
313k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
313k
}
dts.c:block_SkipBytes
Line
Count
Source
222
91.7k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
91.7k
}
flac.c:block_SkipBytes
Line
Count
Source
222
1.68M
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
1.68M
}
h264.c:block_SkipBytes
Line
Count
Source
222
98.8k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
98.8k
}
hevc.c:block_SkipBytes
Line
Count
Source
222
43.2k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
43.2k
}
Unexecuted instantiation: mlp.c:block_SkipBytes
mpeg4audio.c:block_SkipBytes
Line
Count
Source
222
14.9k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
14.9k
}
mpeg4video.c:block_SkipBytes
Line
Count
Source
222
31.9k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
31.9k
}
Unexecuted instantiation: mpegaudio.c:block_SkipBytes
mpegvideo.c:block_SkipBytes
Line
Count
Source
222
64.2k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
64.2k
}
vc1.c:block_SkipBytes
Line
Count
Source
222
9.32k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
9.32k
}
Unexecuted instantiation: av1.c:block_SkipBytes
mjpeg.c:block_SkipBytes
Line
Count
Source
222
18
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
18
}
225
226
static inline int block_SkipByte( block_bytestream_t *p_bytestream )
227
313M
{
228
313M
    return block_GetBytes( p_bytestream, NULL, 1 );
229
313M
}
a52.c:block_SkipByte
Line
Count
Source
227
59.5M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
59.5M
}
dts.c:block_SkipByte
Line
Count
Source
227
53.1M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
53.1M
}
flac.c:block_SkipByte
Line
Count
Source
227
1.28M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
1.28M
}
Unexecuted instantiation: h264.c:block_SkipByte
Unexecuted instantiation: hevc.c:block_SkipByte
mlp.c:block_SkipByte
Line
Count
Source
227
18.0M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
18.0M
}
mpeg4audio.c:block_SkipByte
Line
Count
Source
227
25.5M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
25.5M
}
Unexecuted instantiation: mpeg4video.c:block_SkipByte
mpegaudio.c:block_SkipByte
Line
Count
Source
227
156M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
156M
}
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
938M
{
234
938M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
938M
    if( i_remain < i_data + i_peek_offset )
236
13.2M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
925M
    size_t i_offset = p_bytestream->i_block_offset;
240
925M
    size_t i_size = i_peek_offset;
241
925M
    size_t i_copy = 0;
242
925M
    block_t *p_block;
243
925M
    for( p_block = p_bytestream->p_block;
244
8.33G
         p_block != NULL; p_block = p_block->p_next )
245
8.33G
    {
246
8.33G
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
8.33G
        i_size -= i_copy;
248
249
8.33G
        if( !i_size ) break;
250
251
7.40G
        i_offset = 0;
252
7.40G
    }
253
254
    /* Copy the data */
255
925M
    i_offset += i_copy;
256
925M
    i_size = i_data;
257
988M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
988M
    {
259
988M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
988M
        i_size -= i_copy;
261
262
988M
        if( i_copy )
263
977M
        {
264
977M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
977M
            p_data += i_copy;
266
977M
        }
267
268
988M
        i_offset = 0;
269
270
988M
        if( !i_size ) break;
271
988M
    }
272
273
925M
    return VLC_SUCCESS;
274
938M
}
a52.c:block_PeekOffsetBytes
Line
Count
Source
233
4.87M
{
234
4.87M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
4.87M
    if( i_remain < i_data + i_peek_offset )
236
1.90M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
2.96M
    size_t i_offset = p_bytestream->i_block_offset;
240
2.96M
    size_t i_size = i_peek_offset;
241
2.96M
    size_t i_copy = 0;
242
2.96M
    block_t *p_block;
243
2.96M
    for( p_block = p_bytestream->p_block;
244
49.6M
         p_block != NULL; p_block = p_block->p_next )
245
49.6M
    {
246
49.6M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
49.6M
        i_size -= i_copy;
248
249
49.6M
        if( !i_size ) break;
250
251
46.6M
        i_offset = 0;
252
46.6M
    }
253
254
    /* Copy the data */
255
2.96M
    i_offset += i_copy;
256
2.96M
    i_size = i_data;
257
4.03M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
4.03M
    {
259
4.03M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
4.03M
        i_size -= i_copy;
261
262
4.03M
        if( i_copy )
263
3.79M
        {
264
3.79M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
3.79M
            p_data += i_copy;
266
3.79M
        }
267
268
4.03M
        i_offset = 0;
269
270
4.03M
        if( !i_size ) break;
271
4.03M
    }
272
273
2.96M
    return VLC_SUCCESS;
274
4.87M
}
dts.c:block_PeekOffsetBytes
Line
Count
Source
233
34.1M
{
234
34.1M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
34.1M
    if( i_remain < i_data + i_peek_offset )
236
1.71M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
32.4M
    size_t i_offset = p_bytestream->i_block_offset;
240
32.4M
    size_t i_size = i_peek_offset;
241
32.4M
    size_t i_copy = 0;
242
32.4M
    block_t *p_block;
243
32.4M
    for( p_block = p_bytestream->p_block;
244
396M
         p_block != NULL; p_block = p_block->p_next )
245
396M
    {
246
396M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
396M
        i_size -= i_copy;
248
249
396M
        if( !i_size ) break;
250
251
363M
        i_offset = 0;
252
363M
    }
253
254
    /* Copy the data */
255
32.4M
    i_offset += i_copy;
256
32.4M
    i_size = i_data;
257
32.7M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
32.7M
    {
259
32.7M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
32.7M
        i_size -= i_copy;
261
262
32.7M
        if( i_copy )
263
32.6M
        {
264
32.6M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
32.6M
            p_data += i_copy;
266
32.6M
        }
267
268
32.7M
        i_offset = 0;
269
270
32.7M
        if( !i_size ) break;
271
32.7M
    }
272
273
32.4M
    return VLC_SUCCESS;
274
34.1M
}
flac.c:block_PeekOffsetBytes
Line
Count
Source
233
31.3M
{
234
31.3M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
31.3M
    if( i_remain < i_data + i_peek_offset )
236
13.1k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
31.3M
    size_t i_offset = p_bytestream->i_block_offset;
240
31.3M
    size_t i_size = i_peek_offset;
241
31.3M
    size_t i_copy = 0;
242
31.3M
    block_t *p_block;
243
31.3M
    for( p_block = p_bytestream->p_block;
244
1.10G
         p_block != NULL; p_block = p_block->p_next )
245
1.10G
    {
246
1.10G
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
1.10G
        i_size -= i_copy;
248
249
1.10G
        if( !i_size ) break;
250
251
1.07G
        i_offset = 0;
252
1.07G
    }
253
254
    /* Copy the data */
255
31.3M
    i_offset += i_copy;
256
31.3M
    i_size = i_data;
257
32.9M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
32.9M
    {
259
32.9M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
32.9M
        i_size -= i_copy;
261
262
32.9M
        if( i_copy )
263
31.5M
        {
264
31.5M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
31.5M
            p_data += i_copy;
266
31.5M
        }
267
268
32.9M
        i_offset = 0;
269
270
32.9M
        if( !i_size ) break;
271
32.9M
    }
272
273
31.3M
    return VLC_SUCCESS;
274
31.3M
}
Unexecuted instantiation: h264.c:block_PeekOffsetBytes
Unexecuted instantiation: hevc.c:block_PeekOffsetBytes
mlp.c:block_PeekOffsetBytes
Line
Count
Source
233
784k
{
234
784k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
784k
    if( i_remain < i_data + i_peek_offset )
236
192k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
592k
    size_t i_offset = p_bytestream->i_block_offset;
240
592k
    size_t i_size = i_peek_offset;
241
592k
    size_t i_copy = 0;
242
592k
    block_t *p_block;
243
592k
    for( p_block = p_bytestream->p_block;
244
813k
         p_block != NULL; p_block = p_block->p_next )
245
813k
    {
246
813k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
813k
        i_size -= i_copy;
248
249
813k
        if( !i_size ) break;
250
251
221k
        i_offset = 0;
252
221k
    }
253
254
    /* Copy the data */
255
592k
    i_offset += i_copy;
256
592k
    i_size = i_data;
257
1.58M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
1.58M
    {
259
1.58M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
1.58M
        i_size -= i_copy;
261
262
1.58M
        if( i_copy )
263
1.44M
        {
264
1.44M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
1.44M
            p_data += i_copy;
266
1.44M
        }
267
268
1.58M
        i_offset = 0;
269
270
1.58M
        if( !i_size ) break;
271
1.58M
    }
272
273
592k
    return VLC_SUCCESS;
274
784k
}
mpeg4audio.c:block_PeekOffsetBytes
Line
Count
Source
233
131k
{
234
131k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
131k
    if( i_remain < i_data + i_peek_offset )
236
62.4k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
69.5k
    size_t i_offset = p_bytestream->i_block_offset;
240
69.5k
    size_t i_size = i_peek_offset;
241
69.5k
    size_t i_copy = 0;
242
69.5k
    block_t *p_block;
243
69.5k
    for( p_block = p_bytestream->p_block;
244
699k
         p_block != NULL; p_block = p_block->p_next )
245
699k
    {
246
699k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
699k
        i_size -= i_copy;
248
249
699k
        if( !i_size ) break;
250
251
629k
        i_offset = 0;
252
629k
    }
253
254
    /* Copy the data */
255
69.5k
    i_offset += i_copy;
256
69.5k
    i_size = i_data;
257
72.0k
    for( ; p_block != NULL; p_block = p_block->p_next )
258
72.0k
    {
259
72.0k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
72.0k
        i_size -= i_copy;
261
262
72.0k
        if( i_copy )
263
71.0k
        {
264
71.0k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
71.0k
            p_data += i_copy;
266
71.0k
        }
267
268
72.0k
        i_offset = 0;
269
270
72.0k
        if( !i_size ) break;
271
72.0k
    }
272
273
69.5k
    return VLC_SUCCESS;
274
131k
}
Unexecuted instantiation: mpeg4video.c:block_PeekOffsetBytes
mpegaudio.c:block_PeekOffsetBytes
Line
Count
Source
233
867M
{
234
867M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
867M
    if( i_remain < i_data + i_peek_offset )
236
9.39M
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
858M
    size_t i_offset = p_bytestream->i_block_offset;
240
858M
    size_t i_size = i_peek_offset;
241
858M
    size_t i_copy = 0;
242
858M
    block_t *p_block;
243
858M
    for( p_block = p_bytestream->p_block;
244
6.77G
         p_block != NULL; p_block = p_block->p_next )
245
6.77G
    {
246
6.77G
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
6.77G
        i_size -= i_copy;
248
249
6.77G
        if( !i_size ) break;
250
251
5.91G
        i_offset = 0;
252
5.91G
    }
253
254
    /* Copy the data */
255
858M
    i_offset += i_copy;
256
858M
    i_size = i_data;
257
917M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
917M
    {
259
917M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
917M
        i_size -= i_copy;
261
262
917M
        if( i_copy )
263
908M
        {
264
908M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
908M
            p_data += i_copy;
266
908M
        }
267
268
917M
        i_offset = 0;
269
270
917M
        if( !i_size ) break;
271
917M
    }
272
273
858M
    return VLC_SUCCESS;
274
867M
}
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
60.0M
{
285
60.0M
    block_t *p_block, *p_block_backup = NULL;
286
60.0M
    ssize_t i_size;
287
60.0M
    size_t i_offset, i_offset_backup = 0;
288
60.0M
    size_t i_caller_offset_backup = 0;
289
60.0M
    size_t i_match;
290
291
    /* Find the right place */
292
60.0M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
60.0M
    for( p_block = p_bytestream->p_block;
294
708M
         p_block != NULL; p_block = p_block->p_next )
295
708M
    {
296
708M
        i_size -= p_block->i_buffer;
297
708M
        if( i_size < 0 ) break;
298
708M
    }
299
300
60.0M
    if( unlikely( i_size >= 0 ) )
301
284k
    {
302
        /* Not enough data, bail out */
303
284k
        return VLC_EGENERIC;
304
284k
    }
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
59.7M
    i_size += p_block->i_buffer;
310
59.7M
    *pi_offset -= i_size;
311
59.7M
    i_match = 0;
312
246M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
242M
    {
314
582M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
396M
        {
316
            /* Use optimized helper when possible */
317
396M
            if( p_startcode_helper && !i_match &&
318
243M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
103M
            {
320
103M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
103M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
103M
                if( p_res )
323
53.8M
                {
324
53.8M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
53.8M
                    return VLC_SUCCESS;
326
53.8M
                }
327
                /* Then parsing boundary with legacy code */
328
50.0M
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
50.0M
            }
330
331
396M
            bool b_matched = ( p_startcode_matcher )
332
342M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
342M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
342M
            if( b_matched )
335
128M
            {
336
128M
                if( i_match == 0 )
337
80.1M
                {
338
80.1M
                    p_block_backup = p_block;
339
80.1M
                    i_offset_backup = i_offset;
340
80.1M
                    i_caller_offset_backup = *pi_offset;
341
80.1M
                }
342
343
128M
                if( i_match + 1 == i_startcode_length )
344
2.40M
                {
345
                    /* We have it */
346
2.40M
                    *pi_offset += i_offset - i_match;
347
2.40M
                    return VLC_SUCCESS;
348
2.40M
                }
349
350
126M
                i_match++;
351
126M
            }
352
213M
            else if ( i_match != 0 )
353
77.3M
            {
354
                /* False positive */
355
77.3M
                p_block = p_block_backup;
356
77.3M
                i_offset = i_offset_backup;
357
77.3M
                *pi_offset = i_caller_offset_backup;
358
77.3M
                i_match = 0;
359
77.3M
            }
360
361
342M
        }
362
186M
        i_size = 0;
363
186M
        *pi_offset += i_offset;
364
186M
    }
365
366
3.50M
    *pi_offset -= i_match;
367
3.50M
    return VLC_EGENERIC;
368
59.7M
}
a52.c:block_FindStartcodeFromOffset
Line
Count
Source
284
2.38M
{
285
2.38M
    block_t *p_block, *p_block_backup = NULL;
286
2.38M
    ssize_t i_size;
287
2.38M
    size_t i_offset, i_offset_backup = 0;
288
2.38M
    size_t i_caller_offset_backup = 0;
289
2.38M
    size_t i_match;
290
291
    /* Find the right place */
292
2.38M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
2.38M
    for( p_block = p_bytestream->p_block;
294
2.41M
         p_block != NULL; p_block = p_block->p_next )
295
2.41M
    {
296
2.41M
        i_size -= p_block->i_buffer;
297
2.41M
        if( i_size < 0 ) break;
298
2.41M
    }
299
300
2.38M
    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
2.38M
    i_size += p_block->i_buffer;
310
2.38M
    *pi_offset -= i_size;
311
2.38M
    i_match = 0;
312
3.55M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
3.54M
    {
314
30.8M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
29.6M
        {
316
            /* Use optimized helper when possible */
317
29.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
29.6M
            bool b_matched = ( p_startcode_matcher )
332
29.6M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
29.6M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
29.6M
            if( b_matched )
335
5.21M
            {
336
5.21M
                if( i_match == 0 )
337
2.83M
                {
338
2.83M
                    p_block_backup = p_block;
339
2.83M
                    i_offset_backup = i_offset;
340
2.83M
                    i_caller_offset_backup = *pi_offset;
341
2.83M
                }
342
343
5.21M
                if( i_match + 1 == i_startcode_length )
344
2.37M
                {
345
                    /* We have it */
346
2.37M
                    *pi_offset += i_offset - i_match;
347
2.37M
                    return VLC_SUCCESS;
348
2.37M
                }
349
350
2.83M
                i_match++;
351
2.83M
            }
352
24.4M
            else if ( i_match != 0 )
353
462k
            {
354
                /* False positive */
355
462k
                p_block = p_block_backup;
356
462k
                i_offset = i_offset_backup;
357
462k
                *pi_offset = i_caller_offset_backup;
358
462k
                i_match = 0;
359
462k
            }
360
361
29.6M
        }
362
1.17M
        i_size = 0;
363
1.17M
        *pi_offset += i_offset;
364
1.17M
    }
365
366
5.49k
    *pi_offset -= i_match;
367
5.49k
    return VLC_EGENERIC;
368
2.38M
}
Unexecuted instantiation: dts.c:block_FindStartcodeFromOffset
flac.c:block_FindStartcodeFromOffset
Line
Count
Source
284
23.9M
{
285
23.9M
    block_t *p_block, *p_block_backup = NULL;
286
23.9M
    ssize_t i_size;
287
23.9M
    size_t i_offset, i_offset_backup = 0;
288
23.9M
    size_t i_caller_offset_backup = 0;
289
23.9M
    size_t i_match;
290
291
    /* Find the right place */
292
23.9M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
23.9M
    for( p_block = p_bytestream->p_block;
294
671M
         p_block != NULL; p_block = p_block->p_next )
295
671M
    {
296
671M
        i_size -= p_block->i_buffer;
297
671M
        if( i_size < 0 ) break;
298
671M
    }
299
300
23.9M
    if( unlikely( i_size >= 0 ) )
301
4.93k
    {
302
        /* Not enough data, bail out */
303
4.93k
        return VLC_EGENERIC;
304
4.93k
    }
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
23.9M
    i_size += p_block->i_buffer;
310
23.9M
    *pi_offset -= i_size;
311
23.9M
    i_match = 0;
312
24.9M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
24.8M
    {
314
25.8M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
24.8M
        {
316
            /* Use optimized helper when possible */
317
24.8M
            if( p_startcode_helper && !i_match &&
318
24.8M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
24.6M
            {
320
24.6M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
24.6M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
24.6M
                if( p_res )
323
23.8M
                {
324
23.8M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
23.8M
                    return VLC_SUCCESS;
326
23.8M
                }
327
                /* Then parsing boundary with legacy code */
328
824k
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
824k
            }
330
331
24.8M
            bool b_matched = ( p_startcode_matcher )
332
991k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
991k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
991k
            if( b_matched )
335
21.1k
            {
336
21.1k
                if( i_match == 0 )
337
19.1k
                {
338
19.1k
                    p_block_backup = p_block;
339
19.1k
                    i_offset_backup = i_offset;
340
19.1k
                    i_caller_offset_backup = *pi_offset;
341
19.1k
                }
342
343
21.1k
                if( i_match + 1 == i_startcode_length )
344
2.00k
                {
345
                    /* We have it */
346
2.00k
                    *pi_offset += i_offset - i_match;
347
2.00k
                    return VLC_SUCCESS;
348
2.00k
                }
349
350
19.1k
                i_match++;
351
19.1k
            }
352
970k
            else if ( i_match != 0 )
353
8.95k
            {
354
                /* False positive */
355
8.95k
                p_block = p_block_backup;
356
8.95k
                i_offset = i_offset_backup;
357
8.95k
                *pi_offset = i_caller_offset_backup;
358
8.95k
                i_match = 0;
359
8.95k
            }
360
361
991k
        }
362
995k
        i_size = 0;
363
995k
        *pi_offset += i_offset;
364
995k
    }
365
366
141k
    *pi_offset -= i_match;
367
141k
    return VLC_EGENERIC;
368
23.9M
}
h264.c:block_FindStartcodeFromOffset
Line
Count
Source
284
3.74M
{
285
3.74M
    block_t *p_block, *p_block_backup = NULL;
286
3.74M
    ssize_t i_size;
287
3.74M
    size_t i_offset, i_offset_backup = 0;
288
3.74M
    size_t i_caller_offset_backup = 0;
289
3.74M
    size_t i_match;
290
291
    /* Find the right place */
292
3.74M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
3.74M
    for( p_block = p_bytestream->p_block;
294
3.99M
         p_block != NULL; p_block = p_block->p_next )
295
3.83M
    {
296
3.83M
        i_size -= p_block->i_buffer;
297
3.83M
        if( i_size < 0 ) break;
298
3.83M
    }
299
300
3.74M
    if( unlikely( i_size >= 0 ) )
301
156k
    {
302
        /* Not enough data, bail out */
303
156k
        return VLC_EGENERIC;
304
156k
    }
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.58M
    i_size += p_block->i_buffer;
310
3.58M
    *pi_offset -= i_size;
311
3.58M
    i_match = 0;
312
6.72M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
6.19M
    {
314
12.2M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
9.13M
        {
316
            /* Use optimized helper when possible */
317
9.13M
            if( p_startcode_helper && !i_match &&
318
8.00M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
5.51M
            {
320
5.51M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
5.51M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
5.51M
                if( p_res )
323
3.05M
                {
324
3.05M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
3.05M
                    return VLC_SUCCESS;
326
3.05M
                }
327
                /* Then parsing boundary with legacy code */
328
2.46M
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
2.46M
            }
330
331
9.13M
            bool b_matched = ( p_startcode_matcher )
332
6.07M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
6.07M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
6.07M
            if( b_matched )
335
1.18M
            {
336
1.18M
                if( i_match == 0 )
337
792k
                {
338
792k
                    p_block_backup = p_block;
339
792k
                    i_offset_backup = i_offset;
340
792k
                    i_caller_offset_backup = *pi_offset;
341
792k
                }
342
343
1.18M
                if( i_match + 1 == i_startcode_length )
344
1.88k
                {
345
                    /* We have it */
346
1.88k
                    *pi_offset += i_offset - i_match;
347
1.88k
                    return VLC_SUCCESS;
348
1.88k
                }
349
350
1.17M
                i_match++;
351
1.17M
            }
352
4.89M
            else if ( i_match != 0 )
353
741k
            {
354
                /* False positive */
355
741k
                p_block = p_block_backup;
356
741k
                i_offset = i_offset_backup;
357
741k
                *pi_offset = i_caller_offset_backup;
358
741k
                i_match = 0;
359
741k
            }
360
361
6.07M
        }
362
3.13M
        i_size = 0;
363
3.13M
        *pi_offset += i_offset;
364
3.13M
    }
365
366
531k
    *pi_offset -= i_match;
367
531k
    return VLC_EGENERIC;
368
3.58M
}
hevc.c:block_FindStartcodeFromOffset
Line
Count
Source
284
18.7M
{
285
18.7M
    block_t *p_block, *p_block_backup = NULL;
286
18.7M
    ssize_t i_size;
287
18.7M
    size_t i_offset, i_offset_backup = 0;
288
18.7M
    size_t i_caller_offset_backup = 0;
289
18.7M
    size_t i_match;
290
291
    /* Find the right place */
292
18.7M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
18.7M
    for( p_block = p_bytestream->p_block;
294
18.8M
         p_block != NULL; p_block = p_block->p_next )
295
18.7M
    {
296
18.7M
        i_size -= p_block->i_buffer;
297
18.7M
        if( i_size < 0 ) break;
298
18.7M
    }
299
300
18.7M
    if( unlikely( i_size >= 0 ) )
301
18.0k
    {
302
        /* Not enough data, bail out */
303
18.0k
        return VLC_EGENERIC;
304
18.0k
    }
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
18.7M
    i_size += p_block->i_buffer;
310
18.7M
    *pi_offset -= i_size;
311
18.7M
    i_match = 0;
312
28.1M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
26.1M
    {
314
44.7M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
35.3M
        {
316
            /* Use optimized helper when possible */
317
35.3M
            if( p_startcode_helper && !i_match &&
318
32.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
16.7M
                {
324
16.7M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
16.7M
                    return VLC_SUCCESS;
326
16.7M
                }
327
                /* Then parsing boundary with legacy code */
328
7.57M
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
7.57M
            }
330
331
35.3M
            bool b_matched = ( p_startcode_matcher )
332
18.5M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
18.5M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
18.5M
            if( b_matched )
335
3.32M
            {
336
3.32M
                if( i_match == 0 )
337
1.91M
                {
338
1.91M
                    p_block_backup = p_block;
339
1.91M
                    i_offset_backup = i_offset;
340
1.91M
                    i_caller_offset_backup = *pi_offset;
341
1.91M
                }
342
343
3.32M
                if( i_match + 1 == i_startcode_length )
344
8.38k
                {
345
                    /* We have it */
346
8.38k
                    *pi_offset += i_offset - i_match;
347
8.38k
                    return VLC_SUCCESS;
348
8.38k
                }
349
350
3.31M
                i_match++;
351
3.31M
            }
352
15.2M
            else if ( i_match != 0 )
353
1.85M
            {
354
                /* False positive */
355
1.85M
                p_block = p_block_backup;
356
1.85M
                i_offset = i_offset_backup;
357
1.85M
                *pi_offset = i_caller_offset_backup;
358
1.85M
                i_match = 0;
359
1.85M
            }
360
361
18.5M
        }
362
9.41M
        i_size = 0;
363
9.41M
        *pi_offset += i_offset;
364
9.41M
    }
365
366
1.98M
    *pi_offset -= i_match;
367
1.98M
    return VLC_EGENERIC;
368
18.7M
}
Unexecuted instantiation: mlp.c:block_FindStartcodeFromOffset
Unexecuted instantiation: mpeg4audio.c:block_FindStartcodeFromOffset
mpeg4video.c:block_FindStartcodeFromOffset
Line
Count
Source
284
898k
{
285
898k
    block_t *p_block, *p_block_backup = NULL;
286
898k
    ssize_t i_size;
287
898k
    size_t i_offset, i_offset_backup = 0;
288
898k
    size_t i_caller_offset_backup = 0;
289
898k
    size_t i_match;
290
291
    /* Find the right place */
292
898k
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
898k
    for( p_block = p_bytestream->p_block;
294
986k
         p_block != NULL; p_block = p_block->p_next )
295
955k
    {
296
955k
        i_size -= p_block->i_buffer;
297
955k
        if( i_size < 0 ) break;
298
955k
    }
299
300
898k
    if( unlikely( i_size >= 0 ) )
301
31.1k
    {
302
        /* Not enough data, bail out */
303
31.1k
        return VLC_EGENERIC;
304
31.1k
    }
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
866k
    i_size += p_block->i_buffer;
310
866k
    *pi_offset -= i_size;
311
866k
    i_match = 0;
312
4.95M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
4.84M
    {
314
12.7M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
8.63M
        {
316
            /* Use optimized helper when possible */
317
8.63M
            if( p_startcode_helper && !i_match &&
318
5.51M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
2.13M
            {
320
2.13M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
2.13M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
2.13M
                if( p_res )
323
752k
                {
324
752k
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
752k
                    return VLC_SUCCESS;
326
752k
                }
327
                /* Then parsing boundary with legacy code */
328
1.38M
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
1.38M
            }
330
331
8.63M
            bool b_matched = ( p_startcode_matcher )
332
7.88M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
7.88M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
7.88M
            if( b_matched )
335
3.15M
            {
336
3.15M
                if( i_match == 0 )
337
1.76M
                {
338
1.76M
                    p_block_backup = p_block;
339
1.76M
                    i_offset_backup = i_offset;
340
1.76M
                    i_caller_offset_backup = *pi_offset;
341
1.76M
                }
342
343
3.15M
                if( i_match + 1 == i_startcode_length )
344
1.63k
                {
345
                    /* We have it */
346
1.63k
                    *pi_offset += i_offset - i_match;
347
1.63k
                    return VLC_SUCCESS;
348
1.63k
                }
349
350
3.15M
                i_match++;
351
3.15M
            }
352
4.73M
            else if ( i_match != 0 )
353
1.73M
            {
354
                /* False positive */
355
1.73M
                p_block = p_block_backup;
356
1.73M
                i_offset = i_offset_backup;
357
1.73M
                *pi_offset = i_caller_offset_backup;
358
1.73M
                i_match = 0;
359
1.73M
            }
360
361
7.88M
        }
362
4.08M
        i_size = 0;
363
4.08M
        *pi_offset += i_offset;
364
4.08M
    }
365
366
112k
    *pi_offset -= i_match;
367
112k
    return VLC_EGENERIC;
368
866k
}
Unexecuted instantiation: mpegaudio.c:block_FindStartcodeFromOffset
mpegvideo.c:block_FindStartcodeFromOffset
Line
Count
Source
284
6.27M
{
285
6.27M
    block_t *p_block, *p_block_backup = NULL;
286
6.27M
    ssize_t i_size;
287
6.27M
    size_t i_offset, i_offset_backup = 0;
288
6.27M
    size_t i_caller_offset_backup = 0;
289
6.27M
    size_t i_match;
290
291
    /* Find the right place */
292
6.27M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
6.27M
    for( p_block = p_bytestream->p_block;
294
6.75M
         p_block != NULL; p_block = p_block->p_next )
295
6.68M
    {
296
6.68M
        i_size -= p_block->i_buffer;
297
6.68M
        if( i_size < 0 ) break;
298
6.68M
    }
299
300
6.27M
    if( unlikely( i_size >= 0 ) )
301
63.2k
    {
302
        /* Not enough data, bail out */
303
63.2k
        return VLC_EGENERIC;
304
63.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
6.21M
    i_size += p_block->i_buffer;
310
6.21M
    *pi_offset -= i_size;
311
6.21M
    i_match = 0;
312
172M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
171M
    {
314
448M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
282M
        {
316
            /* Use optimized helper when possible */
317
282M
            if( p_startcode_helper && !i_match &&
318
167M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
42.5M
            {
320
42.5M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
42.5M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
42.5M
                if( p_res )
323
5.69M
                {
324
5.69M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
5.69M
                    return VLC_SUCCESS;
326
5.69M
                }
327
                /* Then parsing boundary with legacy code */
328
36.8M
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
36.8M
            }
330
331
282M
            bool b_matched = ( p_startcode_matcher )
332
276M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
276M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
276M
            if( b_matched )
335
115M
            {
336
115M
                if( i_match == 0 )
337
72.4M
                {
338
72.4M
                    p_block_backup = p_block;
339
72.4M
                    i_offset_backup = i_offset;
340
72.4M
                    i_caller_offset_backup = *pi_offset;
341
72.4M
                }
342
343
115M
                if( i_match + 1 == i_startcode_length )
344
14.6k
                {
345
                    /* We have it */
346
14.6k
                    *pi_offset += i_offset - i_match;
347
14.6k
                    return VLC_SUCCESS;
348
14.6k
                }
349
350
115M
                i_match++;
351
115M
            }
352
161M
            else if ( i_match != 0 )
353
72.2M
            {
354
                /* False positive */
355
72.2M
                p_block = p_block_backup;
356
72.2M
                i_offset = i_offset_backup;
357
72.2M
                *pi_offset = i_caller_offset_backup;
358
72.2M
                i_match = 0;
359
72.2M
            }
360
361
276M
        }
362
166M
        i_size = 0;
363
166M
        *pi_offset += i_offset;
364
166M
    }
365
366
499k
    *pi_offset -= i_match;
367
499k
    return VLC_EGENERIC;
368
6.21M
}
vc1.c:block_FindStartcodeFromOffset
Line
Count
Source
284
3.98M
{
285
3.98M
    block_t *p_block, *p_block_backup = NULL;
286
3.98M
    ssize_t i_size;
287
3.98M
    size_t i_offset, i_offset_backup = 0;
288
3.98M
    size_t i_caller_offset_backup = 0;
289
3.98M
    size_t i_match;
290
291
    /* Find the right place */
292
3.98M
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
3.98M
    for( p_block = p_bytestream->p_block;
294
4.28M
         p_block != NULL; p_block = p_block->p_next )
295
4.27M
    {
296
4.27M
        i_size -= p_block->i_buffer;
297
4.27M
        if( i_size < 0 ) break;
298
4.27M
    }
299
300
3.98M
    if( unlikely( i_size >= 0 ) )
301
10.1k
    {
302
        /* Not enough data, bail out */
303
10.1k
        return VLC_EGENERIC;
304
10.1k
    }
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.97M
    i_size += p_block->i_buffer;
310
3.97M
    *pi_offset -= i_size;
311
3.97M
    i_match = 0;
312
5.24M
    for( ; p_block != NULL; p_block = p_block->p_next )
313
5.02M
    {
314
7.48M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
6.20M
        {
316
            /* Use optimized helper when possible */
317
6.20M
            if( p_startcode_helper && !i_match &&
318
5.60M
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
4.62M
            {
320
4.62M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
4.62M
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
4.62M
                if( p_res )
323
3.74M
                {
324
3.74M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
3.74M
                    return VLC_SUCCESS;
326
3.74M
                }
327
                /* Then parsing boundary with legacy code */
328
884k
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
884k
            }
330
331
6.20M
            bool b_matched = ( p_startcode_matcher )
332
2.46M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
2.46M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
2.46M
            if( b_matched )
335
686k
            {
336
686k
                if( i_match == 0 )
337
394k
                {
338
394k
                    p_block_backup = p_block;
339
394k
                    i_offset_backup = i_offset;
340
394k
                    i_caller_offset_backup = *pi_offset;
341
394k
                }
342
343
686k
                if( i_match + 1 == i_startcode_length )
344
1.97k
                {
345
                    /* We have it */
346
1.97k
                    *pi_offset += i_offset - i_match;
347
1.97k
                    return VLC_SUCCESS;
348
1.97k
                }
349
350
684k
                i_match++;
351
684k
            }
352
1.77M
            else if ( i_match != 0 )
353
307k
            {
354
                /* False positive */
355
307k
                p_block = p_block_backup;
356
307k
                i_offset = i_offset_backup;
357
307k
                *pi_offset = i_caller_offset_backup;
358
307k
                i_match = 0;
359
307k
            }
360
361
2.46M
        }
362
1.27M
        i_size = 0;
363
1.27M
        *pi_offset += i_offset;
364
1.27M
    }
365
366
224k
    *pi_offset -= i_match;
367
224k
    return VLC_EGENERIC;
368
3.97M
}
Unexecuted instantiation: av1.c:block_FindStartcodeFromOffset
mjpeg.c:block_FindStartcodeFromOffset
Line
Count
Source
284
2.37k
{
285
2.37k
    block_t *p_block, *p_block_backup = NULL;
286
2.37k
    ssize_t i_size;
287
2.37k
    size_t i_offset, i_offset_backup = 0;
288
2.37k
    size_t i_caller_offset_backup = 0;
289
2.37k
    size_t i_match;
290
291
    /* Find the right place */
292
2.37k
    i_size = *pi_offset + p_bytestream->i_block_offset;
293
2.37k
    for( p_block = p_bytestream->p_block;
294
2.37k
         p_block != NULL; p_block = p_block->p_next )
295
2.37k
    {
296
2.37k
        i_size -= p_block->i_buffer;
297
2.37k
        if( i_size < 0 ) break;
298
2.37k
    }
299
300
2.37k
    if( unlikely( i_size >= 0 ) )
301
5
    {
302
        /* Not enough data, bail out */
303
5
        return VLC_EGENERIC;
304
5
    }
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.36k
    i_size += p_block->i_buffer;
310
2.36k
    *pi_offset -= i_size;
311
2.36k
    i_match = 0;
312
147k
    for( ; p_block != NULL; p_block = p_block->p_next )
313
145k
    {
314
268k
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
315
123k
        {
316
            /* Use optimized helper when possible */
317
123k
            if( p_startcode_helper && !i_match &&
318
123k
               (p_block->i_buffer - i_offset + 1) > i_startcode_length )
319
41.3k
            {
320
41.3k
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
321
41.3k
                                                           &p_block->p_buffer[p_block->i_buffer] );
322
41.3k
                if( p_res )
323
271
                {
324
271
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
325
271
                    return VLC_SUCCESS;
326
271
                }
327
                /* Then parsing boundary with legacy code */
328
41.1k
                i_offset = p_block->i_buffer + 1 - i_startcode_length;
329
41.1k
            }
330
331
123k
            bool b_matched = ( p_startcode_matcher )
332
123k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
333
123k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
334
123k
            if( b_matched )
335
25
            {
336
25
                if( i_match == 0 )
337
24
                {
338
24
                    p_block_backup = p_block;
339
24
                    i_offset_backup = i_offset;
340
24
                    i_caller_offset_backup = *pi_offset;
341
24
                }
342
343
25
                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
25
                i_match++;
351
25
            }
352
123k
            else if ( i_match != 0 )
353
14
            {
354
                /* False positive */
355
14
                p_block = p_block_backup;
356
14
                i_offset = i_offset_backup;
357
14
                *pi_offset = i_caller_offset_backup;
358
14
                i_match = 0;
359
14
            }
360
361
123k
        }
362
145k
        i_size = 0;
363
145k
        *pi_offset += i_offset;
364
145k
    }
365
366
2.09k
    *pi_offset -= i_match;
367
2.09k
    return VLC_EGENERIC;
368
2.36k
}
369
370
#endif /* VLC_BLOCK_HELPER_H */