改變VLC模組引數

2021-07-27 09:29:56 字數 2610 閱讀 6444

**:

一、動態改變引數:

查詢得到物件,直接設定引數。

1、filter引數

vout_thread_t *p_vout = getvout( p_mediaplayer, p_e ); 

if( p_vout )   

} 2、subfilter引數

input_thread_t *p_input; 

vlc_object_t *p_obj; 

vlc_value_t val; 

p_input = libvlc_get_input_thread( p_mi, p_e ); 

if( !p_input ) 

return; 

p_obj    = vlc_object_find_name( p_input, psz_filter_name, find_child ); 

if( p_obj )   

3、media player引數

vout_thread_t *p_vout = getvout( p_mi, p_e ); 

if(p_vout)   

4、instance引數(例項引數)

libvlc_instance_t *p_instance;    // 輸入例項指標 

libvlc_int_t *p_libvlc = p_instance->p_libvlc_int; 

if (p_libvlc)   

二、改變預設引數:

模組呼叫前(例如開啟**前),靜態設定。

(1) 可以通過vlc.exe的命令列傳入預設引數;

vlc.exe -vvv --extraintf=logger

(2) 也可以在呼叫libvlc_new函式建立例項時,傳入預設引數;

const char* vlc_args[32] = {}; 

int vlc_args_num =0; 

vlc_args[vlc_args_num++] = 

"-vvv";          // 日誌輸出的級別 

vlc_args[vlc_args_num++] = 

"--extraintf=logger";  // 日誌輸出 

/* init vlc modules, should be done only once */ 

m_pinstance = libvlc_new (vlc_args_num , vlc_args, &ex); 

(3)  也可以在開啟**前,傳入預設引數; 

szoption = 

":deinterlace-mode=blend";            // deinterlace濾鏡引數:反交錯引數 

libvlc_media_add_option(m,szoption ,&ex); 

/* create a media player playing environement */ 

m_pmediaplayer = libvlc_media_player_new_from_media (m, &ex);

(4) 也可以執行時程式改變;

預設引數儲存在模組樹中。用程式改變預設引數,可使用下列函式:

#define config_gettype(a,b) __config_gettype(vlc_object(a),b) 

#define config_getint(a,b) __config_getint(vlc_object(a),b) 

#define config_putint(a,b,c) __config_putint(vlc_object(a),b,c) 

#define config_getfloat(a,b) __config_getfloat(vlc_object(a),b) 

#define config_putfloat(a,b,c) __config_putfloat(vlc_object(a),b,c) 

#define config_getpsz(a,b) __config_getpsz(vlc_object(a),b) 

#define config_putpsz(a,b,c) __config_putpsz(vlc_object(a),b,c) 

程式示例:

libvlc_instance_t *p_instance;    // 輸入例項指標 

vlc_value_t value;        // 輸入值 

libvlc_int_t *p_libvlc = p_instance->p_libvlc_int; 

if (p_libvlc) 

三、說明

1、如果要動態改變引數,vlc模組中最好建立為「例項引數」(vlc instance param)。

例如:demux模組中,建立"my-log-receive"模組引數:

bool b_log_receive = var_creategetbool( p_demux->p_libvlc, 

"my-log-receive");

2、模組中建立引數的流程如下:

(1) 物件是否已建立該引數?有則返回。

(2) 訪問父物件或instance物件,如果有則引用,並返回。

(3) 訪問模組的預設引數,判斷是否是模組引數?是則建立。

VLC 模組動態載入邏輯

模組初始化 libvlc new libvlc internalinit module loadplugins allocateallplugins allocatepluginpath allocateplugindir allocatepluginfile 一 module initdynami...

linux file storage模組引數

下面是裝載驅動模組時的引數,即使你在載入模組的時候不傳入引數,也會有預設的引數。如果編譯時沒有指定config usb file storage test 則只能使用部分引數 module param array named file,mod data.file,charp,mod data.num...

核心模組引數

在 中,可以這樣寫 static int cfg value 3 module param cfg value,int,0764 然後,載入核心的時候,可以添上制定的引數值 不加的話,就是 的數值 insmod module name cfg value 100核心模組加進來之後,可以在 sys m...