PCR
Program Clock Reference / ピーシーアール
TSの中を定期的に流れる、送り手の27MHzの基準時計の値です。受信機はこの値に自分の時計を合わせ、映像と音声を決められた時刻に復号して表示します。値が揺れるとバッファが破綻し、映像が止まったり音がずれたりします。
- 正式名称
- Program Clock Reference(プログラム時刻基準参照値)
- 規格
- ISO/IEC 13818-1(ITU-T H.222.0)
- 基準クロック
- 27MHz
- 値の形
- 33ビットの90kHzのbaseと9ビットの27MHzのextension。27MHz換算ではbase×300+extension
- 送る間隔
- MPEG-2 Systemsでは100ミリ秒以内ごと
- 許容ジッタ
- ±500ナノ秒
- 入っている場所
- TSパケットのアダプテーションフィールド。どのPIDに入れるかはPMTのPCR_PIDが示す
- 関係する値
- PTS(表示時刻)とDTS(復号時刻)。どちらも90kHz単位
TS解析ツールが「PCR accuracy」や「PCR jitter」の項目を赤で出していて、映像は一見ふつうに見える。この状態を放っておくと、受信機やデコーダーによっては数分後に映像が止まります。PCRはストリームの中を流れる時計で、これが揺れると受け手は自分の時計を正しく作れなくなります。
PCRが使われる場面
放送局の送出では、エンコーダーと多重化装置がPCRを打ちます。多重化のときにパケットの並びが変われば、PCRの値も並び直した位置に合わせて打ち直す必要があるため、装置にはPCRの再挿入や補正の機能があります。送出系の監視装置では、PCRの間隔とずれを常時測り、決められた範囲を外れたら警報を出します。
IP回線で素材を送る場面でも重要になります。エンコーダーが出したTSをネットワークに流すと、パケットの到着時刻がばらつくので、受け側のデコーダーはバッファで吸収しながらPCRを読み取ります。SRTやRISTで受けたTSをデコードする機器の設定に、バッファの深さを指定する項目があるのはこのためです。
検証では、TSDuckやStreamXpertのような解析ツールでPCRの間隔と精度を測ります。ETSI TR 101 290の監視項目にもPCRに関する項目が並んでいて、放送の品質確認で参照されます。
PCRの仕組み
PCRは、送り手が持つ27MHzのカウンターの値です。33ビットの90kHzの部分と9ビットの27MHzの部分に分かれていて、27MHz換算の値はbase×300+extensionで求めます。90kHzの部分は、フレームごとの時刻を示すPTSやDTSと同じ単位です。
受信機は、届いたPCRの値と自分のカウンターの差を見て、PLLで自分の27MHzの発振器を少しずつ引き込みます。これで受け手の時計が送り手の時計と同じ速さで進むようになり、PTSやDTSの時刻が意味を持ちます。どのパケットにPCRが入っているかはPMTのPCR_PIDが示すので、番組ごとに別の時計を持てます。
MPEG-2 Systemsは、PCRを100ミリ秒以内の間隔で送り、値のずれを±500ナノ秒以内に収めるよう定めています。この精度が要求されるのは、受け手の発振器を引き込む材料がPCRしかないためです。
PCRのジッタでバッファがあふれる理由
デコーダーの中には、届いたデータを一時的に置くバッファがあります。送り手は、このバッファがあふれず空にもならないように、PTSとDTSで各フレームの復号と表示の時刻を指定しています。
受け手の時計が送り手より速く進むと、データを予定より早く取り出して表示してしまい、バッファが空になります。画面が固まる、音が途切れる、といった症状がここで出ます。逆に受け手の時計が遅いと、データが溜まり続けてバッファがあふれ、パケットが捨てられます。どちらも映像や音声そのものは壊れていないので、ファイルを再生し直すと問題なく見えることがあり、原因の切り分けが難しくなります。
PCRが揺れる原因は、多重や再多重でパケットの位置が変わったのにPCRを打ち直していない、IP伝送でパケットの到着時刻がばらついている、変換ソフトがPCRを補正せずにビットレートだけ変えている、といったものです。ファイルとして保存して後から再生するだけなら影響は出にくく、リアルタイムで受けて流す経路ほど問題になります。
よくある質問
PCRとPTSの違いは何ですか
PCRは送り手の時計の値で、受け手が自分の時計を合わせるために使います。PTSは各フレームを表示する時刻で、PCRで作った時計の上で読む値です。時計が正しくなければ、PTSの時刻も意味を持ちません。
PCRジッタが大きいと何が起きますか
受信機が送り手の時計を正しく再現できず、デコーダーのバッファが空になるかあふれます。映像が一瞬止まる、音が切れる、映像と音がずれるといった症状で現れます。ファイルの再生では出にくく、リアルタイムの伝送や放送波で問題になります。
FFmpegでTSを作るとPCRはどうなりますか
FFmpegのmpegtsの出力はPCRを自分で挿入します。ただし放送設備へ入れるTSとして精度が足りるかは別の話なので、監視装置や解析ツールでPCRの間隔と精度を測ってから使う必要があります。
似ている形式との違い
関連する用語
最終更新