Coverage Report

Created: 2026-02-14 08:08

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
65.4k
{
43
65.4k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
65.4k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
65.4k
    p_bytestream->i_block_offset = 0;
46
65.4k
    p_bytestream->i_base_offset = 0;
47
65.4k
    p_bytestream->i_total = 0;
48
65.4k
}
a52.c:block_BytestreamInit
Line
Count
Source
42
2.26k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
2.26k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
2.26k
    p_bytestream->i_block_offset = 0;
46
2.26k
    p_bytestream->i_base_offset = 0;
47
2.26k
    p_bytestream->i_total = 0;
48
2.26k
}
dts.c:block_BytestreamInit
Line
Count
Source
42
2.81k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
2.81k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
2.81k
    p_bytestream->i_block_offset = 0;
46
2.81k
    p_bytestream->i_base_offset = 0;
47
2.81k
    p_bytestream->i_total = 0;
48
2.81k
}
flac.c:block_BytestreamInit
Line
Count
Source
42
3.36k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
3.36k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
3.36k
    p_bytestream->i_block_offset = 0;
46
3.36k
    p_bytestream->i_base_offset = 0;
47
3.36k
    p_bytestream->i_total = 0;
48
3.36k
}
h264.c:block_BytestreamInit
Line
Count
Source
42
21.7k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
21.7k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
21.7k
    p_bytestream->i_block_offset = 0;
46
21.7k
    p_bytestream->i_base_offset = 0;
47
21.7k
    p_bytestream->i_total = 0;
48
21.7k
}
hevc.c:block_BytestreamInit
Line
Count
Source
42
19.8k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
19.8k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
19.8k
    p_bytestream->i_block_offset = 0;
46
19.8k
    p_bytestream->i_base_offset = 0;
47
19.8k
    p_bytestream->i_total = 0;
48
19.8k
}
mlp.c:block_BytestreamInit
Line
Count
Source
42
782
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
782
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
782
    p_bytestream->i_block_offset = 0;
46
782
    p_bytestream->i_base_offset = 0;
47
782
    p_bytestream->i_total = 0;
48
782
}
mpeg4audio.c:block_BytestreamInit
Line
Count
Source
42
3.09k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
3.09k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
3.09k
    p_bytestream->i_block_offset = 0;
46
3.09k
    p_bytestream->i_base_offset = 0;
47
3.09k
    p_bytestream->i_total = 0;
48
3.09k
}
mpeg4video.c:block_BytestreamInit
Line
Count
Source
42
1.01k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
1.01k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
1.01k
    p_bytestream->i_block_offset = 0;
46
1.01k
    p_bytestream->i_base_offset = 0;
47
1.01k
    p_bytestream->i_total = 0;
48
1.01k
}
mpegaudio.c:block_BytestreamInit
Line
Count
Source
42
4.42k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
4.42k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
4.42k
    p_bytestream->i_block_offset = 0;
46
4.42k
    p_bytestream->i_base_offset = 0;
47
4.42k
    p_bytestream->i_total = 0;
48
4.42k
}
mpegvideo.c:block_BytestreamInit
Line
Count
Source
42
4.65k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
4.65k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
4.65k
    p_bytestream->i_block_offset = 0;
46
4.65k
    p_bytestream->i_base_offset = 0;
47
4.65k
    p_bytestream->i_total = 0;
48
4.65k
}
vc1.c:block_BytestreamInit
Line
Count
Source
42
1.47k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
1.47k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
1.47k
    p_bytestream->i_block_offset = 0;
46
1.47k
    p_bytestream->i_base_offset = 0;
47
1.47k
    p_bytestream->i_total = 0;
