在做VLC開(kāi)發(fā)的時(shí)候,想使用一個(gè)模塊訪問(wèn)另外一個(gè)模塊的數(shù)據(jù), 比如在網(wǎng)絡(luò)模塊得到了一些數(shù)據(jù),想在其他模塊得到這些數(shù)據(jù)進(jìn)行處理,這時(shí)候就需要兩個(gè)模塊共享一些變量。
查看VLC的源碼,發(fā)現(xiàn)VLC專(zhuān)門(mén)有variables.h和variables.c是用來(lái)處理變量的。它提供了一些方法可以創(chuàng)建VLC變量、設(shè)置VLC變量、改變、銷(xiāo)毀VLC變量等。
當(dāng)我們要產(chǎn)生一個(gè)VLC變量的時(shí)候,我們使用var_Create()函數(shù);
如在UDP模塊創(chuàng)建了一個(gè)變量,
vlc_value_t valTemp;
var_Create( p_access, "var_test", VLC_VAR_STRING );
valTemp.psz_string = "hello ";
var_Set( p_access, "var_test", valTemp );
這樣就創(chuàng)建了一個(gè)名為“var_test”的VLC_VAR_STRING變量并且設(shè)置它的值為"hello".
創(chuàng)建完之后,考試大提問(wèn):我們?cè)谄渌哪K怎么訪問(wèn)它呢?
比如在Marq.c里面訪問(wèn)這個(gè)變量,如下所示:
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 );
這樣,我們?cè)趍arq.c這個(gè)模塊里面就可以得到"var_test"的值了。
查看VLC的源碼,發(fā)現(xiàn)VLC專(zhuān)門(mén)有variables.h和variables.c是用來(lái)處理變量的。它提供了一些方法可以創(chuàng)建VLC變量、設(shè)置VLC變量、改變、銷(xiāo)毀VLC變量等。
當(dāng)我們要產(chǎn)生一個(gè)VLC變量的時(shí)候,我們使用var_Create()函數(shù);
如在UDP模塊創(chuàng)建了一個(gè)變量,
vlc_value_t valTemp;
var_Create( p_access, "var_test", VLC_VAR_STRING );
valTemp.psz_string = "hello ";
var_Set( p_access, "var_test", valTemp );
這樣就創(chuàng)建了一個(gè)名為“var_test”的VLC_VAR_STRING變量并且設(shè)置它的值為"hello".
創(chuàng)建完之后,考試大提問(wèn):我們?cè)谄渌哪K怎么訪問(wèn)它呢?
比如在Marq.c里面訪問(wèn)這個(gè)變量,如下所示:
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 );
這樣,我們?cè)趍arq.c這個(gè)模塊里面就可以得到"var_test"的值了。