[vlc-commits] transcode: reference enc/filter config as id members
Francois Cartegnie
git at videolan.org
Mon Jul 9 16:15:54 CEST 2018
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Thu Jul 5 15:32:28 2018 +0200| [f62372364204d8fb9c09df1d20c6565a4a7871dc] | committer: Francois Cartegnie
transcode: reference enc/filter config as id members
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f62372364204d8fb9c09df1d20c6565a4a7871dc
---
modules/stream_out/transcode/audio.c | 25 ++++++++-----------
modules/stream_out/transcode/spu.c | 19 +++++++-------
modules/stream_out/transcode/transcode.c | 16 +++++++++---
modules/stream_out/transcode/transcode.h | 2 ++
modules/stream_out/transcode/video.c | 43 +++++++++++++-------------------
5 files changed, 52 insertions(+), 53 deletions(-)
diff --git a/modules/stream_out/transcode/audio.c b/modules/stream_out/transcode/audio.c
index 63a38218af..e12ac8033e 100644
--- a/modules/stream_out/transcode/audio.c
+++ b/modules/stream_out/transcode/audio.c
@@ -93,19 +93,18 @@ static int transcode_audio_filters_init( sout_stream_t *p_stream,
return ( *pp_chain != NULL ) ? VLC_SUCCESS : VLC_EGENERIC;
}
-static int transcode_audio_encoder_open( sout_stream_t *p_stream, sout_stream_id_sys_t *id )
+static int transcode_audio_encoder_open( sout_stream_t *p_stream,
+ sout_stream_id_sys_t *id )
{
- sout_stream_sys_t *p_sys = p_stream->p_sys;
-
id->p_encoder->p_module = module_need( id->p_encoder, "encoder",
- p_sys->aenc_cfg.psz_name, true );
+ id->p_enccfg->psz_name, true );
/* p_sys->i_acodec = 0 if there isn't acodec defined */
if( !id->p_encoder->p_module )
{
msg_Err( p_stream, "cannot find audio encoder (module:%s fourcc:%4.4s). "
"Take a look few lines earlier to see possible reason.",
- p_sys->aenc_cfg.psz_name ? p_sys->aenc_cfg.psz_name : "any",
- (char *)&p_sys->aenc_cfg.i_codec );
+ id->p_enccfg->psz_name ? id->p_enccfg->psz_name : "any",
+ (char *)&id->p_enccfg->i_codec );
return VLC_EGENERIC;
}
@@ -258,8 +257,6 @@ static block_t *transcode_dequeue_all_audios( sout_stream_id_sys_t *id )
static int transcode_audio_new( sout_stream_t *p_stream,
sout_stream_id_sys_t *id )
{
- sout_stream_sys_t *p_sys = p_stream->p_sys;
-
/*
* Open decoder
*/
@@ -275,7 +272,7 @@ static int transcode_audio_new( sout_stream_t *p_stream,
id->p_decoder->cbs = &dec_cbs;
id->p_decoder->pf_decode = NULL;
- /* id->p_decoder->p_cfg = p_sys->p_audio_cfg; */
+ /* id->p_decoder->p_cfg = id->p_enccfg->p_config_chain; */
id->p_decoder->p_module =
module_need_var( id->p_decoder, "audio decoder", "codec" );
if( !id->p_decoder->p_module )
@@ -319,7 +316,7 @@ static int transcode_audio_new( sout_stream_t *p_stream,
if( transcode_audio_encoder_test( VLC_OBJECT(p_stream),
&id->audio_dec_out,
id->p_decoder->fmt_out.i_codec,
- &p_sys->aenc_cfg,
+ id->p_enccfg,
&id->p_encoder->fmt_out,
&id->encoder_tested_fmt_in ) != VLC_SUCCESS )
{
@@ -398,7 +395,7 @@ int transcode_audio_process( sout_stream_t *p_stream,
{
if( id->p_encoder->p_module == NULL )
{
- transcode_audio_encoder_configure( VLC_OBJECT(p_stream), &p_sys->aenc_cfg,
+ transcode_audio_encoder_configure( VLC_OBJECT(p_stream), id->p_enccfg,
&id->audio_dec_out, id->p_encoder );
id->fmt_input_audio = id->audio_dec_out;
}
@@ -414,7 +411,7 @@ int transcode_audio_process( sout_stream_t *p_stream,
}
if( transcode_audio_filters_init( p_stream,
- &p_sys->afilters_cfg,
+ id->p_filterscfg,
&id->audio_dec_out,
&id->p_encoder->fmt_in.audio,
&id->p_af_chain ) )
@@ -494,11 +491,9 @@ error:
bool transcode_audio_add( sout_stream_t *p_stream, const es_format_t *p_fmt,
sout_stream_id_sys_t *id )
{
- sout_stream_sys_t *p_sys = p_stream->p_sys;
-
msg_Dbg( p_stream,
"creating audio transcoding from fcc=`%4.4s' to fcc=`%4.4s'",
- (char*)&p_fmt->i_codec, (char*)&p_sys->aenc_cfg.i_codec );
+ (char*)&p_fmt->i_codec, (char*)&id->p_enccfg->i_codec );
id->fifo.audio.first = NULL;
id->fifo.audio.last = &id->fifo.audio.first;
diff --git a/modules/stream_out/transcode/spu.c b/modules/stream_out/transcode/spu.c
index 5cfac214e1..f13789cc7c 100644
--- a/modules/stream_out/transcode/spu.c
+++ b/modules/stream_out/transcode/spu.c
@@ -82,12 +82,11 @@ static void transcode_spu_encoder_close( sout_stream_t *p_stream, sout_stream_id
static int transcode_spu_encoder_open( sout_stream_t *p_stream, sout_stream_id_sys_t *id )
{
- sout_stream_sys_t *p_sys = p_stream->p_sys;
-
- id->p_encoder->p_cfg = p_sys->senc_cfg.p_config_chain;
+ VLC_UNUSED(p_stream);
+ id->p_encoder->p_cfg = id->p_enccfg->p_config_chain;
id->p_encoder->p_module = module_need( id->p_encoder, "encoder",
- p_sys->senc_cfg.psz_name, true );
+ id->p_enccfg->psz_name, true );
return ( id->p_encoder->p_module ) ? VLC_SUCCESS: VLC_EGENERIC;
}
@@ -134,7 +133,7 @@ static int transcode_spu_new( sout_stream_t *p_stream, sout_stream_id_sys_t *id
es_format_Clean( &id->p_encoder->fmt_in );
module_unneed( id->p_decoder, id->p_decoder->p_module );
id->p_decoder->p_module = NULL;
- msg_Err( p_stream, "cannot find spu encoder (%s)", p_sys->senc_cfg.psz_name );
+ msg_Err( p_stream, "cannot find spu encoder (%s)", id->p_enccfg->psz_name );
return VLC_EGENERIC;
}
}
@@ -206,11 +205,11 @@ int transcode_spu_process( sout_stream_t *p_stream,
fmt.video.i_sar_num =
fmt.video.i_visible_width =
- fmt.video.i_width = p_sys->senc_cfg.spu.i_width;
+ fmt.video.i_width = id->p_enccfg->spu.i_width;
fmt.video.i_sar_den =
fmt.video.i_visible_height =
- fmt.video.i_height =p_sys->senc_cfg.spu.i_height;
+ fmt.video.i_height =id->p_enccfg->spu.i_height;
subpicture_Update( p_subpic, &fmt.video, &fmt.video, p_subpic->i_start );
es_format_Clean( &fmt );
@@ -235,14 +234,14 @@ bool transcode_spu_add( sout_stream_t *p_stream, const es_format_t *p_fmt,
id->fifo.spu.first = NULL;
id->fifo.spu.last = &id->fifo.spu.first;
- if( p_sys->senc_cfg.i_codec )
+ if( id->p_enccfg->i_codec )
{
msg_Dbg( p_stream, "creating subtitle transcoding from fcc=`%4.4s' "
"to fcc=`%4.4s'", (char*)&p_fmt->i_codec,
- (char*)&p_sys->senc_cfg.i_codec );
+ (char*)&id->p_enccfg->i_codec );
/* Complete destination format */
- id->p_encoder->fmt_out.i_codec = p_sys->senc_cfg.i_codec;
+ id->p_encoder->fmt_out.i_codec = id->p_enccfg->i_codec;
/* build decoder -> filter -> encoder */
if( transcode_spu_new( p_stream, id ) )
diff --git a/modules/stream_out/transcode/transcode.c b/modules/stream_out/transcode/transcode.c
index c0da2f8840..58de27486c 100644
--- a/modules/stream_out/transcode/transcode.c
+++ b/modules/stream_out/transcode/transcode.c
@@ -532,7 +532,17 @@ static void *Add( sout_stream_t *p_stream, const es_format_t *p_fmt )
switch( p_fmt->i_cat )
{
+ case AUDIO_ES:
+ id->p_filterscfg = &p_sys->afilters_cfg;
+ id->p_enccfg = &p_sys->aenc_cfg;
+ break;
+ case VIDEO_ES:
+ id->p_filterscfg = &p_sys->vfilters_cfg;
+ id->p_enccfg = &p_sys->venc_cfg;
+ break;
case SPU_ES:
+ id->p_filterscfg = NULL;
+ id->p_enccfg = &p_sys->senc_cfg;
id->pf_send_subpicture = SendSpuToVideoCallback;
id->callback_data = p_stream;
break;
@@ -559,16 +569,16 @@ static void *Add( sout_stream_t *p_stream, const es_format_t *p_fmt )
bool success;
- if( p_fmt->i_cat == AUDIO_ES && p_sys->aenc_cfg.i_codec )
+ if( p_fmt->i_cat == AUDIO_ES && id->p_enccfg->i_codec )
success = transcode_audio_add(p_stream, p_fmt, id);
- else if( p_fmt->i_cat == VIDEO_ES && p_sys->venc_cfg.i_codec )
+ else if( p_fmt->i_cat == VIDEO_ES && id->p_enccfg->i_codec )
{
success = transcode_video_add(p_stream, p_fmt, id);
if( success && !p_sys->id_video )
p_sys->id_video = id;
}
else if( ( p_fmt->i_cat == SPU_ES ) &&
- ( p_sys->senc_cfg.i_codec || p_sys->b_soverlay ) )
+ ( id->p_enccfg->i_codec || p_sys->b_soverlay ) )
success = transcode_spu_add(p_stream, p_fmt, id);
else
{
diff --git a/modules/stream_out/transcode/transcode.h b/modules/stream_out/transcode/transcode.h
index 339e308574..d63aeccb75 100644
--- a/modules/stream_out/transcode/transcode.h
+++ b/modules/stream_out/transcode/transcode.h
@@ -171,8 +171,10 @@ struct sout_stream_id_sys_t
audio_format_t audio_dec_out; /* only rw from pf_aout_format_update() */
};
};
+ const sout_filters_config_t *p_filterscfg;
/* Encoder */
+ const sout_encoder_config_t *p_enccfg;
encoder_t *p_encoder;
vlc_thread_t thread;
vlc_mutex_t lock_out;
diff --git a/modules/stream_out/transcode/video.c b/modules/stream_out/transcode/video.c
index a745fe7f11..442c3fab0c 100644
--- a/modules/stream_out/transcode/video.c
+++ b/modules/stream_out/transcode/video.c
@@ -253,8 +253,6 @@ static int transcode_video_encoder_test( sout_stream_t *p_stream,
static int transcode_video_new( sout_stream_t *p_stream, sout_stream_id_sys_t *id )
{
- sout_stream_sys_t *p_sys = p_stream->p_sys;
-
/* Open decoder
*/
dec_get_owner( id->p_decoder )->id = id;
@@ -307,10 +305,10 @@ static int transcode_video_new( sout_stream_t *p_stream, sout_stream_id_sys_t *i
es_format_Init( &id->encoder_tested_fmt_in, id->p_decoder->fmt_in.i_cat,
id->p_decoder->fmt_out.i_codec );
- id->p_encoder->i_threads = p_sys->venc_cfg.video.threads.i_count;
- id->p_encoder->p_cfg = p_sys->venc_cfg.p_config_chain;
+ id->p_encoder->i_threads = id->p_enccfg->video.threads.i_count;
+ id->p_encoder->p_cfg = id->p_enccfg->p_config_chain;
- if( transcode_video_encoder_test( p_stream, &p_sys->venc_cfg,
+ if( transcode_video_encoder_test( p_stream, id->p_enccfg,
&id->p_decoder->fmt_in,
id->p_decoder->fmt_out.i_codec,
&id->p_encoder->fmt_out,
@@ -629,12 +627,12 @@ static void transcode_video_encoder_configure( vlc_object_t *p_obj,
static void transcode_video_encoder_close( sout_stream_t *p_stream,
sout_stream_id_sys_t *id )
{
- sout_stream_sys_t *p_sys = p_stream->p_sys;
+ VLC_UNUSED(p_stream);
if( id->p_encoder->p_module == NULL )
return;
- if( p_sys->venc_cfg.video.threads.i_count >= 1 && !id->b_abort )
+ if( id->p_enccfg->video.threads.i_count >= 1 && !id->b_abort )
{
vlc_mutex_lock( &id->lock_out );
id->b_abort = true;
@@ -658,20 +656,17 @@ static void transcode_video_encoder_close( sout_stream_t *p_stream,
static int transcode_video_encoder_open( sout_stream_t *p_stream,
sout_stream_id_sys_t *id )
{
- sout_stream_sys_t *p_sys = p_stream->p_sys;
-
-
msg_Dbg( p_stream, "destination (after video filters) %ix%i",
id->p_encoder->fmt_in.video.i_width,
id->p_encoder->fmt_in.video.i_height );
id->p_encoder->p_module =
- module_need( id->p_encoder, "encoder", p_sys->venc_cfg.psz_name, true );
+ module_need( id->p_encoder, "encoder", id->p_enccfg->psz_name, true );
if( !id->p_encoder->p_module )
{
msg_Err( p_stream, "cannot find video encoder (module:%s fourcc:%4.4s)",
- p_sys->venc_cfg.psz_name ? p_sys->venc_cfg.psz_name : "any",
- (char *)&p_sys->venc_cfg.i_codec );
+ id->p_enccfg->psz_name ? id->p_enccfg->psz_name : "any",
+ (char *)&id->p_enccfg->i_codec );
return VLC_EGENERIC;
}
@@ -690,14 +685,14 @@ static int transcode_video_encoder_open( sout_stream_t *p_stream,
return VLC_EGENERIC;
}
- vlc_sem_init( &id->picture_pool_has_room, p_sys->venc_cfg.video.threads.pool_size );
+ vlc_sem_init( &id->picture_pool_has_room, id->p_enccfg->video.threads.pool_size );
vlc_mutex_init( &id->lock_out );
vlc_cond_init( &id->cond );
id->p_buffers = NULL;
id->b_abort = false;
- if( p_sys->venc_cfg.video.threads.i_count > 0 &&
- vlc_clone( &id->thread, EncoderThread, id, p_sys->venc_cfg.video.threads.i_priority ) )
+ if( id->p_enccfg->video.threads.i_count > 0 &&
+ vlc_clone( &id->thread, EncoderThread, id, id->p_enccfg->video.threads.i_priority ) )
{
msg_Err( p_stream, "cannot spawn encoder thread" );
vlc_cond_destroy( &id->cond );
@@ -805,9 +800,9 @@ static picture_t * RenderSubpictures( sout_stream_t *p_stream, sout_stream_id_sy
static block_t * EncodeFrame( sout_stream_t *p_stream, picture_t *p_pic, sout_stream_id_sys_t *id )
{
- sout_stream_sys_t *p_sys = p_stream->p_sys;
+ VLC_UNUSED(p_stream);
- if( p_sys->venc_cfg.video.threads.i_count == 0 )
+ if( id->p_enccfg->video.threads.i_count == 0 )
{
block_t *p_block = id->p_encoder->pf_encode_video( id->p_encoder, p_pic );
picture_Release( p_pic );
@@ -858,7 +853,7 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_sys_t *id,
{
transcode_video_encoder_configure( VLC_OBJECT(p_stream),
id->p_decoder,
- &p_sys->venc_cfg,
+ id->p_enccfg,
filtered_video_format( id, p_pic ),
id->p_encoder );
/* will be opened below */
@@ -885,7 +880,7 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_sys_t *id,
video_format_Copy( &id->fmt_input_video, &p_pic->format );
- transcode_video_filter_init( p_stream, &p_sys->vfilters_cfg, p_sys->b_master_sync, id );
+ transcode_video_filter_init( p_stream, id->p_filterscfg, p_sys->b_master_sync, id );
if( conversion_video_filter_append( id, p_pic ) != VLC_SUCCESS )
goto error;
@@ -938,7 +933,7 @@ error:
id->b_error = true;
} while( p_pics );
- if( p_sys->venc_cfg.video.threads.i_count >= 1 )
+ if( id->p_enccfg->video.threads.i_count >= 1 )
{
/* Pick up any return data the encoder thread wants to output. */
vlc_mutex_lock( &id->lock_out );
@@ -950,7 +945,7 @@ error:
/* Drain encoder */
if( unlikely( !id->b_error && in == NULL ) && id->p_encoder->p_module )
{
- if( p_sys->venc_cfg.video.threads.i_count == 0 )
+ if( id->p_enccfg->video.threads.i_count == 0 )
{
block_t *p_block;
do {
@@ -974,11 +969,9 @@ error:
bool transcode_video_add( sout_stream_t *p_stream, const es_format_t *p_fmt,
sout_stream_id_sys_t *id )
{
- sout_stream_sys_t *p_sys = p_stream->p_sys;
-
msg_Dbg( p_stream,
"creating video transcoding from fcc=`%4.4s' to fcc=`%4.4s'",
- (char*)&p_fmt->i_codec, (char*)&p_sys->venc_cfg.i_codec );
+ (char*)&p_fmt->i_codec, (char*)&id->p_enccfg->i_codec );
id->fifo.pic.first = NULL;
id->fifo.pic.last = &id->fifo.pic.first;
More information about the vlc-commits
mailing list