Changeset ab1b0ebec326fae87388c7904c952e827acffe50
- Timestamp:
- 05/30/07 19:36:36
(1 year ago)
- Author:
- Laurent Aimar <fenrir@videolan.org>
- git-committer:
- Laurent Aimar <fenrir@videolan.org> 1180546596 +0000
- git-parent:
[07ed62b5a83261ca6692ddf18144932981c6e715]
- git-author:
- Laurent Aimar <fenrir@videolan.org> 1180546596 +0000
- Message:
Improved BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED handling in packetizers.
(I do not reset timestamp on purpose, it will at least break demuxer using
packetizer)
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| rd3fe7f2 |
rab1b0eb |
|
| 169 | 169 | if( !pp_block || !*pp_block ) return NULL; |
|---|
| 170 | 170 | |
|---|
| | 171 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 172 | { |
|---|
| | 173 | if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) |
|---|
| | 174 | { |
|---|
| | 175 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 176 | block_BytestreamFlush( &p_sys->bytestream ); |
|---|
| | 177 | } |
|---|
| | 178 | // aout_DateSet( &p_sys->end_date, 0 ); |
|---|
| | 179 | block_Release( *pp_block ); |
|---|
| | 180 | return NULL; |
|---|
| | 181 | } |
|---|
| | 182 | |
|---|
| 171 | 183 | if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts ) |
|---|
| 172 | 184 | { |
|---|
| … | … | |
| 174 | 186 | block_Release( *pp_block ); |
|---|
| 175 | 187 | return NULL; |
|---|
| 176 | | } |
|---|
| 177 | | |
|---|
| 178 | | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 179 | | { |
|---|
| 180 | | p_sys->i_state = STATE_NOSYNC; |
|---|
| 181 | 188 | } |
|---|
| 182 | 189 | |
|---|
| rd3fe7f2 |
rab1b0eb |
|
| 171 | 171 | if( !pp_block || !*pp_block ) return NULL; |
|---|
| 172 | 172 | |
|---|
| | 173 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 174 | { |
|---|
| | 175 | if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) |
|---|
| | 176 | { |
|---|
| | 177 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 178 | block_BytestreamFlush( &p_sys->bytestream ); |
|---|
| | 179 | } |
|---|
| | 180 | // aout_DateSet( &p_sys->end_date, 0 ); |
|---|
| | 181 | block_Release( *pp_block ); |
|---|
| | 182 | return NULL; |
|---|
| | 183 | } |
|---|
| | 184 | |
|---|
| 173 | 185 | if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts ) |
|---|
| 174 | 186 | { |
|---|
| … | … | |
| 176 | 188 | block_Release( *pp_block ); |
|---|
| 177 | 189 | return NULL; |
|---|
| 178 | | } |
|---|
| 179 | | |
|---|
| 180 | | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 181 | | { |
|---|
| 182 | | p_sys->i_state = STATE_NOSYNC; |
|---|
| 183 | 190 | } |
|---|
| 184 | 191 | |
|---|
| rd0f70cd |
rab1b0eb |
|
| 377 | 377 | if( !pp_block || !*pp_block ) return NULL; |
|---|
| 378 | 378 | |
|---|
| | 379 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 380 | { |
|---|
| | 381 | if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) |
|---|
| | 382 | { |
|---|
| | 383 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 384 | block_BytestreamFlush( &p_sys->bytestream ); |
|---|
| | 385 | } |
|---|
| | 386 | // aout_DateSet( &p_sys->end_date, 0 ); |
|---|
| | 387 | block_Release( *pp_block ); |
|---|
| | 388 | return NULL; |
|---|
| | 389 | } |
|---|
| | 390 | |
|---|
| 379 | 391 | if( !p_sys->b_stream_info ) ProcessHeader( p_dec ); |
|---|
| 380 | 392 | |
|---|
| … | … | |
| 395 | 407 | /* The first PTS is as good as anything else. */ |
|---|
| 396 | 408 | aout_DateSet( &p_sys->end_date, (*pp_block)->i_pts ); |
|---|
| 397 | | } |
|---|
| 398 | | |
|---|
| 399 | | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 400 | | { |
|---|
| 401 | | p_sys->i_state = STATE_NOSYNC; |
|---|
| 402 | 409 | } |
|---|
| 403 | 410 | |
|---|
| r38dd594 |
rab1b0eb |
|
| 197 | 197 | if( !pp_block || !*pp_block ) return NULL; |
|---|
| 198 | 198 | |
|---|
| | 199 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 200 | { |
|---|
| | 201 | if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) |
|---|
| | 202 | { |
|---|
| | 203 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 204 | block_BytestreamFlush( &p_sys->bytestream ); |
|---|
| | 205 | } |
|---|
| | 206 | // aout_DateSet( &p_sys->end_date, 0 ); |
|---|
| | 207 | block_Release( *pp_block ); |
|---|
| | 208 | return NULL; |
|---|
| | 209 | } |
|---|
| | 210 | |
|---|
| 199 | 211 | if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts ) |
|---|
| 200 | 212 | { |
|---|
| … | … | |
| 203 | 215 | block_Release( *pp_block ); |
|---|
| 204 | 216 | return NULL; |
|---|
| 205 | | } |
|---|
| 206 | | |
|---|
| 207 | | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 208 | | { |
|---|
| 209 | | p_sys->i_state = STATE_NOSYNC; |
|---|
| 210 | 217 | } |
|---|
| 211 | 218 | |
|---|
| r09eaac8 |
rab1b0eb |
|
| 314 | 314 | if( !pp_block || !*pp_block ) |
|---|
| 315 | 315 | return NULL; |
|---|
| | 316 | |
|---|
| 316 | 317 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 317 | 318 | { |
|---|
| 318 | | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 319 | if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) |
|---|
| | 320 | { |
|---|
| | 321 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 322 | block_BytestreamFlush( &p_sys->bytestream ); |
|---|
| | 323 | |
|---|
| | 324 | if( p_sys->p_frame ) |
|---|
| | 325 | block_ChainRelease( p_sys->p_frame ); |
|---|
| | 326 | p_sys->p_frame = NULL; |
|---|
| | 327 | p_sys->slice.i_frame_type = 0; |
|---|
| | 328 | p_sys->b_slice = VLC_FALSE; |
|---|
| | 329 | } |
|---|
| 319 | 330 | block_Release( *pp_block ); |
|---|
| 320 | 331 | return NULL; |
|---|
| r09eaac8 |
rab1b0eb |
|
| 219 | 219 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 220 | 220 | { |
|---|
| | 221 | //aout_DateSet( &p_sys->end_date, 0 ); |
|---|
| 221 | 222 | block_Release( *pp_block ); |
|---|
| 222 | 223 | return NULL; |
|---|
| … | … | |
| 258 | 259 | if( !pp_block || !*pp_block ) return NULL; |
|---|
| 259 | 260 | |
|---|
| 260 | | if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts ) |
|---|
| 261 | | { |
|---|
| 262 | | /* We've just started the stream, wait for the first PTS. */ |
|---|
| | 261 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 262 | { |
|---|
| | 263 | if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) |
|---|
| | 264 | { |
|---|
| | 265 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 266 | block_BytestreamFlush( &p_sys->bytestream ); |
|---|
| | 267 | } |
|---|
| | 268 | //aout_DateSet( &p_sys->end_date, 0 ); |
|---|
| 263 | 269 | block_Release( *pp_block ); |
|---|
| 264 | 270 | return NULL; |
|---|
| 265 | 271 | } |
|---|
| 266 | | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 267 | | { |
|---|
| 268 | | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 272 | |
|---|
| | 273 | if( !aout_DateGet( &p_sys->end_date ) && !(*pp_block)->i_pts ) |
|---|
| | 274 | { |
|---|
| | 275 | /* We've just started the stream, wait for the first PTS. */ |
|---|
| 269 | 276 | block_Release( *pp_block ); |
|---|
| 270 | 277 | return NULL; |
|---|
| r09eaac8 |
rab1b0eb |
|
| 225 | 225 | if( pp_block == NULL || *pp_block == NULL ) return NULL; |
|---|
| 226 | 226 | |
|---|
| 227 | | if( (*pp_block)->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 228 | | { |
|---|
| 229 | | p_sys->i_state = STATE_NOSYNC; |
|---|
| 230 | | if( p_sys->p_frame ) block_ChainRelease( p_sys->p_frame ); |
|---|
| 231 | | p_sys->p_frame = NULL; |
|---|
| 232 | | p_sys->pp_last = &p_sys->p_frame; |
|---|
| | 227 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 228 | { |
|---|
| | 229 | if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) |
|---|
| | 230 | { |
|---|
| | 231 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 232 | block_BytestreamFlush( &p_sys->bytestream ); |
|---|
| | 233 | |
|---|
| | 234 | if( p_sys->p_frame ) |
|---|
| | 235 | block_ChainRelease( p_sys->p_frame ); |
|---|
| | 236 | p_sys->p_frame = NULL; |
|---|
| | 237 | p_sys->pp_last = &p_sys->p_frame; |
|---|
| | 238 | } |
|---|
| | 239 | // p_sys->i_interpolated_pts = |
|---|
| | 240 | // p_sys->i_interpolated_dts = |
|---|
| | 241 | // p_sys->i_last_ref_pts = |
|---|
| | 242 | // p_sys->i_last_time_ref = |
|---|
| | 243 | // p_sys->i_time_ref = |
|---|
| | 244 | // p_sys->i_last_time = |
|---|
| | 245 | // p_sys->i_last_timeincr = 0; |
|---|
| | 246 | |
|---|
| 233 | 247 | block_Release( *pp_block ); |
|---|
| 234 | 248 | return NULL; |
|---|
| rd3fe7f2 |
rab1b0eb |
|
| 116 | 116 | |
|---|
| 117 | 117 | mtime_t i_interpolated_dts; |
|---|
| 118 | | mtime_t i_old_duration; |
|---|
| 119 | 118 | mtime_t i_last_ref_pts; |
|---|
| 120 | 119 | vlc_bool_t b_second_field; |
|---|
| … | … | |
| 184 | 183 | |
|---|
| 185 | 184 | p_sys->i_interpolated_dts = 0; |
|---|
| 186 | | p_sys->i_old_duration = 0; |
|---|
| 187 | 185 | p_sys->i_last_ref_pts = 0; |
|---|
| 188 | 186 | p_sys->b_second_field = 0; |
|---|
| … | … | |
| 237 | 235 | } |
|---|
| 238 | 236 | |
|---|
| 239 | | if( (*pp_block)->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| 240 | | { |
|---|
| 241 | | p_sys->i_state = STATE_NOSYNC; |
|---|
| 242 | | p_sys->b_discontinuity = VLC_TRUE; |
|---|
| 243 | | if( p_sys->p_frame ) |
|---|
| 244 | | block_ChainRelease( p_sys->p_frame ); |
|---|
| 245 | | p_sys->p_frame = NULL; |
|---|
| 246 | | p_sys->pp_last = &p_sys->p_frame; |
|---|
| 247 | | p_sys->b_frame_slice = VLC_FALSE; |
|---|
| | 237 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 238 | { |
|---|
| | 239 | if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) |
|---|
| | 240 | { |
|---|
| | 241 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 242 | block_BytestreamFlush( &p_sys->bytestream ); |
|---|
| | 243 | |
|---|
| | 244 | p_sys->b_discontinuity = VLC_TRUE; |
|---|
| | 245 | if( p_sys->p_frame ) |
|---|
| | 246 | block_ChainRelease( p_sys->p_frame ); |
|---|
| | 247 | p_sys->p_frame = NULL; |
|---|
| | 248 | p_sys->pp_last = &p_sys->p_frame; |
|---|
| | 249 | p_sys->b_frame_slice = VLC_FALSE; |
|---|
| | 250 | } |
|---|
| | 251 | // p_sys->i_interpolated_dts = |
|---|
| | 252 | // p_sys->i_last_ref_pts = 0; |
|---|
| | 253 | |
|---|
| 248 | 254 | block_Release( *pp_block ); |
|---|
| 249 | 255 | return NULL; |
|---|
| 250 | 256 | } |
|---|
| | 257 | |
|---|
| 251 | 258 | |
|---|
| 252 | 259 | block_BytestreamPush( &p_sys->bytestream, *pp_block ); |
|---|
| r09eaac8 |
rab1b0eb |
|
| 195 | 195 | return NULL; |
|---|
| 196 | 196 | |
|---|
| 197 | | if( (*pp_block)->i_flags & (BLOCK_FLAG_CORRUPTED|BLOCK_FLAG_DISCONTINUITY) ) |
|---|
| 198 | | { |
|---|
| 199 | | p_sys->i_state = STATE_NOSYNC; |
|---|
| 200 | | if( p_sys->p_frame ) |
|---|
| 201 | | block_ChainRelease( p_sys->p_frame ); |
|---|
| 202 | | p_sys->p_frame = NULL; |
|---|
| 203 | | p_sys->pp_last = &p_sys->p_frame; |
|---|
| | 197 | if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) |
|---|
| | 198 | { |
|---|
| | 199 | if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) |
|---|
| | 200 | { |
|---|
| | 201 | p_sys->i_state = STATE_NOSYNC; |
|---|
| | 202 | block_BytestreamFlush( &p_sys->bytestream ); |
|---|
| | 203 | |
|---|
| | 204 | if( p_sys->p_frame ) |
|---|
| | 205 | block_ChainRelease( p_sys->p_frame ); |
|---|
| | 206 | p_sys->p_frame = NULL; |
|---|
| | 207 | p_sys->pp_last = &p_sys->p_frame; |
|---|
| | 208 | p_sys->b_frame = VLC_FALSE; |
|---|
| | 209 | } |
|---|
| | 210 | // p_sys->i_interpolated_dts = 0; |
|---|
| 204 | 211 | block_Release( *pp_block ); |
|---|
| 205 | 212 | return NULL; |
|---|