[vlc-commits] decoder: ttml: refactor regions conversion

Francois Cartegnie git at videolan.org
Tue May 15 21:49:22 CEST 2018


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Mon May 14 22:12:03 2018 +0200| [2759f57abd16fb7888c81a2c2787bc8d2dfa8b67] | committer: Francois Cartegnie

decoder: ttml: refactor regions conversion

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2759f57abd16fb7888c81a2c2787bc8d2dfa8b67
---

 modules/codec/ttml/substtml.c | 73 +++++++++++++++++++++++--------------------
 1 file changed, 39 insertions(+), 34 deletions(-)

diff --git a/modules/codec/ttml/substtml.c b/modules/codec/ttml/substtml.c
index 070daf8a14..599fd30a78 100644
--- a/modules/codec/ttml/substtml.c
+++ b/modules/codec/ttml/substtml.c
@@ -1051,6 +1051,43 @@ static ttml_region_t *GenerateRegions( tt_node_t *p_rootnode, tt_time_t playback
     return p_regions;
 }
 
+static void TTMLRegionsToSpuTextRegions( decoder_t *p_dec, subpicture_t *p_spu,
+                                         ttml_region_t *p_regions )
+{
+    decoder_sys_t *p_dec_sys = p_dec->p_sys;
+    subtext_updater_sys_t *p_spu_sys = p_spu->updater.p_sys;
+    substext_updater_region_t *p_updtregion = NULL;
+
+    /* Create region update info from each ttml region */
+    for( ttml_region_t *p_region = p_regions;
+         p_region; p_region = (ttml_region_t *) p_region->updt.p_next )
+    {
+        if( p_updtregion == NULL )
+        {
+            p_updtregion = &p_spu_sys->region;
+        }
+        else
+        {
+            p_updtregion = SubpictureUpdaterSysRegionNew();
+            if( p_updtregion == NULL )
+                break;
+            SubpictureUpdaterSysRegionAdd( &p_spu_sys->region, p_updtregion );
+        }
+
+        /* broken legacy align var (can't handle center...). Will change only regions content. */
+        if( p_dec_sys->i_align & SUBPICTURE_ALIGN_MASK )
+            p_spu_sys->region.inner_align = p_dec_sys->i_align;
+
+        p_spu_sys->margin_ratio = 0.0;
+
+        /* copy and take ownership of pointeds */
+        *p_updtregion = p_region->updt;
+        p_updtregion->p_next = NULL;
+        p_region->updt.p_region_style = NULL;
+        p_region->updt.p_segments = NULL;
+    }
+}
+
 static int ParseBlock( decoder_t *p_dec, const block_t *p_block )
 {
     tt_time_t *p_timings_array = NULL;
@@ -1098,46 +1135,14 @@ static int ParseBlock( decoder_t *p_dec, const block_t *p_block )
 
         subpicture_t *p_spu = NULL;
         ttml_region_t *p_regions = GenerateRegions( p_rootnode, p_timings_array[i] );
-        if( p_regions && ( p_spu = decoder_NewSubpictureText( p_dec ) ) )
+        if( p_regions && (p_spu = decoder_NewSubpictureText( p_dec )) )
         {
             p_spu->i_start    = VLC_TS_0 + tt_time_Convert( &p_timings_array[i] );
             p_spu->i_stop     = VLC_TS_0 + tt_time_Convert( &p_timings_array[i+1] ) - 1;
             p_spu->b_ephemer  = true;
             p_spu->b_absolute = true;
 
-            subtext_updater_sys_t *p_spu_sys = p_spu->updater.p_sys;
-            substext_updater_region_t *p_updtregion = NULL;
-            decoder_sys_t *p_dec_sys = p_dec->p_sys;
-
-            /* Create region update info from each ttml region */
-            for( ttml_region_t *p_region = p_regions;
-                 p_region; p_region = (ttml_region_t *) p_region->updt.p_next )
-            {
-                if( p_updtregion == NULL )
-                {
-                    p_updtregion = &p_spu_sys->region;
-                }
-                else
-                {
-                    p_updtregion = SubpictureUpdaterSysRegionNew();
-                    if( p_updtregion == NULL )
-                        break;
-                    SubpictureUpdaterSysRegionAdd( &p_spu_sys->region, p_updtregion );
-                }
-
-                /* broken legacy align var (can't handle center...). Will change only regions content. */
-                if( p_dec_sys->i_align & SUBPICTURE_ALIGN_MASK )
-                    p_spu_sys->region.inner_align = p_dec_sys->i_align;
-
-                p_spu_sys->margin_ratio = 0.0;
-
-                /* copy and take ownership of pointeds */
-                *p_updtregion = p_region->updt;
-                p_updtregion->p_next = NULL;
-                p_region->updt.p_region_style = NULL;
-                p_region->updt.p_segments = NULL;
-            }
-
+            TTMLRegionsToSpuTextRegions( p_dec, p_spu, p_regions );
         }
 
         /* cleanup */



More information about the vlc-commits mailing list