コードリーディング日記なのに一向にコードを読む気が起きない。
モチベーションを起こすために先ずはざっくりとしたファイル分類を始めようと思います。
(今回もコードはリーディングしません…)
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フォルダの中身と各フォルダ内のファイル数は下表。
| フォルダ名 | ファイル数 | メモ |
|---|---|---|
| 32bit | 1 | |
| bundle | 3 | cmakeファイルは無し |
| common | 9 | |
| finders | 19 | find_package用 |
| Modules | 50 | find_package用 |
| macos | 10 | |
| windows | 7 |
総ファイル数は100。
windowsのコンパイルの場合はwindowsフォルダ内の.cmake7個 + commonの9個が基本ライン。
findersとModulesはCmakeのfind_package用途。
3.UIフォルダ内の構成
OBSの本体。フォルダを覗くとこの中に809ファイルが存在。
| 拡張子 | ファイル数 | メモ |
|---|---|---|
| CMakeLists.txt | 9 | |
| .cmake | 23 | 内ビルドに使わないlegacy.cmakeは7ファイル |
| .hpp | 101 | |
| .h | 8 | |
| .cpp | 115 | |
| .c | 4 | |
| .ini | 187 | 主に言語対応用 |
| .ui | 40 | Ot画面用 |
| .svg | 200 | 画像 |
| .png | 69 | 画像 |
| .ico | 1 | 画像 |
| .qss | 7 | カラーテーマ用 |
| .ttf | 3 | OpenSans用フォント |
| その他 | 42 |
4.libobsフォルダ内の構成
libobsフォルダ以外の3フォルダ[libobs-d3d11,libobs-opengl,libobs-winrt]は全てwindows用のライブラリなのでここでは全て一緒にカウントします。
トータルファイル数は317
| フォルダ名 | フォルダ内ファイル数 | メモ |
|---|---|---|
| libobs | 267 | |
| libobs-d3d11 | 17 | win用 |
| libobs-opengl | 27 | win用 |
| libobs-winrt | 6 | win用 |
下表は拡張子別
| 拡張子 | ファイル数 | メモ |
|---|---|---|
| CMakeLists.txt | 4 | |
| .cmake | 9 | 内ビルドに使わないlegacy.cmakeは4 |
| .hpp | 12 | |
| .h | 124 | |
| .cpp | 14 | |
| .c | 117 | |
| .effect | 21 | OBS用ビデオエフェクト・シェーダーファイル |
| その他 | 16 |
5.depsフォルダ内の構成
root/depsフォルダ下の中身と各フォルダ内のファイル数は下表。
| フォルダ名 | ファイル数 | メモ |
|---|---|---|
| blake2 | 6 | ハッシュ関数用(本家コピー) |
| file-updater | 3 | |
| glad | 10 | OpenGLローディング用 |
| happy-eyeballs | 3 | IPv4、IPv6の接続用(本家コピー) |
| ipc-util | 6 | |
| json11 | 5 | JSON取り扱い用(本家コピー) |
| libcaption | 32 | ストリーミング用字幕(本家コピー) |
| media-playback | 11 | |
| obs-scripting | 28 | |
| opts-parser | 3 | |
| uthash | 3 | ハッシュテーブル実装(本家コピー) |
| w32-pthreads | 395 | windows用POSIXスレッドエミュレータ(本家コピー) |
ファイル総数506。
6.pluginsフォルダ内の構成
いわゆる拡張機能のフォルダ。
モジュール数(フォルダ数)は35。ファイル総数は4714(49%は言語切替用のiniファイル)。
| モジュール(フォルダ名) | ファイル数 | メモ |
|---|---|---|
| aja | 78 | AJA NTV2 I/Oデバイス用 |
| decklink | 209 | decklinkキャプチャカード用 |
| obs-vst | 70 | DAW(音楽制作ソフト)用エフェクトプラグイン |
| sndio | 55 | OpenBSD用サウンドカード・MIDIソフト |
| linux-alsa | 66 | |
| linux-capture | 68 | |
| linux-jack | 62 | |
| linux-pipewire | 56 | |
| linux-pulseaudio | 66 | |
| linux-v4l2 | 72 | |
| mac-avcapture | 65 | |
| mac-capture | 74 | |
| mac-syphon | 63 | |
| mac-videotoolbox | 62 | |
| mac-virtualcam | 91 | mac用バーチャルカメラ |
| win-capture | 133 | |
| win-dshow | 150 | win用バーチャルカメラ |
| win-wasapi | 70 | アプリ-オーディオデバイス間のストリームを管理 |
| coreaudio-encoder | 69 | core audioエンコーダ(apple製) |
| obs-libfdk | 60 | 音声エンコーダ |
| obs-qsv11 | 81 | Quick Sync Video(エンコードデコード) |
| obs-x264 | 70 | ビデオストリームエンコーダ(H.264) |
| oss-audio | 56 | open sound system(linux音声キャプチャ) |
| obs-ffmpeg | 102 | |
| vlc-video | 65 | |
| image-source | 70 | |
| obs-browser | 117 | |
| obs-filters | 140 | |
| obs-outputs | 1824 | |
| obs-text | 65 | |
| obs-transitions | 109 | |
| text-freetype2 | 75 | |
| obs-webrtc | 49 | webRTCプロトコル用 |
| obs-websocket | 169 | websocket用 |
| rtmp-services | 83 | rtmpプロトコル用 |
ファイル拡張子数の構成は下表。
| 拡張子 | ファイル数 | メモ |
|---|---|---|
| CMakeLists.txt | 58 | |
| .cmake | 72 | 内ビルドに使わないlegacy.cmakeは29 |
| .hpp | 57 | |
| .h | 476 | |
| .cpp | 160 | |
| .c | 627 | |
| .ini | 2023 | 主に言語対応用 |
| .clang-format | 13 | |
| .swift | 5 | |
| .mm | 26 | |
| .effect | 25 | OBS用ビデオエフェクト・シェーダーファイル |
| .md | 30 | |
| .png | 43 | |
| .json | 15 | |
| git関連 | 83 | |
| その他 | 1001 |