Changeset 09eaac810866232ee437516ca2a8fb6bcfd8b523
- Timestamp:
- 03/02/07 20:51:20
(2 years ago)
- Author:
- Laurent Aimar <fenrir@videolan.org>
- git-committer:
- Laurent Aimar <fenrir@videolan.org> 1172865080 +0000
- git-parent:
[b5d7934fc8bb26f7f92ddfcea76485e34bc953e2]
- git-author:
- Laurent Aimar <fenrir@videolan.org> 1172865080 +0000
- Message:
Packetizers should trash all blocks with DISCONTINUITY or CORRUPTED flag set.
As a side effect, this workaround the AAC decoding problem after pause/seek
when going through our packetizer (eg: pause/seek with vlc VOD).
But the bug is still there : faad will stop decoding audio forever after
receiving a buffer full of 0 (at least with faad2-2.5 from
audiocoding.com, faad2 from mplayer svn does not show this problem)
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| rde90c15 |
r09eaac8 |
|
| 257 | 257 | |
|---|
| 258 | 258 | if( pp_block == NULL || *pp_block == NULL ) |
|---|
| 259 | | { |
|---|
| 260 | | return NULL; |
|---|
| 261 | | } |
|---|
| | 259 | return NULL; |
|---|
| | 260 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 261 | { |
|---|
| | 262 | block_Release( *pp_block ); |
|---|
| | 263 | return NULL; |
|---|
| | 264 | } |
|---|
| | 265 | |
|---|
| 262 | 266 | p_block = *pp_block; |
|---|
| 263 | 267 | *pp_block = NULL; |
|---|
| … | … | |
| 292 | 296 | |
|---|
| 293 | 297 | if( pp_block == NULL || *pp_block == NULL ) |
|---|
| 294 | | { |
|---|
| 295 | | return NULL; |
|---|
| 296 | | } |
|---|
| | 298 | return NULL; |
|---|
| | 299 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 300 | { |
|---|
| | 301 | block_Release( *pp_block ); |
|---|
| | 302 | return NULL; |
|---|
| | 303 | } |
|---|
| | 304 | |
|---|
| 297 | 305 | p_block = *pp_block; |
|---|
| 298 | 306 | *pp_block = NULL; |
|---|
| rb160af6 |
r09eaac8 |
|
| 312 | 312 | block_t *p_pic; |
|---|
| 313 | 313 | |
|---|
| 314 | | if( !pp_block || !*pp_block ) return NULL; |
|---|
| | 314 | if( !pp_block || !*pp_block ) |
|---|
| | 315 | return NULL; |
|---|
| | 316 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 317 | { |
|---|
| | 318 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 319 | block_Release( *pp_block ); |
|---|
| | 320 | return NULL; |
|---|
| | 321 | } |
|---|
| 315 | 322 | |
|---|
| 316 | 323 | block_BytestreamPush( &p_sys->bytestream, *pp_block ); |
|---|
| … | … | |
| 401 | 408 | uint8_t *p; |
|---|
| 402 | 409 | |
|---|
| 403 | | if( !pp_block || !*pp_block ) return NULL; |
|---|
| | 410 | if( !pp_block || !*pp_block ) |
|---|
| | 411 | return NULL; |
|---|
| | 412 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 413 | { |
|---|
| | 414 | block_Release( *pp_block ); |
|---|
| | 415 | return NULL; |
|---|
| | 416 | } |
|---|
| 404 | 417 | |
|---|
| 405 | 418 | p_block = *pp_block; |
|---|
| r75688a7 |
r09eaac8 |
|
| 217 | 217 | if( !pp_block || !*pp_block ) return NULL; |
|---|
| 218 | 218 | |
|---|
| | 219 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 220 | { |
|---|
| | 221 | block_Release( *pp_block ); |
|---|
| | 222 | return NULL; |
|---|
| | 223 | } |
|---|
| | 224 | |
|---|
| 219 | 225 | p_block = *pp_block; |
|---|
| 220 | 226 | *pp_block = NULL; /* Don't reuse this block */ |
|---|
| … | … | |
| 258 | 264 | return NULL; |
|---|
| 259 | 265 | } |
|---|
| 260 | | |
|---|
| 261 | | if( (*pp_block)->i_flags&BLOCK_FLAG_DISCONTINUITY ) |
|---|
| | 266 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 262 | 267 | { |
|---|
| 263 | 268 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 269 | block_Release( *pp_block ); |
|---|
| | 270 | return NULL; |
|---|
| 264 | 271 | } |
|---|
| 265 | 272 | |
|---|
| rd3fe7f2 |
r09eaac8 |
|
| 225 | 225 | if( pp_block == NULL || *pp_block == NULL ) return NULL; |
|---|
| 226 | 226 | |
|---|
| 227 | | if( (*pp_block)->i_flags & BLOCK_FLAG_DISCONTINUITY ) |
|---|
| | 227 | if( (*pp_block)->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 228 | 228 | { |
|---|
| 229 | 229 | p_sys->i_state = STATE_NOSYNC; |
|---|
| rf956481 |
r09eaac8 |
|
| 195 | 195 | return NULL; |
|---|
| 196 | 196 | |
|---|
| 197 | | if( (*pp_block)->i_flags & BLOCK_FLAG_DISCONTINUITY ) |
|---|
| 198 | | { |
|---|
| 199 | | block_Release( *pp_block ); |
|---|
| 200 | | return NULL; |
|---|
| 201 | | } |
|---|
| 202 | | if( (*pp_block)->i_flags & BLOCK_FLAG_CORRUPTED ) |
|---|
| | 197 | if( (*pp_block)->i_flags & (BLOCK_FLAG_CORRUPTED|BLOCK_FLAG_DISCONTINUITY) ) |
|---|
| 203 | 198 | { |
|---|
| 204 | 199 | p_sys->i_state = STATE_NOSYNC; |
|---|