zoukankan      html  css  js  c++  java
  • VLC各个Module模块之间如何共享变量

    在做VLC开发的时候,想使用一个模块访问另外一个模块的数据, 比如在网络模块得到了一些数据,想在其他模块得到这些数据进行处理,这时候就需要两个模块共享一些变量。
           查看VLC的源码,发现VLC专门有variables.h和variables.c是用来处理变量的。它提供了一些方法可以创建VLC变量、设置VLC变量、改变、销毁VLC变量等。
            当我们要产生一个VLC变量的时候,我们使用var_Create()函数;
           如在UDP模块创建了一个变量,
     vlc_value_t valTemp;
     
          var_Create( p_access, "var_test", VLC_VAR_STRING );
        valTemp.psz_string = "hello ";
        var_Set( p_access, "var_test", valTemp );
     
    这样就创建了一个名为“var_test”的VLC_VAR_STRING变量并且设置它的值为"hello".
     
    创建完之后,我们在其他的模块怎么访问它呢?
     
    比如在Marq.c里面访问这个变量,如下所示:
     vlc_value_t val_test;
       vlc_list_t *p_list;
        module_t        *p_module;
       
        access_t     *p_access;
        int i;
        
        val_test.psz_string = " ";
        p_list = vlc_list_find( p_filter->p_vlc, VLC_OBJECT_ACCESS, FIND_ANYWHERE );

         for( i = 0; i < p_list->i_count; i++ )
        {
            p_access = (access_t *)p_list->p_values.p_object;
      //p_module = (module_t *)p_list->p_values.p_object;
            if ( var_Get( p_access, "var_test", &val_test ) == VLC_SUCCESS )
            {
             msg_Dbg( p_filter, "=======::::val_test=:%s", val_test.psz_string); 
      
              break;
            }
              
            //p_intf = NULL;
        }
       vlc_list_release ( p_list );
     
    这样,我们在marq.c这个模块里面就可以得到"var_test"的值了。

    详细出处参考:http://www.itqun.net/content-detail/176190.html
  • 相关阅读:
    如何新建一个datatable,并往表里赋值
    c# 、 Asp.net 获取本地IP和MAC地址
    C# asp.net 比较两个时间的差求天数
    获取CheckBox的值
    Gradle的属性设置大全
    Gradle里配置jetty实现静态资源的热部署
    Gradle命令行黑魔法
    2013年上半年我读过的那些书
    SVN中Branch的创建与合并
    只有好的棋手才会走运-《打造Facebook》读后感
  • 原文地址:https://www.cnblogs.com/qq78292959/p/2077022.html
Copyright © 2011-2022 走看看