Q:圧縮セッションのオプションをもっと簡単に設定する方法はありますか?それとも、各オプションを手作業で設定する必要があるのでしょうか。A:はい。標準圧縮で提供されるUIを使う、もっと簡単な方法があります。 標準圧縮ダイアログコンポーネントは、圧縮操作を制御するパラメータを指定するための一貫性のある高度なユーザインターフェイスを、アプリケーションに対して提供します。これを利用することで圧縮セッションのオプションオブジェクトの設定が簡単になります。図1にH.264コーデックを設定する場合のダイアログの様子を示します。 図1:標準圧縮ダイアログ
リスト1は、標準圧縮コンポーネントを使用して、圧縮セッションのオプションを取得する方法の1つを示します。 標準圧縮ダイアログが閉じたら、 新しく生成される圧縮セッションはこのオプションオブジェクトを保持します。アプリケーションが圧縮操作中に圧縮オプションを変更することがない場合は、圧縮セッションが生成されたら リスト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 |
|