Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Proprietà di sola lettura che specifica le impostazioni supportate dal codificatore MFT per i valori di input QP assoluti.
Tipo di dati
InputQPSettings (VT_BLOB)
GUID proprietà
CODECAPI_AVEncVideoInputAbsoluteQPBlockSettings
Il valore della proprietà
Il valore di questa proprietà è una struttura InputQPSettings . Se la proprietà è presente, il codificatore video MFT supporta la ricezione di valori QP assoluti conformi alle impostazioni fornite dalla struttura InputQPSettings . Se la proprietà non è presente, il codificatore video MFT non supporta la ricezione di valori QP assoluti.
Se supportato, i valori QP assoluti possono essere forniti come input per il codificatore video MFT da applicare durante il passaggio di quantizzazione del processo di codifica. L'attributo MFSampleExtension_VideoEncodeInputAbsoluteQPMap viene usato per fornire i valori QP.
Osservazioni:
Ogni elemento nella mappa QP rappresenta un blocco quadrato di pixel, con un lato di N pixel, rendendo il numero totale di pixel contenuti all'interno di un blocco N2 (NxN). La dimensione del blocco viene specificata come numero di pixel su un lato del blocco quadrato (ad esempio, il valore N.) Le dimensioni di tali blocchi sono mappate ai pixel Luma.
Usare ICodecAPI::IsSupported per verificare se il codificatore supporta la ricezione di valori QP assoluti.
Usare ICodecAPI::GetValue per ottenere i valori rappresentati all'interno dello struct InputQPSettings usando l'interfaccia VT_BLOB. Si tratta di una proprietà pronta e pertanto la chiamata a ICodecAPI::SetValue non avrà alcun effetto.
I campi minBlockSize e maxBlockSize della struttura InputQPSettings possono avere lo stesso valore, a indicare che il codificatore supporta solo una singola dimensione di blocco.
I blocchi rettangolari di dimensioni MxN (ad esempio, 32x16) non sono supportati.
Fornire valori QP assoluti può essere in conflitto e avere un effetto di override sulle proprietà a velocità in bit, ad esempio AVEncCommonMeanBitRate o CODECAPI_AVEncCommonMaxBitRate.
Esempi
Nell'esempio seguente viene illustrato come usare la proprietà CODECAPI_AVEncVideoInputAbsoluteQPSettings per verificare se un codificatore MFT supporta la ricezione di mappe QP assolute. La funzione stampa le dimensioni minime e massime supportate dei blocchi e il valore di esecuzione delle istruzioni. Queste informazioni possono essere usate dall'app per scegliere una dimensione del blocco appropriata per la mappa QP assoluta.
#include <mfapi.h>
#include <codecapi.h>
#include <stdio.h>
#include <wil/resource.h>
#include <wil/result_macros.h>
// This function assumes that the encoder MFT supports ICodecAPI interface.
// It checks whether the property CODECAPI_AVEncVideoInputAbsoluteQPBlockSettings is supported.
HRESULT PrintEncoderAbsoluteQPMinMaxDataType(_In_ IMFTransform* encoder)
{
wil::com_ptr_nothrow<ICodecAPI> codecAPI;
RETURN_IF_FAILED(wil::com_query_to_nothrow(encoder, &codecAPI));
// Check if the encoder supports Absolute QP Block Settings reporting
if (!codecAPI->IsSupported(&CODECAPI_AVEncVideoInputAbsoluteQPBlockSettings))
{
printf("The encoder does not support receiving absolute QP maps.\n");
return S_OK;
}
// Retrieve the InputQPSettings blob via GetValue (VT_BLOB)
wil::unique_variant var;
RETURN_IF_FAILED(codecAPI->GetValue(&CODECAPI_AVEncVideoInputAbsoluteQPBlockSettings, &var));
RETURN_HR_IF(E_UNEXPECTED, var.vt != VT_BLOB || var.blob.cbSize < sizeof(InputQPSettings));
// Cast blob data to InputQPSettings
const InputQPSettings* settings = reinterpret_cast<const InputQPSettings*>(var.blob.pBlobData);
// Print QP value range and steps
printf("QP Min = %d\n", settings->minValue);
printf("QP Max = %d\n", settings->maxValue);
printf("QP Step = %u\n", settings->steps);
// Decode and print dataType enum
printf("QP Data Type = 0x%08X (", settings->dataType);
switch (settings->dataType)
{
case CODEC_API_QP_MAP_INT8: printf("INT8"); break;
case CODEC_API_QP_MAP_INT16: printf("INT16"); break;
case CODEC_API_QP_MAP_INT32: printf("INT32"); break;
case CODEC_API_QP_MAP_UINT8: printf("UINT8"); break;
case CODEC_API_QP_MAP_UINT16: printf("UINT16"); break;
case CODEC_API_QP_MAP_UINT32: printf("UINT32"); break;
default: printf("Unknown");break;
}
printf(")\n");
PropVariantClear(&var);
return S_OK;
}
Requisiti
| Requisito | Value |
|---|---|
| Client minimo supportato | Windows 11, build 26100 |
| Server minimo supportato | Windows Server 2025 |
| Header | Codecapi.h |