vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Oct 25 
16:16:31 2019 +0100| [27de0f892585438a9320855e2d500d0ce457589e] | committer: 
Francois Cartegnie

codec: webvtt: remove dec reference from css node selection

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

 modules/codec/webvtt/subsvtt.c | 57 ++++++++++++++++++++++--------------------
 1 file changed, 30 insertions(+), 27 deletions(-)

diff --git a/modules/codec/webvtt/subsvtt.c b/modules/codec/webvtt/subsvtt.c
index ab01d40907..f2e1e160eb 100644
--- a/modules/codec/webvtt/subsvtt.c
+++ b/modules/codec/webvtt/subsvtt.c
@@ -716,10 +716,9 @@ static bool webvtt_domnode_Match_Attribute( const 
webvtt_dom_node_t *p_node,
     return false;
 }
 
-static bool webvtt_domnode_MatchType( decoder_t *p_dec, const 
webvtt_dom_node_t *p_node,
+static bool webvtt_domnode_MatchType( const webvtt_dom_node_t *p_node,
                                       const vlc_css_selector_t *p_sel, 
vlc_tick_t i_playbacktime )
 {
-    VLC_UNUSED(p_dec);
     switch( p_sel->type )
     {
         case SELECTOR_SIMPLE:
@@ -785,25 +784,25 @@ static void webvtt_domnode_setCSSStyle( webvtt_dom_node_t 
*p_node, text_style_t
 }
 
 #ifdef HAVE_CSS
-static void webvtt_domnode_SelectNodesInTree( decoder_t *p_dec, const 
vlc_css_selector_t *p_sel,
-                                              const webvtt_dom_node_t *p_tree, 
int i_max_depth,
+static void webvtt_domnode_SelectNodesInTree( const webvtt_dom_node_t *p_tree,
+                                              const vlc_css_selector_t *p_sel, 
int i_max_depth,
                                               vlc_tick_t i_playbacktime, 
vlc_array_t *p_results );
 
-static void webvtt_domnode_SelectChildNodesInTree( decoder_t *p_dec, const 
vlc_css_selector_t *p_sel,
-                                                   const webvtt_dom_node_t 
*p_root, int i_max_depth,
+static void webvtt_domnode_SelectChildNodesInTree( const webvtt_dom_node_t 
*p_tree,
+                                                   const vlc_css_selector_t 
*p_sel, int i_max_depth,
                                                    vlc_tick_t i_playbacktime, 
vlc_array_t *p_results )
 {
-    const webvtt_dom_node_t *p_child = webvtt_domnode_getFirstChild( p_root );
+    const webvtt_dom_node_t *p_child = webvtt_domnode_getFirstChild( p_tree );
     if( i_max_depth > 0 )
     {
         for( ; p_child; p_child = p_child->p_next )
-            webvtt_domnode_SelectNodesInTree( p_dec, p_sel, p_child, 
i_max_depth - 1,
+            webvtt_domnode_SelectNodesInTree( p_child, p_sel, i_max_depth - 1,
                                               i_playbacktime, p_results );
     }
 }
 
-static void webvtt_domnode_SelectNodesBySpeficier( decoder_t *p_dec, const 
vlc_css_selector_t *p_spec,
-                                                   const webvtt_dom_node_t 
*p_node,
+static void webvtt_domnode_SelectNodesBySpeficier( const webvtt_dom_node_t 
*p_node,
+                                                   const vlc_css_selector_t 
*p_spec,
                                                    vlc_tick_t i_playbacktime, 
vlc_array_t *p_results )
 {
     if( p_spec == NULL )
@@ -812,65 +811,66 @@ static void webvtt_domnode_SelectNodesBySpeficier( 
decoder_t *p_dec, const vlc_c
     switch( p_spec->combinator )
     {
         case RELATION_DESCENDENT:
-            webvtt_domnode_SelectChildNodesInTree( p_dec, p_spec, p_node, 
WEBVTT_MAX_DEPTH,
+            webvtt_domnode_SelectChildNodesInTree( p_node, p_spec, 
WEBVTT_MAX_DEPTH,
                                                    i_playbacktime, p_results );
             break;
         case RELATION_DIRECTADJACENT:
             for( const webvtt_dom_node_t *p_adj = p_node->p_next; p_adj; p_adj 
= p_adj->p_next )
-                webvtt_domnode_SelectChildNodesInTree( p_dec, p_spec, p_adj, 1,
+                webvtt_domnode_SelectChildNodesInTree( p_adj, p_spec, 1,
                                                        i_playbacktime, 
p_results );
             break;
         case RELATION_INDIRECTADJACENT:
             for( const webvtt_dom_node_t *p_adj = 
webvtt_domnode_getFirstChild( p_node->p_parent );
                                           p_adj && p_adj != p_node; p_adj = 
p_adj->p_next )
-                webvtt_domnode_SelectChildNodesInTree( p_dec, p_spec, p_adj, 1,
+                webvtt_domnode_SelectChildNodesInTree( p_adj, p_spec, 1,
                                                        i_playbacktime, 
p_results );
             break;
         case RELATION_CHILD:
-            webvtt_domnode_SelectChildNodesInTree( p_dec, p_spec, p_node, 1,
+            webvtt_domnode_SelectChildNodesInTree( p_node, p_spec, 1,
                                                    i_playbacktime, p_results );
             break;
         case RELATION_SELF:
-            webvtt_domnode_SelectNodesInTree( p_dec, p_spec, p_node, 
WEBVTT_MAX_DEPTH,
+            webvtt_domnode_SelectNodesInTree( p_node, p_spec, WEBVTT_MAX_DEPTH,
                                               i_playbacktime, p_results );
     }
 }
 
-static void webvtt_domnode_SelectNodesInTree( decoder_t *p_dec, const 
vlc_css_selector_t *p_sel,
-                                              const webvtt_dom_node_t *p_root, 
int i_max_depth,
+static void webvtt_domnode_SelectNodesInTree( const webvtt_dom_node_t *p_node,
+                                              const vlc_css_selector_t *p_sel, 
int i_max_depth,
                                               vlc_tick_t i_playbacktime, 
vlc_array_t *p_results )
 {
-    if( p_root == NULL )
+    if( p_node == NULL )
         return;
 
-    if( webvtt_domnode_MatchType( p_dec, p_root, p_sel, i_playbacktime ) )
+    if( webvtt_domnode_MatchType( p_node, p_sel, i_playbacktime ) )
     {
         if( p_sel->specifiers.p_first == NULL )
         {
             /* End of matching, this node is part of results */
-            (void) vlc_array_append( p_results, (void *) p_root );
+            (void) vlc_array_append( p_results, (void *) p_node );
         }
-        else webvtt_domnode_SelectNodesBySpeficier( p_dec, 
p_sel->specifiers.p_first, p_root,
+        else webvtt_domnode_SelectNodesBySpeficier( p_node, 
p_sel->specifiers.p_first,
                                                     i_playbacktime, p_results 
);
     }
 
     /* lookup other subnodes */
-    webvtt_domnode_SelectChildNodesInTree( p_dec, p_sel, p_root, i_max_depth - 
1,
+    webvtt_domnode_SelectChildNodesInTree( p_node, p_sel, i_max_depth - 1,
                                            i_playbacktime, p_results );
 }
 
-static void webvtt_domnode_SelectRuleNodes( decoder_t *p_dec, const 
vlc_css_rule_t *p_rule,
+static void webvtt_domnode_SelectRuleNodes( const webvtt_dom_node_t *p_root, 
const vlc_css_rule_t *p_rule,
                                             vlc_tick_t i_playbacktime, 
vlc_array_t *p_results )
 {
-    decoder_sys_t *p_sys = p_dec->p_sys;
-    const webvtt_dom_node_t *p_cues = p_sys->p_root->p_child;
+    if(!p_root || p_root->type != NODE_TAG)
+        return;
+    const webvtt_dom_node_t *p_cues = ((const webvtt_dom_tag_t 
*)p_root)->p_child;
     for( const vlc_css_selector_t *p_sel = p_rule->p_selectors; p_sel; p_sel = 
p_sel->p_next )
     {
         vlc_array_t tempresults;
         vlc_array_init( &tempresults );
         for( const webvtt_dom_node_t *p_node = p_cues; p_node; p_node = 
p_node->p_next )
         {
-            webvtt_domnode_SelectNodesInTree( p_dec, p_sel, p_node, 
WEBVTT_MAX_DEPTH,
+            webvtt_domnode_SelectNodesInTree( p_node, p_sel, WEBVTT_MAX_DEPTH,
                                               i_playbacktime, &tempresults );
         }
         for( size_t i=0; i<vlc_array_count(&tempresults); i++ )
@@ -1684,12 +1684,15 @@ static void ClearCSSStyles( webvtt_dom_node_t *p_node )
 static void ApplyCSSRules( decoder_t *p_dec, const vlc_css_rule_t *p_rule,
                            vlc_tick_t i_playbacktime )
 {
+    decoder_sys_t *p_sys = p_dec->p_sys;
+
     for ( ;  p_rule ; p_rule = p_rule->p_next )
     {
         vlc_array_t results;
         vlc_array_init( &results );
 
-        webvtt_domnode_SelectRuleNodes( p_dec, p_rule, i_playbacktime, 
&results );
+        webvtt_domnode_SelectRuleNodes( (webvtt_dom_node_t *) p_sys->p_root,
+                                        p_rule, i_playbacktime, &results );
 
         for( const vlc_css_declaration_t *p_decl = p_rule->p_declarations;
                                           p_decl; p_decl = p_decl->p_next )

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to