48
1.47k
}
49
50
static inline void block_BytestreamRelease( block_bytestream_t *p_bytestream )
51
65.4k
{
52
65.4k
    block_ChainRelease( p_bytestream->p_chain );
53
65.4k
}
a52.c:block_BytestreamRelease
Line
Count
Source
51
2.26k
{
52
2.26k
    block_ChainRelease( p_bytestream->p_chain );
53
2.26k
}
dts.c:block_BytestreamRelease
Line
Count
Source
51
2.81k
{
52
2.81k
    block_ChainRelease( p_bytestream->p_chain );
53
2.81k
}
flac.c:block_BytestreamRelease
Line
Count
Source
51
3.36k
{
52
3.36k
    block_ChainRelease( p_bytestream->p_chain );
53
3.36k
}
h264.c:block_BytestreamRelease
Line
Count
Source
51
21.7k
{
52
21.7k
    block_ChainRelease( p_bytestream->p_chain );
53
21.7k
}
hevc.c:block_BytestreamRelease
Line
Count
Source
51
19.8k
{
52
19.8k
    block_ChainRelease( p_bytestream->p_chain );
53
19.8k
}
mlp.c:block_BytestreamRelease
Line
Count
Source
51
782
{
52
782
    block_ChainRelease( p_bytestream->p_chain );
53
782
}
mpeg4audio.c:block_BytestreamRelease
Line
Count
Source
51
3.09k
{
52
3.09k
    block_ChainRelease( p_bytestream->p_chain );
53
3.09k
}
mpeg4video.c:block_BytestreamRelease
Line
Count
Source
51
1.01k
{
52
1.01k
    block_ChainRelease( p_bytestream->p_chain );
53
1.01k
}
mpegaudio.c:block_BytestreamRelease
Line
Count
Source
51
4.42k
{
52
4.42k
    block_ChainRelease( p_bytestream->p_chain );
53
4.42k
}
mpegvideo.c:block_BytestreamRelease
Line
Count
Source
51
4.65k
{
52
4.65k
    block_ChainRelease( p_bytestream->p_chain );
53
4.65k
}
vc1.c:block_BytestreamRelease
Line
Count
Source
51
1.47k
{
52
1.47k
    block_ChainRelease( p_bytestream->p_chain );
53
1.47k
}
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
11.1k
{
60
11.1k
    block_BytestreamRelease( p_bytestream );
61
11.1k
    block_BytestreamInit( p_bytestream );
62
11.1k
}
Unexecuted instantiation: a52.c:block_BytestreamEmpty
Unexecuted instantiation: dts.c:block_BytestreamEmpty
Unexecuted instantiation: flac.c:block_BytestreamEmpty
h264.c:block_BytestreamEmpty
Line
Count
Source
59
5.18k
{
60
5.18k
    block_BytestreamRelease( p_bytestream );
61
5.18k
    block_BytestreamInit( p_bytestream );
62
5.18k
}
hevc.c:block_BytestreamEmpty
Line
Count
Source
59
5.26k
{
60
5.26k
    block_BytestreamRelease( p_bytestream );
61
5.26k
    block_BytestreamInit( p_bytestream );
62
5.26k
}
Unexecuted instantiation: mlp.c:block_BytestreamEmpty
Unexecuted instantiation: mpeg4audio.c:block_BytestreamEmpty
Unexecuted instantiation: mpeg4video.c:block_BytestreamEmpty
Unexecuted instantiation: mpegaudio.c:block_BytestreamEmpty
Unexecuted instantiation: mpegvideo.c:block_BytestreamEmpty
vc1.c:block_BytestreamEmpty
Line
Count
Source
59
728
{
60
728
    block_BytestreamRelease( p_bytestream );
61
728
    block_BytestreamInit( p_bytestream );
62
728
}
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
20.2M
{
69
20.2M
    block_t *block = p_bytestream->p_chain;
70
71
20.3M
    while( block != p_bytestream->p_block )
72
113k
    {
73
113k
        block_t *p_next = block->p_next;
74
75
113k
        p_bytestream->i_total -= block->i_buffer;
76
113k
        p_bytestream->i_base_offset -= block->i_buffer;
77
113k
        block_Release( block );
78
113k
        block = p_next;
79
113k
    }
80
81
20.2M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
7.67k
    {
83
7.67k
        block_t *p_next = block->p_next;
84
85
7.67k
        p_bytestream->i_total -= block->i_buffer;
86
7.67k
        block_Release( block );
87
7.67k
        block = p_next;
88
7.67k
        p_bytestream->i_block_offset = 0;
89
7.67k
    }
90
91
20.2M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
20.2M
    if( p_bytestream->p_chain == NULL )
93
4.63k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
20.2M
}
a52.c:block_BytestreamFlush
Line
Count
Source
68
702k
{
69
702k
    block_t *block = p_bytestream->p_chain;
70
71
731k
    while( block != p_bytestream->p_block )
72
29.1k
    {
73
29.1k
        block_t *p_next = block->p_next;
74
75
29.1k
        p_bytestream->i_total -= block->i_buffer;
76
29.1k
        p_bytestream->i_base_offset -= block->i_buffer;
77
29.1k
        block_Release( block );
78
29.1k
        block = p_next;
79
29.1k
    }
80
81
705k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
2.73k
    {
83
2.73k
        block_t *p_next = block->p_next;
84
85
2.73k
        p_bytestream->i_total -= block->i_buffer;
86
2.73k
        block_Release( block );
87
2.73k
        block = p_next;
88
2.73k
        p_bytestream->i_block_offset = 0;
89
2.73k
    }
90
91
702k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
702k
    if( p_bytestream->p_chain == NULL )
93
1.31k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
702k
}
dts.c:block_BytestreamFlush
Line
Count
Source
68
181k
{
69
181k
    block_t *block = p_bytestream->p_chain;
70
71
186k
    while( block != p_bytestream->p_block )
72
5.71k
    {
73
5.71k
        block_t *p_next = block->p_next;
74
75
5.71k
        p_bytestream->i_total -= block->i_buffer;
76
5.71k
        p_bytestream->i_base_offset -= block->i_buffer;
77
5.71k
        block_Release( block );
78
5.71k
        block = p_next;
79
5.71k
    }
80
81
181k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
156
    {
83
156
        block_t *p_next = block->p_next;
84
85
156
        p_bytestream->i_total -= block->i_buffer;
86
156
        block_Release( block );
87
156
        block = p_next;
88
156
        p_bytestream->i_block_offset = 0;
89
156
    }
90
91
181k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
181k
    if( p_bytestream->p_chain == NULL )
93
263
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
181k
}
flac.c:block_BytestreamFlush
Line
Count
Source
68
4.31M
{
69
4.31M
    block_t *block = p_bytestream->p_chain;
70
71
4.31M
    while( block != p_bytestream->p_block )
72
2.95k
    {
73
2.95k
        block_t *p_next = block->p_next;
74
75
2.95k
        p_bytestream->i_total -= block->i_buffer;
76
2.95k
        p_bytestream->i_base_offset -= block->i_buffer;
77
2.95k
        block_Release( block );
78
2.95k
        block = p_next;
79
2.95k
    }
80
81
4.31M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
832
    {
83
832
        block_t *p_next = block->p_next;
84
85
832
        p_bytestream->i_total -= block->i_buffer;
86
832
        block_Release( block );
87
832
        block = p_next;
88
832
        p_bytestream->i_block_offset = 0;
89
832
    }
90
91
4.31M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
4.31M
    if( p_bytestream->p_chain == NULL )
93
831
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
4.31M
}
h264.c:block_BytestreamFlush
Line
Count
Source
68
1.23M
{
69
1.23M
    block_t *block = p_bytestream->p_chain;
70
71
1.25M
    while( block != p_bytestream->p_block )
72
16.3k
    {
73
16.3k
        block_t *p_next = block->p_next;
74
75
16.3k
        p_bytestream->i_total -= block->i_buffer;
76
16.3k
        p_bytestream->i_base_offset -= block->i_buffer;
77
16.3k
        block_Release( block );
78
16.3k
        block = p_next;
79
16.3k
    }
80
81
1.23M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.07k
    {
83
1.07k
        block_t *p_next = block->p_next;
84
85
1.07k
        p_bytestream->i_total -= block->i_buffer;
86
1.07k
        block_Release( block );
87
1.07k
        block = p_next;
88
1.07k
        p_bytestream->i_block_offset = 0;
89
1.07k
    }
90
91
1.23M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.23M
    if( p_bytestream->p_chain == NULL )
93
628
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.23M
}
hevc.c:block_BytestreamFlush
Line
Count
Source
68
13.2M
{
69
13.2M
    block_t *block = p_bytestream->p_chain;
70
71
13.3M
    while( block != p_bytestream->p_block )
72
26.7k
    {
73
26.7k
        block_t *p_next = block->p_next;
74
75
26.7k
        p_bytestream->i_total -= block->i_buffer;
76
26.7k
        p_bytestream->i_base_offset -= block->i_buffer;
77
26.7k
        block_Release( block );
78
26.7k
        block = p_next;
79
26.7k
    }
80
81
13.2M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.93k
    {
83
1.93k
        block_t *p_next = block->p_next;
84
85
1.93k
        p_bytestream->i_total -= block->i_buffer;
86
1.93k
        block_Release( block );
87
1.93k
        block = p_next;
88
1.93k
        p_bytestream->i_block_offset = 0;
89
1.93k
    }
90
91
13.2M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
13.2M
    if( p_bytestream->p_chain == NULL )
93
892
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
13.2M
}
mlp.c:block_BytestreamFlush
Line
Count
Source
68
195k
{
69
195k
    block_t *block = p_bytestream->p_chain;
70
71
200k
    while( block != p_bytestream->p_block )
72
5.16k
    {
73
5.16k
        block_t *p_next = block->p_next;
74
75
5.16k
        p_bytestream->i_total -= block->i_buffer;
76
5.16k
        p_bytestream->i_base_offset -= block->i_buffer;
77
5.16k
        block_Release( block );
78
5.16k
        block = p_next;
79
5.16k
    }
80
81
195k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
148
    {
83
148
        block_t *p_next = block->p_next;
84
85
148
        p_bytestream->i_total -= block->i_buffer;
86
148
        block_Release( block );
87
148
        block = p_next;
88
148
        p_bytestream->i_block_offset = 0;
89
148
    }
90
91
195k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
195k
    if( p_bytestream->p_chain == NULL )
93
23
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
195k
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamFlush
Unexecuted instantiation: mpeg4video.c:block_BytestreamFlush
mpegaudio.c:block_BytestreamFlush
Line
Count
Source
68
291k
{
69
291k
    block_t *block = p_bytestream->p_chain;
70
71
318k
    while( block != p_bytestream->p_block )
72
26.9k
    {
73
26.9k
        block_t *p_next = block->p_next;
74
75
26.9k
        p_bytestream->i_total -= block->i_buffer;
76
26.9k
        p_bytestream->i_base_offset -= block->i_buffer;
77
26.9k
        block_Release( block );
78
26.9k
        block = p_next;
79
26.9k
    }
80
81
291k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
722
    {
83
722
        block_t *p_next = block->p_next;
84
85
722
        p_bytestream->i_total -= block->i_buffer;
86
722
        block_Release( block );
87
722
        block = p_next;
88
722
        p_bytestream->i_block_offset = 0;
89
722
    }
90
91
291k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
291k
    if( p_bytestream->p_chain == NULL )
93
607
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
291k
}
Unexecuted instantiation: mpegvideo.c:block_BytestreamFlush
vc1.c:block_BytestreamFlush
Line
Count
Source
68
16.8k
{
69
16.8k
    block_t *block = p_bytestream->p_chain;
70
71
16.8k
    while( block != p_bytestream->p_block )
72
0
    {
73
0
        block_t *p_next = block->p_next;
74
75
0
        p_bytestream->i_total -= block->i_buffer;
76
0
        p_bytestream->i_base_offset -= block->i_buffer;
77
0
        block_Release( block );
78
0
        block = p_next;
79
0
    }
80
81
16.9k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
79
    {
83
79
        block_t *p_next = block->p_next;
84
85
79
        p_bytestream->i_total -= block->i_buffer;
86
79
        block_Release( block );
87
79
        block = p_next;
88
79
        p_bytestream->i_block_offset = 0;
89
79
    }
90
91
16.8k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
16.8k
    if( p_bytestream->p_chain == NULL )
93
79
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
16.8k
}
95
96
static inline void block_BytestreamPush( block_bytestream_t *p_bytestream,
97
                                         block_t *p_block )
98
3.23M
{
99
3.23M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
3.23M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
6.47M
    for( ; p_block; p_block = p_block->p_next )
102
3.23M
        p_bytestream->i_total += p_block->i_buffer;
103
3.23M
}
a52.c:block_BytestreamPush
Line
Count
Source
98
754k
{
99
754k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
754k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.50M
    for( ; p_block; p_block = p_block->p_next )
102
754k
        p_bytestream->i_total += p_block->i_buffer;
103
754k
}
dts.c:block_BytestreamPush
Line
Count
Source
98
188k
{
99
188k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
188k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
376k
    for( ; p_block; p_block = p_block->p_next )
102
188k
        p_bytestream->i_total += p_block->i_buffer;
103
188k
}
flac.c:block_BytestreamPush
Line
Count
Source
98
130k
{
99
130k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
130k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
260k
    for( ; p_block; p_block = p_block->p_next )
102
130k
        p_bytestream->i_total += p_block->i_buffer;
103
130k
}
h264.c:block_BytestreamPush
Line
Count
Source
98
264k
{
99
264k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
264k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
528k
    for( ; p_block; p_block = p_block->p_next )
102
264k
        p_bytestream->i_total += p_block->i_buffer;
103
264k
}
hevc.c:block_BytestreamPush
Line
Count
Source
98
1.37M
{
99
1.37M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
1.37M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
2.74M
    for( ; p_block; p_block = p_block->p_next )
102
1.37M
        p_bytestream->i_total += p_block->i_buffer;
103
1.37M
}
mlp.c:block_BytestreamPush
Line
Count
Source
98
200k
{
99
200k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
200k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
400k
    for( ; p_block; p_block = p_block->p_next )
102
200k
        p_bytestream->i_total += p_block->i_buffer;
103
200k
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamPush
Unexecuted instantiation: mpeg4video.c:block_BytestreamPush
mpegaudio.c:block_BytestreamPush
Line
Count
Source
98
326k
{
99
326k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
326k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
652k
    for( ; p_block; p_block = p_block->p_next )
102
326k
        p_bytestream->i_total += p_block->i_buffer;
103
326k
}
Unexecuted instantiation: mpegvideo.c:block_BytestreamPush
vc1.c:block_BytestreamPush
Line
Count
Source
98
728
{
99
728
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
728
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.45k
    for( ; p_block; p_block = p_block->p_next )
102
728
        p_bytestream->i_total += p_block->i_buffer;
103
728
}
104
105
static inline size_t block_BytestreamRemaining( const block_bytestream_t *p_bytestream )
106
560M
{
107
560M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
560M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
560M
}
a52.c:block_BytestreamRemaining
Line
Count
Source
106
49.0M
{
107
49.0M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
49.0M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
49.0M
}
dts.c:block_BytestreamRemaining
Line
Count
Source
106
278M
{
107
278M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
278M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
278M
}
flac.c:block_BytestreamRemaining
Line
Count
Source
106
86.6M
{
107
86.6M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
86.6M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
86.6M
}
h264.c:block_BytestreamRemaining
Line
Count
Source
106
1.03M
{
107
1.03M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.03M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.03M
}
hevc.c:block_BytestreamRemaining
Line
Count
Source
106
11.9M
{
107
11.9M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
11.9M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
11.9M
}
mlp.c:block_BytestreamRemaining
Line
Count
Source
106
38.2M
{
107
38.2M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
38.2M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
38.2M
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamRemaining
Unexecuted instantiation: mpeg4video.c:block_BytestreamRemaining
mpegaudio.c:block_BytestreamRemaining
Line
Count
Source
106
95.0M
{
107
95.0M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
95.0M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
95.0M
}
Unexecuted instantiation: mpegvideo.c:block_BytestreamRemaining
vc1.c:block_BytestreamRemaining
Line
Count
Source
106
17.4k
{
107
17.4k
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
17.4k
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
17.4k
}
110
111
VLC_USED
112
static inline block_t *block_BytestreamPop( block_bytestream_t *p_bytestream )
113
3.00M
{
114
3.00M
    block_t *p_block;
115
116
3.00M
    block_BytestreamFlush( p_bytestream );
117
118
3.00M
    p_block = p_bytestream->p_block;
119
3.00M
    if( unlikely( p_block == NULL ) )
120
245
    {
121
245
        return NULL;
122
245
    }
123
3.00M
    else if( !p_block->p_next )
124
2.71M
    {
125
2.71M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
2.71M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
2.71M
        p_bytestream->i_block_offset = 0;
128
2.71M
        p_bytestream->i_total = 0;
129
2.71M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
2.71M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
2.71M
        return p_block;
132
2.71M
    }
133
134
397k
    while( p_block->p_next && p_block->p_next->p_next )
135
107k
        p_block = p_block->p_next;
136
137
290k
    block_t *p_block_old = p_block;
138
290k
    p_block = p_block->p_next;
139
290k
    p_block_old->p_next = NULL;
140
290k
    p_bytestream->pp_last = &p_block_old->p_next;
141
290k
    if( p_block )
142
290k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
290k
    return p_block;
145
3.00M
}
a52.c:block_BytestreamPop
Line
Count
Source
113
694k
{
114
694k
    block_t *p_block;
115
116
694k
    block_BytestreamFlush( p_bytestream );
117
118
694k
    p_block = p_bytestream->p_block;
119
694k
    if( unlikely( p_block == NULL ) )
120
191
    {
121
191
        return NULL;
122
191
    }
123
694k
    else if( !p_block->p_next )
124
489k
    {
125
489k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
489k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
489k
        p_bytestream->i_block_offset = 0;
128
489k
        p_bytestream->i_total = 0;
129
489k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
489k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
489k
        return p_block;
132
489k
    }
133
134
223k
    while( p_block->p_next && p_block->p_next->p_next )
135
18.3k
        p_block = p_block->p_next;
136
137
205k
    block_t *p_block_old = p_block;
138
205k
    p_block = p_block->p_next;
139
205k
    p_block_old->p_next = NULL;
140
205k
    p_bytestream->pp_last = &p_block_old->p_next;
141
205k
    if( p_block )
142
205k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
205k
    return p_block;
145
694k
}
dts.c:block_BytestreamPop
Line
Count
Source
113
178k
{
114
178k
    block_t *p_block;
115
116
178k
    block_BytestreamFlush( p_bytestream );
117
118
178k
    p_block = p_bytestream->p_block;
119
178k
    if( unlikely( p_block == NULL ) )
120
11
    {
121
11
        return NULL;
122
11
    }
123
177k
    else if( !p_block->p_next )
124
153k
    {
125
153k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
153k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
153k
        p_bytestream->i_block_offset = 0;
128
153k
        p_bytestream->i_total = 0;
129
153k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
153k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
153k
        return p_block;
132
153k
    }
133
134
95.2k
    while( p_block->p_next && p_block->p_next->p_next )
135
70.7k
        p_block = p_block->p_next;
136
137
24.4k
    block_t *p_block_old = p_block;
138
24.4k
    p_block = p_block->p_next;
139
24.4k
    p_block_old->p_next = NULL;
140
24.4k
    p_bytestream->pp_last = &p_block_old->p_next;
141
24.4k
    if( p_block )
142
24.4k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
24.4k
    return p_block;
145
178k
}
flac.c:block_BytestreamPop
Line
Count
Source
113
123k
{
114
123k
    block_t *p_block;
115
116
123k
    block_BytestreamFlush( p_bytestream );
117
118
123k
    p_block = p_bytestream->p_block;
119
123k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
123k
    else if( !p_block->p_next )
124
120k
    {
125
120k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
120k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
120k
        p_bytestream->i_block_offset = 0;
128
120k
        p_bytestream->i_total = 0;
129
120k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
120k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
120k
        return p_block;
132
120k
    }
133
134
11.7k
    while( p_block->p_next && p_block->p_next->p_next )
135
8.70k
        p_block = p_block->p_next;
136
137
3.01k
    block_t *p_block_old = p_block;
138
3.01k
    p_block = p_block->p_next;
139
3.01k
    p_block_old->p_next = NULL;
140
3.01k
    p_bytestream->pp_last = &p_block_old->p_next;
141
3.01k
    if( p_block )
142
3.01k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
3.01k
    return p_block;
145
123k
}
h264.c:block_BytestreamPop
Line
Count
Source
113
217k
{
114
217k
    block_t *p_block;
115
116
217k
    block_BytestreamFlush( p_bytestream );
117
118
217k
    p_block = p_bytestream->p_block;
119
217k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
217k
    else if( !p_block->p_next )
124
217k
    {
125
217k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
217k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
217k
        p_bytestream->i_block_offset = 0;
128
217k
        p_bytestream->i_total = 0;
129
217k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
217k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
217k
        return p_block;
132
217k
    }
133
134
214
    while( p_block->p_next && p_block->p_next->p_next )
135
0
        p_block = p_block->p_next;
136
137
214
    block_t *p_block_old = p_block;
138
214
    p_block = p_block->p_next;
139
214
    p_block_old->p_next = NULL;
140
214
    p_bytestream->pp_last = &p_block_old->p_next;
141
214
    if( p_block )
142
214
        p_bytestream->i_total -= p_block->i_buffer;
143
144
214
    return p_block;
145
217k
}
hevc.c:block_BytestreamPop
Line
Count
Source
113
1.31M
{
114
1.31M
    block_t *p_block;
115
116
1.31M
    block_BytestreamFlush( p_bytestream );
117
118
1.31M
    p_block = p_bytestream->p_block;
119
1.31M
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
1.31M
    else if( !p_block->p_next )
124
1.31M
    {
125
1.31M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
1.31M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
1.31M
        p_bytestream->i_block_offset = 0;
128
1.31M
        p_bytestream->i_total = 0;
129
1.31M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
1.31M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
1.31M
        return p_block;
132
1.31M
    }
133
134
1.36k
    while( p_block->p_next && p_block->p_next->p_next )
135
0
        p_block = p_block->p_next;
136
137
1.36k
    block_t *p_block_old = p_block;
138
1.36k
    p_block = p_block->p_next;
139
1.36k
    p_block_old->p_next = NULL;
140
1.36k
    p_bytestream->pp_last = &p_block_old->p_next;
141
1.36k
    if( p_block )
142
1.36k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
1.36k
    return p_block;
145
1.31M
}
mlp.c:block_BytestreamPop
Line
Count
Source
113
193k
{
114
193k
    block_t *p_block;
115
116
193k
    block_BytestreamFlush( p_bytestream );
117
118
193k
    p_block = p_bytestream->p_block;
119
193k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
193k
    else if( !p_block->p_next )
124
148k
    {
125
148k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
148k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
148k
        p_bytestream->i_block_offset = 0;
128
148k
        p_bytestream->i_total = 0;
129
148k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
148k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
148k
        return p_block;
132
148k
    }
133
134
50.7k
    while( p_block->p_next && p_block->p_next->p_next )
135
6.05k
        p_block = p_block->p_next;
136
137
44.7k
    block_t *p_block_old = p_block;
138
44.7k
    p_block = p_block->p_next;
139
44.7k
    p_block_old->p_next = NULL;
140
44.7k
    p_bytestream->pp_last = &p_block_old->p_next;
141
44.7k
    if( p_block )
142
44.7k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
44.7k
    return p_block;
145
193k
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamPop
Unexecuted instantiation: mpeg4video.c:block_BytestreamPop
mpegaudio.c:block_BytestreamPop
Line
Count
Source
113
285k
{
114
285k
    block_t *p_block;
115
116
285k
    block_BytestreamFlush( p_bytestream );
117
118
285k
    p_block = p_bytestream->p_block;
119
285k
    if( unlikely( p_block == NULL ) )
120
43
    {
121
43
        return NULL;
122
43
    }
123
285k
    else if( !p_block->p_next )
124
274k
    {
125
274k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
274k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
274k
        p_bytestream->i_block_offset = 0;
128
274k
        p_bytestream->i_total = 0;
129
274k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
274k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
274k
        return p_block;
132
274k
    }
133
134
14.9k
    while( p_block->p_next && p_block->p_next->p_next )
135
3.42k
        p_block = p_block->p_next;
136
137
11.5k
    block_t *p_block_old = p_block;
138
11.5k
    p_block = p_block->p_next;
139
11.5k
    p_block_old->p_next = NULL;
140
11.5k
    p_bytestream->pp_last = &p_block_old->p_next;
141
11.5k
    if( p_block )
142
11.5k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
11.5k
    return p_block;
145
285k
}
Unexecuted instantiation: mpegvideo.c:block_BytestreamPop
Unexecuted instantiation: vc1.c:block_BytestreamPop
146
147
static inline int block_WaitBytes( block_bytestream_t *p_bytestream,
148
                                   size_t i_data )
149
1.43M
{
150
1.43M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
1.42M
        return VLC_SUCCESS;
152
2.34k
    return VLC_EGENERIC;
153
1.43M
}
a52.c:block_WaitBytes
Line
Count
Source
149
728k
{
150
728k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
726k
        return VLC_SUCCESS;
152
1.02k
    return VLC_EGENERIC;
153
728k
}
dts.c:block_WaitBytes
Line
Count
Source
149
183k
{
150
183k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
182k
        return VLC_SUCCESS;
152
1.15k
    return VLC_EGENERIC;
153
183k
}
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
233k
{
150
233k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
232k
        return VLC_SUCCESS;
152
168
    return VLC_EGENERIC;
153
233k
}
Unexecuted instantiation: mpeg4audio.c:block_WaitBytes
Unexecuted instantiation: mpeg4video.c:block_WaitBytes
mpegaudio.c:block_WaitBytes
Line
Count
Source
149
285k
{
150
285k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
285k
        return VLC_SUCCESS;
152
0
    return VLC_EGENERIC;
153
285k
}
Unexecuted instantiation: mpegvideo.c:block_WaitBytes
Unexecuted instantiation: vc1.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
194M
{
158
194M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
29.1k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
194M
    size_t i_offset = p_bytestream->i_block_offset;
163
194M
    size_t i_size = i_data;
164
194M
    for( block_t *p_block = p_bytestream->p_block;
165
195M
         p_block != NULL; p_block = p_block->p_next )
166
195M
    {
167
195M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
195M
        i_size -= i_copy;
169
170
195M
        if( i_copy )
171
195M
        {
172
195M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
195M
            p_data += i_copy;
174
195M
        }
175
176
195M
        i_offset = 0;
177
178
195M
        if( !i_size ) break;
179
195M
    }
180
181
194M
    return VLC_SUCCESS;
182
194M
}
a52.c:block_PeekBytes
Line
Count
Source
157
25.1M
{
158
25.1M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
12.6k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
25.1M
    size_t i_offset = p_bytestream->i_block_offset;
163
25.1M
    size_t i_size = i_data;
164
25.1M
    for( block_t *p_block = p_bytestream->p_block;
165
25.2M
         p_block != NULL; p_block = p_block->p_next )
166
25.2M
    {
167
25.2M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
25.2M
        i_size -= i_copy;
169
170
25.2M
        if( i_copy )
171
25.2M
        {
172
25.2M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
25.2M
            p_data += i_copy;
174
25.2M
        }
175
176
25.2M
        i_offset = 0;
177
178
25.2M
        if( !i_size ) break;
179
25.2M
    }
180
181
25.1M
    return VLC_SUCCESS;
182
25.1M
}
dts.c:block_PeekBytes
Line
Count
Source
157
99.9M
{
158
99.9M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
4.43k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
99.9M
    size_t i_offset = p_bytestream->i_block_offset;
163
99.9M
    size_t i_size = i_data;
164
99.9M
    for( block_t *p_block = p_bytestream->p_block;
165
99.9M
         p_block != NULL; p_block = p_block->p_next )
166
99.9M
    {
167
99.9M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
99.9M
        i_size -= i_copy;
169
170
99.9M
        if( i_copy )
171
99.9M
        {
172
99.9M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
99.9M
            p_data += i_copy;
174
99.9M
        }
175
176
99.9M
        i_offset = 0;
177
178
99.9M
        if( !i_size ) break;
179
99.9M
    }
180
181
99.9M
    return VLC_SUCCESS;
182
99.9M
}
flac.c:block_PeekBytes
Line
Count
Source
157
3.87M
{
158
3.87M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
830
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
3.86M
    size_t i_offset = p_bytestream->i_block_offset;
163
3.86M
    size_t i_size = i_data;
164
3.86M
    for( block_t *p_block = p_bytestream->p_block;
165
3.87M
         p_block != NULL; p_block = p_block->p_next )
166
3.87M
    {
167
3.87M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
3.87M
        i_size -= i_copy;
169
170
3.87M
        if( i_copy )
171
3.87M
        {
172
3.87M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
3.87M
            p_data += i_copy;
174
3.87M
        }
175
176
3.87M
        i_offset = 0;
177
178
3.87M
        if( !i_size ) break;
179
3.87M
    }
180
181
3.86M
    return VLC_SUCCESS;
182
3.87M
}
Unexecuted instantiation: h264.c:block_PeekBytes
Unexecuted instantiation: hevc.c:block_PeekBytes
mlp.c:block_PeekBytes
Line
Count
Source
157
18.9M
{
158
18.9M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
1.70k
        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
19.4M
         p_block != NULL; p_block = p_block->p_next )
166
19.4M
    {
167
19.4M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
19.4M
        i_size -= i_copy;
169
170
19.4M
        if( i_copy )
171
19.4M
        {
172
19.4M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
19.4M
            p_data += i_copy;
174
19.4M
        }
175
176
19.4M
        i_offset = 0;
177
178
19.4M
        if( !i_size ) break;
179
19.4M
    }
180
181
18.9M
    return VLC_SUCCESS;
182
18.9M
}
Unexecuted instantiation: mpeg4audio.c:block_PeekBytes
Unexecuted instantiation: mpeg4video.c:block_PeekBytes
mpegaudio.c:block_PeekBytes
Line
Count
Source
157
46.8M
{
158
46.8M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
9.48k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
46.8M
    size_t i_offset = p_bytestream->i_block_offset;
163
46.8M
    size_t i_size = i_data;
164
46.8M
    for( block_t *p_block = p_bytestream->p_block;
165
46.9M
         p_block != NULL; p_block = p_block->p_next )
166
46.9M
    {
167
46.9M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
46.9M
        i_size -= i_copy;
169
170
46.9M
        if( i_copy )
171
46.8M
        {
172
46.8M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
46.8M
            p_data += i_copy;
174
46.8M
        }
175
176
46.9M
        i_offset = 0;
177
178
46.9M
        if( !i_size ) break;
179
46.9M
    }
180
181
46.8M
    return VLC_SUCCESS;
182
46.8M
}
Unexecuted instantiation: mpegvideo.c:block_PeekBytes
Unexecuted instantiation: vc1.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
190M
{
187
190M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
5.68k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
190M
    size_t i_offset = p_bytestream->i_block_offset;
192
190M
    size_t i_size = i_data;
193
190M
    size_t i_copy = 0;
194
190M
    block_t *p_block;
195
190M
    for( p_block = p_bytestream->p_block;
196
191M
         p_block != NULL; p_block = p_block->p_next )
197
191M
    {
198
191M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
191M
        i_size -= i_copy;
200
201
191M
        if( i_copy && p_data != NULL )
202
14.5M
        {
203
14.5M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
14.5M
            p_data += i_copy;
205
14.5M
        }
206
207
191M
        if( i_size == 0 )
208
190M
            break;
209
210
170k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
170k
        i_offset = 0;
212
170k
    }
213
214
190M
    p_bytestream->p_block = p_block;
215
190M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
190M
    return VLC_SUCCESS;
218
190M
}
a52.c:block_GetBytes
Line
Count
Source
186
22.4M
{
187
22.4M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
3.51k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
22.4M
    size_t i_offset = p_bytestream->i_block_offset;
192
22.4M
    size_t i_size = i_data;
193
22.4M
    size_t i_copy = 0;
194
22.4M
    block_t *p_block;
195
22.4M
    for( p_block = p_bytestream->p_block;
196
22.4M
         p_block != NULL; p_block = p_block->p_next )
197
22.4M
    {
198
22.4M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
22.4M
        i_size -= i_copy;
200
201
22.4M
        if( i_copy && p_data != NULL )
202
737k
        {
203
737k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
737k
            p_data += i_copy;
205
737k
        }
206
207
22.4M
        if( i_size == 0 )
208
22.4M
            break;
209
210
40.1k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
40.1k
        i_offset = 0;
212
40.1k
    }
213
214
22.4M
    p_bytestream->p_block = p_block;
215
22.4M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
22.4M
    return VLC_SUCCESS;
218
22.4M
}
dts.c:block_GetBytes
Line
Count
Source
186
95.2M
{
187
95.2M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
1.31k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
95.2M
    size_t i_offset = p_bytestream->i_block_offset;
192
95.2M
    size_t i_size = i_data;
193
95.2M
    size_t i_copy = 0;
194
95.2M
    block_t *p_block;
195
95.2M
    for( p_block = p_bytestream->p_block;
196
95.2M
         p_block != NULL; p_block = p_block->p_next )
197
95.2M
    {
198
95.2M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
95.2M
        i_size -= i_copy;
200
201
95.2M
        if( i_copy && p_data != NULL )
202
184k
        {
203
184k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
184k
            p_data += i_copy;
205
184k
        }
206
207
95.2M
        if( i_size == 0 )
208
95.2M
            break;
209
210
7.71k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
7.71k
        i_offset = 0;
212
7.71k
    }
213
214
95.2M
    p_bytestream->p_block = p_block;
215
95.2M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
95.2M
    return VLC_SUCCESS;
218
95.2M
}
flac.c:block_GetBytes
Line
Count
Source
186
7.73M
{
187
7.73M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
486
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
7.73M
    size_t i_offset = p_bytestream->i_block_offset;
192
7.73M
    size_t i_size = i_data;
193
7.73M
    size_t i_copy = 0;
194
7.73M
    block_t *p_block;
195
7.73M
    for( p_block = p_bytestream->p_block;
196
7.73M
         p_block != NULL; p_block = p_block->p_next )
197
7.73M
    {
198
7.73M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
7.73M
        i_size -= i_copy;
200
201
7.73M
        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
7.73M
        if( i_size == 0 )
208
7.73M
            break;
209
210
2.95k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
2.95k
        i_offset = 0;
212
2.95k
    }
213
214
7.73M
    p_bytestream->p_block = p_block;
215
7.73M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
7.73M
    return VLC_SUCCESS;
218
7.73M
}
h264.c:block_GetBytes
Line
Count
Source
186
1.01M
{
187
1.01M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
1.01M
    size_t i_offset = p_bytestream->i_block_offset;
192
1.01M
    size_t i_size = i_data;
193
1.01M
    size_t i_copy = 0;
194
1.01M
    block_t *p_block;
195
1.01M
    for( p_block = p_bytestream->p_block;
196
1.04M
         p_block != NULL; p_block = p_block->p_next )
197
1.04M
    {
198
1.04M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
1.04M
        i_size -= i_copy;
200
201
1.04M
        if( i_copy && p_data != NULL )
202
1.03M
        {
203
1.03M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
1.03M
            p_data += i_copy;
205
1.03M
        }
206
207
1.04M
        if( i_size == 0 )
208
1.01M
            break;
209
210
31.3k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
31.3k
        i_offset = 0;
212
31.3k
    }
213
214
1.01M
    p_bytestream->p_block = p_block;
215
1.01M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
1.01M
    return VLC_SUCCESS;
218
1.01M
}
hevc.c:block_GetBytes
Line
Count
Source
186
11.9M
{
187
11.9M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
11.9M
    size_t i_offset = p_bytestream->i_block_offset;
192
11.9M
    size_t i_size = i_data;
193
11.9M
    size_t i_copy = 0;
194
11.9M
    block_t *p_block;
195
11.9M
    for( p_block = p_bytestream->p_block;
196
12.0M
         p_block != NULL; p_block = p_block->p_next )
197
12.0M
    {
198
12.0M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
12.0M
        i_size -= i_copy;
200
201
12.0M
        if( i_copy && p_data != NULL )
202
12.0M
        {
203
12.0M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
12.0M
            p_data += i_copy;
205
12.0M
        }
206
207
12.0M
        if( i_size == 0 )
208
11.9M
            break;
209
210
44.0k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
44.0k
        i_offset = 0;
212
44.0k
    }
213
214
11.9M
    p_bytestream->p_block = p_block;
215
11.9M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
11.9M
    return VLC_SUCCESS;
218
11.9M
}
mlp.c:block_GetBytes
Line
Count
Source
186
18.1M
{
187
18.1M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
18.1M
    size_t i_offset = p_bytestream->i_block_offset;
192
18.1M
    size_t i_size = i_data;
193
18.1M
    size_t i_copy = 0;
194
18.1M
    block_t *p_block;
195
18.1M
    for( p_block = p_bytestream->p_block;
196
18.1M
         p_block != NULL; p_block = p_block->p_next )
197
18.1M
    {
198
18.1M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
18.1M
        i_size -= i_copy;
200
201
18.1M
        if( i_copy && p_data != NULL )
202
234k
        {
203
234k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
234k
            p_data += i_copy;
205
234k
        }
206
207
18.1M
        if( i_size == 0 )
208
18.1M
            break;
209
210
5.79k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
5.79k
        i_offset = 0;
212
5.79k
    }
213
214
18.1M
    p_bytestream->p_block = p_block;
215
18.1M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
18.1M
    return VLC_SUCCESS;
218
18.1M
}
Unexecuted instantiation: mpeg4audio.c:block_GetBytes
Unexecuted instantiation: mpeg4video.c:block_GetBytes
mpegaudio.c:block_GetBytes
Line
Count
Source
186
34.3M
{
187
34.3M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
368
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
34.3M
    size_t i_offset = p_bytestream->i_block_offset;
192
34.3M
    size_t i_size = i_data;
193
34.3M
    size_t i_copy = 0;
194
34.3M
    block_t *p_block;
195
34.3M
    for( p_block = p_bytestream->p_block;
196
34.3M
         p_block != NULL; p_block = p_block->p_next )
197
34.3M
    {
198
34.3M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
34.3M
        i_size -= i_copy;
200
201
34.3M
        if( i_copy && p_data != NULL )
202
291k
        {
203
291k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
291k
            p_data += i_copy;
205
291k
        }
206
207
34.3M
        if( i_size == 0 )
208
34.3M
            break;
209
210
38.9k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
38.9k
        i_offset = 0;
212
38.9k
    }
213
214
34.3M
    p_bytestream->p_block = p_block;
215
34.3M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
34.3M
    return VLC_SUCCESS;
218
34.3M
}
Unexecuted instantiation: mpegvideo.c:block_GetBytes
vc1.c:block_GetBytes
Line
Count
Source
186
16.8k
{
187
16.8k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
16.8k
    size_t i_offset = p_bytestream->i_block_offset;
192
16.8k
    size_t i_size = i_data;
193
16.8k
    size_t i_copy = 0;
194
16.8k
    block_t *p_block;
195
16.8k
    for( p_block = p_bytestream->p_block;
196
16.8k
         p_block != NULL; p_block = p_block->p_next )
197
16.8k
    {
198
16.8k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
16.8k
        i_size -= i_copy;
200
201
16.8k
        if( i_copy && p_data != NULL )
202
16.1k
        {
203
16.1k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
16.1k
            p_data += i_copy;
205
16.1k
        }
206
207
16.8k
        if( i_size == 0 )
208
16.8k
            break;
209
210
0
        p_bytestream->i_base_offset += p_block->i_buffer;
211
0
        i_offset = 0;
212
0
    }
213
214
16.8k
    p_bytestream->p_block = p_block;
215
16.8k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
16.8k
    return VLC_SUCCESS;
218
16.8k
}
219
220
static inline int block_SkipBytes( block_bytestream_t *p_bytestream,
221
                                   size_t i_data )
222
4.84M
{
223
4.84M
    return block_GetBytes( p_bytestream, NULL, i_data );
224
4.84M
}
a52.c:block_SkipBytes
Line
Count
Source
222
621k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
621k
}
dts.c:block_SkipBytes
Line
Count
Source
222
13.4k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
13.4k
}
flac.c:block_SkipBytes
Line
Count
Source
222
4.19M
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
4.19M
}
h264.c:block_SkipBytes
Line
Count
Source
222
11.3k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
11.3k
}
hevc.c:block_SkipBytes
Line
Count
Source
222
12.0k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
12.0k
}
Unexecuted instantiation: mlp.c:block_SkipBytes
Unexecuted instantiation: mpeg4audio.c:block_SkipBytes
Unexecuted instantiation: mpeg4video.c:block_SkipBytes
Unexecuted instantiation: mpegaudio.c:block_SkipBytes
Unexecuted instantiation: mpegvideo.c:block_SkipBytes
vc1.c:block_SkipBytes
Line
Count
Source
222
712
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
712
}
225
226
static inline int block_SkipByte( block_bytestream_t *p_bytestream )
227
171M
{
228
171M
    return block_GetBytes( p_bytestream, NULL, 1 );
229
171M
}
a52.c:block_SkipByte
Line
Count
Source
227
21.0M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
21.0M
}
dts.c:block_SkipByte
Line
Count
Source
227
95.0M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
95.0M
}
flac.c:block_SkipByte
Line
Count
Source
227
3.54M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
3.54M
}
Unexecuted instantiation: h264.c:block_SkipByte
Unexecuted instantiation: hevc.c:block_SkipByte
mlp.c:block_SkipByte
Line
Count
Source
227
17.9M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
17.9M
}
Unexecuted instantiation: mpeg4audio.c:block_SkipByte
Unexecuted instantiation: mpeg4video.c:block_SkipByte
mpegaudio.c:block_SkipByte
Line
Count
Source
227
34.0M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
34.0M
}
Unexecuted instantiation: mpegvideo.c:block_SkipByte
Unexecuted instantiation: vc1.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
173M
{
234
173M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
173M
    if( i_remain < i_data + i_peek_offset )
236
59.1k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
173M
    size_t i_offset = p_bytestream->i_block_offset;
240
173M
    size_t i_size = i_peek_offset;
241
173M
    size_t i_copy = 0;
242
173M
    block_t *p_block;
243
173M
    for( p_block = p_bytestream->p_block;
244
1.17G
         p_block != NULL; p_block = p_block->p_next )
245
1.17G
    {
246
1.17G
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
1.17G
        i_size -= i_copy;
248
249
1.17G
        if( !i_size ) break;
250
251
1.00G
        i_offset = 0;
252
1.00G
    }
253
254
    /* Copy the data */
255
173M
    i_offset += i_copy;
256
173M
    i_size = i_data;
257
173M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
173M
    {
259
173M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
173M
        i_size -= i_copy;
261
262
173M
        if( i_copy )
263
173M
        {
264
173M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
173M
            p_data += i_copy;
266
173M
        }
267
268
173M
        i_offset = 0;
269
270
173M
        if( !i_size ) break;
271
173M
    }
272
273
173M
    return VLC_SUCCESS;
274
173M
}
a52.c:block_PeekOffsetBytes
Line
Count
Source
233
740k
{
234
740k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
740k
    if( i_remain < i_data + i_peek_offset )
236
12.2k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
728k
    size_t i_offset = p_bytestream->i_block_offset;
240
728k
    size_t i_size = i_peek_offset;
241
728k
    size_t i_copy = 0;
242
728k
    block_t *p_block;
243
728k
    for( p_block = p_bytestream->p_block;
244
932k
         p_block != NULL; p_block = p_block->p_next )
245
932k
    {
246
932k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
932k
        i_size -= i_copy;
248
249
932k
        if( !i_size ) break;
250
251
203k
        i_offset = 0;
252
203k
    }
253
254
    /* Copy the data */
255
728k
    i_offset += i_copy;
256
728k
    i_size = i_data;
257
735k
    for( ; p_block != NULL; p_block = p_block->p_next )
258
735k
    {
259
735k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
735k
        i_size -= i_copy;
261
262
735k
        if( i_copy )
263
733k
        {
264
733k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
733k
            p_data += i_copy;
266
733k
        }
267
268
735k
        i_offset = 0;
269
270
735k
        if( !i_size ) break;
271
735k
    }
272
273
728k
    return VLC_SUCCESS;
274
740k
}
dts.c:block_PeekOffsetBytes
Line
Count
Source
233
83.0M
{
234
83.0M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
83.0M
    if( i_remain < i_data + i_peek_offset )
236
6.31k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
83.0M
    size_t i_offset = p_bytestream->i_block_offset;
240
83.0M
    size_t i_size = i_peek_offset;
241
83.0M
    size_t i_copy = 0;
242
83.0M
    block_t *p_block;
243
83.0M
    for( p_block = p_bytestream->p_block;
244
771M
         p_block != NULL; p_block = p_block->p_next )
245
771M
    {
246
771M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
771M
        i_size -= i_copy;
248
249
771M
        if( !i_size ) break;
250
251
688M
        i_offset = 0;
252
688M
    }
253
254
    /* Copy the data */
255
83.0M
    i_offset += i_copy;
256
83.0M
    i_size = i_data;
257
83.1M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
83.1M
    {
259
83.1M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
83.1M
        i_size -= i_copy;
261
262
83.1M
        if( i_copy )
263
83.1M
        {
264
83.1M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
83.1M
            p_data += i_copy;
266
83.1M
        }
267
268
83.1M
        i_offset = 0;
269
270
83.1M
        if( !i_size ) break;
271
83.1M
    }
272
273
83.0M
    return VLC_SUCCESS;
274
83.0M
}
flac.c:block_PeekOffsetBytes
Line
Count
Source
233
74.8M
{
234
74.8M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
74.8M
    if( i_remain < i_data + i_peek_offset )
236
1.92k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
74.8M
    size_t i_offset = p_bytestream->i_block_offset;
240
74.8M
    size_t i_size = i_peek_offset;
241
74.8M
    size_t i_copy = 0;
242
74.8M
    block_t *p_block;
243
74.8M
    for( p_block = p_bytestream->p_block;
244
382M
         p_block != NULL; p_block = p_block->p_next )
245
382M
    {
246
382M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
382M
        i_size -= i_copy;
248
249
382M
        if( !i_size ) break;
250
251
307M
        i_offset = 0;
252
307M
    }
253
254
    /* Copy the data */
255
74.8M
    i_offset += i_copy;
256
74.8M
    i_size = i_data;
257
74.9M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
74.9M
    {
259
74.9M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
74.9M
        i_size -= i_copy;
261
262
74.9M
        if( i_copy )
263
74.9M
        {
264
74.9M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
74.9M
            p_data += i_copy;
266
74.9M
        }
267
268
74.9M
        i_offset = 0;
269
270
74.9M
        if( !i_size ) break;
271
74.9M
    }
272
273
74.8M
    return VLC_SUCCESS;
274
74.8M
}
Unexecuted instantiation: h264.c:block_PeekOffsetBytes
Unexecuted instantiation: hevc.c:block_PeekOffsetBytes
mlp.c:block_PeekOffsetBytes
Line
Count
Source
233
830k
{
234
830k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
830k
    if( i_remain < i_data + i_peek_offset )
236
5.59k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
825k
    size_t i_offset = p_bytestream->i_block_offset;
240
825k
    size_t i_size = i_peek_offset;
241
825k
    size_t i_copy = 0;
242
825k
    block_t *p_block;
243
825k
    for( p_block = p_bytestream->p_block;
244
883k
         p_block != NULL; p_block = p_block->p_next )
245
883k
    {
246
883k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
883k
        i_size -= i_copy;
248
249
883k
        if( !i_size ) break;
250
251
58.6k
        i_offset = 0;
252
58.6k
    }
253
254
    /* Copy the data */
255
825k
    i_offset += i_copy;
256
825k
    i_size = i_data;
257
845k
    for( ; p_block != NULL; p_block = p_block->p_next )
258
845k
    {
259
845k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
845k
        i_size -= i_copy;
261
262
845k
        if( i_copy )
263
844k
        {
264
844k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
844k
            p_data += i_copy;
266
844k
        }
267
268
845k
        i_offset = 0;
269
270
845k
        if( !i_size ) break;
271
845k
    }
272
273
825k
    return VLC_SUCCESS;
274
830k
}
Unexecuted instantiation: mpeg4audio.c:block_PeekOffsetBytes
Unexecuted instantiation: mpeg4video.c:block_PeekOffsetBytes
mpegaudio.c:block_PeekOffsetBytes
Line
Count
Source
233
13.6M
{
234
13.6M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
13.6M
    if( i_remain < i_data + i_peek_offset )
236
33.1k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
13.5M
    size_t i_offset = p_bytestream->i_block_offset;
240
13.5M
    size_t i_size = i_peek_offset;
241
13.5M
    size_t i_copy = 0;
242
13.5M
    block_t *p_block;
243
13.5M
    for( p_block = p_bytestream->p_block;
244
21.4M
         p_block != NULL; p_block = p_block->p_next )
245
21.4M
    {
246
21.4M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
21.4M
        i_size -= i_copy;
248
249
21.4M
        if( !i_size ) break;
250
251
7.85M
        i_offset = 0;
252
7.85M
    }
253
254
    /* Copy the data */
255
13.5M
    i_offset += i_copy;
256
13.5M
    i_size = i_data;
257
13.6M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
13.6M
    {
259
13.6M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
13.6M
        i_size -= i_copy;
261
262
13.6M
        if( i_copy )
263
13.6M
        {
264
13.6M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
13.6M
            p_data += i_copy;
266
13.6M
        }
267
268
13.6M
        i_offset = 0;
269
270
13.6M
        if( !i_size ) break;
271
13.6M
    }
272
273
13.5M
    return VLC_SUCCESS;
274
13.6M
}
Unexecuted instantiation: mpegvideo.c:block_PeekOffsetBytes
Unexecuted instantiation: vc1.c:block_PeekOffsetBytes
275
276
typedef const uint8_t * (*block_startcode_helper_t)( const uint8_t *, const uint8_t * );
277
typedef bool (*block_startcode_matcher_t)( uint8_t, size_t, const uint8_t * );
278
279
static inline int block_FindStartcodeFromOffset(
280
    block_bytestream_t *p_bytestream, size_t *pi_offset,
281
    const uint8_t *p_startcode, int i_startcode_length,
282
    block_startcode_helper_t p_startcode_helper,
283
    block_startcode_matcher_t p_startcode_matcher )
