Apple Developer Connection
高度な検索
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1455
Compression Sessions - Temporal compression options

Q:Compression Session APIには1つの品質プロパティがありますが、テンポラル圧縮が有効の場合、クライアント側でキーフレームの品質に影響を与える方法はありますか?また、テンポラル圧縮は、キーフレーム間隔とフレーム並べ替えのオプションとどのように互いに作用するのでしょうか?

A:テンポラル圧縮と品質

Compression Session APIには独立した圧縮品質プロパティがあります(kICMCompressionSessionOptionsPropertyID_Quality)。最近のコーデックでは品質の一貫性の維持を目指すことで、キーフレーム間の目障りな影響を回避しています。そのためこの独立した設定がキーフレームと、圧縮操作で生成される差分フレームの品質の両方を管理しています。

テンポラル圧縮が無効の場合(kICMCompressionSessionOptionsPropertyID_AllowTemporalCompressionfalseが設定されている)、品質プロパティは空間的圧縮品質を表します。

テンポラル圧縮が有効の場合、品質設定は、キーフレームと差分フレーム間の一貫した品質の設定を表します。

テンポラル圧縮、最大キーフレーム間隔、およびフレームの並べ替え

AllowTemporalCompressionプロパティがfalseの場合、キーフレームだけが生成されます。つまり、フレームはすべてIフレームです。MaxKeyFrameInterval無視されます。

AllowTemporalCompressiontrueで、AllowFrameReorderingfalseの場合、キーフレームと差分フレームが生成されますが、フレームは表示順序でエンコードされます。すなわち、IフレームとPフレームが生成されます。MaxKeyFrameInterval適用されます。

AllowTemporalCompressiontrueで、AllowFrameReorderingtrueの場合、キーフレームと差分フレームが生成され、フレームはコンプレッサによって並べ替えられることがあります。すなわち、IP、およびBフレームが生成されます。MaxKeyFrameInterval適用されます。

MaxKeyFrameIntervalに1を設定した場合も(すべてのフレームがキーフレームでなければならないことを示します)、すべてのフレームがキーフレームとなるため、テンポラル圧縮を無効にしたのと同じ効果があります。

参考資料:

kICMCompressionSessionOptionsPropertyID_Quality

CodecQ値を使って圧縮品質を指定します。この値は常にspatialQualityの
設定に使われます。テンポラル圧縮が有効な場合、temporalQualityの設定にも使用されます。
デフォルトの品質はcodecNormalQualityです。

CodecQ型、読み取り/書き込み可能。


kICMCompressionSessionOptionsPropertyID_AllowTemporalCompression

このBooleanプロパティはテンポラル圧縮を有効にします。デフォルトではテンポラル圧縮は無効です。

重要:テンポラル圧縮をする場合(PフレームまたはBフレームあるいはその両方)、この値はtrueに設定する必要があります。

Boolean型、読み取り/書き込み可能。


kICMCompressionSessionOptionsPropertyID_AllowFrameReordering

フレームの並べ替えを有効にします。Bフレームをエンコードするには、コンプレッサによってフレームが並べ替えられる必要があります。
つまり、出力および格納される順序(デコード順序)は、コンプレッサに提示された順序(表示順序)と
異なります。デフォルトではフレームの並べ替えは無効です。


重要:Bフレームを使ってエンコードするにはフレームの並べ替えを有効にする必要があります。

Boolean型、読み取り/書き込み可能。


kICMCompressionSessionOptionsPropertyID_MaxKeyFrameInterval

キーフレーム間の最大間隔を制御します。キーフレームレートとしても知られています。
同期フレームとしても知られるキーフレームは、フレーム間の依存関係を再設定します。キーフレームをデコードすれば
後に続く差分フレームを正常にデコードするデコンプレッサを準備できます。結果としてより効率的な圧縮ができることにつながれば、
コンプレッサからキーフレームをより頻繁に生成することが許されています。

デフォルトのキーフレーム間隔は0で、コンプレッサがすべてのキーフレームの配置場所を選ぶことを意味します。
キーフレーム間隔が1ならば、フレームすべてがキーフレームであることを意味します。2ならば、
1つおきのフレームがキーフレームであることを意味します。

SInt32型、読み取り/書き込み可能。

先頭に戻る

ドキュメント改訂履歴

日付メモ
2006-01-12初版

掲載日: 2006-01-12




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.