Commit 41b8c2e1 authored by Ilkka Ollakka's avatar Ilkka Ollakka

transcode: destroy spu on transcode_spu_close

Fixes issue for me when doing transcode{}:gather: --sout-keep and subtitle
overlaying from dvbs. Otherwise keeps last subtitles on video if new channel
doesn't contain dvbs track.

also consistenty as spu_Create is called on transcode_spu_new()
parent 23566858
...@@ -99,8 +99,9 @@ int transcode_spu_new( sout_stream_t *p_stream, sout_stream_id_t *id ) ...@@ -99,8 +99,9 @@ int transcode_spu_new( sout_stream_t *p_stream, sout_stream_id_t *id )
return VLC_SUCCESS; return VLC_SUCCESS;
} }
void transcode_spu_close( sout_stream_id_t *id) void transcode_spu_close( sout_stream_t *p_stream, sout_stream_id_t *id)
{ {
sout_stream_sys_t *p_sys = p_stream->p_sys;
/* Close decoder */ /* Close decoder */
if( id->p_decoder->p_module ) if( id->p_decoder->p_module )
module_unneed( id->p_decoder, id->p_decoder->p_module ); module_unneed( id->p_decoder, id->p_decoder->p_module );
...@@ -110,6 +111,12 @@ void transcode_spu_close( sout_stream_id_t *id) ...@@ -110,6 +111,12 @@ void transcode_spu_close( sout_stream_id_t *id)
/* Close encoder */ /* Close encoder */
if( id->p_encoder->p_module ) if( id->p_encoder->p_module )
module_unneed( id->p_encoder, id->p_encoder->p_module ); module_unneed( id->p_encoder, id->p_encoder->p_module );
if( p_sys->p_spu )
{
spu_Destroy( p_sys->p_spu );
p_sys->p_spu = NULL;
}
} }
int transcode_spu_process( sout_stream_t *p_stream, int transcode_spu_process( sout_stream_t *p_stream,
...@@ -179,7 +186,7 @@ bool transcode_spu_add( sout_stream_t *p_stream, es_format_t *p_fmt, ...@@ -179,7 +186,7 @@ bool transcode_spu_add( sout_stream_t *p_stream, es_format_t *p_fmt,
if( !id->id ) if( !id->id )
{ {
transcode_spu_close( id ); transcode_spu_close( p_stream, id );
return false; return false;
} }
} }
......
...@@ -616,7 +616,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id ) ...@@ -616,7 +616,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
if( p_sys->b_osd ) if( p_sys->b_osd )
transcode_osd_close( p_stream, id ); transcode_osd_close( p_stream, id );
else else
transcode_spu_close( id ); transcode_spu_close( p_stream, id );
break; break;
} }
} }
......
...@@ -107,7 +107,7 @@ bool transcode_osd_add ( sout_stream_t *, es_format_t *, sout_stream_id_t *); ...@@ -107,7 +107,7 @@ bool transcode_osd_add ( sout_stream_t *, es_format_t *, sout_stream_id_t *);
/* SPU */ /* SPU */
int transcode_spu_new ( sout_stream_t *, sout_stream_id_t * ); int transcode_spu_new ( sout_stream_t *, sout_stream_id_t * );
void transcode_spu_close ( sout_stream_id_t * ); void transcode_spu_close ( sout_stream_t *, sout_stream_id_t * );
int transcode_spu_process( sout_stream_t *, sout_stream_id_t *, int transcode_spu_process( sout_stream_t *, sout_stream_id_t *,
block_t *, block_t ** ); block_t *, block_t ** );
bool transcode_spu_add ( sout_stream_t *, es_format_t *, sout_stream_id_t *); bool transcode_spu_add ( sout_stream_t *, es_format_t *, sout_stream_id_t *);
......
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