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

Technical Q&A QA1456
Compression Sessions - Configuring options using the Standard Compression dialog

Q:圧縮セッションのオプションをもっと簡単に設定する方法はありますか?それとも、各オプションを手作業で設定する必要があるのでしょうか。

A:はい。標準圧縮で提供されるUIを使う、もっと簡単な方法があります。

標準圧縮ダイアログコンポーネントは、圧縮操作を制御するパラメータを指定するための一貫性のある高度なユーザインターフェイスを、アプリケーションに対して提供します。これを利用することで圧縮セッションのオプションオブジェクトの設定が簡単になります。図1にH.264コーデックを設定する場合のダイアログの様子を示します。

図1:標準圧縮ダイアログ

図1 標準圧縮ダイアログ

リスト1は、標準圧縮コンポーネントを使用して、圧縮セッションのオプションを取得する方法の1つを示します。

標準圧縮ダイアログが閉じたら、SCCopyCompressionSessionOptionsを呼び出して、すべて設定済みのICMCompressionSessionOptionsRefを取得します。これをICMCompressionSessionCreateに渡します。

新しく生成される圧縮セッションはこのオプションオブジェクトを保持します。アプリケーションが圧縮操作中に圧縮オプションを変更することがない場合は、圧縮セッションが生成されたらICMCompressionSessionOptionsReleaseを呼び出します。

リスト1:圧縮セッションオプションの設定に標準圧縮を使用する

ICMCompressionSessionOptionsRef GrabCSessionOptionsFromStdCompression()
{
    ComponentInstance stdCompression = 0;
    long scPreferences;
    ICMCompressionSessionOptionsRef sessionOptionsRef = NULL;

    ComponentResult err;

    // 標準圧縮コンポーネントを開く
    err = OpenADefaultComponent(StandardCompressionType, StandardCompressionSubType, &stdCompression);
    if (err || 0 == stdCompression) goto bail;

    // ICM圧縮セッションAPIを使って圧縮操作を実行する準備がクライアント側で整ったことを示す
    // 従来のシーケンスAPI群ではこれらの機能をサポートしていないため、このフラグが未設定の場合、
    // StdCompressionはフレームの並べ替えとマルチパスエンコーディングを無効にする
    scPreferences = scAllowEncodingWithCompressionSession;

    // 環境設定を行う
    err = SCSetInfo(stdCompression, scPreferenceFlagsType, &scPreferences);
    if (err) goto bail;

    // 標準圧縮ダイアログボックスを表示する
    err = SCRequestSequenceSettings(stdCompression);
    if (err) goto bail;

    // 設定値に基づいて圧縮セッションオプションオブジェクトを作成する
    err = SCCopyCompressionSessionOptions(stdCompression, &sessionOptionsRef);

bail:
    if (0 != stdCompression) CloseComponent(stdCompression);

    return sessionOptionsRef;
}

参考資料:

Image Compression Dialog Component

先頭に戻る

ドキュメント改訂履歴

日付メモ
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.