1

ちょうど今、私はビデオキャプチャに関連する小さな仕事を始めました。私はavfoundationを使用したビデオキャプチャデバイスによってサポートされているすべてのピクセルフォーマットが欲しいです。私はCMFormatDescriptionGetMediaSubtype関数を使用してmac(CMPixelFormatType)でピクセルフォーマットを取得しています。しかし、私は常に利用可能なピクセル形式のいずれからも一致しない値を取得しています(kCMPixelFormat_422YpCbCr8_yuvsのような事前定義されたピクセルfromat)。その目的のために他に何か機能がありますか..検索しましたが、今まで見つかりませんでした。戻り値は、ピクセル形式タイプとして常に1684890161です。

私が聞きたい実際のことは:

Macのビデオキャプチャデバイスでサポートされているすべてのピクセル形式を使用するにはどうすればよいですか。コーデックタイプを要求していないことを忘れないでください。私が必要とするそのピクセルフォーマット。助けてください..可能であれば。

前もって感謝します..

4

1 に答える 1

2

CMIOObjectGetPropertyDataサポートされているすべてのピクセル形式を取得するには、次のように2番目のパラメーターを使用して呼び出す必要がありCMIOObjectPropertyAddressます。

CMIOObjectPropertyAddress theAddress;
theAddress.mSelector = kCMIOStreamPropertyFormatDescriptions;
theAddress.mScope    = kCMIOObjectPropertyScopeGlobal;
theAddress.mElement  = 0;

これにより、CFArrayのが得られますCMFormatDescriptionRef。次に、この配列を繰り返し処理して、次のように呼び出します。

CMFormatDescriptionGetMediaSubType(yourCMFormatDescriptionRef);

は、Matrox固有のハードウェア圧縮タイプのように見えるFourCharacterCode CMFormatDescriptionGetMediaSubType(OSType)に変換されます。'dmb1'

列挙型に自分のフォーマットが見つからない理由CMPixelFormatTypeは、そこには最も一般的なフォーマットしかないためですが、自分のものではありません。Macで最も一般的なのはとkCMPixelFormat_422YpCbCr8kCMPixelFormat_422YpCbCr10、どちらも生の8ビットと10ビットのYUVビデオです。

于 2012-12-19T11:16:09.830 に答える