VLC官網的文章《Hacker Guide》

Hacker Guide
編程指南

一、Introduction
簡介:

VLC media player is a very popular, but quite large and complex piece of software.
VLC播放器是一款十分流行但是相當龐大和複雜的軟件。
It uses a large number of 3rd party libraries.
它使用大量的第三方庫
VLC development is open source, and then a large community of developers worldwide contribute to it.
VLC項目是開源的,所以全世界有許多開發者一起爲它做出了貢獻。
However, entering a project such as VLC media player can be long and complex for new developers.
然而,對於新的開發人員來說,進入像VLC播放器這樣的項目工程會是漫長且複雜的。
This guide seeks to help understanding the VLC code base and VLC internals to quickly get up to speed.
本指南旨在幫助開發者快速瞭解VLC代碼庫和VLC內部
NB: this guide is not about compiling VLC.
本指南沒有關於編譯VLC的部分

A very good introduction to VLC can also be found on (an archived copy of the site) enjoythearchitecture.
enjoythearchitecture.也是一份比較好介紹VLC文章

2、The layers of VLC and libVLC
VLC和libVLC層
2.1、VLC’s Core / libVLCcore
The most important (and probably most complex) part of VLC is the core, located in src/ in the repository.
VLC最重要的(可能是最複雜的一部分)是核心,位於倉庫中的src /

    2.1.1 Introduction to the core//鏈接-具體文檔見《介紹core》
        This is a MUST-READ for developers.
        這是開發者必須閱讀的部分。

    2.1.2 VLC modules loading//鏈接-具體文檔參見《VLC如何加module》
        How the numerous VLC modules work and are loaded.
        衆多的VLC加載模塊如何工作和被加載。

    2.1.3 Input
        How the main input chain works (slightly outdated)
        主輸入鏈如何工作(略微過時)

    2.1.4 VLC Object Management對象管理
    2.1.5 VLC variables 變量
    2.1.5 VLM Internals構件

3、Plugins / Modules //插件和模塊
How to write a VLC module.
怎麼編寫一個VLC模塊
3.1 Input 輸入模塊
3.1.1 Access 接口
An access module provides a byte stream from a location string MRL, like support for files,
HTTP streams, webcams…
接口模塊提供了一個字節流從一個本地字符串MRL,如支持文件,HTTP流,網絡攝像頭…

    3.1.2 Demuxer 多路分配器
    A demux module parses a byte stream and splits it into elementary streams (tracks).
    一個多路分配器模塊,解析字節流並將其分到各基本流(軌道)。

    3.1.3 Access-Demuxer
    An access_demux module combines the functionality of access and demux 
    (and bypass any stream filters), splitting elementary streams directly from a location string. 
    It's used where the bytestream abstraction is inadequate.
    一個多路分配接口模塊 結合訪問、多路分配器的功能
    (並繞過任何流過濾器),直接從本地字符串直接分割基本流。
    這是用在字節流的抽象是不夠的。

    3.1.4 Stream Filters 流過濾器
    A stream filter module converts a byte stream into another byte stream. It could be used for
    file or byte stream decryption, as it is already used for decompression (gzip, Bzip2, XZ) and 
    multi-part files.
    流過濾器模塊將字節流轉換爲另一個字節流。可用於
    文件或字節流解碼, 它已經用於解壓 (gzip, Bzip2, XZ) 和 multi-part文件。

    3.1.5 Decoder
    A decoder takes an elementary stream and convert into raw video, audio or text data, 
    reading for output.
    解碼器接收基本流並轉換成原始視頻、音頻或文本數據,讀數輸出。

3.2 Audio 音頻
    Audio Filters音頻濾波器
    Audio Mixers音頻混合器
    Audio Output音頻輸出

3.3 Video 視頻
Video Filters視頻濾鏡
Deinterlace反交錯
Video Output視頻輸出

3.4 Interfaces 接口
Interfaces
 Modules types not documented (yet)沒有記錄的模塊類型

3.5 Misc 其他
Visualization可視化
Packetizers     ***

3.6 Streaming output 輸出流
Encoder             編碼器
Mux         多路複用器
Stream Output 流輸出
Access Output   訪問輸出

4 libVLC and bindings libVLC和綁定

Using libvlc        使用libvlc
bindings            綁定

5、VLC source code overview VLC源代碼概述

VLC source tree VLC源碼樹
Modules source tree 模塊源碼樹
VLC Preferences VLC偏好
VLC Playlist and Media Library VLC播放和媒體庫

6、Coding for VLC 編碼VLC

Patching 修補
Sending Patches 發送補丁
Code Conventions 編碼規範
Adding a module 添加一個模塊
Documentation:Unicode 文檔:Unicode
Doxygen Documentation doxygen文檔
C Types C類型
Strings 字符串

7、Testing 測試

Test Suite 測試單元

8、Mozilla plugins Mozilla插件

Plugins in Mozilla 加入Mozilla插件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章