vlc的結構分析(一)

2021-06-18 00:32:10 字數 1074 閱讀 9607

給新人交接vlc的**,順便記下來。

1.vlc的**結構

compat:跨平台的函式

src/control:外部介面

src:呼叫邏輯

modules:外掛程式

前文提到過,vlc用c語言實現了多型。這裡具體說一說。

1.1外掛程式的匯出函式

以modules/access/fs.c為例

巨集vlc_module_begin,巨集vlc_module_end匯出函式vlc_entry__filesystem( module_t *p_module ) 

巨集set_callbacks( open, close )設定 module->pf_activate, module->pf_deactivate。

巨集set_capability,設定外掛程式的能力。可以用於訪問的"access",解復用的「demux」,解碼的「decoder」

1.2src/modules/modules.c

遍歷plugins下的所有動態庫,將這些module_t 放入module_bank。

1.3使用外掛程式

src/input/access.c

p_access->p_module = module_need( p_access, "access", psz_access, true );

遍歷module_bank,找到有"access"能力,而且可以處理檔案的外掛程式。

呼叫外掛程式的 module->pf_activate,呼叫下面的**,將access_t的成員函式指標指向modules/access/fs.c檔案中的函式,這就是「c語言實現多型」的全過程。

p_access->pf_write = write;

p_access->pf_read  = read;

p_access->pf_seek  = seek;

p_access->pf_control = control;

2.執行緒結構

a input執行緒

b decoder執行緒

c video_output執行緒

d 視窗訊息迴圈執行緒

ab,bc之間使用資料佇列聯絡,典型的消費/生產模型。

VLC目錄結構介紹

0.起因 vlc最近出了2.0版本,決定今年深入掌握之,從分析 開始,以此為備忘。1.概述 vlc多 框架的優點是 1.系統更加緊湊 高效 2.跨平台支援好,特別是桌面平台 包括windows mac 3.編譯系統完善,很容易可以構造出支援windows,linux的版本 4.社群活躍,長期技術更新...

vlc的應用之二 vlc的ActiveX及cab

2009 05 14補充 8.activex的解除安裝 9.讓vlc自動安裝activex 10.關於vlc的activex的說明。vlc自帶了activex控制項 axvlc.dll,在編譯完vlc之後的activex資料夾下。activex是個好東西,axvlc.dll可以隨意放到任何位置,成功...

VLC強大的地方。

最近比較忙,忙來忙去也不知道幹了些什麼 下面是我對這東西的個人理解,寫下來免得以後糊塗了,也歡迎有興趣的朋友來交流 關於 vlc 這東西很 nb 嗯 它可以 由於採用了plugin 的編解碼器,它是能夠擴充套件的。可以方便的獲取輸入流 並且輸出。甚至用 screen 你可以把你的螢幕當成輸入。vlc...