Commit f7a8bc79 authored by Laurent Aimar's avatar Laurent Aimar

Simplify and fix the block flag test in dirac packetizer.

parent 816e1cd3
...@@ -1230,21 +1230,11 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) ...@@ -1230,21 +1230,11 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block )
block_t *p_block = NULL; block_t *p_block = NULL;
int i_flushing = 0; int i_flushing = 0;
while( pp_block && *pp_block ) if( pp_block && *pp_block )
{ {
p_block = *pp_block; p_block = *pp_block;
*pp_block = p_block->p_next; *pp_block = NULL;
p_block->p_next = NULL;
if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
{
/* silently discard corruption sentinels,
* synchronizer will then discard affected data units.
* do not produce an EOS data unit as this is very
* disruptive to the stream (and may make a larger error). */
block_Release( p_block );
continue;
}
if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY ) if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY )
{ {
/* pre-emptively insert an EOS at a discontinuity, protects /* pre-emptively insert an EOS at a discontinuity, protects
...@@ -1258,6 +1248,16 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) ...@@ -1258,6 +1248,16 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block )
* duplicates get discarded in forming encapsulation unit */ * duplicates get discarded in forming encapsulation unit */
} }
} }
else if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
{
/* silently discard corruption sentinels,
* synchronizer will then discard affected data units.
* do not produce an EOS data unit as this is very
* disruptive to the stream (and may make a larger error). */
block_Release( p_block );
p_block = NULL;
}
if( p_block )
block_BytestreamPush( &p_sys->bytestream, p_block ); block_BytestreamPush( &p_sys->bytestream, p_block );
} }
...@@ -1438,9 +1438,6 @@ static void Close( vlc_object_t *p_this ) ...@@ -1438,9 +1438,6 @@ static void Close( vlc_object_t *p_this )
decoder_t *p_dec = (decoder_t*)p_this; decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys = p_dec->p_sys; decoder_sys_t *p_sys = p_dec->p_sys;
if( !p_sys )
return;
block_BytestreamRelease( &p_sys->bytestream ); block_BytestreamRelease( &p_sys->bytestream );
if( p_sys->p_outqueue ) if( p_sys->p_outqueue )
block_ChainRelease( p_sys->p_outqueue ); block_ChainRelease( p_sys->p_outqueue );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment