Commit 34b79185 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

decoder: fix NULL dereference when pausing packetizer

DecoderProcess() can only be used with the decoder, not the packetizer.
Inline DecoderFlush() to fix the issue.
parent aa28acb1
...@@ -1264,9 +1264,21 @@ static void DecoderProcess( decoder_t *p_dec, block_t *p_block ) ...@@ -1264,9 +1264,21 @@ static void DecoderProcess( decoder_t *p_dec, block_t *p_block )
} }
} }
static void DecoderFlush( decoder_t *p_dec ) static void DecoderProcessFlush( decoder_t *p_dec )
{ {
if ( p_dec->pf_flush ) decoder_owner_sys_t *p_owner = p_dec->p_owner;
decoder_t *p_packetizer = p_owner->p_packetizer;
if( p_dec->b_error )
return;
if ( p_owner->i_preroll_end == INT64_MAX )
return;
if( p_packetizer != NULL && p_packetizer->pf_flush != NULL )
p_packetizer->pf_flush( p_packetizer );
if ( p_dec->pf_flush != NULL )
p_dec->pf_flush( p_dec ); p_dec->pf_flush( p_dec );
else else
{ {
...@@ -1279,21 +1291,6 @@ static void DecoderFlush( decoder_t *p_dec ) ...@@ -1279,21 +1291,6 @@ static void DecoderFlush( decoder_t *p_dec )
} }
DecoderProcess( p_dec, p_flush ); DecoderProcess( p_dec, p_flush );
} }
}
static void DecoderProcessFlush( decoder_t *p_dec )
{
decoder_owner_sys_t *p_owner = p_dec->p_owner;
if( p_dec->b_error )
return;
if ( p_owner->i_preroll_end == INT64_MAX )
return;
if ( p_owner->p_packetizer )
DecoderFlush( p_owner->p_packetizer );
DecoderFlush( p_dec );
if( p_dec->fmt_out.i_cat == AUDIO_ES ) if( p_dec->fmt_out.i_cat == AUDIO_ES )
{ {
......
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