[vlc-devel] [PATCH 5/6] codec: don't drop discontinue blocks
Ilkka Ollakka
ileoo at videolan.org
Sat Oct 31 15:05:55 CET 2015
Most of the cases it's enought just to set pts so codec resyncs itself.
Also flushing on discontinue isn't good idea.
---
modules/codec/a52.c | 6 +++++-
modules/codec/avcodec/audio.c | 7 ++++++-
modules/codec/avcodec/subtitle.c | 4 +++-
modules/codec/bpg.c | 2 +-
modules/codec/cdg.c | 2 +-
modules/codec/crystalhd.c | 2 +-
modules/codec/daala.c | 2 +-
modules/codec/ddummy.c | 2 +-
modules/codec/dts.c | 11 +++++------
modules/codec/faad.c | 2 +-
modules/codec/flac.c | 2 +-
modules/codec/gstdecode.c | 7 +++++--
modules/codec/jpeg.c | 2 +-
modules/codec/kate.c | 9 ++++++---
modules/codec/libass.c | 2 +-
modules/codec/libmpeg2.c | 2 +-
modules/codec/mft.c | 5 ++---
modules/codec/mpeg_audio.c | 17 ++++++++---------
modules/codec/mpg123.c | 2 +-
modules/codec/png.c | 2 +-
modules/codec/scte27.c | 2 +-
modules/codec/sdl_image.c | 2 +-
modules/codec/stl.c | 2 +-
modules/codec/subsdec.c | 2 +-
modules/codec/substx3g.c | 2 +-
modules/codec/svcdsub.c | 2 +-
modules/codec/svg.c | 2 +-
modules/codec/uleaddvaudio.c | 7 ++++---
modules/codec/videotoolbox.m | 2 +-
modules/codec/vpx.c | 2 +-
30 files changed, 65 insertions(+), 50 deletions(-)
diff --git a/modules/codec/a52.c b/modules/codec/a52.c
index 4fec50c..6a9d9ba 100644
--- a/modules/codec/a52.c
+++ b/modules/codec/a52.c
@@ -174,7 +174,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
if( !pp_block || !*pp_block ) return NULL;
- if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
+ if( (*pp_block)->i_flags&(BLOCK_FLAG_CORRUPTED) )
{
if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED )
{
@@ -185,6 +185,10 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
block_Release( *pp_block );
return NULL;
}
+ if( (*pp_block)->i_flags & BLOCK_FLAG_DISCONTINUITY )
+ {
+ date_Set( &p_sys->end_date, 0 );
+ }
if( !date_Get( &p_sys->end_date ) && (*pp_block)->i_pts <= VLC_TS_INVALID)
{
diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
index 08255b8..841060b 100644
--- a/modules/codec/avcodec/audio.c
+++ b/modules/codec/avcodec/audio.c
@@ -261,7 +261,7 @@ static block_t *DecodeAudio( decoder_t *p_dec, block_t **pp_block )
if( p_sys->b_delayed_open )
goto end;
- if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
+ if( p_block->i_flags & (BLOCK_FLAG_CORRUPTED) )
{
avcodec_flush_buffers( ctx );
date_Set( &p_sys->end_date, VLC_TS_INVALID );
@@ -272,6 +272,11 @@ static block_t *DecodeAudio( decoder_t *p_dec, block_t **pp_block )
goto end;
}
+ if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY )
+ {
+ avcodec_flush_buffers( ctx );
+ date_Set( &p_sys->end_date, VLC_TS_INVALID );
+ }
/* We've just started the stream, wait for the first PTS. */
if( !date_Get( &p_sys->end_date ) && p_block->i_pts <= VLC_TS_INVALID )
diff --git a/modules/codec/avcodec/subtitle.c b/modules/codec/avcodec/subtitle.c
index 5db71bd..c867e8a 100644
--- a/modules/codec/avcodec/subtitle.c
+++ b/modules/codec/avcodec/subtitle.c
@@ -124,11 +124,13 @@ static subpicture_t *DecodeSubtitle(decoder_t *dec, block_t **block_ptr)
block_t *block = *block_ptr;
- if (block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED)) {
+ if (block->i_flags & (BLOCK_FLAG_CORRUPTED)) {
block_Release(block);
avcodec_flush_buffers(sys->p_context);
return NULL;
}
+ if (block->i_flags & BLOCK_FLAG_DISCONTINUITY)
+ avcodec_flush_buffers(sys->p_context);
if (block->i_buffer <= 0) {
block_Release(block);
diff --git a/modules/codec/bpg.c b/modules/codec/bpg.c
index 6ec49c7..255ab4a 100644
--- a/modules/codec/bpg.c
+++ b/modules/codec/bpg.c
@@ -102,7 +102,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
p_block = *pp_block;
- if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY )
+ if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
{
block_Release(p_block);
*pp_block = NULL;
diff --git a/modules/codec/cdg.c b/modules/codec/cdg.c
index 5a28a33..7bcaad9 100644
--- a/modules/codec/cdg.c
+++ b/modules/codec/cdg.c
@@ -143,7 +143,7 @@ static picture_t *Decode( decoder_t *p_dec, block_t **pp_block )
return NULL;
p_block = *pp_block;
- if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
+ if( p_block->i_flags & (BLOCK_FLAG_CORRUPTED) )
{
p_sys->i_packet = 0;
goto exit;
diff --git a/modules/codec/crystalhd.c b/modules/codec/crystalhd.c
index 87c2134..2cc43fb 100644
--- a/modules/codec/crystalhd.c
+++ b/modules/codec/crystalhd.c
@@ -443,7 +443,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
p_block = *pp_block;
if( p_block )
{
- if( ( p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) == 0 )
+ if( ( p_block->i_flags&(BLOCK_FLAG_CORRUPTED) ) == 0 )
{
/* Valid input block, so we can send to HW to decode */
diff --git a/modules/codec/daala.c b/modules/codec/daala.c
index 5d7685b..ae790dd 100644
--- a/modules/codec/daala.c
+++ b/modules/codec/daala.c
@@ -404,7 +404,7 @@ static void *ProcessPacket( decoder_t *p_dec, ogg_packet *p_oggpacket,
block_t *p_block = *pp_block;
void *p_buf;
- if( ( p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) != 0 )
+ if( ( p_block->i_flags&(BLOCK_FLAG_CORRUPTED) ) != 0 )
{
/* Don't send the the first packet after a discontinuity to
* daala_decode, otherwise we get purple/green display artifacts
diff --git a/modules/codec/ddummy.c b/modules/codec/ddummy.c
index 91289d1..9bcdf97 100644
--- a/modules/codec/ddummy.c
+++ b/modules/codec/ddummy.c
@@ -130,7 +130,7 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
if( stream != NULL
&& p_block->i_buffer > 0
- && !(p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED)) )
+ && !(p_block->i_flags & (BLOCK_FLAG_CORRUPTED)) )
{
fwrite( p_block->p_buffer, 1, p_block->i_buffer, stream );
msg_Dbg( p_dec, "dumped %zu bytes", p_block->i_buffer );
diff --git a/modules/codec/dts.c b/modules/codec/dts.c
index 991412c..ebe5414 100644
--- a/modules/codec/dts.c
+++ b/modules/codec/dts.c
@@ -174,17 +174,16 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
if( !pp_block || !*pp_block )
return NULL;
- if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
+ if( (*pp_block)->i_flags&(BLOCK_FLAG_CORRUPTED) )
{
- if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED )
- {
- p_sys->i_state = STATE_NOSYNC;
- block_BytestreamEmpty( &p_sys->bytestream );
- }
+ p_sys->i_state = STATE_NOSYNC;
+ block_BytestreamEmpty( &p_sys->bytestream );
date_Set( &p_sys->end_date, 0 );
block_Release( *pp_block );
return NULL;
}
+ if( (*pp_block)->i_flags & BLOCK_FLAG_DISCONTINUITY )
+ date_Set( &p_sys->end_date, 0 );
if( !date_Get( &p_sys->end_date ) && (*pp_block)->i_pts <= VLC_TS_INVALID )
{
diff --git a/modules/codec/faad.c b/modules/codec/faad.c
index ae8fed8..944c376 100644
--- a/modules/codec/faad.c
+++ b/modules/codec/faad.c
@@ -210,7 +210,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
p_block = *pp_block;
- if( p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
+ if( p_block->i_flags&(BLOCK_FLAG_CORRUPTED) )
{
block_Release( p_block );
return NULL;
diff --git a/modules/codec/flac.c b/modules/codec/flac.c
index 9fc69f8..8ed2b5c 100644
--- a/modules/codec/flac.c
+++ b/modules/codec/flac.c
@@ -500,7 +500,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
if( !pp_block || !*pp_block )
return NULL;
- if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
+ if( (*pp_block)->i_flags&(BLOCK_FLAG_CORRUPTED) )
{
block_Release( *pp_block );
return NULL;
diff --git a/modules/codec/gstdecode.c b/modules/codec/gstdecode.c
index a2acf69..7615b45 100644
--- a/modules/codec/gstdecode.c
+++ b/modules/codec/gstdecode.c
@@ -679,8 +679,11 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
p_sys->b_prerolled = false;
}
- block_Release( p_block );
- goto done;
+ if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
+ {
+ block_Release( p_block );
+ goto done;
+ }
}
if( likely( p_block->i_buffer ) )
diff --git a/modules/codec/jpeg.c b/modules/codec/jpeg.c
index 454ae95..c9053ae 100644
--- a/modules/codec/jpeg.c
+++ b/modules/codec/jpeg.c
@@ -199,7 +199,7 @@ static picture_t *DecodeBlock(decoder_t *p_dec, block_t **pp_block)
p_block = *pp_block;
- if (p_block->i_flags & BLOCK_FLAG_DISCONTINUITY)
+ if (p_block->i_flags & BLOCK_FLAG_CORRUPTED )
{
block_Release(p_block);
*pp_block = NULL;
diff --git a/modules/codec/kate.c b/modules/codec/kate.c
index 73c5bce..eea28b3 100644
--- a/modules/codec/kate.c
+++ b/modules/codec/kate.c
@@ -480,9 +480,12 @@ static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
vlc_mutex_unlock( &p_sys->lock );
}
#endif
- p_sys->i_max_stop = VLC_TS_INVALID;
- block_Release( p_block );
- return NULL;
+ if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
+ {
+ p_sys->i_max_stop = VLC_TS_INVALID;
+ block_Release( p_block );
+ return NULL;
+ }
}
/* Block to Kate packet */
diff --git a/modules/codec/libass.c b/modules/codec/libass.c
index 92e7085..b171142 100644
--- a/modules/codec/libass.c
+++ b/modules/codec/libass.c
@@ -307,7 +307,7 @@ static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
return NULL;
p_block = *pp_block;
- if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
+ if( p_block->i_flags & (BLOCK_FLAG_CORRUPTED) )
{
p_sys->i_max_stop = VLC_TS_INVALID;
block_Release( p_block );
diff --git a/modules/codec/libmpeg2.c b/modules/codec/libmpeg2.c
index ff5a56e..85c4b6f 100644
--- a/modules/codec/libmpeg2.c
+++ b/modules/codec/libmpeg2.c
@@ -261,7 +261,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
return NULL;
p_block = *pp_block;
- if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY | BLOCK_FLAG_CORRUPTED) )
+ if( p_block->i_flags & (BLOCK_FLAG_CORRUPTED) )
Reset( p_dec );
while( 1 )
diff --git a/modules/codec/mft.c b/modules/codec/mft.c
index 696319a..e95c4ca 100644
--- a/modules/codec/mft.c
+++ b/modules/codec/mft.c
@@ -777,7 +777,7 @@ static void *DecodeSync(decoder_t *p_dec, block_t **pp_block)
return NULL;
block_t *p_block = *pp_block;
- if (p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY | BLOCK_FLAG_CORRUPTED))
+ if (p_block->i_flags & (BLOCK_FLAG_CORRUPTED))
{
block_Release(p_block);
return NULL;
@@ -839,10 +839,9 @@ static void *DecodeAsync(decoder_t *p_dec, block_t **pp_block)
return NULL;
block_t *p_block = *pp_block;
- if (p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY | BLOCK_FLAG_CORRUPTED))
+ if (p_block->i_flags & (BLOCK_FLAG_CORRUPTED))
{
block_Release(p_block);
-
return NULL;
}
diff --git a/modules/codec/mpeg_audio.c b/modules/codec/mpeg_audio.c
index 0abf6b4..9956091 100644
--- a/modules/codec/mpeg_audio.c
+++ b/modules/codec/mpeg_audio.c
@@ -201,18 +201,19 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
block_t *p_block = pp_block ? *pp_block : NULL;
if (p_block) {
- if( p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
+ if( p_block->i_flags&(BLOCK_FLAG_CORRUPTED) )
{
- if( p_block->i_flags&BLOCK_FLAG_CORRUPTED )
- {
- p_sys->i_state = STATE_NOSYNC;
- block_BytestreamEmpty( &p_sys->bytestream );
- }
+ p_sys->i_state = STATE_NOSYNC;
+ block_BytestreamEmpty( &p_sys->bytestream );
date_Set( &p_sys->end_date, 0 );
block_Release( p_block );
- p_sys->b_discontinuity = true;
return NULL;
}
+ if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY )
+ {
+ date_Set( &p_sys->end_date, 0 );
+ p_sys->b_discontinuity = true;
+ }
if( !date_Get( &p_sys->end_date ) && p_block->i_pts <= VLC_TS_INVALID )
{
@@ -292,7 +293,6 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
msg_Dbg( p_dec, "emulated startcode" );
block_SkipByte( &p_sys->bytestream );
p_sys->i_state = STATE_NOSYNC;
- p_sys->b_discontinuity = true;
break;
}
@@ -367,7 +367,6 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
msg_Dbg( p_dec, "emulated startcode on next frame" );
block_SkipByte( &p_sys->bytestream );
p_sys->i_state = STATE_NOSYNC;
- p_sys->b_discontinuity = true;
break;
}
diff --git a/modules/codec/mpg123.c b/modules/codec/mpg123.c
index 35096b1..aefbe6d 100644
--- a/modules/codec/mpg123.c
+++ b/modules/codec/mpg123.c
@@ -93,7 +93,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
goto error;
}
- if( p_block->i_flags & ( BLOCK_FLAG_DISCONTINUITY | BLOCK_FLAG_CORRUPTED ) )
+ if( p_block->i_flags & ( BLOCK_FLAG_CORRUPTED ) )
{
date_Set( &p_sys->end_date, 0 );
goto error;
diff --git a/modules/codec/png.c b/modules/codec/png.c
index 36ed444..85ab75b 100644
--- a/modules/codec/png.c
+++ b/modules/codec/png.c
@@ -205,7 +205,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
p_block = *pp_block;
p_sys->b_error = false;
- if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY )
+ if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
{
block_Release( p_block ); *pp_block = NULL;
return NULL;
diff --git a/modules/codec/scte27.c b/modules/codec/scte27.c
index 527e4e4..8696710 100644
--- a/modules/codec/scte27.c
+++ b/modules/codec/scte27.c
@@ -416,7 +416,7 @@ static subpicture_t *Decode(decoder_t *dec, block_t **block)
subpicture_t *sub_first = NULL;
subpicture_t **sub_last = &sub_first;
- if (b->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED))
+ if (b->i_flags & (BLOCK_FLAG_CORRUPTED))
goto exit;
while (b->i_buffer > 3) {
diff --git a/modules/codec/sdl_image.c b/modules/codec/sdl_image.c
index e3d7bc6..2e0fe3a 100644
--- a/modules/codec/sdl_image.c
+++ b/modules/codec/sdl_image.c
@@ -137,7 +137,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
if( pp_block == NULL || *pp_block == NULL ) return NULL;
p_block = *pp_block;
- if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY )
+ if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
{
block_Release( p_block ); *pp_block = NULL;
return NULL;
diff --git a/modules/codec/stl.c b/modules/codec/stl.c
index e2f8a20..4bfa25e 100644
--- a/modules/codec/stl.c
+++ b/modules/codec/stl.c
@@ -113,7 +113,7 @@ static subpicture_t *Decode(decoder_t *dec, block_t **block)
subpicture_t *sub = NULL;
block_t *b = *block; *block = NULL;
- if (b->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED))
+ if (b->i_flags & (BLOCK_FLAG_CORRUPTED))
goto exit;
if (b->i_buffer < 128)
goto exit;
diff --git a/modules/codec/subsdec.c b/modules/codec/subsdec.c
index 22037f7..c005192 100644
--- a/modules/codec/subsdec.c
+++ b/modules/codec/subsdec.c
@@ -329,7 +329,7 @@ static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
return NULL;
p_block = *pp_block;
- if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
+ if( p_block->i_flags & (BLOCK_FLAG_CORRUPTED) )
{
block_Release( p_block );
return NULL;
diff --git a/modules/codec/substx3g.c b/modules/codec/substx3g.c
index 39bb410..b4b08d6 100644
--- a/modules/codec/substx3g.c
+++ b/modules/codec/substx3g.c
@@ -282,7 +282,7 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block )
p_block = *pp_block;
*pp_block = NULL;
- if( ( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) ||
+ if( ( p_block->i_flags & (BLOCK_FLAG_CORRUPTED) ) ||
p_block->i_buffer < sizeof(uint16_t) )
{
block_Release( p_block );
diff --git a/modules/codec/svcdsub.c b/modules/codec/svcdsub.c
index a18fa69..df33209 100644
--- a/modules/codec/svcdsub.c
+++ b/modules/codec/svcdsub.c
@@ -234,7 +234,7 @@ static block_t *Reassemble( decoder_t *p_dec, block_t *p_block )
uint16_t i_expected_image;
uint8_t i_packet, i_expected_packet;
- if( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) )
+ if( p_block->i_flags & (BLOCK_FLAG_CORRUPTED) )
{
block_Release( p_block );
return NULL;
diff --git a/modules/codec/svg.c b/modules/codec/svg.c
index 47274fb..dae8faf 100644
--- a/modules/codec/svg.c
+++ b/modules/codec/svg.c
@@ -136,7 +136,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
p_block = *pp_block;
*pp_block = NULL;
- if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY )
+ if( p_block->i_flags & BLOCK_FLAG_CORRUPTED)
{
block_Release( p_block );
return NULL;
diff --git a/modules/codec/uleaddvaudio.c b/modules/codec/uleaddvaudio.c
index dbbd0b4..6f698fe 100644
--- a/modules/codec/uleaddvaudio.c
+++ b/modules/codec/uleaddvaudio.c
@@ -62,13 +62,14 @@ static block_t *Decode(decoder_t *dec, block_t **block_ptr)
return NULL;
block_t *block = *block_ptr;
- if (block->i_flags & (BLOCK_FLAG_DISCONTINUITY | BLOCK_FLAG_CORRUPTED)) {
- if (block->i_flags & BLOCK_FLAG_CORRUPTED) {
- }
+ if (block->i_flags & BLOCK_FLAG_CORRUPTED) {
date_Set(&sys->end_date, 0);
block_Release(block);
return NULL;
}
+ if (block->i_flags & BLOCK_FLAG_DISCONTINUITY) {
+ date_Set(&sys->end_date, 0);
+ }
if (block->i_pts > VLC_TS_INVALID &&
block->i_pts != date_Get(&sys->end_date))
diff --git a/modules/codec/videotoolbox.m b/modules/codec/videotoolbox.m
index 1e59271..0b3ded2 100644
--- a/modules/codec/videotoolbox.m
+++ b/modules/codec/videotoolbox.m
@@ -929,7 +929,7 @@ static picture_t *DecodeBlock(decoder_t *p_dec, block_t **pp_block)
p_block = *pp_block;
if (likely(p_block != NULL)) {
- if (unlikely(p_block->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED))) {
+ if (unlikely(p_block->i_flags&(BLOCK_FLAG_CORRUPTED))) {
if (likely(p_sys->b_started)) {
@synchronized(p_sys->outputTimeStamps) {
[p_sys->outputTimeStamps removeAllObjects];
diff --git a/modules/codec/vpx.c b/modules/codec/vpx.c
index 5b19958..90180b8 100644
--- a/modules/codec/vpx.c
+++ b/modules/codec/vpx.c
@@ -72,7 +72,7 @@ static picture_t *Decode(decoder_t *dec, block_t **pp_block)
if (!block)
return NULL;
- if (block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED)) {
+ if (block->i_flags & (BLOCK_FLAG_CORRUPTED)) {
block_Release(block);
return NULL;
}
--
2.6.2
More information about the vlc-devel
mailing list