BETA

Raspberry Pi の HDMI はなぜ外部から映像をとりこめないのか

投稿日:2018-12-07
最終更新:2018-12-12

はじめに

今はどうなってるのかよくしらないのですが、GoPro に HDMI の出力がついていた頃、お客様から「GoPro の映像を Raspberry Pi の HDMI で受けて、そのままストリーミング中継したい」という相談を受けて、反射的に「そんなの無理に決まってるじゃないですか」と答えてしまい、かなり心象を損ねてしまいました
私はHDMIの規格上無理に決まってると思ってこう言ってしまったのですが、お客様はこんな単価では無理に決まってると意図していると思われたみたいで憤慨されたようです
すぐに誤解に気がついて、またHDMIの規格は以外と世間にしられていない事にも気がついて、コーヒーを飲みながら以下のお話をゆっくりとさせていただいたのでした

対称な規格と非対称な規格

情報通信には双方向で対称な規格と、通信の両端で役割が違う非対称な規格があります

例えば、LANケーブルって、両端が RJ45で同じ形状をしてますが、実際にLAN のどちらからでも同じ様に情報を送れて、受け取れます
USB は、マスターとスレーブが別れてて、ケーブルの両端で形も違いますね。スレーブはマスターのコントロール下で必要な処理をします
放送とか、映像の送信側と受信側ではっきり役割がちがいますよね

HDMI は実は非対称

HDMI は映像や音声を伝送する規格です
HDMI はケーブルの両端が同じ形をしているのその両端の役割も対称なのかと思いきや、実はケーブルにつながるデバイス側は

  • 映像の送信側(Source)
  • 映像の受信側(Sink)

にはっきり別れている非対称な規格です
さらに責任は送信側より受信側のほうが重いという非対称性もあります

責任、とはどういうことかというと「もし、実装に問題があって有料(premium)コンテンツが流出するようなことがあったら責任とってもらいますからねという責任です、もっとロコツにいうと巨額の賠償金です

この責任を厭わないほど映像の入力に価値がある場合に、Sink が実装されます
具体的にはディスプレイとか HDレコーダーみたいな、映像をうけとらないと意味がないような製品だけが Sink を実装します

例えディスプレイと HDMI がついていても映像を受け取ることが商品の価値を高めることにつながらなかないのであれば Sink 機能みたいな厄介なモノは用意しない事も、作る側にとっては自然な判断です
ソニーのカーナビには HDMI がついているのがあったのですが、あれもカーナビからの映像の出力専用で、あのHDMIを通じてカーナビで映像表示することはできませんでした、それができたらあのカーナビ、ディスプレイにも使えて便利なのに
これも HDMI の非対称性を知れば、ちょっとプロダクトアウトな理由とはいえ「まあそんなもんなんだろうな」と、冷めた態度で納得できます

結論?

というわけで、結論はRaspberry Pi の HDMI は、ディスプレイ等に接続して画面を送信するための Source 機能だけが実装されていて Sink 機能は実装されていないので外部からの映像がとりこめないのでございます

ところで、なんで Sink 側のほうが責任が重いのでしょうか?

HDMI はリンクプロテクションの規格

コンテンツを保護する方法にはコピープロテクションリンクプロテクションがあります

コピープロテクションは、コピーしたコンテンテンツに価値がなくなるようにすることでコンテンツを守ります
コンテンツを暗号化することで、鍵がなければ再生できないようにする方法がポピュラーですが、他に透かし(Water Mark)を入れて恥しくて人前で再生できないようにする(であってるのかちょっと自信がなくなりました)方法もあります

リンクプロテクションとは、コンテンツを悪用する可能性のある相手と接続させない事でコンテンツを守る方法です。団地の子とは遊んじゃだめヨというお母さんと同じような(違うかもしれない)モチベーションですね

HDMI は暗号化したコンテンツを伝送するという意味でのコピープロテクションに加えて、Sink の素性を確認してから接続するリンクプロテクションの機能を有しています
Source は Sink の証明書を確認して認証されている相手のみに接続を限定することができます

受け取った有料コンテンツを外部にコピーさせないような Sink のみが認証を受けるので、 こういう Sink に対して Source は安心して有料コンテンツを送信する事ができます

もし、受け取った有料コンテンツを外部にコピーさせてしまうような粗相があると先程述べた責任を Sink が果たさなければならなくなります

参考文献

これが、ないんですね ^^;;; あるのかもしらないですけど、私は知らないです
ないあたりが冒頭の「HDMIの規格は以外と世間にしられていない」の原因になっているのかもしれません
ある意味、利用者にとっては少し理不尽に感じることもある機能を実現する規格なのであまりおおっぴらにするモチベーションが働かないのかもしれません

古いバージョンの規格書は こちら に「ください」とお願いすることができます

HDMI に関連する規格は実は読むと結構おもしろくて、ロコツにコピー&ペーストしてると思しきところがあったり、これに何の意味があるんだ!って不思議に思うような所や理不尽に思う所や、なんか小説読んでるみたいにいろいろとドキドキワクワクできます

追記

※2018.12.12
本文中の Sink がすべて Sync になっておりました、これは恥ずかしいです ^^;;;
最後に規格書よんでから6年ぐらいたってるのですが、性能の良くない脳なので中で窯変してしまっておりました
@akinosora 様、ご指摘ありがとうございました

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@TakeyukiUEDAの技術ブログ

よく一緒に読まれる記事

2件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
12/11 16:54

興味深い記事ありがとうございます!
HDMIの知識の全くない素人ですが, なるほどと思う内容でした(語彙).
ところで, ちょっと検索してみたのですが,

  • 映像の送信側(Source)
  • 映像の受信側(Sync)

https://www.hdmi.org/news_events/
https://www.hdmi.org/installers/interoperability.aspx
あたりでは Sync でなく Sink と記載されているようでした.

HDMI Sink / HDMI Sources / HDMI repeater / HDMI cable
the sink device / the source device

日本の出版社?のpdf資料のようですが, こちらも同様でした.

http://www.cqpub.co.jp/dwm/contents/0125/dwm012500730.pdf

シンク(Sink)機器

この記事内で説明されている Sync に相当するものでしょうか?

12/12 07:40

akinosora 様

ご丁寧なご指摘大変ありがとうございます、とても嬉しいです Sink が正しいですね、画像の同期先(Sync)じゃなくて吸い込み先(Sink)でした ありがたく修正させていただきます

目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!