VLC各个Module模块之间共享变量的实现方法
在进行VLC开发时,您希望使用一个模块来访问另一个模块的数据。比如你在网络模块中获取一些数据,又想获取其他模块中的数据进行处理,那么你就需要两个模块共享一些变量。
查看VLC的源代码,发现VLC有variables.h和variables.c来处理变量。它提供了一些方法来创建,设置,改变和销毁VLC变量。
当我们想生成一个VLC变量时,我们使用var_Create()函数;
如果在UDP模块中创建了变量,
VLC _ value _ t val temp;
var_Create( p_access,“var_test”,VLC _ VAR _ STRING);
val temp . PSZ _ string = " hello ";
var_Set( p_access," var_test ",val temp);
因此,名为“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 _成功)
{
msg_Dbg( p_filter," = = = = = = = =:::val _ test =:% s ",val _ test . PSZ _ string);
break;
}
//p _ intf = NULL;
}
VLC _ list _ release(p _ list);
这样,我们就可以在marq.c模块中得到“var_test”的值
0条评论