VLC目錄結構介紹

2022-08-27 05:30:13 字數 2010 閱讀 1005

0. 起因

vlc最近出了2.0版本,決定今年深入掌握之,從分析**開始,以此為備忘。

1. 概述

vlc多**框架的優點是:1.系統更加緊湊、高效;2.跨平台支援好,特別是桌面平台(包括windows、mac);

3. 編譯系統完善,很容易可以構造出支援windows,linux的版本;4. 社群活躍,長期技術更新支援***。

整個vlc是以libvlc和libvlccore以及第三方外掛程式組成,前端是獨立的。據悉vlc c原始碼是黑客級別,本人看了多

眼之後,深以為然,包括有:類物件架構,觀察者模式,外掛程式管理系統等值得學習的**。另外一方面,整個代

碼要消化和理解也是一件不容易的事情。而且由於歷史原因,整個vlc**到處充滿了垃圾和無用的**,估計

清理起來也非常麻煩。

2. 目錄說明 ( 以 vlc-2.0.0 為準)

主要需要重點學習和關注的是:lib src兩個目錄之下的**,這個兩個目錄也是整個vlc專案的核心。

3.    核心物件

[cpp]view plain

copy

_vlcinstance =libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);  

_mp =libvlc_media_player_new(_vlcinstance);     

libvlc_media_player_set_xwindow (_mp, windid );  

_msource = libvlc_media_new_location(_vlcinstance, "./demo.mp4");  

libvlc_media_player_set_media(_mp, _msource);  

ibvlc_media_player_play(_mp);  

libvlc_instance物件組成

libvlc_int_t *p_libvlc_int;

libvlc_vlm_t  libvlc_vlm;

unsigned      ref_count;

vlc_mutex_t   instance_lock;

首先看看 libvlc_media_t 物件,主要組成如下:

libvlc_media物件組成

//指向頂層指標

int                i_refcount;

libvlc_instance_t *p_libvlc_instance;   

//控制變數

libvlc_event_manager_t * p_event_manager;

vlc_cond_t parsed_cond;

vlc_mutex_t parsed_lock;

//內建變數

bool is_parsed;

bool has_asked_preparse;

接下來就是最重要libvlc_player物件的組成了:

libvlc_player物件組成

int                i_refcount;

libvlc_instance_t * p_libvlc_instance;

vlc_mutex_t        object_lock;

libvlc_media_t * p_md;

libvlc_event_manager_t * p_event_manager;

struct

input;

其中最最重要的就是這個 struct  input結構體,幾乎所有重要的內容都在這個結構體內部,是理解整個vlc的核心,vlc內

主要的物件access, stream, demuxer, decoder, vout, aout全部都包含在input_thread, input_resource內。

Linux目錄結構介紹

1 bin 這裡存放了標準的linux的命令,比如像 ls cat mv cp 等。2 boot 放置linux系統啟動時相關的檔案。如 linux的核心檔案 boot vmlinuz 系統引導管理器 boot grub 3 cdrom 這個目錄在你剛剛安裝系統的時候是空的。你可以將光碟機檔案系統掛...

vue cli目錄結構介紹

乙個vue cli的專案結構如下 1.build webpack配置 build檔案主要是webpack的配置,主要啟動檔案是dev server.js,當我們輸入npm run dev首先啟動的就是dev server.js,它會去檢查node及npm版本,載入配置檔案,啟動服務。2.config...

vlc的結構分析(一)

給新人交接vlc的 順便記下來。1.vlc的 結構 compat 跨平台的函式 src control 外部介面 src 呼叫邏輯 modules 外掛程式 前文提到過,vlc用c語言實現了多型。這裡具體說一說。1.1外掛程式的匯出函式 以modules access fs.c為例 巨集vlc mo...