/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 | } 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 | } |
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 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 | } 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 | } |
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 | } |
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 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 | } 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 | } |
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 | } |
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 | } |
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 | } |
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 | } |
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 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 | } Line | Count | Source | 222 | 248k | { | 223 | 248k | return block_GetBytes( p_bytestream, NULL, i_data ); | 224 | 248k | } |
Line | Count | Source | 222 | 15.1k | { | 223 | 15.1k | return block_GetBytes( p_bytestream, NULL, i_data ); | 224 | 15.1k | } |
Line | Count | Source | 222 | 835k | { | 223 | 835k | return block_GetBytes( p_bytestream, NULL, i_data ); | 224 | 835k | } |
Line | Count | Source | 222 | 13.7k | { | 223 | 13.7k | return block_GetBytes( p_bytestream, NULL, i_data ); | 224 | 13.7k | } |
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 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 | } Line | Count | Source | 227 | 23.5M | { | 228 | 23.5M | return block_GetBytes( p_bytestream, NULL, 1 ); | 229 | 23.5M | } |
Line | Count | Source | 227 | 76.3M | { | 228 | 76.3M | return block_GetBytes( p_bytestream, NULL, 1 ); | 229 | 76.3M | } |
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 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 */ |