Coverage Report

Created: 2025-11-11 06: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
63.0k
{
43
63.0k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
63.0k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
63.0k
    p_bytestream->i_block_offset = 0;
46
63.0k
    p_bytestream->i_base_offset = 0;
47
63.0k
    p_bytestream->i_total = 0;
48
63.0k
}
a52.c:block_BytestreamInit
Line
Count
Source
42
2.10k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
2.10k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
2.10k
    p_bytestream->i_block_offset = 0;
46
2.10k
    p_bytestream->i_base_offset = 0;
47
2.10k
    p_bytestream->i_total = 0;
48
2.10k
}
dts.c:block_BytestreamInit
Line
Count
Source
42
2.67k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
2.67k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
2.67k
    p_bytestream->i_block_offset = 0;
46
2.67k
    p_bytestream->i_base_offset = 0;
47
2.67k
    p_bytestream->i_total = 0;
48
2.67k
}
flac.c:block_BytestreamInit
Line
Count
Source
42
5.95k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
5.95k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
5.95k
    p_bytestream->i_block_offset = 0;
46
5.95k
    p_bytestream->i_base_offset = 0;
47
5.95k
    p_bytestream->i_total = 0;
48
5.95k
}
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
15.2k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
15.2k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
15.2k
    p_bytestream->i_block_offset = 0;
46
15.2k
    p_bytestream->i_base_offset = 0;
47
15.2k
    p_bytestream->i_total = 0;
48
15.2k
}
mlp.c:block_BytestreamInit
Line
Count
Source
42
791
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
791
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
791
    p_bytestream->i_block_offset = 0;
46
791
    p_bytestream->i_base_offset = 0;
47
791
    p_bytestream->i_total = 0;
48
791
}
mpeg4audio.c:block_BytestreamInit
Line
Count
Source
42
2.99k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
2.99k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
2.99k
    p_bytestream->i_block_offset = 0;
46
2.99k
    p_bytestream->i_base_offset = 0;
47
2.99k
    p_bytestream->i_total = 0;
48
2.99k
}
mpeg4video.c:block_BytestreamInit
Line
Count
Source
42
474
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
474
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
474
    p_bytestream->i_block_offset = 0;
46
474
    p_bytestream->i_base_offset = 0;
47
474
    p_bytestream->i_total = 0;
48
474
}
mpegaudio.c:block_BytestreamInit
Line
Count
Source
42
4.48k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
4.48k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
4.48k
    p_bytestream->i_block_offset = 0;
46
4.48k
    p_bytestream->i_base_offset = 0;
47
4.48k
    p_bytestream->i_total = 0;
48
4.48k
}
mpegvideo.c:block_BytestreamInit
Line
Count
Source
42
5.02k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
5.02k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
5.02k
    p_bytestream->i_block_offset = 0;
46
5.02k
    p_bytestream->i_base_offset = 0;
47
5.02k
    p_bytestream->i_total = 0;
