vlc | branch: master | Thomas Guillem <[email protected]> | Mon Apr 24 17:46:30 2017 +0200| [a2df2f3590ff0e190664084a554a3789b687b3da] | committer: Thomas Guillem
videotoolbox: abort when restart fails from Malfunction > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a2df2f3590ff0e190664084a554a3789b687b3da --- modules/codec/videotoolbox.m | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/modules/codec/videotoolbox.m b/modules/codec/videotoolbox.m index 482b0c3f58..edc4c5b65f 100644 --- a/modules/codec/videotoolbox.m +++ b/modules/codec/videotoolbox.m @@ -1346,17 +1346,13 @@ static int DecodeBlock(decoder_t *p_dec, block_t *p_block) p_sys->b_vt_feed = true; else { + bool b_abort = false; switch (status) { case -8960 /* codecErr */: case kCVReturnInvalidArgument: case kVTVideoDecoderMalfunctionErr: - msg_Err(p_dec, "decoder failure, Abort."); - /* The decoder module will be reloaded next time since we already - * modified the input block */ - vlc_mutex_lock(&p_sys->lock); - p_dec->p_sys->b_abort = true; - vlc_mutex_unlock(&p_sys->lock); + b_abort = true; break; case -8969 /* codecBadDataErr */: case kVTVideoDecoderBadDataErr: @@ -1368,7 +1364,7 @@ static int DecodeBlock(decoder_t *p_dec, block_t *p_block) if (status != 0) { free( p_info ); - StopVideoToolbox(p_dec, true); + b_abort = true; } } break; @@ -1376,6 +1372,15 @@ static int DecodeBlock(decoder_t *p_dec, block_t *p_block) RestartVideoToolbox(p_dec, true); break; } + if (b_abort) + { + msg_Err(p_dec, "decoder failure, Abort."); + /* The decoder module will be reloaded next time since we already + * modified the input block */ + vlc_mutex_lock(&p_sys->lock); + p_dec->p_sys->b_abort = true; + vlc_mutex_unlock(&p_sys->lock); + } } CFRelease(sampleBuffer); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
