WMDM_FORMAT_CAPABILITY構造体
WMDM_FORMAT_CAPABILITY構造体では、特定の形式のデバイスの機能について説明します。 この構造体には、WMDM_PROP_CONFIG構造体の配列にプロパティ構成のセット が 含まれています。 各プロパティ構成は、特定の形式でサポートされているすべてのプロパティで互換性のあるプロパティ値のセットを表します。 アプリケーションでは、 IWMDMDevice3::GetFormatCapability メソッドを呼び出し、形式コードを渡すことで、この構造を取得できます。 書式コードの一覧については、「 WMDM_FORMATCODE」を参照してください。
構文
typedef struct _WMDM_FORMAT_CAPABILITY {
UINT nPropConfig;
WMDM_PROP_CONFIG *pConfigs;
} WMDM_FORMAT_CAPABILITY;
メンバー
-
nPropConfig
-
pConfigs 配列内のプロパティ構成の数。
-
pConfigs
-
WMDM_PROP_CONFIG構造体の配列へのポインター。 配列のサイズは 、nPropConfig の値と同じです。
解説
WMDM_FORMAT_CAPABILITY構造は、特定の形式のデバイスの機能を表現するための柔軟なメカニズムを提供します。
コンテンツがデバイスによってレンダリングされる場合 (デバイスで再生されるオーディオ ファイルなど)、コンテンツのプロパティは、WMDM_FORMAT_CAPABILITY構造体の IWMDMDevice3::GetFormatCapability によって返されるプロパティ構成のいずれかと一致する必要があります。 たとえば、オーディオ ファイルの場合、ビット レートとサンプル レートは、返されるプロパティ構成のいずれかを満たす必要があります。
呼び出し元は、この構造体に割り当てられたメモリを解放する役割を担います。 次の関数は、 WMDM_FORMAT_CAPABILITY 構造体をクリアする方法を示しています。
void FreeFormatCapability(WMDM_FORMAT_CAPABILITY formatCap)
{
// Loop through all configurations.
for (UINT i=0; i < formatCap.nPropConfig; i++)
{
// Loop through all descriptions of a configuration and delete
// the values particular to that description type.
for (UINT j=0; j < formatCap.pConfigs[i].nPropDesc; j++)
{
switch (formatCap.pConfigs[i].pPropDesc[j].ValidValuesForm)
{
case WMDM_ENUM_PROP_VALID_VALUES_ENUM:
for (UINT k=0; k < formatCap.pConfigs[i].pPropDesc[j].ValidValues.EnumeratedValidValues.cEnumValues; k++)
{
PropVariantClear (&(formatCap.pConfigs[i].pPropDesc[j].ValidValues.EnumeratedValidValues.pValues[k]));
}
CoTaskMemFree(formatCap.pConfigs[i].pPropDesc[j].ValidValues.EnumeratedValidValues.pValues);
break;
case WMDM_ENUM_PROP_VALID_VALUES_RANGE:
PropVariantClear (&(formatCap.pConfigs[i].pPropDesc[j].ValidValues.ValidValuesRange.rangeMin));
PropVariantClear (&(formatCap.pConfigs[i].pPropDesc[j].ValidValues.ValidValuesRange.rangeMax));
PropVariantClear (&(formatCap.pConfigs[i].pPropDesc[j].ValidValues.ValidValuesRange.rangeStep));
break;
case WMDM_ENUM_PROP_VALID_VALUES_ANY:
// No dynamically allocated memory for this value.
default:
break;
}
// Free the memory for the description name.
CoTaskMemFree(formatCap.pConfigs[i].pPropDesc[j].pwszPropName);
}
// Free the memory holding the array of description items for this configuration.
CoTaskMemFree(formatCap.pConfigs[i].pPropDesc);
}
// Free the memory pointing to the array of configurations.
CoTaskMemFree(formatCap.pConfigs);
formatCap.nPropConfig = 0;
}
要件
要件 | 値 |
---|---|
ヘッダー |
|