Coverage Report

Created: 2025-07-23 07:11

/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
53.1k
{
43
53.1k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
53.1k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
53.1k
    p_bytestream->i_block_offset = 0;
46
53.1k
    p_bytestream->i_base_offset = 0;
47
53.1k
    p_bytestream->i_total = 0;
48
53.1k
}
a52.c:block_BytestreamInit
Line
Count
Source
42
4.15k
{
43
4.15k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
4.15k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
4.15k
    p_bytestream->i_block_offset = 0;
46
4.15k
    p_bytestream->i_base_offset = 0;
47
4.15k
    p_bytestream->i_total = 0;
48
4.15k
}
dts.c:block_BytestreamInit
Line
Count
Source
42
4.45k
{
43
4.45k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
4.45k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
4.45k
    p_bytestream->i_block_offset = 0;
46
4.45k
    p_bytestream->i_base_offset = 0;
47
4.45k
    p_bytestream->i_total = 0;
48
4.45k
}
flac.c:block_BytestreamInit
Line
Count
Source
42
238
{
43
238
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
238
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
238
    p_bytestream->i_block_offset = 0;
46
238
    p_bytestream->i_base_offset = 0;
47
238
    p_bytestream->i_total = 0;
48
238
}
h264.c:block_BytestreamInit
Line
Count
Source
42
19.5k
{
43
19.5k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
19.5k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
19.5k
    p_bytestream->i_block_offset = 0;
46
19.5k
    p_bytestream->i_base_offset = 0;
47
19.5k
    p_bytestream->i_total = 0;
48
19.5k
}
hevc.c:block_BytestreamInit
Line
Count
Source
42
13.1k
{
43
13.1k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
13.1k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
13.1k
    p_bytestream->i_block_offset = 0;
46
13.1k
    p_bytestream->i_base_offset = 0;
47
13.1k
    p_bytestream->i_total = 0;
48
13.1k
}
mlp.c:block_BytestreamInit
Line
Count
Source
42
1.59k
{
43
1.59k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
1.59k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
1.59k
    p_bytestream->i_block_offset = 0;
46
1.59k
    p_bytestream->i_base_offset = 0;
47
1.59k
    p_bytestream->i_total = 0;
48
1.59k
}
mpeg4audio.c:block_BytestreamInit
Line
Count
Source
42
748
{
43
748
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
748
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
748
    p_bytestream->i_block_offset = 0;
46
748
    p_bytestream->i_base_offset = 0;
47
748
    p_bytestream->i_total = 0;
48
748
}
mpeg4video.c:block_BytestreamInit
Line
Count
Source
42
175
{
43
175
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
175
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
175
    p_bytestream->i_block_offset = 0;
46
175
    p_bytestream->i_base_offset = 0;
47
175
    p_bytestream->i_total = 0;
48
175
}
mpegaudio.c:block_BytestreamInit
Line
Count
Source
42
6.51k
{
43
6.51k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
6.51k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
6.51k
    p_bytestream->i_block_offset = 0;
46
6.51k
    p_bytestream->i_base_offset = 0;
47
6.51k
    p_bytestream->i_total = 0;
48
6.51k
}
mpegvideo.c:block_BytestreamInit
Line
Count
Source
42
1.41k
{
43
1.41k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
1.41k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
1.41k
    p_bytestream->i_block_offset = 0;
46
1.41k
    p_bytestream->i_base_offset = 0;
47
1.41k
    p_bytestream->i_total = 0;
48
1.41k
}
vc1.c:block_BytestreamInit
Line
Count
Source
42
1.17k
{
43
1.17k
    p_bytestream->p_chain = p_bytestream->p_block = NULL;
44
1.17k
    p_bytestream->pp_last = &p_bytestream->p_chain;
45
1.17k
    p_bytestream->i_block_offset = 0;
46
1.17k
    p_bytestream->i_base_offset = 0;
47
1.17k
    p_bytestream->i_total = 0;
48
1.17k
}
49
50
static inline void block_BytestreamRelease( block_bytestream_t *p_bytestream )
51
53.1k
{
52
53.1k
    block_ChainRelease( p_bytestream->p_chain );
53
53.1k
}
a52.c:block_BytestreamRelease
Line
Count
Source
51
4.15k
{
52
4.15k
    block_ChainRelease( p_bytestream->p_chain );
53
4.15k
}
dts.c:block_BytestreamRelease
Line
Count
Source
51
4.45k
{
52
4.45k
    block_ChainRelease( p_bytestream->p_chain );
53
4.45k
}
flac.c:block_BytestreamRelease
Line
Count
Source
51
238
{
52
238
    block_ChainRelease( p_bytestream->p_chain );
53
238
}
h264.c:block_BytestreamRelease
Line
Count
Source
51
19.5k
{
52
19.5k
    block_ChainRelease( p_bytestream->p_chain );
53
19.5k
}
hevc.c:block_BytestreamRelease
Line
Count
Source
51
13.1k
{
52
13.1k
    block_ChainRelease( p_bytestream->p_chain );
53
13.1k
}
mlp.c:block_BytestreamRelease
Line
Count
Source
51
1.59k
{
52
1.59k
    block_ChainRelease( p_bytestream->p_chain );
53
1.59k
}
mpeg4audio.c:block_BytestreamRelease
Line
Count
Source
51
748
{
52
748
    block_ChainRelease( p_bytestream->p_chain );
53
748
}
mpeg4video.c:block_BytestreamRelease
Line
Count
Source
51
175
{
52
175
    block_ChainRelease( p_bytestream->p_chain );
53
175
}
mpegaudio.c:block_BytestreamRelease
Line
Count
Source
51
6.51k
{
52
6.51k
    block_ChainRelease( p_bytestream->p_chain );
53
6.51k
}
mpegvideo.c:block_BytestreamRelease
Line
Count
Source
51
1.41k
{
52
1.41k
    block_ChainRelease( p_bytestream->p_chain );
53
1.41k
}
vc1.c:block_BytestreamRelease
Line
Count
Source
51
1.17k
{
52
1.17k
    block_ChainRelease( p_bytestream->p_chain );
53
1.17k
}
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
9.32k
{
60
9.32k
    block_BytestreamRelease( p_bytestream );
61
9.32k
    block_BytestreamInit( p_bytestream );
62
9.32k
}
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.82k
{
60
5.82k
    block_BytestreamRelease( p_bytestream );
61
5.82k
    block_BytestreamInit( p_bytestream );
62
5.82k
}
hevc.c:block_BytestreamEmpty
Line
Count
Source
59
2.90k
{
60
2.90k
    block_BytestreamRelease( p_bytestream );
61
2.90k
    block_BytestreamInit( p_bytestream );
62
2.90k
}
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
588
{
60
588
    block_BytestreamRelease( p_bytestream );
61
588
    block_BytestreamInit( p_bytestream );
62
588
}
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
5.01M
{
69
5.01M
    block_t *block = p_bytestream->p_chain;
70
71
5.12M
    while( block != p_bytestream->p_block )
72
115k
    {
73
115k
        block_t *p_next = block->p_next;
74
75
115k
        p_bytestream->i_total -= block->i_buffer;
76
115k
        p_bytestream->i_base_offset -= block->i_buffer;
77
115k
        block_Release( block );
78
115k
        block = p_next;
79
115k
    }
80
81
5.01M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
7.05k
    {
83
7.05k
        block_t *p_next = block->p_next;
84
85
7.05k
        p_bytestream->i_total -= block->i_buffer;
86
7.05k
        block_Release( block );
87
7.05k
        block = p_next;
88
7.05k
        p_bytestream->i_block_offset = 0;
89
7.05k
    }
90
91
5.01M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
5.01M
    if( p_bytestream->p_chain == NULL )
93
7.07k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
5.01M
}
a52.c:block_BytestreamFlush
Line
Count
Source
68
681k
{
69
681k
    block_t *block = p_bytestream->p_chain;
70
71
710k
    while( block != p_bytestream->p_block )
72
29.3k
    {
73
29.3k
        block_t *p_next = block->p_next;
74
75
29.3k
        p_bytestream->i_total -= block->i_buffer;
76
29.3k
        p_bytestream->i_base_offset -= block->i_buffer;
77
29.3k
        block_Release( block );
78
29.3k
        block = p_next;
79
29.3k
    }
80
81
683k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
2.19k
    {
83
2.19k
        block_t *p_next = block->p_next;
84
85
2.19k
        p_bytestream->i_total -= block->i_buffer;
86
2.19k
        block_Release( block );
87
2.19k
        block = p_next;
88
2.19k
        p_bytestream->i_block_offset = 0;
89
2.19k
    }
90
91
681k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
681k
    if( p_bytestream->p_chain == NULL )
93
871
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
681k
}
dts.c:block_BytestreamFlush
Line
Count
Source
68
144k
{
69
144k
    block_t *block = p_bytestream->p_chain;
70
71
149k
    while( block != p_bytestream->p_block )
72
4.39k
    {
73
4.39k
        block_t *p_next = block->p_next;
74
75
4.39k
        p_bytestream->i_total -= block->i_buffer;
76
4.39k
        p_bytestream->i_base_offset -= block->i_buffer;
77
4.39k
        block_Release( block );
78
4.39k
        block = p_next;
79
4.39k
    }
80
81
144k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
136
    {
83
136
        block_t *p_next = block->p_next;
84
85
136
        p_bytestream->i_total -= block->i_buffer;
86
136
        block_Release( block );
87
136
        block = p_next;
88
136
        p_bytestream->i_block_offset = 0;
89
136
    }
90
91
144k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
144k
    if( p_bytestream->p_chain == NULL )
93
252
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
144k
}
flac.c:block_BytestreamFlush
Line
Count
Source
68
838k
{
69
838k
    block_t *block = p_bytestream->p_chain;
70
71
839k
    while( block != p_bytestream->p_block )
72
897
    {
73
897
        block_t *p_next = block->p_next;
74
75
897
        p_bytestream->i_total -= block->i_buffer;
76
897
        p_bytestream->i_base_offset -= block->i_buffer;
77
897
        block_Release( block );
78
897
        block = p_next;
79
897
    }
80
81
838k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
86
    {
83
86
        block_t *p_next = block->p_next;
84
85
86
        p_bytestream->i_total -= block->i_buffer;
86
86
        block_Release( block );
87
86
        block = p_next;
88
86
        p_bytestream->i_block_offset = 0;
89
86
    }
90
91
838k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
838k
    if( p_bytestream->p_chain == NULL )
93
38
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
838k
}
h264.c:block_BytestreamFlush
Line
Count
Source
68
1.22M
{
69
1.22M
    block_t *block = p_bytestream->p_chain;
70
71
1.23M
    while( block != p_bytestream->p_block )
72
17.3k
    {
73
17.3k
        block_t *p_next = block->p_next;
74
75
17.3k
        p_bytestream->i_total -= block->i_buffer;
76
17.3k
        p_bytestream->i_base_offset -= block->i_buffer;
77
17.3k
        block_Release( block );
78
17.3k
        block = p_next;
79
17.3k
    }
80
81
1.22M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
2.01k
    {
83
2.01k
        block_t *p_next = block->p_next;
84
85
2.01k
        p_bytestream->i_total -= block->i_buffer;
86
2.01k
        block_Release( block );
87
2.01k
        block = p_next;
88
2.01k
        p_bytestream->i_block_offset = 0;
89
2.01k
    }
90
91
1.22M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.22M
    if( p_bytestream->p_chain == NULL )
93
1.54k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.22M
}
hevc.c:block_BytestreamFlush
Line
Count
Source
68
1.53M
{
69
1.53M
    block_t *block = p_bytestream->p_chain;
70
71
1.56M
    while( block != p_bytestream->p_block )
72
29.9k
    {
73
29.9k
        block_t *p_next = block->p_next;
74
75
29.9k
        p_bytestream->i_total -= block->i_buffer;
76
29.9k
        p_bytestream->i_base_offset -= block->i_buffer;
77
29.9k
        block_Release( block );
78
29.9k
        block = p_next;
79
29.9k
    }
80
81
1.54M
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
1.90k
    {
83
1.90k
        block_t *p_next = block->p_next;
84
85
1.90k
        p_bytestream->i_total -= block->i_buffer;
86
1.90k
        block_Release( block );
87
1.90k
        block = p_next;
88
1.90k
        p_bytestream->i_block_offset = 0;
89
1.90k
    }
90
91
1.53M
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
1.53M
    if( p_bytestream->p_chain == NULL )
93
1.32k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
1.53M
}
mlp.c:block_BytestreamFlush
Line
Count
Source
68
166k
{
69
166k
    block_t *block = p_bytestream->p_chain;
70
71
170k
    while( block != p_bytestream->p_block )
72
4.36k
    {
73
4.36k
        block_t *p_next = block->p_next;
74
75
4.36k
        p_bytestream->i_total -= block->i_buffer;
76
4.36k
        p_bytestream->i_base_offset -= block->i_buffer;
77
4.36k
        block_Release( block );
78
4.36k
        block = p_next;
79
4.36k
    }
80
81
166k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
113
    {
83
113
        block_t *p_next = block->p_next;
84
85
113
        p_bytestream->i_total -= block->i_buffer;
86
113
        block_Release( block );
87
113
        block = p_next;
88
113
        p_bytestream->i_block_offset = 0;
89
113
    }
90
91
166k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
166k
    if( p_bytestream->p_chain == NULL )
93
31
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
166k
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamFlush
Unexecuted instantiation: mpeg4video.c:block_BytestreamFlush
mpegaudio.c:block_BytestreamFlush
Line
Count
Source
68
408k
{
69
408k
    block_t *block = p_bytestream->p_chain;
70
71
438k
    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
409k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
579
    {
83
579
        block_t *p_next = block->p_next;
84
85
579
        p_bytestream->i_total -= block->i_buffer;
86
579
        block_Release( block );
87
579
        block = p_next;
88
579
        p_bytestream->i_block_offset = 0;
89
579
    }
90
91
408k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
408k
    if( p_bytestream->p_chain == NULL )
93
2.99k
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
408k
}
Unexecuted instantiation: mpegvideo.c:block_BytestreamFlush
vc1.c:block_BytestreamFlush
Line
Count
Source
68
11.0k
{
69
11.0k
    block_t *block = p_bytestream->p_chain;
70
71
11.0k
    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
11.1k
    while( block != NULL && block->i_buffer == p_bytestream->i_block_offset )
82
27
    {
83
27
        block_t *p_next = block->p_next;
84
85
27
        p_bytestream->i_total -= block->i_buffer;
86
27
        block_Release( block );
87
27
        block = p_next;
88
27
        p_bytestream->i_block_offset = 0;
89
27
    }
90
91
11.0k
    p_bytestream->p_chain = p_bytestream->p_block = block;
92
11.0k
    if( p_bytestream->p_chain == NULL )
93
27
        p_bytestream->pp_last = &p_bytestream->p_chain;
94
11.0k
}
95
96
static inline void block_BytestreamPush( block_bytestream_t *p_bytestream,
97
                                         block_t *p_block )
98
2.16M
{
99
2.16M
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
2.16M
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
4.33M
    for( ; p_block; p_block = p_block->p_next )
102
2.16M
        p_bytestream->i_total += p_block->i_buffer;
103
2.16M
}
a52.c:block_BytestreamPush
Line
Count
Source
98
736k
{
99
736k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
736k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.47M
    for( ; p_block; p_block = p_block->p_next )
102
736k
        p_bytestream->i_total += p_block->i_buffer;
103
736k
}
dts.c:block_BytestreamPush
Line
Count
Source
98
150k
{
99
150k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
150k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
300k
    for( ; p_block; p_block = p_block->p_next )
102
150k
        p_bytestream->i_total += p_block->i_buffer;
103
150k
}
flac.c:block_BytestreamPush
Line
Count
Source
98
4.06k
{
99
4.06k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
4.06k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
8.13k
    for( ; p_block; p_block = p_block->p_next )
102
4.06k
        p_bytestream->i_total += p_block->i_buffer;
103
4.06k
}
h264.c:block_BytestreamPush
Line
Count
Source
98
271k
{
99
271k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
271k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
542k
    for( ; p_block; p_block = p_block->p_next )
102
271k
        p_bytestream->i_total += p_block->i_buffer;
103
271k
}
hevc.c:block_BytestreamPush
Line
Count
Source
98
393k
{
99
393k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
393k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
787k
    for( ; p_block; p_block = p_block->p_next )
102
393k
        p_bytestream->i_total += p_block->i_buffer;
103
393k
}
mlp.c:block_BytestreamPush
Line
Count
Source
98
169k
{
99
169k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
169k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
339k
    for( ; p_block; p_block = p_block->p_next )
102
169k
        p_bytestream->i_total += p_block->i_buffer;
103
169k
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamPush
Unexecuted instantiation: mpeg4video.c:block_BytestreamPush
mpegaudio.c:block_BytestreamPush
Line
Count
Source
98
439k
{
99
439k
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
439k
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
879k
    for( ; p_block; p_block = p_block->p_next )
102
439k
        p_bytestream->i_total += p_block->i_buffer;
103
439k
}
Unexecuted instantiation: mpegvideo.c:block_BytestreamPush
vc1.c:block_BytestreamPush
Line
Count
Source
98
588
{
99
588
    block_ChainLastAppend( &p_bytestream->pp_last, p_block );
100
588
    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;
101
1.17k
    for( ; p_block; p_block = p_block->p_next )
102
588
        p_bytestream->i_total += p_block->i_buffer;
103
588
}
104
105
static inline size_t block_BytestreamRemaining( const block_bytestream_t *p_bytestream )
106
406M
{
107
406M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
406M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
406M
}
a52.c:block_BytestreamRemaining
Line
Count
Source
106
52.5M
{
107
52.5M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
52.5M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
52.5M
}
dts.c:block_BytestreamRemaining
Line
Count
Source
106
205M
{
107
205M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
205M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
205M
}
flac.c:block_BytestreamRemaining
Line
Count
Source
106
21.0M
{
107
21.0M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
21.0M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
21.0M
}
h264.c:block_BytestreamRemaining
Line
Count
Source
106
1.00M
{
107
1.00M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.00M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.00M
}
hevc.c:block_BytestreamRemaining
Line
Count
Source
106
1.21M
{
107
1.21M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
1.21M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
1.21M
}
mlp.c:block_BytestreamRemaining
Line
Count
Source
106
32.5M
{
107
32.5M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
32.5M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
32.5M
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamRemaining
Unexecuted instantiation: mpeg4video.c:block_BytestreamRemaining
mpegaudio.c:block_BytestreamRemaining
Line
Count
Source
106
93.1M
{
107
93.1M
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
93.1M
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
93.1M
}
Unexecuted instantiation: mpegvideo.c:block_BytestreamRemaining
vc1.c:block_BytestreamRemaining
Line
Count
Source
106
11.6k
{
107
11.6k
    return ( p_bytestream->i_total > p_bytestream->i_base_offset + p_bytestream->i_block_offset ) ?
108
11.6k
             p_bytestream->i_total - p_bytestream->i_base_offset - p_bytestream->i_block_offset : 0;
109
11.6k
}
110
111
VLC_USED
112
static inline block_t *block_BytestreamPop( block_bytestream_t *p_bytestream )
113
1.93M
{
114
1.93M
    block_t *p_block;
115
116
1.93M
    block_BytestreamFlush( p_bytestream );
117
118
1.93M
    p_block = p_bytestream->p_block;
119
1.93M
    if( unlikely( p_block == NULL ) )
120
215
    {
121
215
        return NULL;
122
215
    }
123
1.93M
    else if( !p_block->p_next )
124
1.59M
    {
125
1.59M
        p_block->p_buffer += p_bytestream->i_block_offset;
126
1.59M
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
1.59M
        p_bytestream->i_block_offset = 0;
128
1.59M
        p_bytestream->i_total = 0;
129
1.59M
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
1.59M
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
1.59M
        return p_block;
132
1.59M
    }
133
134
417k
    while( p_block->p_next && p_block->p_next->p_next )
135
77.4k
        p_block = p_block->p_next;
136
137
339k
    block_t *p_block_old = p_block;
138
339k
    p_block = p_block->p_next;
139
339k
    p_block_old->p_next = NULL;
140
339k
    p_bytestream->pp_last = &p_block_old->p_next;
141
339k
    if( p_block )
142
339k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
339k
    return p_block;
145
1.93M
}
a52.c:block_BytestreamPop
Line
Count
Source
113
673k
{
114
673k
    block_t *p_block;
115
116
673k
    block_BytestreamFlush( p_bytestream );
117
118
673k
    p_block = p_bytestream->p_block;
119
673k
    if( unlikely( p_block == NULL ) )
120
154
    {
121
154
        return NULL;
122
154
    }
123
672k
    else if( !p_block->p_next )
124
410k
    {
125
410k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
410k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
410k
        p_bytestream->i_block_offset = 0;
128
410k
        p_bytestream->i_total = 0;
129
410k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
410k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
410k
        return p_block;
132
410k
    }
133
134
277k
    while( p_block->p_next && p_block->p_next->p_next )
135
15.3k
        p_block = p_block->p_next;
136
137
262k
    block_t *p_block_old = p_block;
138
262k
    p_block = p_block->p_next;
139
262k
    p_block_old->p_next = NULL;
140
262k
    p_bytestream->pp_last = &p_block_old->p_next;
141
262k
    if( p_block )
142
262k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
262k
    return p_block;
145
673k
}
dts.c:block_BytestreamPop
Line
Count
Source
113
139k
{
114
139k
    block_t *p_block;
115
116
139k
    block_BytestreamFlush( p_bytestream );
117
118
139k
    p_block = p_bytestream->p_block;
119
139k
    if( unlikely( p_block == NULL ) )
120
10
    {
121
10
        return NULL;
122
10
    }
123
139k
    else if( !p_block->p_next )
124
126k
    {
125
126k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
126k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
126k
        p_bytestream->i_block_offset = 0;
128
126k
        p_bytestream->i_total = 0;
129
126k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
126k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
126k
        return p_block;
132
126k
    }
133
134
66.4k
    while( p_block->p_next && p_block->p_next->p_next )
135
52.8k
        p_block = p_block->p_next;
136
137
13.6k
    block_t *p_block_old = p_block;
138
13.6k
    p_block = p_block->p_next;
139
13.6k
    p_block_old->p_next = NULL;
140
13.6k
    p_bytestream->pp_last = &p_block_old->p_next;
141
13.6k
    if( p_block )
142
13.6k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
13.6k
    return p_block;
145
139k
}
flac.c:block_BytestreamPop
Line
Count
Source
113
2.59k
{
114
2.59k
    block_t *p_block;
115
116
2.59k
    block_BytestreamFlush( p_bytestream );
117
118
2.59k
    p_block = p_bytestream->p_block;
119
2.59k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
2.59k
    else if( !p_block->p_next )
124
1.83k
    {
125
1.83k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
1.83k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
1.83k
        p_bytestream->i_block_offset = 0;
128
1.83k
        p_bytestream->i_total = 0;
129
1.83k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
1.83k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
1.83k
        return p_block;
132
1.83k
    }
133
134
2.18k
    while( p_block->p_next && p_block->p_next->p_next )
135
1.41k
        p_block = p_block->p_next;
136
137
765
    block_t *p_block_old = p_block;
138
765
    p_block = p_block->p_next;
139
765
    p_block_old->p_next = NULL;
140
765
    p_bytestream->pp_last = &p_block_old->p_next;
141
765
    if( p_block )
142
765
        p_bytestream->i_total -= p_block->i_buffer;
143
144
765
    return p_block;
145
2.59k
}
h264.c:block_BytestreamPop
Line
Count
Source
113
227k
{
114
227k
    block_t *p_block;
115
116
227k
    block_BytestreamFlush( p_bytestream );
117
118
227k
    p_block = p_bytestream->p_block;
119
227k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
227k
    else if( !p_block->p_next )
124
226k
    {
125
226k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
226k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
226k
        p_bytestream->i_block_offset = 0;
128
226k
        p_bytestream->i_total = 0;
129
226k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
226k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
226k
        return p_block;
132
226k
    }
133
134
278
    while( p_block->p_next && p_block->p_next->p_next )
135
0
        p_block = p_block->p_next;
136
137
278
    block_t *p_block_old = p_block;
138
278
    p_block = p_block->p_next;
139
278
    p_block_old->p_next = NULL;
140
278
    p_bytestream->pp_last = &p_block_old->p_next;
141
278
    if( p_block )
142
278
        p_bytestream->i_total -= p_block->i_buffer;
143
144
278
    return p_block;
145
227k
}
hevc.c:block_BytestreamPop
Line
Count
Source
113
331k
{
114
331k
    block_t *p_block;
115
116
331k
    block_BytestreamFlush( p_bytestream );
117
118
331k
    p_block = p_bytestream->p_block;
119
331k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
331k
    else if( !p_block->p_next )
124
330k
    {
125
330k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
330k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
330k
        p_bytestream->i_block_offset = 0;
128
330k
        p_bytestream->i_total = 0;
129
330k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
330k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
330k
        return p_block;
132
330k
    }
133
134
343
    while( p_block->p_next && p_block->p_next->p_next )
135
0
        p_block = p_block->p_next;
136
137
343
    block_t *p_block_old = p_block;
138
343
    p_block = p_block->p_next;
139
343
    p_block_old->p_next = NULL;
140
343
    p_bytestream->pp_last = &p_block_old->p_next;
141
343
    if( p_block )
142
343
        p_bytestream->i_total -= p_block->i_buffer;
143
144
343
    return p_block;
145
331k
}
mlp.c:block_BytestreamPop
Line
Count
Source
113
163k
{
114
163k
    block_t *p_block;
115
116
163k
    block_BytestreamFlush( p_bytestream );
117
118
163k
    p_block = p_bytestream->p_block;
119
163k
    if( unlikely( p_block == NULL ) )
120
0
    {
121
0
        return NULL;
122
0
    }
123
163k
    else if( !p_block->p_next )
124
125k
    {
125
125k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
125k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
125k
        p_bytestream->i_block_offset = 0;
128
125k
        p_bytestream->i_total = 0;
129
125k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
125k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
125k
        return p_block;
132
125k
    }
133
134
42.2k
    while( p_block->p_next && p_block->p_next->p_next )
135
3.77k
        p_block = p_block->p_next;
136
137
38.4k
    block_t *p_block_old = p_block;
138
38.4k
    p_block = p_block->p_next;
139
38.4k
    p_block_old->p_next = NULL;
140
38.4k
    p_bytestream->pp_last = &p_block_old->p_next;
141
38.4k
    if( p_block )
142
38.4k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
38.4k
    return p_block;
145
163k
}
Unexecuted instantiation: mpeg4audio.c:block_BytestreamPop
Unexecuted instantiation: mpeg4video.c:block_BytestreamPop
mpegaudio.c:block_BytestreamPop
Line
Count
Source
113
400k
{
114
400k
    block_t *p_block;
115
116
400k
    block_BytestreamFlush( p_bytestream );
117
118
400k
    p_block = p_bytestream->p_block;
119
400k
    if( unlikely( p_block == NULL ) )
120
51
    {
121
51
        return NULL;
122
51
    }
123
400k
    else if( !p_block->p_next )
124
376k
    {
125
376k
        p_block->p_buffer += p_bytestream->i_block_offset;
126
376k
        p_block->i_buffer -= p_bytestream->i_block_offset;
127
376k
        p_bytestream->i_block_offset = 0;
128
376k
        p_bytestream->i_total = 0;
129
376k
        p_bytestream->p_chain = p_bytestream->p_block = NULL;
130
376k
        p_bytestream->pp_last = &p_bytestream->p_chain;
131
376k
        return p_block;
132
376k
    }
133
134
27.9k
    while( p_block->p_next && p_block->p_next->p_next )
135
4.06k
        p_block = p_block->p_next;
136
137
23.8k
    block_t *p_block_old = p_block;
138
23.8k
    p_block = p_block->p_next;
139
23.8k
    p_block_old->p_next = NULL;
140
23.8k
    p_bytestream->pp_last = &p_block_old->p_next;
141
23.8k
    if( p_block )
142
23.8k
        p_bytestream->i_total -= p_block->i_buffer;
143
144
23.8k
    return p_block;
145
400k
}
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.42M
{
150
1.42M
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
1.41M
        return VLC_SUCCESS;
152
2.76k
    return VLC_EGENERIC;
153
1.42M
}
a52.c:block_WaitBytes
Line
Count
Source
149
710k
{
150
710k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
709k
        return VLC_SUCCESS;
152
1.16k
    return VLC_EGENERIC;
153
710k
}
dts.c:block_WaitBytes
Line
Count
Source
149
145k
{
150
145k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
144k
        return VLC_SUCCESS;
152
1.22k
    return VLC_EGENERIC;
153
145k
}
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
165k
{
150
165k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
164k
        return VLC_SUCCESS;
152
371
    return VLC_EGENERIC;
153
165k
}
Unexecuted instantiation: mpeg4audio.c:block_WaitBytes
Unexecuted instantiation: mpeg4video.c:block_WaitBytes
mpegaudio.c:block_WaitBytes
Line
Count
Source
149
398k
{
150
398k
    if( block_BytestreamRemaining( p_bytestream ) >= i_data )
151
398k
        return VLC_SUCCESS;
152
0
    return VLC_EGENERIC;
153
398k
}
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
169M
{
158
169M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
34.4k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
169M
    size_t i_offset = p_bytestream->i_block_offset;
163
169M
    size_t i_size = i_data;
164
169M
    for( block_t *p_block = p_bytestream->p_block;
165
170M
         p_block != NULL; p_block = p_block->p_next )
166
170M
    {
167
170M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
170M
        i_size -= i_copy;
169
170
170M
        if( i_copy )
171
170M
        {
172
170M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
170M
            p_data += i_copy;
174
170M
        }
175
176
170M
        i_offset = 0;
177
178
170M
        if( !i_size ) break;
179
170M
    }
180
181
169M
    return VLC_SUCCESS;
182
169M
}
a52.c:block_PeekBytes
Line
Count
Source
157
26.6M
{
158
26.6M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
12.3k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
26.6M
    size_t i_offset = p_bytestream->i_block_offset;
163
26.6M
    size_t i_size = i_data;
164
26.6M
    for( block_t *p_block = p_bytestream->p_block;
165
26.6M
         p_block != NULL; p_block = p_block->p_next )
166
26.6M
    {
167
26.6M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
26.6M
        i_size -= i_copy;
169
170
26.6M
        if( i_copy )
171
26.6M
        {
172
26.6M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
26.6M
            p_data += i_copy;
174
26.6M
        }
175
176
26.6M
        i_offset = 0;
177
178
26.6M
        if( !i_size ) break;
179
26.6M
    }
180
181
26.6M
    return VLC_SUCCESS;
182
26.6M
}
dts.c:block_PeekBytes
Line
Count
Source
157
80.5M
{
158
80.5M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
6.78k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
80.5M
    size_t i_offset = p_bytestream->i_block_offset;
163
80.5M
    size_t i_size = i_data;
164
80.5M
    for( block_t *p_block = p_bytestream->p_block;
165
80.5M
         p_block != NULL; p_block = p_block->p_next )
166
80.5M
    {
167
80.5M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
80.5M
        i_size -= i_copy;
169
170
80.5M
        if( i_copy )
171
80.5M
        {
172
80.5M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
80.5M
            p_data += i_copy;
174
80.5M
        }
175
176
80.5M
        i_offset = 0;
177
178
80.5M
        if( !i_size ) break;
179
80.5M
    }
180
181
80.5M
    return VLC_SUCCESS;
182
80.5M
}
flac.c:block_PeekBytes
Line
Count
Source
157
721k
{
158
721k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
52
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
721k
    size_t i_offset = p_bytestream->i_block_offset;
163
721k
    size_t i_size = i_data;
164
721k
    for( block_t *p_block = p_bytestream->p_block;
165
722k
         p_block != NULL; p_block = p_block->p_next )
166
722k
    {
167
722k
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
722k
        i_size -= i_copy;
169
170
722k
        if( i_copy )
171
722k
        {
172
722k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
722k
            p_data += i_copy;
174
722k
        }
175
176
722k
        i_offset = 0;
177
178
722k
        if( !i_size ) break;
179
722k
    }
180
181
721k
    return VLC_SUCCESS;
182
721k
}
Unexecuted instantiation: h264.c:block_PeekBytes
Unexecuted instantiation: hevc.c:block_PeekBytes
mlp.c:block_PeekBytes
Line
Count
Source
157
16.1M
{
158
16.1M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
2.30k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
16.1M
    size_t i_offset = p_bytestream->i_block_offset;
163
16.1M
    size_t i_size = i_data;
164
16.1M
    for( block_t *p_block = p_bytestream->p_block;
165
16.5M
         p_block != NULL; p_block = p_block->p_next )
166
16.5M
    {
167
16.5M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
16.5M
        i_size -= i_copy;
169
170
16.5M
        if( i_copy )
171
16.5M
        {
172
16.5M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
16.5M
            p_data += i_copy;
174
16.5M
        }
175
176
16.5M
        i_offset = 0;
177
178
16.5M
        if( !i_size ) break;
179
16.5M
    }
180
181
16.1M
    return VLC_SUCCESS;
182
16.1M
}
Unexecuted instantiation: mpeg4audio.c:block_PeekBytes
Unexecuted instantiation: mpeg4video.c:block_PeekBytes
mpegaudio.c:block_PeekBytes
Line
Count
Source
157
45.6M
{
158
45.6M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
159
12.9k
        return VLC_EGENERIC;
160
161
    /* Copy the data */
162
45.5M
    size_t i_offset = p_bytestream->i_block_offset;
163
45.5M
    size_t i_size = i_data;
164
45.5M
    for( block_t *p_block = p_bytestream->p_block;
165
45.7M
         p_block != NULL; p_block = p_block->p_next )
166
45.7M
    {
167
45.7M
        size_t i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
168
45.7M
        i_size -= i_copy;
169
170
45.7M
        if( i_copy )
171
45.6M
        {
172
45.6M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
173
45.6M
            p_data += i_copy;
174
45.6M
        }
175
176
45.7M
        i_offset = 0;
177
178
45.7M
        if( !i_size ) break;
179
45.7M
    }
180
181
45.5M
    return VLC_SUCCESS;
182
45.6M
}
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
152M
{
187
152M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
6.11k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
152M
    size_t i_offset = p_bytestream->i_block_offset;
192
152M
    size_t i_size = i_data;
193
152M
    size_t i_copy = 0;
194
152M
    block_t *p_block;
195
152M
    for( p_block = p_bytestream->p_block;
196
152M
         p_block != NULL; p_block = p_block->p_next )
197
152M
    {
198
152M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
152M
        i_size -= i_copy;
200
201
152M
        if( i_copy && p_data != NULL )
202
3.70M
        {
203
3.70M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
3.70M
            p_data += i_copy;
205
3.70M
        }
206
207
152M
        if( i_size == 0 )
208
152M
            break;
209
210
170k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
170k
        i_offset = 0;
212
170k
    }
213
214
152M
    p_bytestream->p_block = p_block;
215
152M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
152M
    return VLC_SUCCESS;
218
152M
}
a52.c:block_GetBytes
Line
Count
Source
186
24.5M
{
187
24.5M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
3.36k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
24.5M
    size_t i_offset = p_bytestream->i_block_offset;
192
24.5M
    size_t i_size = i_data;
193
24.5M
    size_t i_copy = 0;
194
24.5M
    block_t *p_block;
195
24.5M
    for( p_block = p_bytestream->p_block;
196
24.5M
         p_block != NULL; p_block = p_block->p_next )
197
24.5M
    {
198
24.5M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
24.5M
        i_size -= i_copy;
200
201
24.5M
        if( i_copy && p_data != NULL )
202
721k
        {
203
721k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
721k
            p_data += i_copy;
205
721k
        }
206
207
24.5M
        if( i_size == 0 )
208
24.5M
            break;
209
210
41.4k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
41.4k
        i_offset = 0;
212
41.4k
    }
213
214
24.5M
    p_bytestream->p_block = p_block;
215
24.5M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
24.5M
    return VLC_SUCCESS;
218
24.5M
}
dts.c:block_GetBytes
Line
Count
Source
186
76.5M
{
187
76.5M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
1.53k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
76.5M
    size_t i_offset = p_bytestream->i_block_offset;
192
76.5M
    size_t i_size = i_data;
193
76.5M
    size_t i_copy = 0;
194
76.5M
    block_t *p_block;
195
76.5M
    for( p_block = p_bytestream->p_block;
196
76.5M
         p_block != NULL; p_block = p_block->p_next )
197
76.5M
    {
198
76.5M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
76.5M
        i_size -= i_copy;
200
201
76.5M
        if( i_copy && p_data != NULL )
202
146k
        {
203
146k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
146k
            p_data += i_copy;
205
146k
        }
206
207
76.5M
        if( i_size == 0 )
208
76.5M
            break;
209
210
6.28k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
6.28k
        i_offset = 0;
212
6.28k
    }
213
214
76.5M
    p_bytestream->p_block = p_block;
215
76.5M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
76.5M
    return VLC_SUCCESS;
218
76.5M
}
flac.c:block_GetBytes
Line
Count
Source
186
1.43M
{
187
1.43M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
19
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
1.43M
    size_t i_offset = p_bytestream->i_block_offset;
192
1.43M
    size_t i_size = i_data;
193
1.43M
    size_t i_copy = 0;
194
1.43M
    block_t *p_block;
195
1.43M
    for( p_block = p_bytestream->p_block;
196
1.44M
         p_block != NULL; p_block = p_block->p_next )
197
1.44M
    {
198
1.44M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
1.44M
        i_size -= i_copy;
200
201
1.44M
        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
1.44M
        if( i_size == 0 )
208
1.43M
            break;
209
210
897
        p_bytestream->i_base_offset += p_block->i_buffer;
211
897
        i_offset = 0;
212
897
    }
213
214
1.43M
    p_bytestream->p_block = p_block;
215
1.43M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
1.43M
    return VLC_SUCCESS;
218
1.43M
}
h264.c:block_GetBytes
Line
Count
Source
186
994k
{
187
994k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
994k
    size_t i_offset = p_bytestream->i_block_offset;
192
994k
    size_t i_size = i_data;
193
994k
    size_t i_copy = 0;
194
994k
    block_t *p_block;
195
994k
    for( p_block = p_bytestream->p_block;
196
1.02M
         p_block != NULL; p_block = p_block->p_next )
197
1.02M
    {
198
1.02M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
1.02M
        i_size -= i_copy;
200
201
1.02M
        if( i_copy && p_data != NULL )
202
1.00M
        {
203
1.00M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
1.00M
            p_data += i_copy;
205
1.00M
        }
206
207
1.02M
        if( i_size == 0 )
208
994k
            break;
209
210
28.7k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
28.7k
        i_offset = 0;
212
28.7k
    }
213
214
994k
    p_bytestream->p_block = p_block;
215
994k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
994k
    return VLC_SUCCESS;
218
994k
}
hevc.c:block_GetBytes
Line
Count
Source
186
1.20M
{
187
1.20M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
1.20M
    size_t i_offset = p_bytestream->i_block_offset;
192
1.20M
    size_t i_size = i_data;
193
1.20M
    size_t i_copy = 0;
194
1.20M
    block_t *p_block;
195
1.20M
    for( p_block = p_bytestream->p_block;
196
1.25M
         p_block != NULL; p_block = p_block->p_next )
197
1.25M
    {
198
1.25M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
1.25M
        i_size -= i_copy;
200
201
1.25M
        if( i_copy && p_data != NULL )
202
1.24M
        {
203
1.24M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
1.24M
            p_data += i_copy;
205
1.24M
        }
206
207
1.25M
        if( i_size == 0 )
208
1.20M
            break;
209
210
50.8k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
50.8k
        i_offset = 0;
212
50.8k
    }
213
214
1.20M
    p_bytestream->p_block = p_block;
215
1.20M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
1.20M
    return VLC_SUCCESS;
218
1.20M
}
mlp.c:block_GetBytes
Line
Count
Source
186
15.7M
{
187
15.7M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
15.7M
    size_t i_offset = p_bytestream->i_block_offset;
192
15.7M
    size_t i_size = i_data;
193
15.7M
    size_t i_copy = 0;
194
15.7M
    block_t *p_block;
195
15.7M
    for( p_block = p_bytestream->p_block;
196
15.7M
         p_block != NULL; p_block = p_block->p_next )
197
15.7M
    {
198
15.7M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
15.7M
        i_size -= i_copy;
200
201
15.7M
        if( i_copy && p_data != NULL )
202
166k
        {
203
166k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
166k
            p_data += i_copy;
205
166k
        }
206
207
15.7M
        if( i_size == 0 )
208
15.7M
            break;
209
210
4.84k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
4.84k
        i_offset = 0;
212
4.84k
    }
213
214
15.7M
    p_bytestream->p_block = p_block;
215
15.7M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
15.7M
    return VLC_SUCCESS;
218
15.7M
}
Unexecuted instantiation: mpeg4audio.c:block_GetBytes
Unexecuted instantiation: mpeg4video.c:block_GetBytes
mpegaudio.c:block_GetBytes
Line
Count
Source
186
31.9M
{
187
31.9M
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
1.20k
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
31.9M
    size_t i_offset = p_bytestream->i_block_offset;
192
31.9M
    size_t i_size = i_data;
193
31.9M
    size_t i_copy = 0;
194
31.9M
    block_t *p_block;
195
31.9M
    for( p_block = p_bytestream->p_block;
196
31.9M
         p_block != NULL; p_block = p_block->p_next )
197
31.9M
    {
198
31.9M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
31.9M
        i_size -= i_copy;
200
201
31.9M
        if( i_copy && p_data != NULL )
202
407k
        {
203
407k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
407k
            p_data += i_copy;
205
407k
        }
206
207
31.9M
        if( i_size == 0 )
208
31.9M
            break;
209
210
37.3k
        p_bytestream->i_base_offset += p_block->i_buffer;
211
37.3k
        i_offset = 0;
212
37.3k
    }
213
214
31.9M
    p_bytestream->p_block = p_block;
215
31.9M
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
31.9M
    return VLC_SUCCESS;
218
31.9M
}
Unexecuted instantiation: mpegvideo.c:block_GetBytes
vc1.c:block_GetBytes
Line
Count
Source
186
11.0k
{
187
11.0k
    if( block_BytestreamRemaining( p_bytestream ) < i_data )
188
0
        return VLC_EGENERIC;
189
190
    /* Copy the data */
191
11.0k
    size_t i_offset = p_bytestream->i_block_offset;
192
11.0k
    size_t i_size = i_data;
193
11.0k
    size_t i_copy = 0;
194
11.0k
    block_t *p_block;
195
11.0k
    for( p_block = p_bytestream->p_block;
196
11.0k
         p_block != NULL; p_block = p_block->p_next )
197
11.0k
    {
198
11.0k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
199
11.0k
        i_size -= i_copy;
200
201
11.0k
        if( i_copy && p_data != NULL )
202
10.4k
        {
203
10.4k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
204
10.4k
            p_data += i_copy;
205
10.4k
        }
206
207
11.0k
        if( i_size == 0 )
208
11.0k
            break;
209
210
0
        p_bytestream->i_base_offset += p_block->i_buffer;
211
0
        i_offset = 0;
212
0
    }
213
214
11.0k
    p_bytestream->p_block = p_block;
215
11.0k
    p_bytestream->i_block_offset = i_offset + i_copy;
216
217
11.0k
    return VLC_SUCCESS;
218
11.0k
}
219
220
static inline int block_SkipBytes( block_bytestream_t *p_bytestream,
221
                                   size_t i_data )
222
1.12M
{
223
1.12M
    return block_GetBytes( p_bytestream, NULL, i_data );
224
1.12M
}
a52.c:block_SkipBytes
Line
Count
Source
222
248k
{
223
248k
    return block_GetBytes( p_bytestream, NULL, i_data );
224
248k
}
dts.c:block_SkipBytes
Line
Count
Source
222
15.1k
{
223
15.1k
    return block_GetBytes( p_bytestream, NULL, i_data );
224
15.1k
}
flac.c:block_SkipBytes
Line
Count
Source
222
835k
{
223
835k
    return block_GetBytes( p_bytestream, NULL, i_data );
224
835k
}
h264.c:block_SkipBytes
Line
Count
Source
222
13.7k
{
223
13.7k
    return block_GetBytes( p_bytestream, NULL, i_data );
224
13.7k
}
hevc.c:block_SkipBytes
Line
Count
Source
222
11.3k
{
223
11.3k
    return block_GetBytes( p_bytestream, NULL, i_data );
224
11.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
580
{
223
580
    return block_GetBytes( p_bytestream, NULL, i_data );
224
580
}
225
226
static inline int block_SkipByte( block_bytestream_t *p_bytestream )
227
147M
{
228
147M
    return block_GetBytes( p_bytestream, NULL, 1 );
229
147M
}
a52.c:block_SkipByte
Line
Count
Source
227
23.5M
{
228
23.5M
    return block_GetBytes( p_bytestream, NULL, 1 );
229
23.5M
}
dts.c:block_SkipByte
Line
Count
Source
227
76.3M
{
228
76.3M
    return block_GetBytes( p_bytestream, NULL, 1 );
229
76.3M
}
flac.c:block_SkipByte
Line
Count
Source
227
603k
{
228
603k
    return block_GetBytes( p_bytestream, NULL, 1 );
229
603k
}
Unexecuted instantiation: h264.c:block_SkipByte
Unexecuted instantiation: hevc.c:block_SkipByte
mlp.c:block_SkipByte
Line
Count
Source
227
15.5M
{
228
15.5M
    return block_GetBytes( p_bytestream, NULL, 1 );
229
15.5M
}
Unexecuted instantiation: mpeg4audio.c:block_SkipByte
Unexecuted instantiation: mpeg4video.c:block_SkipByte
mpegaudio.c:block_SkipByte
Line
Count
Source
227
31.5M
{
228
31.5M
    return block_GetBytes( p_bytestream, NULL, 1 );
229
31.5M
}
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
83.1M
{
234
83.1M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
83.1M
    if( i_remain < i_data + i_peek_offset )
236
59.9k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
83.1M
    size_t i_offset = p_bytestream->i_block_offset;
240
83.1M
    size_t i_size = i_peek_offset;
241
83.1M
    size_t i_copy = 0;
242
83.1M
    block_t *p_block;
243
83.1M
    for( p_block = p_bytestream->p_block;
244
483M
         p_block != NULL; p_block = p_block->p_next )
245
483M
    {
246
483M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
483M
        i_size -= i_copy;
248
249
483M
        if( !i_size ) break;
250
251
400M
        i_offset = 0;
252
400M
    }
253
254
    /* Copy the data */
255
83.1M
    i_offset += i_copy;
256
83.1M
    i_size = i_data;
257
83.3M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
83.3M
    {
259
83.3M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
83.3M
        i_size -= i_copy;
261
262
83.3M
        if( i_copy )
263
83.3M
        {
264
83.3M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
83.3M
            p_data += i_copy;
266
83.3M
        }
267
268
83.3M
        i_offset = 0;
269
270
83.3M
        if( !i_size ) break;
271
83.3M
    }
272
273
83.1M
    return VLC_SUCCESS;
274
83.1M
}
a52.c:block_PeekOffsetBytes
Line
Count
Source
233
723k
{
234
723k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
723k
    if( i_remain < i_data + i_peek_offset )
236
12.7k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
710k
    size_t i_offset = p_bytestream->i_block_offset;
240
710k
    size_t i_size = i_peek_offset;
241
710k
    size_t i_copy = 0;
242
710k
    block_t *p_block;
243
710k
    for( p_block = p_bytestream->p_block;
244
978k
         p_block != NULL; p_block = p_block->p_next )
245
978k
    {
246
978k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
978k
        i_size -= i_copy;
248
249
978k
        if( !i_size ) break;
250
251
267k
        i_offset = 0;
252
267k
    }
253
254
    /* Copy the data */
255
710k
    i_offset += i_copy;
256
710k
    i_size = i_data;
257
717k
    for( ; p_block != NULL; p_block = p_block->p_next )
258
717k
    {
259
717k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
717k
        i_size -= i_copy;
261
262
717k
        if( i_copy )
263
715k
        {
264
715k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
715k
            p_data += i_copy;
266
715k
        }
267
268
717k
        i_offset = 0;
269
270
717k
        if( !i_size ) break;
271
717k
    }
272
273
710k
    return VLC_SUCCESS;
274
723k
}
dts.c:block_PeekOffsetBytes
Line
Count
Source
233
47.9M
{
234
47.9M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
47.9M
    if( i_remain < i_data + i_peek_offset )
236
6.71k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
47.9M
    size_t i_offset = p_bytestream->i_block_offset;
240
47.9M
    size_t i_size = i_peek_offset;
241
47.9M
    size_t i_copy = 0;
242
47.9M
    block_t *p_block;
243
47.9M
    for( p_block = p_bytestream->p_block;
244
374M
         p_block != NULL; p_block = p_block->p_next )
245
374M
    {
246
374M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
374M
        i_size -= i_copy;
248
249
374M
        if( !i_size ) break;
250
251
326M
        i_offset = 0;
252
326M
    }
253
254
    /* Copy the data */
255
47.9M
    i_offset += i_copy;
256
47.9M
    i_size = i_data;
257
48.0M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
48.0M
    {
259
48.0M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
48.0M
        i_size -= i_copy;
261
262
48.0M
        if( i_copy )
263
48.0M
        {
264
48.0M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
48.0M
            p_data += i_copy;
266
48.0M
        }
267
268
48.0M
        i_offset = 0;
269
270
48.0M
        if( !i_size ) break;
271
48.0M
    }
272
273
47.9M
    return VLC_SUCCESS;
274
47.9M
}
flac.c:block_PeekOffsetBytes
Line
Count
Source
233
18.8M
{
234
18.8M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
18.8M
    if( i_remain < i_data + i_peek_offset )
236
562
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
18.8M
    size_t i_offset = p_bytestream->i_block_offset;
240
18.8M
    size_t i_size = i_peek_offset;
241
18.8M
    size_t i_copy = 0;
242
18.8M
    block_t *p_block;
243
18.8M
    for( p_block = p_bytestream->p_block;
244
83.5M
         p_block != NULL; p_block = p_block->p_next )
245
83.5M
    {
246
83.5M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
83.5M
        i_size -= i_copy;
248
249
83.5M
        if( !i_size ) break;
250
251
64.6M
        i_offset = 0;
252
64.6M
    }
253
254
    /* Copy the data */
255
18.8M
    i_offset += i_copy;
256
18.8M
    i_size = i_data;
257
18.8M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
18.8M
    {
259
18.8M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
18.8M
        i_size -= i_copy;
261
262
18.8M
        if( i_copy )
263
18.8M
        {
264
18.8M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
18.8M
            p_data += i_copy;
266
18.8M
        }
267
268
18.8M
        i_offset = 0;
269
270
18.8M
        if( !i_size ) break;
271
18.8M
    }
272
273
18.8M
    return VLC_SUCCESS;
274
18.8M
}
Unexecuted instantiation: h264.c:block_PeekOffsetBytes
Unexecuted instantiation: hevc.c:block_PeekOffsetBytes
mlp.c:block_PeekOffsetBytes
Line
Count
Source
233
412k
{
234
412k
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
412k
    if( i_remain < i_data + i_peek_offset )
236
5.62k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
406k
    size_t i_offset = p_bytestream->i_block_offset;
240
406k
    size_t i_size = i_peek_offset;
241
406k
    size_t i_copy = 0;
242
406k
    block_t *p_block;
243
406k
    for( p_block = p_bytestream->p_block;
244
464k
         p_block != NULL; p_block = p_block->p_next )
245
464k
    {
246
464k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
464k
        i_size -= i_copy;
248
249
464k
        if( !i_size ) break;
250
251
57.3k
        i_offset = 0;
252
57.3k
    }
253
254
    /* Copy the data */
255
406k
    i_offset += i_copy;
256
406k
    i_size = i_data;
257
416k
    for( ; p_block != NULL; p_block = p_block->p_next )
258
416k
    {
259
416k
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
416k
        i_size -= i_copy;
261
262
416k
        if( i_copy )
263
416k
        {
264
416k
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
416k
            p_data += i_copy;
266
416k
        }
267
268
416k
        i_offset = 0;
269
270
416k
        if( !i_size ) break;
271
416k
    }
272
273
406k
    return VLC_SUCCESS;
274
412k
}
Unexecuted instantiation: mpeg4audio.c:block_PeekOffsetBytes
Unexecuted instantiation: mpeg4video.c:block_PeekOffsetBytes
mpegaudio.c:block_PeekOffsetBytes
Line
Count
Source
233
15.1M
{
234
15.1M
    const size_t i_remain = block_BytestreamRemaining( p_bytestream );
235
15.1M
    if( i_remain < i_data + i_peek_offset )
236
34.2k
        return VLC_EGENERIC;
237
238
    /* Find the right place */
239
15.1M
    size_t i_offset = p_bytestream->i_block_offset;
240
15.1M
    size_t i_size = i_peek_offset;
241
15.1M
    size_t i_copy = 0;
242
15.1M
    block_t *p_block;
243
15.1M
    for( p_block = p_bytestream->p_block;
244
24.4M
         p_block != NULL; p_block = p_block->p_next )
245
24.4M
    {
246
24.4M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
247
24.4M
        i_size -= i_copy;
248
249
24.4M
        if( !i_size ) break;
250
251
9.25M
        i_offset = 0;
252
9.25M
    }
253
254
    /* Copy the data */
255
15.1M
    i_offset += i_copy;
256
15.1M
    i_size = i_data;
257
15.2M
    for( ; p_block != NULL; p_block = p_block->p_next )
258
15.2M
    {
259
15.2M
        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );
260
15.2M
        i_size -= i_copy;
261
262
15.2M
        if( i_copy )
263
15.2M
        {
264
15.2M
            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );
265
15.2M
            p_data += i_copy;
266
15.2M
        }
267
268
15.2M
        i_offset = 0;
269
270
15.2M
        if( !i_size ) break;
271
15.2M
    }
272
273
15.1M
    return VLC_SUCCESS;
274
15.1M
}
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
18.5M
{
285
18.5M
    block_t *p_block, *p_block_backup = 0;
286
18.5M
    ssize_t i_size = 0;
287
18.5M
    size_t i_offset, i_offset_backup = 0;
288
18.5M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
18.5M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
18.5M
    for( p_block = p_bytestream->p_block;
293
86.9M
         p_block != NULL; p_block = p_block->p_next )
294
86.9M
    {
295
86.9M
        i_size -= p_block->i_buffer;
296
86.9M
        if( i_size < 0 ) break;
297
86.9M
    }
298
299
18.5M
    if( unlikely( i_size >= 0 ) )
300
45.5k
    {
301
        /* Not enough data, bail out */
302
45.5k
        return VLC_EGENERIC;
303
45.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
18.4M
    i_size += p_block->i_buffer;
309
18.4M
    *pi_offset -= i_size;
310
18.4M
    i_match = 0;
311
18.6M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
18.5M
    {
313
33.1M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
32.9M
        {
315
            /* Use optimized helper when possible */
316
32.9M
            if( p_startcode_helper && !i_match &&
317
32.9M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
17.9M
            {
319
17.9M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
17.9M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
17.9M
                if( p_res )
322
17.7M
                {
323
17.7M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
17.7M
                    return VLC_SUCCESS;
325
17.7M
                }
326
                /* Then parsing boundary with legacy code */
327
120k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
120k
            }
329
330
15.1M
            bool b_matched = ( p_startcode_matcher )
331
15.1M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
15.1M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
15.1M
            if( b_matched )
334
1.49M
            {
335
1.49M
                if( i_match == 0 )
336
857k
                {
337
857k
                    p_block_backup = p_block;
338
857k
                    i_offset_backup = i_offset;
339
857k
                    i_caller_offset_backup = *pi_offset;
340
857k
                }
341
342
1.49M
                if( i_match + 1 == i_startcode_length )
343
578k
                {
344
                    /* We have it */
345
578k
                    *pi_offset += i_offset - i_match;
346
578k
                    return VLC_SUCCESS;
347
578k
                }
348
349
917k
                i_match++;
350
917k
            }
351
13.6M
            else if ( i_match > 0 )
352
249k
            {
353
                /* False positive */
354
249k
                p_block = p_block_backup;
355
249k
                i_offset = i_offset_backup;
356
249k
                *pi_offset = i_caller_offset_backup;
357
249k
                i_match = 0;
358
249k
            }
359
360
15.1M
        }
361
204k
        i_size = 0;
362
204k
        *pi_offset += i_offset;
363
204k
    }
364
365
114k
    *pi_offset -= i_match;
366
114k
    return VLC_EGENERIC;
367
18.4M
}
a52.c:block_FindStartcodeFromOffset
Line
Count
Source
284
574k
{
285
574k
    block_t *p_block, *p_block_backup = 0;
286
574k
    ssize_t i_size = 0;
287
574k
    size_t i_offset, i_offset_backup = 0;
288
574k
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
574k
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
574k
    for( p_block = p_bytestream->p_block;
293
580k
         p_block != NULL; p_block = p_block->p_next )
294
580k
    {
295
580k
        i_size -= p_block->i_buffer;
296
580k
        if( i_size < 0 ) break;
297
580k
    }
298
299
574k
    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
574k
    i_size += p_block->i_buffer;
309
574k
    *pi_offset -= i_size;
310
574k
    i_match = 0;
311
589k
    for( ; p_block != NULL; p_block = p_block->p_next )
312
587k
    {
313
14.7M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
14.7M
        {
315
            /* Use optimized helper when possible */
316
14.7M
            if( p_startcode_helper && !i_match &&
317
14.7M
               (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
14.7M
            bool b_matched = ( p_startcode_matcher )
331
14.7M
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
14.7M
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
14.7M
            if( b_matched )
334
1.35M
            {
335
1.35M
                if( i_match == 0 )
336
777k
                {
337
777k
                    p_block_backup = p_block;
338
777k
                    i_offset_backup = i_offset;
339
777k
                    i_caller_offset_backup = *pi_offset;
340
777k
                }
341
342
1.35M
                if( i_match + 1 == i_startcode_length )
343
573k
                {
344
                    /* We have it */
345
573k
                    *pi_offset += i_offset - i_match;
346
573k
                    return VLC_SUCCESS;
347
573k
                }
348
349
777k
                i_match++;
350
777k
            }
351
13.4M
            else if ( i_match > 0 )
352
203k
            {
353
                /* False positive */
354
203k
                p_block = p_block_backup;
355
203k
                i_offset = i_offset_backup;
356
203k
                *pi_offset = i_caller_offset_backup;
357
203k
                i_match = 0;
358
203k
            }
359
360
14.7M
        }
361
14.4k
        i_size = 0;
362
14.4k
        *pi_offset += i_offset;
363
14.4k
    }
364
365
1.41k
    *pi_offset -= i_match;
366
1.41k
    return VLC_EGENERIC;
367
574k
}
Unexecuted instantiation: dts.c:block_FindStartcodeFromOffset
flac.c:block_FindStartcodeFromOffset
Line
Count
Source
284
13.4M
{
285
13.4M
    block_t *p_block, *p_block_backup = 0;
286
13.4M
    ssize_t i_size = 0;
287
13.4M
    size_t i_offset, i_offset_backup = 0;
288
13.4M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
13.4M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
13.4M
    for( p_block = p_bytestream->p_block;
293
74.7M
         p_block != NULL; p_block = p_block->p_next )
294
74.7M
    {
295
74.7M
        i_size -= p_block->i_buffer;
296
74.7M
        if( i_size < 0 ) break;
297
74.7M
    }
298
299
13.4M
    if( unlikely( i_size >= 0 ) )
300
39
    {
301
        /* Not enough data, bail out */
302
39
        return VLC_EGENERIC;
303
39
    }
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
13.4M
    i_size += p_block->i_buffer;
309
13.4M
    *pi_offset -= i_size;
310
13.4M
    i_match = 0;
311
13.4M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
13.4M
    {
313
13.4M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
13.4M
        {
315
            /* Use optimized helper when possible */
316
13.4M
            if( p_startcode_helper && !i_match &&
317
13.4M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
13.4M
            {
319
13.4M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
13.4M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
13.4M
                if( p_res )
322
13.4M
                {
323
13.4M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
13.4M
                    return VLC_SUCCESS;
325
13.4M
                }
326
                /* Then parsing boundary with legacy code */
327
14.4k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
14.4k
            }
329
330
19.2k
            bool b_matched = ( p_startcode_matcher )
331
19.2k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
19.2k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
19.2k
            if( b_matched )
334
4.85k
            {
335
4.85k
                if( i_match == 0 )
336
3.78k
                {
337
3.78k
                    p_block_backup = p_block;
338
3.78k
                    i_offset_backup = i_offset;
339
3.78k
                    i_caller_offset_backup = *pi_offset;
340
3.78k
                }
341
342
4.85k
                if( i_match + 1 == i_startcode_length )
343
1.07k
                {
344
                    /* We have it */
345
1.07k
                    *pi_offset += i_offset - i_match;
346
1.07k
                    return VLC_SUCCESS;
347
1.07k
                }
348
349
3.78k
                i_match++;
350
3.78k
            }
351
14.3k
            else if ( i_match > 0 )
352
2.55k
            {
353
                /* False positive */
354
2.55k
                p_block = p_block_backup;
355
2.55k
                i_offset = i_offset_backup;
356
2.55k
                *pi_offset = i_caller_offset_backup;
357
2.55k
                i_match = 0;
358
2.55k
            }
359
360
19.2k
        }
361
18.1k
        i_size = 0;
362
18.1k
        *pi_offset += i_offset;
363
18.1k
    }
364
365
897
    *pi_offset -= i_match;
366
897
    return VLC_EGENERIC;
367
13.4M
}
h264.c:block_FindStartcodeFromOffset
Line
Count
Source
284
2.02M
{
285
2.02M
    block_t *p_block, *p_block_backup = 0;
286
2.02M
    ssize_t i_size = 0;
287
2.02M
    size_t i_offset, i_offset_backup = 0;
288
2.02M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
2.02M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
2.02M
    for( p_block = p_bytestream->p_block;
293
4.62M
         p_block != NULL; p_block = p_block->p_next )
294
4.60M
    {
295
4.60M
        i_size -= p_block->i_buffer;
296
4.60M
        if( i_size < 0 ) break;
297
4.60M
    }
298
299
2.02M
    if( unlikely( i_size >= 0 ) )
300
27.0k
    {
301
        /* Not enough data, bail out */
302
27.0k
        return VLC_EGENERIC;
303
27.0k
    }
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
1.99M
    i_size += p_block->i_buffer;
309
1.99M
    *pi_offset -= i_size;
310
1.99M
    i_match = 0;
311
2.05M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
2.00M
    {
313
2.13M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
2.07M
        {
315
            /* Use optimized helper when possible */
316
2.07M
            if( p_startcode_helper && !i_match &&
317
2.07M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
1.98M
            {
319
1.98M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
1.98M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
1.98M
                if( p_res )
322
1.94M
                {
323
1.94M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
1.94M
                    return VLC_SUCCESS;
325
1.94M
                }
326
                /* Then parsing boundary with legacy code */
327
43.7k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
43.7k
            }
329
330
124k
            bool b_matched = ( p_startcode_matcher )
331
124k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
124k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
124k
            if( b_matched )
334
40.3k
            {
335
40.3k
                if( i_match == 0 )
336
23.2k
                {
337
23.2k
                    p_block_backup = p_block;
338
23.2k
                    i_offset_backup = i_offset;
339
23.2k
                    i_caller_offset_backup = *pi_offset;
340
23.2k
                }
341
342
40.3k
                if( i_match + 1 == i_startcode_length )
343
1.57k
                {
344
                    /* We have it */
345
1.57k
                    *pi_offset += i_offset - i_match;
346
1.57k
                    return VLC_SUCCESS;
347
1.57k
                }
348
349
38.7k
                i_match++;
350
38.7k
            }
351
84.5k
            else if ( i_match > 0 )
352
11.9k
            {
353
                /* False positive */
354
11.9k
                p_block = p_block_backup;
355
11.9k
                i_offset = i_offset_backup;
356
11.9k
                *pi_offset = i_caller_offset_backup;
357
11.9k
                i_match = 0;
358
11.9k
            }
359
360
124k
        }
361
62.0k
        i_size = 0;
362
62.0k
        *pi_offset += i_offset;
363
62.0k
    }
364
365
46.3k
    *pi_offset -= i_match;
366
46.3k
    return VLC_EGENERIC;
367
1.99M
}
hevc.c:block_FindStartcodeFromOffset
Line
Count
Source
284
2.46M
{
285
2.46M
    block_t *p_block, *p_block_backup = 0;
286
2.46M
    ssize_t i_size = 0;
287
2.46M
    size_t i_offset, i_offset_backup = 0;
288
2.46M
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
2.46M
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
2.46M
    for( p_block = p_bytestream->p_block;
293
7.01M
         p_block != NULL; p_block = p_block->p_next )
294
6.99M
    {
295
6.99M
        i_size -= p_block->i_buffer;
296
6.99M
        if( i_size < 0 ) break;
297
6.99M
    }
298
299
2.46M
    if( unlikely( i_size >= 0 ) )
300
17.5k
    {
301
        /* Not enough data, bail out */
302
17.5k
        return VLC_EGENERIC;
303
17.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.44M
    i_size += p_block->i_buffer;
309
2.44M
    *pi_offset -= i_size;
310
2.44M
    i_match = 0;
311
2.55M
    for( ; p_block != NULL; p_block = p_block->p_next )
312
2.49M
    {
313
2.70M
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
2.60M
        {
315
            /* Use optimized helper when possible */
316
2.60M
            if( p_startcode_helper && !i_match &&
317
2.60M
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
2.44M
            {
319
2.44M
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
2.44M
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
2.44M
                if( p_res )
322
2.38M
                {
323
2.38M
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
2.38M
                    return VLC_SUCCESS;
325
2.38M
                }
326
                /* Then parsing boundary with legacy code */
327
61.7k
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
61.7k
            }
329
330
219k
            bool b_matched = ( p_startcode_matcher )
331
219k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
219k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
219k
            if( b_matched )
334
99.1k
            {
335
99.1k
                if( i_match == 0 )
336
53.3k
                {
337
53.3k
                    p_block_backup = p_block;
338
53.3k
                    i_offset_backup = i_offset;
339
53.3k
                    i_caller_offset_backup = *pi_offset;
340
53.3k
                }
341
342
99.1k
                if( i_match + 1 == i_startcode_length )
343
2.19k
                {
344
                    /* We have it */
345
2.19k
                    *pi_offset += i_offset - i_match;
346
2.19k
                    return VLC_SUCCESS;
347
2.19k
                }
348
349
96.9k
                i_match++;
350
96.9k
            }
351
120k
            else if ( i_match > 0 )
352
31.3k
            {
353
                /* False positive */
354
31.3k
                p_block = p_block_backup;
355
31.3k
                i_offset = i_offset_backup;
356
31.3k
                *pi_offset = i_caller_offset_backup;
357
31.3k
                i_match = 0;
358
31.3k
            }
359
360
219k
        }
361
109k
        i_size = 0;
362
109k
        *pi_offset += i_offset;
363
109k
    }
364
365
64.8k
    *pi_offset -= i_match;
366
64.8k
    return VLC_EGENERIC;
367
2.44M
}
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
22.1k
{
285
22.1k
    block_t *p_block, *p_block_backup = 0;
286
22.1k
    ssize_t i_size = 0;
287
22.1k
    size_t i_offset, i_offset_backup = 0;
288
22.1k
    int i_caller_offset_backup = 0, i_match;
289
290
    /* Find the right place */
291
22.1k
    i_size = *pi_offset + p_bytestream->i_block_offset;
292
22.1k
    for( p_block = p_bytestream->p_block;
293
23.1k
         p_block != NULL; p_block = p_block->p_next )
294
22.1k
    {
295
22.1k
        i_size -= p_block->i_buffer;
296
22.1k
        if( i_size < 0 ) break;
297
22.1k
    }
298
299
22.1k
    if( unlikely( i_size >= 0 ) )
300
954
    {
301
        /* Not enough data, bail out */
302
954
        return VLC_EGENERIC;
303
954
    }
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
21.2k
    i_size += p_block->i_buffer;
309
21.2k
    *pi_offset -= i_size;
310
21.2k
    i_match = 0;
311
21.9k
    for( ; p_block != NULL; p_block = p_block->p_next )
312
21.2k
    {
313
22.6k
        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )
314
21.9k
        {
315
            /* Use optimized helper when possible */
316
21.9k
            if( p_startcode_helper && !i_match &&
317
21.9k
               (p_block->i_buffer - i_offset) > ((size_t)i_startcode_length - 1) )
318
21.0k
            {
319
21.0k
                const uint8_t *p_res = p_startcode_helper( &p_block->p_buffer[i_offset],
320
21.0k
                                                           &p_block->p_buffer[p_block->i_buffer] );
321
21.0k
                if( p_res )
322
20.4k
                {
323
20.4k
                    *pi_offset += i_offset + (p_res - &p_block->p_buffer[i_offset]);
324
20.4k
                    return VLC_SUCCESS;
325
20.4k
                }
326
                /* Then parsing boundary with legacy code */
327
557
                i_offset = p_block->i_buffer - (i_startcode_length - 1);
328
557
            }
329
330
1.47k
            bool b_matched = ( p_startcode_matcher )
331
1.47k
                           ? p_startcode_matcher( p_block->p_buffer[i_offset], i_match, p_startcode )
332
1.47k
                           : p_block->p_buffer[i_offset] == p_startcode[i_match];
333
1.47k
            if( b_matched )
334
479
            {
335
479
                if( i_match == 0 )
336
373
                {
337
373
                    p_block_backup = p_block;
338
373
                    i_offset_backup = i_offset;
339
373
                    i_caller_offset_backup = *pi_offset;
340
373
                }
341
342
479
                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
479
                i_match++;
350
479
            }
351
997
            else if ( i_match > 0 )
352
121
            {
353
                /* False positive */
354
121
                p_block = p_block_backup;
355
121
                i_offset = i_offset_backup;
356
121
                *pi_offset = i_caller_offset_backup;
357
121
                i_match = 0;
358
121
            }
359
360
1.47k
        }
361
714
        i_size = 0;
362
714
        *pi_offset += i_offset;
363
714
    }
364
365
714
    *pi_offset -= i_match;
366
714
    return VLC_EGENERIC;
367
21.2k
}
368
369
#endif /* VLC_BLOCK_HELPER_H */