Twitter にだらだら書いてもいいのですがこちらで。
概要
- 進捗報告
- 要望とか
- 今後
1. 進捗報告
まず,この blackmagic-downmixed-workaround
ですが,ほぼすべきことはやり切ったと思っています。今後はバグや個別対応になるかと思います。詳細について,今から説明します。
1) ハードウェアのマルチチャンネルの検出
そもそもですが,Decklink はもともと業務用途で,それをコンシューマー向けに降ろしたのが Intensity です。そもそもとして,コンシューマー向けではないので,マルチチャンネル対応は 2, 8, 16ch がベースとなっています。つまり何が言いたいのかというと,このハードウェアは収録してあとで音声ミキシングをする前提になっているわけですね。
しかし,我々コンシューマーは 6ch をそのまま一般的な 5.1/7.1ch 音声の入力として使いたいと思ってる人がほとんどでしょう。そして私もその考えに基づき今回は実装しています。
HDMI 2.0 以前では HDMI では最大 8ch の音声ストリームしか流すことができません(上記に 16ch とありますが,これは業務用の SDI 向けです)。HDMI 2.0 でこそ,32ch の音声ストリームが流せるようになったものの,現状,HDMI 2.0 対応のキャプボなんてありません。
2) HDMI と PCM (WAVE) のマルチチャンネルの差異
次に,HDMI の音声仕様です。FL+FR+LFE+FC+…
となっています。PCM (WAVE) の通常の並びは FL+FR+FC+LFE+…
*1 です。つまり,これを並び変えないとだめですね。
もしかしたら並び変えずに ffmpeg にオーダーを指示する方法もあるかもしれませんが,既存のシステムを弄り回さないといけないのでやめました。
3) Intensity Shuttle for Thunderbolt の謎の仕様。
HDMI の音声入力が 8ch 対応なはずなのに,そうではないと返す。ハードコードで対応。
2. 要望とか
キャプボの用途上,ゲーム以外に使うことはほぼ 0 だと思っています。つまり,3.1ch,4.1ch,6.1ch はいらないと思っているんですね。ゲーム機は 7.1ch か 5.1ch (実際は 7ch, 5ch で LFE は流れてないんですけどね) のどちらかしかないと思うので。
まあ,このあたりの要望は Twitter で飛ばしてくれればやります。簡単なので。簡単だけどやらないのは,コードが無駄に増えるだけだからですw
3. 今後
自分自身いろいろ悩んでるのですが,Windows on AArch64 とか 2020年には普通になってると思ってて,じゃあ OBS Studio も AArch64 とか考えていかなきゃならん時期も来ると思うし,macOS では Metal API 使ってコンポジションするとか,考えられる選択肢っていっぱいあると思うんですね。
じゃあ何をしようかな,って。やっぱ,正しい色を出せるような改良をしていくべきなのかな,って思ったりします(メインコミッターは結構色に疎いイメージなんだが…)。
以下ポエム。
よく正しい色は期待しないとか言われているじゃないですか。Windows には。いや,そもそも 100% 同じ色を再現できる環境なんてコンシューマーに作れないわけで,それなりに再現できてればいいんですよ。0 か 100 かみたいな人いるけど,私はそうじゃなくて,50 ぐらいを求められるようにして行きたいんですね。つまり,世の中普通の人がこの画面はなんか色が違うな? みたいなおかしなことにならなければいいんですよ。現におかしい色の放送をちょいちょい見かけるわけで。テクノロジー的にはデフォルトの設定を変えるだけでこういう誤りの 90% はなくせると思うんですよね。
はい,まあそんな感じで,自分も何しようか悩んでます。OBS Studio を触れた以上,やりたいことはやっていきたい。そして本家にフィードバックしていきたい,そんな感じです。
*1:Default Channel Ordering を参照。https://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx