OBS Studio コードリーティング日記 #3 ; ファイル構成

コードリーディング日記なのに一向にコードを読む気が起きない。

モチベーションを起こすために先ずはざっくりとしたファイル分類を始めようと思います。

(今回もコードはリーディングしません…)

1.root直下の構成

先ずはOBS のVer30をgitからクローンした際にroot(~/obs-studio)の直下に出来るファイルとフォルダをざっくりと5つに分けてみます。

・git関連 : 7個

.git
.git-blame-ignore-revs
.gitattributes
.github
.gitignore
.gitmodules
additional_install_files

・コーディング(スタイル・フォーマット・エディタ設定)  : 5個

.clang-format
.cmake-format.json
.editorconfig
.swift-format
COC.rst

・build・install設定  : 5個

.cirrus.yml
build-aux
CI
buildspec.json
INSTALL

・権利・ポリシー  : 6個

.mailmap
AUTHORS
COMMITMENT
CONTRIBUTING.rst
COPYING
README.rst

・本体  : 12個

/ cmake関連

cmake
CMakeLists.txt
CMakePresets.json

/ ソースコード関連

deps
libobs
libobs-d3d11
libobs-opengl
libobs-winrt
plugins
test
UI

/ sphinxドキュメント用

docs

 

2.cmakeフォルダ内の構成

root/cmakeフォルダの中身と各フォルダ内のファイル数は下表。

フォルダ名ファイル数メモ
32bit1
bundle3cmakeファイルは無し
common9
finders19find_package用
Modules50find_package用
macos10
windows7

総ファイル数は100。

windowsのコンパイルの場合はwindowsフォルダ内の.cmake7個 + commonの9個が基本ライン。

findersとModulesはCmakeのfind_package用途。

 

3.UIフォルダ内の構成

OBSの本体。フォルダを覗くとこの中に809ファイルが存在。

拡張子ファイル数メモ
CMakeLists.txt9
.cmake23内ビルドに使わないlegacy.cmakeは7ファイル
.hpp101
.h8
.cpp115
.c4
.ini187主に言語対応用
.ui40Ot画面用
.svg200画像
.png69画像
.ico1画像
.qss7カラーテーマ用
.ttf3OpenSans用フォント
その他42

 

4.libobsフォルダ内の構成

libobsフォルダ以外の3フォルダ[libobs-d3d11,libobs-opengl,libobs-winrt]は全てwindows用のライブラリなのでここでは全て一緒にカウントします。

トータルファイル数は317

フォルダ名フォルダ内ファイル数メモ
libobs267
libobs-d3d1117win用
libobs-opengl27win用
libobs-winrt6win用

下表は拡張子別

拡張子ファイル数メモ
CMakeLists.txt4
.cmake9内ビルドに使わないlegacy.cmakeは4
.hpp12
.h124
.cpp14
.c117
.effect21OBS用ビデオエフェクト・シェーダーファイル
その他16

 

5.depsフォルダ内の構成

root/depsフォルダ下の中身と各フォルダ内のファイル数は下表。

フォルダ名ファイル数メモ
blake26ハッシュ関数用(本家コピー)
file-updater3
glad10OpenGLローディング用
happy-eyeballs3IPv4、IPv6の接続用(本家コピー)
ipc-util6
json115JSON取り扱い用(本家コピー)
libcaption32ストリーミング用字幕(本家コピー)
media-playback11
obs-scripting28
opts-parser3
uthash3ハッシュテーブル実装(本家コピー)
w32-pthreads395windows用POSIXスレッドエミュレータ(本家コピー)

ファイル総数506。

 

6.pluginsフォルダ内の構成

いわゆる拡張機能のフォルダ。

モジュール数(フォルダ数)は35。ファイル総数は4714(49%は言語切替用のiniファイル)。

モジュール(フォルダ名)ファイル数メモ
aja78AJA NTV2 I/Oデバイス用
decklink209decklinkキャプチャカード用
obs-vst70DAW(音楽制作ソフト)用エフェクトプラグイン
sndio55OpenBSD用サウンドカード・MIDIソフト
linux-alsa66
linux-capture68
linux-jack62
linux-pipewire56
linux-pulseaudio66
linux-v4l272
mac-avcapture65
mac-capture74
mac-syphon63
mac-videotoolbox62
mac-virtualcam91mac用バーチャルカメラ
win-capture133
win-dshow150win用バーチャルカメラ
win-wasapi70アプリ-オーディオデバイス間のストリームを管理
coreaudio-encoder69core audioエンコーダ(apple製)
obs-libfdk60音声エンコーダ
obs-qsv1181Quick Sync Video(エンコードデコード)
obs-x26470ビデオストリームエンコーダ(H.264)
oss-audio56open sound system(linux音声キャプチャ)
obs-ffmpeg102
vlc-video65
image-source70
obs-browser117
obs-filters140
obs-outputs1824
obs-text65
obs-transitions109
text-freetype275
obs-webrtc49webRTCプロトコル用
obs-websocket169websocket用
rtmp-services83rtmpプロトコル用

ファイル拡張子数の構成は下表。

拡張子ファイル数メモ
CMakeLists.txt58
.cmake72内ビルドに使わないlegacy.cmakeは29
.hpp57
.h476
.cpp160
.c627
.ini2023主に言語対応用
.clang-format13
.swift5
.mm26
.effect25OBS用ビデオエフェクト・シェーダーファイル
.md30
.png43
.json15
git関連83
その他1001
sam

sam

流山おおたかの森Techブログの管理人です。 お仕事のご依頼などはmail or Twitter[https://twitter.com/sam_sumario]で連絡頂けると反応出来ます。
Previous post OBS Studio コードリーティング日記 #2 ; ビルドする
Next post OBS Studioのプラグインの作り方 #1 公式テンプレのビルド

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です