284
89.7M
{
285
89.7M
    block_t *p_block, *p_block_backup = 0;
286
89.7M
    ssize_t i_size = 0;
287
89.7M
    size_t i_offset, i_offset_backup = 0;
288
89.7M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
89.7M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
89.7M
    for( p_block = p_bytestream->p_block;
293
386M
         p_block != NULL; p_block = p_block->p_next )
294
386M
    {
295
386M
        i_size -= p_block->i_buffer;
296
386M
        if( i_size < 0 ) break;
297
386M
    }
298
299
89.7M
    if( unlikely( i_size >= 0 ) )
300
54.8k
    {
301
        /* Not enough data, bail out */
302
54.8k
        return VLC_EGENERIC;
303
54.8k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
89.7M
    i_size += p_block->i_buffer;
309
89.7M
    *pi_offset -= i_size;
310
89.7M
    i_match = 0;
311
90.0M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
89.9M
    {
313
102M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
101M
        {
315
            /* Use optimized helper when possible */
316
101M
            if( p_startcode_helper && !i_match &&
317
89.4M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
89.3M
            {
319
89.3M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
89.3M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
89.3M
                if( p_res )
322
89.1M
                {
323
89.1M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
89.1M
                    return VLC_SUCCESS;
325
89.1M
                }
326
                /* Then parsing boundary with legacy code */
327
193k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
193k
            }
329
330
101M
            bool b_matched = ( p_startcode_matcher )
331
12.7M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
12.7M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
12.7M
            if( b_matched )
334
1.37M
            {
335
1.37M
                if( i_match == 0 )
336
830k
                {
337
830k
                    p_block_backup = p_block;
338
830k
                    i_offset_backup = i_offset;
339
830k
                    i_caller_offset_backup = *pi_offset;
340
830k
                }
341
342
1.37M
                if( i_match + 1 == i_startcode_length )
343
484k
                {
344
                    /* We have it */
345
484k
                    *pi_offset += i_offset - i_match;
346
484k
                    return VLC_SUCCESS;
347
484k
                }
348
349
888k
                i_match++;
350
888k
            }
351
11.3M
            else if ( i_match > 0 )
352
313k
            {
353
                /* False positive */
354
313k
                p_block = p_block_backup;
355
313k
                i_offset = i_offset_backup;
356
313k
                *pi_offset = i_caller_offset_backup;
357
313k
                i_match = 0;
358
313k
            }
359
360
12.7M
        }
361
302k
        i_size = 0;
362
302k
        *pi_offset += i_offset;
363
302k
    }
364
365
117k
    *pi_offset -= i_match;
366
117k
    return VLC_EGENERIC;
367
89.7M
}
a52.c:block_FindStartcodeFromOffset
Line
Count
Source
284
473k
{
285
473k
    block_t *p_block, *p_block_backup = 0;
286
473k
    ssize_t i_size = 0;
287
473k
    size_t i_offset, i_offset_backup = 0;
288
473k
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
473k
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
473k
    for( p_block = p_bytestream->p_block;
293
478k
         p_block != NULL; p_block = p_block->p_next )
294
478k
    {
295
478k
        i_size -= p_block->i_buffer;
296
478k
        if( i_size < 0 ) break;
297
478k
    }
298
299
473k
    if( unlikely( i_size >= 0 ) )
300
0
    {
301
        /* Not enough data, bail out */
302
0
        return VLC_EGENERIC;
303
0
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
473k
    i_size += p_block->i_buffer;
309
473k
    *pi_offset -= i_size;
310
473k
    i_match = 0;
311
485k
    for( ; p_block != NULL; p_block = p_block->p_next )
312
483k
    {
313
12.2M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
12.2M
        {
315
            /* Use optimized helper when possible */
316
12.2M
            if( p_startcode_helper && !i_match &&
317
0
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
0
            {
319
0
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
0
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
0
                if( p_res )
322
0
                {
323
0
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
0
                    return VLC_SUCCESS;
325
0
                }
326
                /* Then parsing boundary with legacy code */
327
0
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
0
            }
329
330
12.2M
            bool b_matched = ( p_startcode_matcher )
331
12.2M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
12.2M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
12.2M
            if( b_matched )
334
1.19M
            {
335
1.19M
                if( i_match == 0 )
336
719k
                {
337
719k
                    p_block_backup = p_block;
338
719k
                    i_offset_backup = i_offset;
339
719k
                    i_caller_offset_backup = *pi_offset;
340
719k
                }
341
342
1.19M
                if( i_match + 1 == i_startcode_length )
343
472k
                {
344
                    /* We have it */
345
472k
                    *pi_offset += i_offset - i_match;
346
472k
                    return VLC_SUCCESS;
347
472k
                }
348
349
719k
                i_match++;
350
719k
            }
351
11.0M
            else if ( i_match > 0 )
352
247k
            {
353
                /* False positive */
354
247k
                p_block = p_block_backup;
355
247k
                i_offset = i_offset_backup;
356
247k
                *pi_offset = i_caller_offset_backup;
357
247k
                i_match = 0;
358
247k
            }
359
360
12.2M
        }
361
11.8k
        i_size = 0;
362
11.8k
        *pi_offset += i_offset;
363
11.8k
    }
364
365
1.56k
    *pi_offset -= i_match;
366
1.56k
    return VLC_EGENERIC;
367
473k
}
Unexecuted instantiation: dts.c:block_FindStartcodeFromOffset
flac.c:block_FindStartcodeFromOffset
Line
Count
Source
284
63.1M
{
285
63.1M
    block_t *p_block, *p_block_backup = 0;
286
63.1M
    ssize_t i_size = 0;
287
63.1M
    size_t i_offset, i_offset_backup = 0;
288
63.1M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
63.1M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
63.1M
    for( p_block = p_bytestream->p_block;
293
352M
         p_block != NULL; p_block = p_block->p_next )
294
352M
    {
295
352M
        i_size -= p_block->i_buffer;
296
352M
        if( i_size < 0 ) break;
297
352M
    }
298
299
63.1M
    if( unlikely( i_size >= 0 ) )
300
1.29k
    {
301
        /* Not enough data, bail out */
302
1.29k
        return VLC_EGENERIC;
303
1.29k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
63.1M
    i_size += p_block->i_buffer;
309
63.1M
    *pi_offset -= i_size;
310
63.1M
    i_match = 0;
311
63.3M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
63.3M
    {
313
63.4M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
63.3M
        {
315
            /* Use optimized helper when possible */
316
63.3M
            if( p_startcode_helper && !i_match &&
317
63.2M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
63.2M
            {
319
63.2M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
63.2M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
63.2M
                if( p_res )
322
63.1M
                {
323
63.1M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
63.1M
                    return VLC_SUCCESS;
325
63.1M
                }
326
                /* Then parsing boundary with legacy code */
327
90.1k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
90.1k
            }
329
330
63.3M
            bool b_matched = ( p_startcode_matcher )
331
122k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
122k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
122k
            if( b_matched )
334
33.6k
            {
335
33.6k
                if( i_match == 0 )
336
27.9k
                {
337
27.9k
                    p_block_backup = p_block;
338
27.9k
                    i_offset_backup = i_offset;
339
27.9k
                    i_caller_offset_backup = *pi_offset;
340
27.9k
                }
341
342
33.6k
                if( i_match + 1 == i_startcode_length )
343
5.73k
                {
344
                    /* We have it */
345
5.73k
                    *pi_offset += i_offset - i_match;
346
5.73k
                    return VLC_SUCCESS;
347
5.73k
                }
348
349
27.9k
                i_match++;
350
27.9k
            }
351
89.0k
            else if ( i_match > 0 )
352
21.3k
            {
353
                /* False positive */
354
21.3k
                p_block = p_block_backup;
355
21.3k
                i_offset = i_offset_backup;
356
21.3k
                *pi_offset = i_caller_offset_backup;
357
21.3k
                i_match = 0;
358
21.3k
            }
359
360
122k
        }
361
116k
        i_size = 0;
362
116k
        *pi_offset += i_offset;
363
116k
    }
364
365
4.42k
    *pi_offset -= i_match;
366
4.42k
    return VLC_EGENERIC;
367
63.1M
}
h264.c:block_FindStartcodeFromOffset
Line
Count
Source
284
2.07M
{
285
2.07M
    block_t *p_block, *p_block_backup = 0;
286
2.07M
    ssize_t i_size = 0;
287
2.07M
    size_t i_offset, i_offset_backup = 0;
288
2.07M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
2.07M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
2.07M
    for( p_block = p_bytestream->p_block;
293
5.47M
         p_block != NULL; p_block = p_block->p_next )
294
5.44M
    {
295
5.44M
        i_size -= p_block->i_buffer;
296
5.44M
        if( i_size < 0 ) break;
297
5.44M
    }
298
299
2.07M
    if( unlikely( i_size >= 0 ) )
300
28.5k
    {
301
        /* Not enough data, bail out */
302
28.5k
        return VLC_EGENERIC;
303
28.5k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
2.04M
    i_size += p_block->i_buffer;
309
2.04M
    *pi_offset -= i_size;
310
2.04M
    i_match = 0;
311
2.11M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
2.07M
    {
313
2.21M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
2.14M
        {
315
            /* Use optimized helper when possible */
316
2.14M
            if( p_startcode_helper && !i_match &&
317
2.10M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
2.04M
            {
319
2.04M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
2.04M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
2.04M
                if( p_res )
322
1.99M
                {
323
1.99M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
1.99M
                    return VLC_SUCCESS;
325
1.99M
                }
326
                /* Then parsing boundary with legacy code */
327
45.4k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
45.4k
            }
329
330
2.14M
            bool b_matched = ( p_startcode_matcher )
331
144k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
144k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
144k
            if( b_matched )
334
54.6k
            {
335
54.6k
                if( i_match == 0 )
336
33.0k
                {
337
33.0k
                    p_block_backup = p_block;
338
33.0k
                    i_offset_backup = i_offset;
339
33.0k
                    i_caller_offset_backup = *pi_offset;
340
33.0k
                }
341
342
54.6k
                if( i_match + 1 == i_startcode_length )
343
1.78k
                {
344
                    /* We have it */
345
1.78k
                    *pi_offset += i_offset - i_match;
346
1.78k
                    return VLC_SUCCESS;
347
1.78k
                }
348
349
52.8k
                i_match++;
350
52.8k
            }
351
89.6k
            else if ( i_match > 0 )
352
18.4k
            {
353
                /* False positive */
354
18.4k
                p_block = p_block_backup;
355
18.4k
                i_offset = i_offset_backup;
356
18.4k
                *pi_offset = i_caller_offset_backup;
357
18.4k
                i_match = 0;
358
18.4k
            }
359
360
144k
        }
361
72.4k
        i_size = 0;
362
72.4k
        *pi_offset += i_offset;
363
72.4k
    }
364
365
48.7k
    *pi_offset -= i_match;
366
48.7k
    return VLC_EGENERIC;
367
2.04M
}
hevc.c:block_FindStartcodeFromOffset
Line
Count
Source
284
24.0M
{
285
24.0M
    block_t *p_block, *p_block_backup = 0;
286
24.0M
    ssize_t i_size = 0;
287
24.0M
    size_t i_offset, i_offset_backup = 0;
288
24.0M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
24.0M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
24.0M
    for( p_block = p_bytestream->p_block;
293
28.1M
         p_block != NULL; p_block = p_block->p_next )
294
28.1M
    {
295
28.1M
        i_size -= p_block->i_buffer;
296
28.1M
        if( i_size < 0 ) break;
297
28.1M
    }
298
299
24.0M
    if( unlikely( i_size >= 0 ) )
300
23.8k
    {
301
        /* Not enough data, bail out */
302
23.8k
        return VLC_EGENERIC;
303
23.8k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
23.9M
    i_size += p_block->i_buffer;
309
23.9M
    *pi_offset -= i_size;
310
23.9M
    i_match = 0;
311
24.0M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
24.0M
    {
313
24.2M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
24.1M
        {
315
            /* Use optimized helper when possible */
316
24.1M
            if( p_startcode_helper && !i_match &&
317
24.0M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
23.9M
            {
319
23.9M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
23.9M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
23.9M
                if( p_res )
322
23.9M
                {
323
23.9M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
23.9M
                    return VLC_SUCCESS;
325
23.9M
                }
326
                /* Then parsing boundary with legacy code */
327
57.6k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
57.6k
            }
329
330
24.1M
            bool b_matched = ( p_startcode_matcher )
331
204k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
204k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
204k
            if( b_matched )
334
92.4k
            {
335
92.4k
                if( i_match == 0 )
336
49.1k
                {
337
49.1k
                    p_block_backup = p_block;
338
49.1k
                    i_offset_backup = i_offset;
339
49.1k
                    i_caller_offset_backup = *pi_offset;
340
49.1k
                }
341
342
92.4k
                if( i_match + 1 == i_startcode_length )
343
4.52k
                {
344
                    /* We have it */
345
4.52k
                    *pi_offset += i_offset - i_match;
346
4.52k
                    return VLC_SUCCESS;
347
4.52k
                }
348
349
87.9k
                i_match++;
350
87.9k
            }
351
111k
            else if ( i_match > 0 )
352
26.4k
            {
353
                /* False positive */
354
26.4k
                p_block = p_block_backup;
355
26.4k
                i_offset = i_offset_backup;
356
26.4k
                *pi_offset = i_caller_offset_backup;
357
26.4k
                i_match = 0;
358
26.4k
            }
359
360
204k
        }
361
100k
        i_size = 0;
362
100k
        *pi_offset += i_offset;
363
100k
    }
364
365
61.4k
    *pi_offset -= i_match;
366
61.4k
    return VLC_EGENERIC;
367
23.9M
}
Unexecuted instantiation: mlp.c:block_FindStartcodeFromOffset
Unexecuted instantiation: mpeg4audio.c:block_FindStartcodeFromOffset
Unexecuted instantiation: mpeg4video.c:block_FindStartcodeFromOffset
Unexecuted instantiation: mpegaudio.c:block_FindStartcodeFromOffset
Unexecuted instantiation: mpegvideo.c:block_FindStartcodeFromOffset
vc1.c:block_FindStartcodeFromOffset
Line
Count
Source
284
33.6k
{
285
33.6k
    block_t *p_block, *p_block_backup = 0;
286
33.6k
    ssize_t i_size = 0;
287
33.6k
    size_t i_offset, i_offset_backup = 0;
288
33.6k
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
33.6k
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
33.6k
    for( p_block = p_bytestream->p_block;
293
34.8k
         p_block != NULL; p_block = p_block->p_next )
294
33.6k
    {
295
33.6k
        i_size -= p_block->i_buffer;
296
33.6k
        if( i_size < 0 ) break;
297
33.6k
    }
298
299
33.6k
    if( unlikely( i_size >= 0 ) )
300
1.12k
    {
301
        /* Not enough data, bail out */
302
1.12k
        return VLC_EGENERIC;
303
1.12k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
32.5k
    i_size += p_block->i_buffer;
309
32.5k
    *pi_offset -= i_size;
310
32.5k
    i_match = 0;
311
33.4k
    for( ; p_block != NULL; p_block = p_block->p_next )
312
32.5k
    {
313
34.3k
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
33.4k
        {
315
            /* Use optimized helper when possible */
316
33.4k
            if( p_startcode_helper && !i_match &&
317
33.2k
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
32.3k
            {
319
32.3k
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
32.3k
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
32.3k
                if( p_res )
322
31.6k
                {
323
31.6k
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
31.6k
                    return VLC_SUCCESS;
325
31.6k
                }
326
                /* Then parsing boundary with legacy code */
327
697
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
697
            }
329
330
33.4k
            bool b_matched = ( p_startcode_matcher )
331
1.79k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
1.79k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
1.79k
            if( b_matched )
334
539
            {
335
539
                if( i_match == 0 )
336
405
                {
337
405
                    p_block_backup = p_block;
338
405
                    i_offset_backup = i_offset;
339
405
                    i_caller_offset_backup = *pi_offset;
340
405
                }
341
342
539
                if( i_match + 1 == i_startcode_length )
343
0
                {
344
                    /* We have it */
345
0
                    *pi_offset += i_offset - i_match;
346
0
                    return VLC_SUCCESS;
347
0
                }
348
349
539
                i_match++;
350
539
            }
351
1.25k
            else if ( i_match > 0 )
352
145
            {
353
                /* False positive */
354
145
                p_block = p_block_backup;
355
145
                i_offset = i_offset_backup;
356
145
                *pi_offset = i_caller_offset_backup;
357
145
                i_match = 0;
358
145
            }
359
360
1.79k
        }
361
858
        i_size = 0;
362
858
        *pi_offset += i_offset;
363
858
    }
364
365
858
    *pi_offset -= i_match;
366
858
    return VLC_EGENERIC;
367
32.5k
}
368
369
#endif /* VLC_BLOCK_HELPER_H */