48
5.02k
}
vc1.c:block_BytestreamInit
Line
Count
Source
42
1.55k
{
43
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
1.55k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
1.55k
    p_bytestream->i_block_offset = 0;
46
1.55k
    p_bytestream->i_base_offset = 0;
47
1.55k
    p_bytestream->i_total = 0;
48
1.55k
}
49
50
static inline void block_BytestreamRelease( block_bytestream_t *p_bytestream )
51
63.0k
{
52
63.0k
    block_ChainRelease( p_bytestream->p_chain );
53
63.0k
}
a52.c:block_BytestreamRelease
Line
Count
Source
51
2.10k
{
52
2.10k
    block_ChainRelease( p_bytestream->p_chain );
53
2.10k
}
dts.c:block_BytestreamRelease
Line
Count
Source
51
2.67k
{
52
2.67k
    block_ChainRelease( p_bytestream->p_chain );
53
2.67k
}
flac.c:block_BytestreamRelease
Line
Count
Source
51
5.95k
{
52
5.95k
    block_ChainRelease( p_bytestream->p_chain );
53
5.95k
}
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
15.2k
{
52
15.2k
    block_ChainRelease( p_bytestream->p_chain );
53
15.2k
}
mlp.c:block_BytestreamRelease
Line
Count
Source
51
791
{
52
791
    block_ChainRelease( p_bytestream->p_chain );
53
791
}
mpeg4audio.c:block_BytestreamRelease
Line
Count
Source
51
2.99k
{
52
2.99k
    block_ChainRelease( p_bytestream->p_chain );
53
2.99k
}
mpeg4video.c:block_BytestreamRelease
Line
Count
Source
51
474
{
52
474
    block_ChainRelease( p_bytestream->p_chain );
53
474
}
mpegaudio.c:block_BytestreamRelease
Line
Count
Source
51
4.48k
{
52
4.48k
    block_ChainRelease( p_bytestream->p_chain );
53
4.48k
}
mpegvideo.c:block_BytestreamRelease
Line
Count
Source
51
5.02k
{
52
5.02k
    block_ChainRelease( p_bytestream->p_chain );
53
5.02k
}
vc1.c:block_BytestreamRelease
Line
Count
Source
51
1.55k
{
52
1.55k
    block_ChainRelease( p_bytestream->p_chain );
53
1.55k
}
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
8.99k
{
60
8.99k
    block_BytestreamRelease( p_bytestream );
61
8.99k
    block_BytestreamInit( p_bytestream );
62
8.99k
}
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
4.65k
{
60
4.65k
    block_BytestreamRelease( p_bytestream );
61
4.65k
    block_BytestreamInit( p_bytestream );
62
4.65k
}
hevc.c:block_BytestreamEmpty
Line
Count
Source
59
3.56k
{
60
3.56k
    block_BytestreamRelease( p_bytestream );
61
3.56k
    block_BytestreamInit( p_bytestream );
62
3.56k
}
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
773
{
60
773
    block_BytestreamRelease( p_bytestream );
61
773
    block_BytestreamInit( p_bytestream );
62
773
}
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
9.31M
{
69
9.31M
    block_t *block = p_bytestream->p_chain;
70
71
9.44M
    while( block != p_bytestream->p_block )
72
120k
    {
73
120k
        block_t *p_next = block->p_next;
74
75
120k
        p_bytestream->i_total -= block->i_buffer;
76
120k
        p_bytestream->i_base_offset -= block->i_buffer;
77
120k
        block_Release( block );
78
120k
        block = p_next;
79
120k
    }
80
81
9.32M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
7.78k
    {
83
7.78k
        block_t *p_next = block->p_next;
84
85
7.78k
        p_bytestream->i_total -= block->i_buffer;
86
7.78k
        block_Release( block );
87
7.78k
        block = p_next;
88
7.78k
        p_bytestream->i_block_offset = 0;
89
7.78k
    }
90
91
9.31M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
9.31M
    if( p_bytestream->p_chain == NULL )
93
5.66k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
9.31M
}
a52.c:block_BytestreamFlush
Line
Count
Source
68
728k
{
69
728k
    block_t *block = p_bytestream->p_chain;
70
71
761k
    while( block != p_bytestream->p_block )
72
32.7k
    {
73
32.7k
        block_t *p_next = block->p_next;
74
75
32.7k
        p_bytestream->i_total -= block->i_buffer;
76
32.7k
        p_bytestream->i_base_offset -= block->i_buffer;
77
32.7k
        block_Release( block );
78
32.7k
        block = p_next;
79
32.7k
    }
80
81
730k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
2.48k
    {
83
2.48k
        block_t *p_next = block->p_next;
84
85
2.48k
        p_bytestream->i_total -= block->i_buffer;
86
2.48k
        block_Release( block );
87
2.48k
        block = p_next;
88
2.48k
        p_bytestream->i_block_offset = 0;
89
2.48k
    }
90
91
728k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
728k
    if( p_bytestream->p_chain == NULL )
93
1.10k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
728k
}
dts.c:block_BytestreamFlush
Line
Count
Source
68
200k
{
69
200k
    block_t *block = p_bytestream->p_chain;
70
71
205k
    while( block != p_bytestream->p_block )
72
5.06k
    {
73
5.06k
        block_t *p_next = block->p_next;
74
75
5.06k
        p_bytestream->i_total -= block->i_buffer;
76
5.06k
        p_bytestream->i_base_offset -= block->i_buffer;
77
5.06k
        block_Release( block );
78
5.06k
        block = p_next;
79
5.06k
    }
80
81
200k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
145
    {
83
145
        block_t *p_next = block->p_next;
84
85
145
        p_bytestream->i_total -= block->i_buffer;
86
145
        block_Release( block );
87
145
        block = p_next;
88
145
        p_bytestream->i_block_offset = 0;
89
145
    }
90
91
200k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
200k
    if( p_bytestream->p_chain == NULL )
93
227
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
200k
}
flac.c:block_BytestreamFlush
Line
Count
Source
68
4.32M
{
69
4.32M
    block_t *block = p_bytestream->p_chain;
70
71
4.32M
    while( block != p_bytestream->p_block )
72
3.61k
    {
73
3.61k
        block_t *p_next = block->p_next;
74
75
3.61k
        p_bytestream->i_total -= block->i_buffer;
76
3.61k
        p_bytestream->i_base_offset -= block->i_buffer;
77
3.61k
        block_Release( block );
78
3.61k
        block = p_next;
79
3.61k
    }
80
81
4.32M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.44k
    {
83
1.44k
        block_t *p_next = block->p_next;
84
85
1.44k
        p_bytestream->i_total -= block->i_buffer;
86
1.44k
        block_Release( block );
87
1.44k
        block = p_next;
88
1.44k
        p_bytestream->i_block_offset = 0;
89
1.44k
    }
90
91
4.32M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
4.32M
    if( p_bytestream->p_chain == NULL )
93
2.13k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
4.32M
}
h264.c:block_BytestreamFlush
Line
Count
Source
68
1.26M
{
69
1.26M
    block_t *block = p_bytestream->p_chain;
70
71
1.27M
    while( block != p_bytestream->p_block )
72
15.2k
    {
73
15.2k
        block_t *p_next = block->p_next;
74
75
15.2k
        p_bytestream->i_total -= block->i_buffer;
76
15.2k
        p_bytestream->i_base_offset -= block->i_buffer;
77
15.2k
        block_Release( block );
78
15.2k
        block = p_next;
79
15.2k
    }
80
81
1.26M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.12k
    {
83
1.12k
        block_t *p_next = block->p_next;
84
85
1.12k
        p_bytestream->i_total -= block->i_buffer;
86
1.12k
        block_Release( block );
87
1.12k
        block = p_next;
88
1.12k
        p_bytestream->i_block_offset = 0;
89
1.12k
    }
90
91
1.26M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.26M
    if( p_bytestream->p_chain == NULL )
93
649
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.26M
}
hevc.c:block_BytestreamFlush
Line
Count
Source
68
2.18M
{
69
2.18M
    block_t *block = p_bytestream->p_chain;
70
71
2.21M
    while( block != p_bytestream->p_block )
72
27.9k
    {
73
27.9k
        block_t *p_next = block->p_next;
74
75
27.9k
        p_bytestream->i_total -= block->i_buffer;
76
27.9k
        p_bytestream->i_base_offset -= block->i_buffer;
77
27.9k
        block_Release( block );
78
27.9k
        block = p_next;
79
27.9k
    }
80
81
2.19M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.47k
    {
83
1.47k
        block_t *p_next = block->p_next;
84
85
1.47k
        p_bytestream->i_total -= block->i_buffer;
86
1.47k
        block_Release( block );
87
1.47k
        block = p_next;
88
1.47k
        p_bytestream->i_block_offset = 0;
89
1.47k
    }
90
91
2.18M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
2.18M
    if( p_bytestream->p_chain == NULL )
93
792
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
2.18M
}
mlp.c:block_BytestreamFlush
Line
Count
Source
68
187k
{
69
187k
    block_t *block = p_bytestream->p_chain;
70
71
192k
    while( block != p_bytestream->p_block )
72
5.26k
    {
73
5.26k
        block_t *p_next = block->p_next;
74
75
5.26k
        p_bytestream->i_total -= block->i_buffer;
76
5.26k
        p_bytestream->i_base_offset -= block->i_buffer;
77
5.26k
        block_Release( block );
78
5.26k
        block = p_next;
79
5.26k
    }
80
81
187k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
135
    {
83
135
        block_t *p_next = block->p_next;
84
85
135
        p_bytestream->i_total -= block->i_buffer;
86
135
        block_Release( block );
87
135
        block = p_next;
88
135
        p_bytestream->i_block_offset = 0;
89
135
    }
90
91
187k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
187k
    if( p_bytestream->p_chain == NULL )
93
20
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
187k
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamFlush
Unexecuted instantiation: mpeg4video.c:block_BytestreamFlush
mpegaudio.c:block_BytestreamFlush
Line
Count
Source
68
410k
{
69
410k
    block_t *block = p_bytestream->p_chain;
70
71
441k
    while( block != p_bytestream->p_block )
72
30.8k
    {
73
30.8k
        block_t *p_next = block->p_next;
74
75
30.8k
        p_bytestream->i_total -= block->i_buffer;
76
30.8k
        p_bytestream->i_base_offset -= block->i_buffer;
77
30.8k
        block_Release( block );
78
30.8k
        block = p_next;
79
30.8k
    }
80
81
411k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
822
    {
83
822
        block_t *p_next = block->p_next;
84
85
822
        p_bytestream->i_total -= block->i_buffer;
86
822
        block_Release( block );
87
822
        block = p_next;
88
822
        p_bytestream->i_block_offset = 0;
89
822
    }
90
91
410k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
410k
    if( p_bytestream->p_chain == NULL )
93
578
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
410k
}
Unexecuted instantiation: mpegvideo.c:block_BytestreamFlush
vc1.c:block_BytestreamFlush
Line
Count
Source
68
15.6k
{
69
15.6k
    block_t *block = p_bytestream->p_chain;
70
71
15.6k
    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
15.7k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
152
    {
83
152
        block_t *p_next = block->p_next;
84
85
152
        p_bytestream->i_total -= block->i_buffer;
86
152
        block_Release( block );
87
152
        block = p_next;
88
152
        p_bytestream->i_block_offset = 0;
89
152
    }
90
91
15.6k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
15.6k
    if( p_bytestream->p_chain == NULL )
93
152
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
15.6k
}
95
96
static inline void block_BytestreamPush( block_bytestream_t *p_bytestream,
97
                                         block_t *p_block )
98
2.80M
{
99
2.80M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
2.80M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
5.60M
    for( ; p_block; p_block = p_block->p_next )
102
2.80M
        p_bytestream->i_total += p_block->i_buffer;
103
2.80M
}
a52.c:block_BytestreamPush
Line
Count
Source
98
782k
{
99
782k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
782k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.56M
    for( ; p_block; p_block = p_block->p_next )
102
782k
        p_bytestream->i_total += p_block->i_buffer;
103
782k
}
dts.c:block_BytestreamPush
Line
Count
Source
98
207k
{
99
207k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
207k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
415k
    for( ; p_block; p_block = p_block->p_next )
102
207k
        p_bytestream->i_total += p_block->i_buffer;
103
207k
}
flac.c:block_BytestreamPush
Line
Count
Source
98
141k
{
99
141k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
141k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
283k
    for( ; p_block; p_block = p_block->p_next )
102
141k
        p_bytestream->i_total += p_block->i_buffer;
103
141k
}
h264.c:block_BytestreamPush
Line
Count
Source
98
254k
{
99
254k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
254k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
509k
    for( ; p_block; p_block = p_block->p_next )
102
254k
        p_bytestream->i_total += p_block->i_buffer;
103
254k
}
hevc.c:block_BytestreamPush
Line
Count
Source
98
770k
{
99
770k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
770k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.54M
    for( ; p_block; p_block = p_block->p_next )
102
770k
        p_bytestream->i_total += p_block->i_buffer;
103
770k
}
mlp.c:block_BytestreamPush
Line
Count
Source
98
192k
{
99
192k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
192k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
384k
    for( ; p_block; p_block = p_block->p_next )
102
192k
        p_bytestream->i_total += p_block->i_buffer;
103
192k
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamPush
Unexecuted instantiation: mpeg4video.c:block_BytestreamPush
mpegaudio.c:block_BytestreamPush
Line
Count
Source
98
451k
{
99
451k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
451k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
902k
    for( ; p_block; p_block = p_block->p_next )
102
451k
        p_bytestream->i_total += p_block->i_buffer;
103
451k
}
Unexecuted instantiation: mpegvideo.c:block_BytestreamPush
vc1.c:block_BytestreamPush
Line
Count
Source
98
773
{
99
773
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
773
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.54k
    for( ; p_block; p_block = p_block->p_next )
102
773
        p_bytestream->i_total += p_block->i_buffer;
103
773
}
104
105
static inline size_t block_BytestreamRemaining( const block_bytestream_t *p_bytestream )
106
526M
{
107
526M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
526M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
526M
}
a52.c:block_BytestreamRemaining
Line
Count
Source
106
52.8M
{
107
52.8M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
52.8M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
52.8M
}
dts.c:block_BytestreamRemaining
Line
Count
Source
106
245M
{
107
245M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
245M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
245M
}
flac.c:block_BytestreamRemaining
Line
Count
Source
106
75.7M
{
107
75.7M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
75.7M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
75.7M
}
h264.c:block_BytestreamRemaining
Line
Count
Source
106
1.06M
{
107
1.06M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.06M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.06M
}
hevc.c:block_BytestreamRemaining
Line
Count
Source
106
1.48M
{
107
1.48M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.48M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.48M
}
mlp.c:block_BytestreamRemaining
Line
Count
Source
106
39.5M
{
107
39.5M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
39.5M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
39.5M
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamRemaining
Unexecuted instantiation: mpeg4video.c:block_BytestreamRemaining
mpegaudio.c:block_BytestreamRemaining
Line
Count
Source
106
110M
{
107
110M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
110M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
110M
}
Unexecuted instantiation: mpegvideo.c:block_BytestreamRemaining
vc1.c:block_BytestreamRemaining
Line
Count
Source
106
16.2k
{
107
16.2k
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
16.2k
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
16.2k
}
110
111
VLC_USED
112
static inline block_t *block_BytestreamPop( block_bytestream_t *p_bytestream )
113
2.56M
{
114
2.56M
    block_t *p_block;
115
116
2.56M
    block_BytestreamFlush( p_bytestream );
117
118
2.56M
    p_block = p_bytestream->p_block;
119
2.56M
    if( unlikely( p_block == NULL ) )
120
208
    {
121
208
        return NULL;
122
208
    }
123
2.56M
    else if( !p_block->p_next )
124
2.25M
    {
125
2.25M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
2.25M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
2.25M
        p_bytestream->i_block_offset = 0;
128
2.25M
        p_bytestream->i_total = 0;
129
2.25M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
2.25M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
2.25M
        return p_block;
132
2.25M
    }
133
134
405k
    while( p_block->p_next && p_block->p_next->p_next )
135
88.8k
        p_block = p_block->p_next;
136
137
316k
    block_t *p_block_old = p_block;
138
316k
    p_block = p_block->p_next;
139
316k
    p_block_old->p_next = NULL;
140
316k
    p_bytestream->pp_last = &p_block_old->p_next;
141
316k
    if( p_block )
142
316k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
316k
    return p_block;
145
2.56M
}
a52.c:block_BytestreamPop
Line
Count
Source
113
719k
{
114
719k
    block_t *p_block;
115
116
719k
    block_BytestreamFlush( p_bytestream );
117
118
719k
    p_block = p_bytestream->p_block;
119
719k
    if( unlikely( p_block == NULL ) )
120
155
    {
121
155
        return NULL;
122
155
    }
123
719k
    else if( !p_block->p_next )
124
482k
    {
125
482k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
482k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
482k
        p_bytestream->i_block_offset = 0;
128
482k
        p_bytestream->i_total = 0;
129
482k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
482k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
482k
        return p_block;
132
482k
    }
133
134
262k
    while( p_block->p_next && p_block->p_next->p_next )
135
24.9k
        p_block = p_block->p_next;
136
137
237k
    block_t *p_block_old = p_block;
138
237k
    p_block = p_block->p_next;
139
237k
    p_block_old->p_next = NULL;
140
237k
    p_bytestream->pp_last = &p_block_old->p_next;
141
237k
    if( p_block )
142
237k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
237k
    return p_block;
145
719k
}
dts.c:block_BytestreamPop
Line
Count
Source
113
197k
{
114
197k
    block_t *p_block;
115
116
197k
    block_BytestreamFlush( p_bytestream );
117
118
197k
    p_block = p_bytestream->p_block;
119
197k
    if( unlikely( p_block == NULL ) )
120
10
    {
121
10
        return NULL;
122
10
    }
123
197k
    else if( !p_block->p_next )
124
181k
    {
125
181k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
181k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
181k
        p_bytestream->i_block_offset = 0;
128
181k
        p_bytestream->i_total = 0;
129
181k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
181k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
181k
        return p_block;
132
181k
    }
133
134
64.7k
    while( p_block->p_next && p_block->p_next->p_next )
135
48.2k
        p_block = p_block->p_next;
136
137
16.4k
    block_t *p_block_old = p_block;
138
16.4k
    p_block = p_block->p_next;
139
16.4k
    p_block_old->p_next = NULL;
140
16.4k
    p_bytestream->pp_last = &p_block_old->p_next;
141
16.4k
    if( p_block )
142
16.4k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
16.4k
    return p_block;
145
197k
}
flac.c:block_BytestreamPop
Line
Count
Source
113
133k
{
114
133k
    block_t *p_block;
115
116
133k
    block_BytestreamFlush( p_bytestream );
117
118
133k
    p_block = p_bytestream->p_block;
119
133k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
133k
    else if( !p_block->p_next )
124
130k
    {
125
130k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
130k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
130k
        p_bytestream->i_block_offset = 0;
128
130k
        p_bytestream->i_total = 0;
129
130k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
130k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
130k
        return p_block;
132
130k
    }
133
134
8.63k
    while( p_block->p_next && p_block->p_next->p_next )
135
5.66k
        p_block = p_block->p_next;
136
137
2.97k
    block_t *p_block_old = p_block;
138
2.97k
    p_block = p_block->p_next;
139
2.97k
    p_block_old->p_next = NULL;
140
2.97k
    p_bytestream->pp_last = &p_block_old->p_next;
141
2.97k
    if( p_block )
142
2.97k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
2.97k
    return p_block;
145
133k
}
h264.c:block_BytestreamPop
Line
Count
Source
113
209k
{
114
209k
    block_t *p_block;
115
116
209k
    block_BytestreamFlush( p_bytestream );
117
118
209k
    p_block = p_bytestream->p_block;
119
209k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
209k
    else if( !p_block->p_next )
124
209k
    {
125
209k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
209k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
209k
        p_bytestream->i_block_offset = 0;
128
209k
        p_bytestream->i_total = 0;
129
209k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
209k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
209k
        return p_block;
132
209k
    }
133
134
235
    while( p_block->p_next && p_block->p_next->p_next )
135
0
        p_block = p_block->p_next;
136
137
235
    block_t *p_block_old = p_block;
138
235
    p_block = p_block->p_next;
139
235
    p_block_old->p_next = NULL;
140
235
    p_bytestream->pp_last = &p_block_old->p_next;
141
235
    if( p_block )
142
235
        p_bytestream->i_total -= p_block->i_buffer;
143
144
235
    return p_block;
145
209k
}
hevc.c:block_BytestreamPop
Line
Count
Source
113
714k
{
114
714k
    block_t *p_block;
115
116
714k
    block_BytestreamFlush( p_bytestream );
117
118
714k
    p_block = p_bytestream->p_block;
119
714k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
714k
    else if( !p_block->p_next )
124
713k
    {
125
713k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
713k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
713k
        p_bytestream->i_block_offset = 0;
128
713k
        p_bytestream->i_total = 0;
129
713k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
713k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
713k
        return p_block;
132
713k
    }
133
134
775
    while( p_block->p_next && p_block->p_next->p_next )
135
0
        p_block = p_block->p_next;
136
137
775
    block_t *p_block_old = p_block;
138
775
    p_block = p_block->p_next;
139
775
    p_block_old->p_next = NULL;
140
775
    p_bytestream->pp_last = &p_block_old->p_next;
141
775
    if( p_block )
142
775
        p_bytestream->i_total -= p_block->i_buffer;
143
144
775
    return p_block;
145
714k
}
mlp.c:block_BytestreamPop
Line
Count
Source
113
185k
{
114
185k
    block_t *p_block;
115
116
185k
    block_BytestreamFlush( p_bytestream );
117
118
185k
    p_block = p_bytestream->p_block;
119
185k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
185k
    else if( !p_block->p_next )
124
146k
    {
125
146k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
146k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
146k
        p_bytestream->i_block_offset = 0;
128
146k
        p_bytestream->i_total = 0;
129
146k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
146k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
146k
        return p_block;
132
146k
    }
133
134
44.6k
    while( p_block->p_next && p_block->p_next->p_next )
135
5.50k
        p_block = p_block->p_next;
136
137
39.1k
    block_t *p_block_old = p_block;
138
39.1k
    p_block = p_block->p_next;
139
39.1k
    p_block_old->p_next = NULL;
140
39.1k
    p_bytestream->pp_last = &p_block_old->p_next;
141
39.1k
    if( p_block )
142
39.1k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
39.1k
    return p_block;
145
185k
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamPop
Unexecuted instantiation: mpeg4video.c:block_BytestreamPop
mpegaudio.c:block_BytestreamPop
Line
Count
Source
113
405k
{
114
405k
    block_t *p_block;
115
116
405k
    block_BytestreamFlush( p_bytestream );
117
118
405k
    p_block = p_bytestream->p_block;
119
405k
    if( unlikely( p_block == NULL ) )
120
43
    {
121
43
        return NULL;
122
43
    }
123
405k
    else if( !p_block->p_next )
124
386k
    {
125
386k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
386k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
386k
        p_bytestream->i_block_offset = 0;
128
386k
        p_bytestream->i_total = 0;
129
386k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
386k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
386k
        return p_block;
132
386k
    }
133
134
23.7k
    while( p_block->p_next && p_block->p_next->p_next )
135
4.54k
        p_block = p_block->p_next;
136
137
19.2k
    block_t *p_block_old = p_block;
138
19.2k
    p_block = p_block->p_next;
139
19.2k
    p_block_old->p_next = NULL;
140
19.2k
    p_bytestream->pp_last = &p_block_old->p_next;
141
19.2k
    if( p_block )
142
19.2k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
19.2k
    return p_block;
145
405k
}
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.59M
{
150
1.59M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
1.59M
        return VLC_SUCCESS;
152
2.52k
    return VLC_EGENERIC;
153
1.59M
}
a52.c:block_WaitBytes
Line
Count
Source
149
752k
{
150
752k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
751k
        return VLC_SUCCESS;
152
1.25k
    return VLC_EGENERIC;
153
752k
}
dts.c:block_WaitBytes
Line
Count
Source
149
205k
{
150
205k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
204k
        return VLC_SUCCESS;
152
1.12k
    return VLC_EGENERIC;
153
205k
}
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
229k
{
150
229k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
228k
        return VLC_SUCCESS;
152
149
    return VLC_EGENERIC;
153
229k
}
Unexecuted instantiation: mpeg4audio.c:block_WaitBytes
Unexecuted instantiation: mpeg4video.c:block_WaitBytes
mpegaudio.c:block_WaitBytes
Line
Count
Source
149
405k
{
150
405k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
405k
        return VLC_SUCCESS;
152
0
    return VLC_EGENERIC;
153
405k
}
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
197M
{
158
197M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
31.8k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
197M
    size_t i_offset = p_bytestream->i_block_offset;
163
197M
    size_t i_size = i_data;
164
197M
    for( block_t *p_block = p_bytestream->p_block;
165
198M
         p_block != NULL; p_block = p_block->p_next )
166
198M
    {
167
198M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
198M
        i_size -= i_copy;
169
170
198M
        if( i_copy )
171
198M
        {
172
198M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
198M
            p_data += i_copy;
174
198M
        }
175
176
198M
        i_offset = 0;
177
178
198M
        if( !i_size ) break;
179
198M
    }
180
181
197M
    return VLC_SUCCESS;
182
197M
}
a52.c:block_PeekBytes
Line
Count
Source
157
27.0M
{
158
27.0M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
14.4k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
27.0M
    size_t i_offset = p_bytestream->i_block_offset;
163
27.0M
    size_t i_size = i_data;
164
27.0M
    for( block_t *p_block = p_bytestream->p_block;
165
27.1M
         p_block != NULL; p_block = p_block->p_next )
166
27.1M
    {
167
27.1M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
27.1M
        i_size -= i_copy;
169
170
27.1M
        if( i_copy )
171
27.0M
        {
172
27.0M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
27.0M
            p_data += i_copy;
174
27.0M
        }
175
176
27.1M
        i_offset = 0;
177
178
27.1M
        if( !i_size ) break;
179
27.1M
    }
180
181
27.0M
    return VLC_SUCCESS;
182
27.0M
}
dts.c:block_PeekBytes
Line
Count
Source
157
93.6M
{
158
93.6M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
4.08k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
93.6M
    size_t i_offset = p_bytestream->i_block_offset;
163
93.6M
    size_t i_size = i_data;
164
93.6M
    for( block_t *p_block = p_bytestream->p_block;
165
93.6M
         p_block != NULL; p_block = p_block->p_next )
166
93.6M
    {
167
93.6M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
93.6M
        i_size -= i_copy;
169
170
93.6M
        if( i_copy )
171
93.6M
        {
172
93.6M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
93.6M
            p_data += i_copy;
174
93.6M
        }
175
176
93.6M
        i_offset = 0;
177
178
93.6M
        if( !i_size ) break;
179
93.6M
    }
180
181
93.6M
    return VLC_SUCCESS;
182
93.6M
}
flac.c:block_PeekBytes
Line
Count
Source
157
3.82M
{
158
3.82M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
1.03k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
3.82M
    size_t i_offset = p_bytestream->i_block_offset;
163
3.82M
    size_t i_size = i_data;
164
3.82M
    for( block_t *p_block = p_bytestream->p_block;
165
3.83M
         p_block != NULL; p_block = p_block->p_next )
166
3.83M
    {
167
3.83M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
3.83M
        i_size -= i_copy;
169
170
3.83M
        if( i_copy )
171
3.83M
        {
172
3.83M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
3.83M
            p_data += i_copy;
174
3.83M
        }
175
176
3.83M
        i_offset = 0;
177
178
3.83M
        if( !i_size ) break;
179
3.83M
    }
180
181
3.82M
    return VLC_SUCCESS;
182
3.82M
}
Unexecuted instantiation: h264.c:block_PeekBytes
Unexecuted instantiation: hevc.c:block_PeekBytes
mlp.c:block_PeekBytes
Line
Count
Source
157
19.6M
{
158
19.6M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
1.91k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
19.6M
    size_t i_offset = p_bytestream->i_block_offset;
163
19.6M
    size_t i_size = i_data;
164
19.6M
    for( block_t *p_block = p_bytestream->p_block;
165
20.0M
         p_block != NULL; p_block = p_block->p_next )
166
20.0M
    {
167
20.0M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
20.0M
        i_size -= i_copy;
169
170
20.0M
        if( i_copy )
171
20.0M
        {
172
20.0M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
20.0M
            p_data += i_copy;
174
20.0M
        }
175
176
20.0M
        i_offset = 0;
177
178
20.0M
        if( !i_size ) break;
179
20.0M
    }
180
181
19.6M
    return VLC_SUCCESS;
182
19.6M
}
Unexecuted instantiation: mpeg4audio.c:block_PeekBytes
Unexecuted instantiation: mpeg4video.c:block_PeekBytes
mpegaudio.c:block_PeekBytes
Line
Count
Source
157
53.4M
{
158
53.4M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
10.2k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
53.4M
    size_t i_offset = p_bytestream->i_block_offset;
163
53.4M
    size_t i_size = i_data;
164
53.4M
    for( block_t *p_block = p_bytestream->p_block;
165
53.6M
         p_block != NULL; p_block = p_block->p_next )
166
53.6M
    {
167
53.6M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
53.6M
        i_size -= i_copy;
169
170
53.6M
        if( i_copy )
171
53.5M
        {
172
53.5M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
53.5M
            p_data += i_copy;
174
53.5M
        }
175
176
53.6M
        i_offset = 0;
177
178
53.6M
        if( !i_size ) break;
179
53.6M
    }
180
181
53.4M
    return VLC_SUCCESS;
182
53.4M
}
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
180M
{
187
180M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
6.26k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
180M
    size_t i_offset = p_bytestream->i_block_offset;
192
180M
    size_t i_size = i_data;
193
180M
    size_t i_copy = 0;
194
180M
    block_t *p_block;
195
180M
    for( p_block = p_bytestream->p_block;
196
180M
         p_block != NULL; p_block = p_block->p_next )
197
180M
    {
198
180M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
180M
        i_size -= i_copy;
200
201
180M
        if( i_copy && p_data != NULL )
202
4.20M
        {
203
4.20M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
4.20M
            p_data += i_copy;
205
4.20M
        }
206
207
180M
        if( i_size == 0 )
208
180M
            break;
209
210
177k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
177k
        i_offset = 0;
212
177k
    }
213
214
180M
    p_bytestream->p_block = p_block;
215
180M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
180M
    return VLC_SUCCESS;
218
180M
}
a52.c:block_GetBytes
Line
Count
Source
186
24.2M
{
187
24.2M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
3.65k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
24.2M
    size_t i_offset = p_bytestream->i_block_offset;
192
24.2M
    size_t i_size = i_data;
193
24.2M
    size_t i_copy = 0;
194
24.2M
    block_t *p_block;
195
24.2M
    for( p_block = p_bytestream->p_block;
196
24.3M
         p_block != NULL; p_block = p_block->p_next )
197
24.3M
    {
198
24.3M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
24.3M
        i_size -= i_copy;
200
201
24.3M
        if( i_copy && p_data != NULL )
202
764k
        {
203
764k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
764k
            p_data += i_copy;
205
764k
        }
206
207
24.3M
        if( i_size == 0 )
208
24.2M
            break;
209
210
42.5k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
42.5k
        i_offset = 0;
212
42.5k
    }
213
214
24.2M
    p_bytestream->p_block = p_block;
215
24.2M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
24.2M
    return VLC_SUCCESS;
218
24.2M
}
dts.c:block_GetBytes
Line
Count
Source
186
88.3M
{
187
88.3M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
1.56k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
88.3M
    size_t i_offset = p_bytestream->i_block_offset;
192
88.3M
    size_t i_size = i_data;
193
88.3M
    size_t i_copy = 0;
194
88.3M
    block_t *p_block;
195
88.3M
    for( p_block = p_bytestream->p_block;
196
88.3M
         p_block != NULL; p_block = p_block->p_next )
197
88.3M
    {
198
88.3M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
88.3M
        i_size -= i_copy;
200
201
88.3M
        if( i_copy && p_data != NULL )
202
206k
        {
203
206k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
206k
            p_data += i_copy;
205
206k
        }
206
207
88.3M
        if( i_size == 0 )
208
88.3M
            break;
209
210
7.36k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
7.36k
        i_offset = 0;
212
7.36k
    }
213
214
88.3M
    p_bytestream->p_block = p_block;
215
88.3M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
88.3M
    return VLC_SUCCESS;
218
88.3M
}
flac.c:block_GetBytes
Line
Count
Source
186
7.64M
{
187
7.64M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
676
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
7.64M
    size_t i_offset = p_bytestream->i_block_offset;
192
7.64M
    size_t i_size = i_data;
193
7.64M
    size_t i_copy = 0;
194
7.64M
    block_t *p_block;
195
7.64M
    for( p_block = p_bytestream->p_block;
196
7.65M
         p_block != NULL; p_block = p_block->p_next )
197
7.64M
    {
198
7.64M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
7.64M
        i_size -= i_copy;
200
201
7.64M
        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.64M
        if( i_size == 0 )
208
7.64M
            break;
209
210
3.61k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
3.61k
        i_offset = 0;
212
3.61k
    }
213
214
7.64M
    p_bytestream->p_block = p_block;
215
7.64M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
7.64M
    return VLC_SUCCESS;
218
7.64M
}
h264.c:block_GetBytes
Line
Count
Source
186
1.05M
{
187
1.05M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
1.05M
    size_t i_offset = p_bytestream->i_block_offset;
192
1.05M
    size_t i_size = i_data;
193
1.05M
    size_t i_copy = 0;
194
1.05M
    block_t *p_block;
195
1.05M
    for( p_block = p_bytestream->p_block;
196
1.08M
         p_block != NULL; p_block = p_block->p_next )
197
1.08M
    {
198
1.08M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
1.08M
        i_size -= i_copy;
200
201
1.08M
        if( i_copy && p_data != NULL )
202
1.07M
        {
203
1.07M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
1.07M
            p_data += i_copy;
205
1.07M
        }
206
207
1.08M
        if( i_size == 0 )
208
1.05M
            break;
209
210
30.0k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
30.0k
        i_offset = 0;
212
30.0k
    }
213
214
1.05M
    p_bytestream->p_block = p_block;
215
1.05M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
1.05M
    return VLC_SUCCESS;
218
1.05M
}
hevc.c:block_GetBytes
Line
Count
Source
186
1.47M
{
187
1.47M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
1.47M
    size_t i_offset = p_bytestream->i_block_offset;
192
1.47M
    size_t i_size = i_data;
193
1.47M
    size_t i_copy = 0;
194
1.47M
    block_t *p_block;
195
1.47M
    for( p_block = p_bytestream->p_block;
196
1.51M
         p_block != NULL; p_block = p_block->p_next )
197
1.51M
    {
198
1.51M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
1.51M
        i_size -= i_copy;
200
201
1.51M
        if( i_copy && p_data != NULL )
202
1.50M
        {
203
1.50M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
1.50M
            p_data += i_copy;
205
1.50M
        }
206
207
1.51M
        if( i_size == 0 )
208
1.47M
            break;
209
210
43.2k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
43.2k
        i_offset = 0;
212
43.2k
    }
213
214
1.47M
    p_bytestream->p_block = p_block;
215
1.47M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
1.47M
    return VLC_SUCCESS;
218
1.47M
}
mlp.c:block_GetBytes
Line
Count
Source
186
18.9M
{
187
18.9M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
18.9M
    size_t i_offset = p_bytestream->i_block_offset;
192
18.9M
    size_t i_size = i_data;
193
18.9M
    size_t i_copy = 0;
194
18.9M
    block_t *p_block;
195
18.9M
    for( p_block = p_bytestream->p_block;
196
18.9M
         p_block != NULL; p_block = p_block->p_next )
197
18.9M
    {
198
18.9M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
18.9M
        i_size -= i_copy;
200
201
18.9M
        if( i_copy && p_data != NULL )
202
230k
        {
203
230k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
230k
            p_data += i_copy;
205
230k
        }
206
207
18.9M
        if( i_size == 0 )
208
18.9M
            break;
209
210
5.77k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
5.77k
        i_offset = 0;
212
5.77k
    }
213
214
18.9M
    p_bytestream->p_block = p_block;
215
18.9M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
18.9M
    return VLC_SUCCESS;
218
18.9M
}
Unexecuted instantiation: mpeg4audio.c:block_GetBytes
Unexecuted instantiation: mpeg4video.c:block_GetBytes
mpegaudio.c:block_GetBytes
Line
Count
Source
186
38.3M
{
187
38.3M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
378
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
38.3M
    size_t i_offset = p_bytestream->i_block_offset;
192
38.3M
    size_t i_size = i_data;
193
38.3M
    size_t i_copy = 0;
194
38.3M
    block_t *p_block;
195
38.3M
    for( p_block = p_bytestream->p_block;
196
38.3M
         p_block != NULL; p_block = p_block->p_next )
197
38.3M
    {
198
38.3M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
38.3M
        i_size -= i_copy;
200
201
38.3M
        if( i_copy && p_data != NULL )
202
412k
        {
203
412k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
412k
            p_data += i_copy;
205
412k
        }
206
207
38.3M
        if( i_size == 0 )
208
38.3M
            break;
209
210
44.3k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
44.3k
        i_offset = 0;
212
44.3k
    }
213
214
38.3M
    p_bytestream->p_block = p_block;
215
38.3M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
38.3M
    return VLC_SUCCESS;
218
38.3M
}
Unexecuted instantiation: mpegvideo.c:block_GetBytes
vc1.c:block_GetBytes
Line
Count
Source
186
15.6k
{
187
15.6k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
15.6k
    size_t i_offset = p_bytestream->i_block_offset;
192
15.6k
    size_t i_size = i_data;
193
15.6k
    size_t i_copy = 0;
194
15.6k
    block_t *p_block;
195
15.6k
    for( p_block = p_bytestream->p_block;
196
15.6k
         p_block != NULL; p_block = p_block->p_next )
197
15.6k
    {
198
15.6k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
15.6k
        i_size -= i_copy;
200
201
15.6k
        if( i_copy && p_data != NULL )
202
14.8k
        {
203
14.8k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
14.8k
            p_data += i_copy;
205
14.8k
        }
206
207
15.6k
        if( i_size == 0 )
208
15.6k
            break;
209
210
0
        p_bytestream->i_base_offset += p_block->i_buffer;
211
0
        i_offset = 0;
212
0
    }
213
214
15.6k
    p_bytestream->p_block = p_block;
215
15.6k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
15.6k
    return VLC_SUCCESS;
218
15.6k
}
219
220
static inline int block_SkipBytes( block_bytestream_t *p_bytestream,
221
                                   size_t i_data )
222
4.68M
{
223
4.68M
    return block_GetBytes( p_bytestream, NULL, i_data );
224
4.68M
}
a52.c:block_SkipBytes
Line
Count
Source
222
456k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
456k
}
dts.c:block_SkipBytes
Line
Count
Source
222
14.2k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
14.2k
}
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.7k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
11.7k
}
hevc.c:block_SkipBytes
Line
Count
Source
222
10.3k
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
10.3k
}
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
756
{
223
    return block_GetBytes( p_bytestream, NULL, i_data );
224
756
}
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
23.0M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
23.0M
}
dts.c:block_SkipByte
Line
Count
Source
227
88.1M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
88.1M
}
flac.c:block_SkipByte
Line
Count
Source
227
3.45M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
3.45M
}
Unexecuted instantiation: h264.c:block_SkipByte
Unexecuted instantiation: hevc.c:block_SkipByte
mlp.c:block_SkipByte
Line
Count
Source
227
18.7M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
18.7M
}
Unexecuted instantiation: mpeg4audio.c:block_SkipByte
Unexecuted instantiation: mpeg4video.c:block_SkipByte
mpegaudio.c:block_SkipByte
Line
Count
Source
227
37.9M
{
228
    return block_GetBytes( p_bytestream, NULL, 1 );
229
37.9M
}
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
146M
{
234
146M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
146M
    if( i_remain < i_data + i_peek_offset )
236
64.6k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
146M
    size_t i_offset = p_bytestream->i_block_offset;
240
146M
    size_t i_size = i_peek_offset;
241
146M
    size_t i_copy = 0;
242
146M
    block_t *p_block;
243
146M
    for( p_block = p_bytestream->p_block;
244
800M
         p_block != NULL; p_block = p_block->p_next )
245
800M
    {
246
800M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
800M
        i_size -= i_copy;
248
249
800M
        if( !i_size ) break;
250
251
653M
        i_offset = 0;
252
653M
    }
253
254
    /* Copy the data */
255
146M
    i_offset += i_copy;
256
146M
    i_size = i_data;
257
146M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
146M
    {
259
146M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
146M
        i_size -= i_copy;
261
262
146M
        if( i_copy )
263
146M
        {
264
146M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
146M
            p_data += i_copy;
266
146M
        }
267
268
146M
        i_offset = 0;
269
270
146M
        if( !i_size ) break;
271
146M
    }
272
273
146M
    return VLC_SUCCESS;
274
146M
}
a52.c:block_PeekOffsetBytes
Line
Count
Source
233
766k
{
234
766k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
766k
    if( i_remain < i_data + i_peek_offset )
236
13.4k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
753k
    size_t i_offset = p_bytestream->i_block_offset;
240
753k
    size_t i_size = i_peek_offset;
241
753k
    size_t i_copy = 0;
242
753k
    block_t *p_block;
243
753k
    for( p_block = p_bytestream->p_block;
244
977k
         p_block != NULL; p_block = p_block->p_next )
245
977k
    {
246
977k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
977k
        i_size -= i_copy;
248
249
977k
        if( !i_size ) break;
250
251
224k
        i_offset = 0;
252
224k
    }
253
254
    /* Copy the data */
255
753k
    i_offset += i_copy;
256
753k
    i_size = i_data;
257
760k
    for( ; p_block != NULL; p_block = p_block->p_next )
258
760k
    {
259
760k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
760k
        i_size -= i_copy;
261
262
760k
        if( i_copy )
263
758k
        {
264
758k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
758k
            p_data += i_copy;
266
758k
        }
267
268
760k
        i_offset = 0;
269
270
760k
        if( !i_size ) break;
271
760k
    }
272
273
753k
    return VLC_SUCCESS;
274
766k
}
dts.c:block_PeekOffsetBytes
Line
Count
Source
233
63.1M
{
234
63.1M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
63.1M
    if( i_remain < i_data + i_peek_offset )
236
5.97k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
63.1M
    size_t i_offset = p_bytestream->i_block_offset;
240
63.1M
    size_t i_size = i_peek_offset;
241
63.1M
    size_t i_copy = 0;
242
63.1M
    block_t *p_block;
243
63.1M
    for( p_block = p_bytestream->p_block;
244
492M
         p_block != NULL; p_block = p_block->p_next )
245
492M
    {
246
492M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
492M
        i_size -= i_copy;
248
249
492M
        if( !i_size ) break;
250
251
428M
        i_offset = 0;
252
428M
    }
253
254
    /* Copy the data */
255
63.1M
    i_offset += i_copy;
256
63.1M
    i_size = i_data;
257
63.2M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
63.2M
    {
259
63.2M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
63.2M
        i_size -= i_copy;
261
262
63.2M
        if( i_copy )
263
63.2M
        {
264
63.2M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
63.2M
            p_data += i_copy;
266
63.2M
        }
267
268
63.2M
        i_offset = 0;
269
270
63.2M
        if( !i_size ) break;
271
63.2M
    }
272
273
63.1M
    return VLC_SUCCESS;
274
63.1M
}
flac.c:block_PeekOffsetBytes
Line
Count
Source
233
64.1M
{
234
64.1M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
64.1M
    if( i_remain < i_data + i_peek_offset )
236
2.18k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
64.1M
    size_t i_offset = p_bytestream->i_block_offset;
240
64.1M
    size_t i_size = i_peek_offset;
241
64.1M
    size_t i_copy = 0;
242
64.1M
    block_t *p_block;
243
64.1M
    for( p_block = p_bytestream->p_block;
244
278M
         p_block != NULL; p_block = p_block->p_next )
245
278M
    {
246
278M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
278M
        i_size -= i_copy;
248
249
278M
        if( !i_size ) break;
250
251
214M
        i_offset = 0;
252
214M
    }
253
254
    /* Copy the data */
255
64.1M
    i_offset += i_copy;
256
64.1M
    i_size = i_data;
257
64.2M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
64.2M
    {
259
64.2M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
64.2M
        i_size -= i_copy;
261
262
64.2M
        if( i_copy )
263
64.2M
        {
264
64.2M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
64.2M
            p_data += i_copy;
266
64.2M
        }
267
268
64.2M
        i_offset = 0;
269
270
64.2M
        if( !i_size ) break;
271
64.2M
    }
272
273
64.1M
    return VLC_SUCCESS;
274
64.1M
}
Unexecuted instantiation: h264.c:block_PeekOffsetBytes
Unexecuted instantiation: hevc.c:block_PeekOffsetBytes
mlp.c:block_PeekOffsetBytes
Line
Count
Source
233
672k
{
234
672k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
672k
    if( i_remain < i_data + i_peek_offset )
236
5.34k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
667k
    size_t i_offset = p_bytestream->i_block_offset;
240
667k
    size_t i_size = i_peek_offset;
241
667k
    size_t i_copy = 0;
242
667k
    block_t *p_block;
243
667k
    for( p_block = p_bytestream->p_block;
244
722k
         p_block != NULL; p_block = p_block->p_next )
245
722k
    {
246
722k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
722k
        i_size -= i_copy;
248
249
722k
        if( !i_size ) break;
250
251
55.2k
        i_offset = 0;
252
55.2k
    }
253
254
    /* Copy the data */
255
667k
    i_offset += i_copy;
256
667k
    i_size = i_data;
257
683k
    for( ; p_block != NULL; p_block = p_block->p_next )
258
683k
    {
259
683k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
683k
        i_size -= i_copy;
261
262
683k
        if( i_copy )
263
683k
        {
264
683k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
683k
            p_data += i_copy;
266
683k
        }
267
268
683k
        i_offset = 0;
269
270
683k
        if( !i_size ) break;
271
683k
    }
272
273
667k
    return VLC_SUCCESS;
274
672k
}
Unexecuted instantiation: mpeg4audio.c:block_PeekOffsetBytes
Unexecuted instantiation: mpeg4video.c:block_PeekOffsetBytes
mpegaudio.c:block_PeekOffsetBytes
Line
Count
Source
233
17.8M
{
234
17.8M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
17.8M
    if( i_remain < i_data + i_peek_offset )
236
37.6k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
17.8M
    size_t i_offset = p_bytestream->i_block_offset;
240
17.8M
    size_t i_size = i_peek_offset;
241
17.8M
    size_t i_copy = 0;
242
17.8M
    block_t *p_block;
243
17.8M
    for( p_block = p_bytestream->p_block;
244
27.9M
         p_block != NULL; p_block = p_block->p_next )
245
27.9M
    {
246
27.9M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
27.9M
        i_size -= i_copy;
248
249
27.9M
        if( !i_size ) break;
250
251
10.0M
        i_offset = 0;
252
10.0M
    }
253
254
    /* Copy the data */
255
17.8M
    i_offset += i_copy;
256
17.8M
    i_size = i_data;
257
17.9M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
17.9M
    {
259
17.9M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
17.9M
        i_size -= i_copy;
261
262
17.9M
        if( i_copy )
263
17.9M
        {
264
17.9M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
17.9M
            p_data += i_copy;
266
17.9M
        }
267
268
17.9M
        i_offset = 0;
269
270
17.9M
        if( !i_size ) break;
271
17.9M
    }
272
273
17.8M
    return VLC_SUCCESS;
274
17.8M
}
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
62.2M
{
285
62.2M
    block_t *p_block, *p_block_backup = 0;
286
62.2M
    ssize_t i_size = 0;
287
62.2M
    size_t i_offset, i_offset_backup = 0;
288
62.2M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
62.2M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
62.2M
    for( p_block = p_bytestream->p_block;
293
274M
         p_block != NULL; p_block = p_block->p_next )
294
274M
    {
295
274M
        i_size -= p_block->i_buffer;
296
274M
        if( i_size < 0 ) break;
297
274M
    }
298
299
62.2M
    if( unlikely( i_size >= 0 ) )
300
51.2k
    {
301
        /* Not enough data, bail out */
302
51.2k
        return VLC_EGENERIC;
303
51.2k
    }
304
305
    /* Begin the search.
306
     * We first look for an occurrence of the 1st startcode byte and
307
     * if found, we do a more thorough check. */
308
62.2M
    i_size += p_block->i_buffer;
309
62.2M
    *pi_offset -= i_size;
310
62.2M
    i_match = 0;
311
62.5M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
62.3M
    {
313
74.9M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
74.6M
        {
315
            /* Use optimized helper when possible */
316
74.6M
            if( p_startcode_helper && !i_match &&
317
61.8M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
61.7M
            {
319
61.7M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
61.7M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
61.7M
                if( p_res )
322
61.5M
                {
323
61.5M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
61.5M
                    return VLC_SUCCESS;
325
61.5M
                }
326
                /* Then parsing boundary with legacy code */
327
174k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
174k
            }
329
330
74.6M
            bool b_matched = ( p_startcode_matcher )
331
13.1M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
13.1M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
13.1M
            if( b_matched )
334
1.54M
            {
335
1.54M
                if( i_match == 0 )
336
915k
                {
337
915k
                    p_block_backup = p_block;
338
915k
                    i_offset_backup = i_offset;
339
915k
                    i_caller_offset_backup = *pi_offset;
340
915k
                }
341
342
1.54M
                if( i_match + 1 == i_startcode_length )
343
566k
                {
344
                    /* We have it */
345
566k
                    *pi_offset += i_offset - i_match;
346
566k
                    return VLC_SUCCESS;
347
566k
                }
348
349
976k
                i_match++;
350
976k
            }
351
11.5M
            else if ( i_match > 0 )
352
317k
            {
353
                /* False positive */
354
317k
                p_block = p_block_backup;
355
317k
                i_offset = i_offset_backup;
356
317k
                *pi_offset = i_caller_offset_backup;
357
317k
                i_match = 0;
358
317k
            }
359
360
13.1M
        }
361
274k
        i_size = 0;
362
274k
        *pi_offset += i_offset;
363
274k
    }
364
365
113k
    *pi_offset -= i_match;
366
113k
    return VLC_EGENERIC;
367
62.2M
}
a52.c:block_FindStartcodeFromOffset
Line
Count
Source
284
558k
{
285
558k
    block_t *p_block, *p_block_backup = 0;
286
558k
    ssize_t i_size = 0;
287
558k
    size_t i_offset, i_offset_backup = 0;
288
558k
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
558k
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
558k
    for( p_block = p_bytestream->p_block;
293
564k
         p_block != NULL; p_block = p_block->p_next )
294
564k
    {
295
564k
        i_size -= p_block->i_buffer;
296
564k
        if( i_size < 0 ) break;
297
564k
    }
298
299
558k
    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
558k
    i_size += p_block->i_buffer;
309
558k
    *pi_offset -= i_size;
310
558k
    i_match = 0;
311
571k
    for( ; p_block != NULL; p_block = p_block->p_next )
312
569k
    {
313
12.7M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
12.6M
        {
315
            /* Use optimized helper when possible */
316
12.6M
            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.6M
            bool b_matched = ( p_startcode_matcher )
331
12.6M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
12.6M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
12.6M
            if( b_matched )
334
1.37M
            {
335
1.37M
                if( i_match == 0 )
336
815k
                {
337
815k
                    p_block_backup = p_block;
338
815k
                    i_offset_backup = i_offset;
339
815k
                    i_caller_offset_backup = *pi_offset;
340
815k
                }
341
342
1.37M
                if( i_match + 1 == i_startcode_length )
343
556k
                {
344
                    /* We have it */
345
556k
                    *pi_offset += i_offset - i_match;
346
556k
                    return VLC_SUCCESS;
347
556k
                }
348
349
815k
                i_match++;
350
815k
            }
351
11.3M
            else if ( i_match > 0 )
352
258k
            {
353
                /* False positive */
354
258k
                p_block = p_block_backup;
355
258k
                i_offset = i_offset_backup;
356
258k
                *pi_offset = i_caller_offset_backup;
357
258k
                i_match = 0;
358
258k
            }
359
360
12.6M
        }
361
12.3k
        i_size = 0;
362
12.3k
        *pi_offset += i_offset;
363
12.3k
    }
364
365
1.74k
    *pi_offset -= i_match;
366
1.74k
    return VLC_EGENERIC;
367
558k
}
Unexecuted instantiation: dts.c:block_FindStartcodeFromOffset
flac.c:block_FindStartcodeFromOffset
Line
Count
Source
284
56.5M
{
285
56.5M
    block_t *p_block, *p_block_backup = 0;
286
56.5M
    ssize_t i_size = 0;
287
56.5M
    size_t i_offset, i_offset_backup = 0;
288
56.5M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
56.5M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
56.5M
    for( p_block = p_bytestream->p_block;
293
261M
         p_block != NULL; p_block = p_block->p_next )
294
261M
    {
295
261M
        i_size -= p_block->i_buffer;
296
261M
        if( i_size < 0 ) break;
297
261M
    }
298
299
56.5M
    if( unlikely( i_size >= 0 ) )
300
2.48k
    {
301
        /* Not enough data, bail out */
302
2.48k
        return VLC_EGENERIC;
303
2.48k
    }
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
56.5M
    i_size += p_block->i_buffer;
309
56.5M
    *pi_offset -= i_size;
310
56.5M
    i_match = 0;
311
56.6M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
56.6M
    {
313
56.7M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
56.6M
        {
315
            /* Use optimized helper when possible */
316
56.6M
            if( p_startcode_helper && !i_match &&
317
56.6M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
56.6M
            {
319
56.6M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
56.6M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
56.6M
                if( p_res )
322
56.5M
                {
323
56.5M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
56.5M
                    return VLC_SUCCESS;
325
56.5M
                }
326
                /* Then parsing boundary with legacy code */
327
75.1k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
75.1k
            }
329
330
56.6M
            bool b_matched = ( p_startcode_matcher )
331
95.8k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
95.8k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
95.8k
            if( b_matched )
334
22.0k
            {
335
22.0k
                if( i_match == 0 )
336
17.6k
                {
337
17.6k
                    p_block_backup = p_block;
338
17.6k
                    i_offset_backup = i_offset;
339
17.6k
                    i_caller_offset_backup = *pi_offset;
340
17.6k
                }
341
342
22.0k
                if( i_match + 1 == i_startcode_length )
343
4.37k
                {
344
                    /* We have it */
345
4.37k
                    *pi_offset += i_offset - i_match;
346
4.37k
                    return VLC_SUCCESS;
347
4.37k
                }
348
349
17.6k
                i_match++;
350
17.6k
            }
351
73.8k
            else if ( i_match > 0 )
352
12.0k
            {
353
                /* False positive */
354
12.0k
                p_block = p_block_backup;
355
12.0k
                i_offset = i_offset_backup;
356
12.0k
                *pi_offset = i_caller_offset_backup;
357
12.0k
                i_match = 0;
358
12.0k
            }
359
360
95.8k
        }
361
91.4k
        i_size = 0;
362
91.4k
        *pi_offset += i_offset;
363
91.4k
    }
364
365
6.24k
    *pi_offset -= i_match;
366
6.24k
    return VLC_EGENERIC;
367
56.5M
}
h264.c:block_FindStartcodeFromOffset
Line
Count
Source
284
2.14M
{
285
2.14M
    block_t *p_block, *p_block_backup = 0;
286
2.14M
    ssize_t i_size = 0;
287
2.14M
    size_t i_offset, i_offset_backup = 0;
288
2.14M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
2.14M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
2.14M
    for( p_block = p_bytestream->p_block;
293
5.22M
         p_block != NULL; p_block = p_block->p_next )
294
5.19M
    {
295
5.19M
        i_size -= p_block->i_buffer;
296
5.19M
        if( i_size < 0 ) break;
297
5.19M
    }
298
299
2.14M
    if( unlikely( i_size >= 0 ) )
300
26.9k
    {
301
        /* Not enough data, bail out */
302
26.9k
        return VLC_EGENERIC;
303
26.9k
    }
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.11M
    i_size += p_block->i_buffer;
309
2.11M
    *pi_offset -= i_size;
310
2.11M
    i_match = 0;
311
2.19M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
2.14M
    {
313
2.28M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
2.21M
        {
315
            /* Use optimized helper when possible */
316
2.21M
            if( p_startcode_helper && !i_match &&
317
2.17M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
2.11M
            {
319
2.11M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
2.11M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
2.11M
                if( p_res )
322
2.07M
                {
323
2.07M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
2.07M
                    return VLC_SUCCESS;
325
2.07M
                }
326
                /* Then parsing boundary with legacy code */
327
43.6k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
43.6k
            }
329
330
2.21M
            bool b_matched = ( p_startcode_matcher )
331
141k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
141k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
141k
            if( b_matched )
334
55.4k
            {
335
55.4k
                if( i_match == 0 )
336
32.6k
                {
337
32.6k
                    p_block_backup = p_block;
338
32.6k
                    i_offset_backup = i_offset;
339
32.6k
                    i_caller_offset_backup = *pi_offset;
340
32.6k
                }
341
342
55.4k
                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
53.6k
                i_match++;
350
53.6k
            }
351
85.8k
            else if ( i_match > 0 )
352
18.2k
            {
353
                /* False positive */
354
18.2k
                p_block = p_block_backup;
355
18.2k
                i_offset = i_offset_backup;
356
18.2k
                *pi_offset = i_caller_offset_backup;
357
18.2k
                i_match = 0;
358
18.2k
            }
359
360
141k
        }
361
70.8k
        i_size = 0;
362
70.8k
        *pi_offset += i_offset;
363
70.8k
    }
364
365
46.9k
    *pi_offset -= i_match;
366
46.9k
    return VLC_EGENERIC;
367
2.11M
}
hevc.c:block_FindStartcodeFromOffset
Line
Count
Source
284
2.99M
{
285
2.99M
    block_t *p_block, *p_block_backup = 0;
286
2.99M
    ssize_t i_size = 0;
287
2.99M
    size_t i_offset, i_offset_backup = 0;
288
2.99M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
2.99M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
2.99M
    for( p_block = p_bytestream->p_block;
293
7.16M
         p_block != NULL; p_block = p_block->p_next )
294
7.14M
    {
295
7.14M
        i_size -= p_block->i_buffer;
296
7.14M
        if( i_size < 0 ) break;
297
7.14M
    }
298
299
2.99M
    if( unlikely( i_size >= 0 ) )
300
20.7k
    {
301
        /* Not enough data, bail out */
302
20.7k
        return VLC_EGENERIC;
303
20.7k
    }
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.97M
    i_size += p_block->i_buffer;
309
2.97M
    *pi_offset -= i_size;
310
2.97M
    i_match = 0;
311
3.07M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
3.01M
    {
313
3.21M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
3.11M
        {
315
            /* Use optimized helper when possible */
316
3.11M
            if( p_startcode_helper && !i_match &&
317
3.04M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
2.96M
            {
319
2.96M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
2.96M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
2.96M
                if( p_res )
322
2.91M
                {
323
2.91M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
2.91M
                    return VLC_SUCCESS;
325
2.91M
                }
326
                /* Then parsing boundary with legacy code */
327
55.1k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
55.1k
            }
329
330
3.11M
            bool b_matched = ( p_startcode_matcher )
331
199k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
199k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
199k
            if( b_matched )
334
92.1k
            {
335
92.1k
                if( i_match == 0 )
336
49.3k
                {
337
49.3k
                    p_block_backup = p_block;
338
49.3k
                    i_offset_backup = i_offset;
339
49.3k
                    i_caller_offset_backup = *pi_offset;
340
49.3k
                }
341
342
92.1k
                if( i_match + 1 == i_startcode_length )
343
2.90k
                {
344
                    /* We have it */
345
2.90k
                    *pi_offset += i_offset - i_match;
346
2.90k
                    return VLC_SUCCESS;
347
2.90k
                }
348
349
89.2k
                i_match++;
350
89.2k
            }
351
107k
            else if ( i_match > 0 )
352
28.2k
            {
353
                /* False positive */
354
28.2k
                p_block = p_block_backup;
355
28.2k
                i_offset = i_offset_backup;
356
28.2k
                *pi_offset = i_caller_offset_backup;
357
28.2k
                i_match = 0;
358
28.2k
            }
359
360
199k
        }
361
99.0k
        i_size = 0;
362
99.0k
        *pi_offset += i_offset;
363
99.0k
    }
364
365
58.0k
    *pi_offset -= i_match;
366
58.0k
    return VLC_EGENERIC;
367
2.97M
}
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
31.1k
{
285
31.1k
    block_t *p_block, *p_block_backup = 0;
286
31.1k
    ssize_t i_size = 0;
287
31.1k
    size_t i_offset, i_offset_backup = 0;
288
31.1k
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
31.1k
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
31.1k
    for( p_block = p_bytestream->p_block;
293
32.2k
         p_block != NULL; p_block = p_block->p_next )
294
31.1k
    {
295
31.1k
        i_size -= p_block->i_buffer;
296
31.1k
        if( i_size < 0 ) break;
297
31.1k
    }
298
299
31.1k
    if( unlikely( i_size >= 0 ) )
300
1.05k
    {
301
        /* Not enough data, bail out */
302
1.05k
        return VLC_EGENERIC;
303
1.05k
    }
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
30.1k
    i_size += p_block->i_buffer;
309
30.1k
    *pi_offset -= i_size;
310
30.1k
    i_match = 0;
311
31.0k
    for( ; p_block != NULL; p_block = p_block->p_next )
312
30.1k
    {
313
32.0k
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
31.1k
        {
315
            /* Use optimized helper when possible */
316
31.1k
            if( p_startcode_helper && !i_match &&
317
30.8k
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
29.9k
            {
319
29.9k
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
29.9k
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
29.9k
                if( p_res )
322
29.2k
                {
323
29.2k
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
29.2k
                    return VLC_SUCCESS;
325
29.2k
                }
326
                /* Then parsing boundary with legacy code */
327
747
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
747
            }
329
330
31.1k
            bool b_matched = ( p_startcode_matcher )
331
1.96k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
1.96k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
1.96k
            if( b_matched )
334
646
            {
335
646
                if( i_match == 0 )
336
496
                {
337
496
                    p_block_backup = p_block;
338
496
                    i_offset_backup = i_offset;
339
496
                    i_caller_offset_backup = *pi_offset;
340
496
                }
341
342
646
                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
646
                i_match++;
350
646
            }
351
1.32k
            else if ( i_match > 0 )
352
196
            {
353
                /* False positive */
354
196
                p_block = p_block_backup;
355
196
                i_offset = i_offset_backup;
356
196
                *pi_offset = i_caller_offset_backup;
357
196
                i_match = 0;
358
196
            }
359
360
1.96k
        }
361
923
        i_size = 0;
362
923
        *pi_offset += i_offset;
363
923
    }
364
365
923
    *pi_offset -= i_match;
366
923
    return VLC_EGENERIC;
367
30.1k
}
368
369
#endif /* VLC_BLOCK_HELPER_H */