[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