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[i].p_object;
      //p_module = (module_t *)p_list->p_values[i].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"的值了。 

  • 相关阅读:
    使用PHP类库PHPqrCode生成二维码
    ABAP报表中建立过滤器,并相互切换
    MM定价计算方案确定详细图解
    MIGO 屏幕增强
    SE14 激活表时提示进程正在运行
    供应商寄售
    屏蔽VA01的TA類型的銷售部門和銷售組
    屏蔽標準TCODE上的一些字段的顯示、隱藏或者強制輸入(轉)
    采购订单流程
    SAP 中如何修改透明表数据
  • 原文地址:https://www.cnblogs.com/shakin/p/3880321.html
Copyright © 2011-2022 走看看