атрибут MFSampleExtension_VideoEncodeInputAbsoluteQPMap

Сохраняет карту абсолютных значений параметра квантизации (QP), предоставленных в качестве входных данных для MFT кодировщика.

Тип данных

МВФМедиаБаффер.

Замечания

Этот атрибут позволяет приложениям предоставлять указания видеокодировщику MFT путем указания различных значений параметра квантизации (QP) для разных частей видеокадры. Например, приложение видеоконференции может знать, какие части видеокадры отображают лицо человека, и он может использовать этот API, чтобы попросить кодировщика использовать меньшие значения QP при кодировании этих частей видеокадры.

Предполагая, что видео разрешение 1920x1080 закодировано стандартом HEVC, а поддерживаемый абсолютный размер блока QP — 32x32. Существует 60x34 таких блоков. Блоки будут упорядочены в основном порядке строк. В следующей таблице показан макет такой абсолютной карты QP.

Формат данных примера абсолютной карты QP

Используйте МВФAttributes::SetUnknown для подключения МВФMediaBuffer , содержащего абсолютные значения QP. Используйте МВФAttributes::GetUnknown для получения МВФMediaBuffer , содержащего абсолютные значения QP.

Абсолютные карты QP предоставляются для всего кадра одновременно. Если кодировщик использует несколько плиток или срезов, уровень плитки или кодирование уровня среза будет использовать внешние предоставленные абсолютные карты ввода QP на уровне кадра при выполнении такого кодирования на уровне плитки или среза.

Нет разделения значений QP с точки зрения Chroma или Luma. Значения QP будут применяться равномерно к Luma и Chroma Pixel.

Абсолютные карты QP предоставляют приложениям полный контроль над точным параметром квантизации для каждого региона кадра, эффективно позволяя приложению переопределить внутренний контроль скорости кодировщика в MFT. Эта возможность имеет решающее значение в динамических сценариях, таких как трансляции в прямом эфире с графическими наложениями или веб-каналами рисунков, где различные области кадра изменяются с одного момента на следующий. Использование только карт QP Delta может привести к артефактам, когда автоматические корректировки кодировщика не соответствуют требованиям к качеству приложения.

Одновременное использование разностного QP и абсолютного QP не поддерживается. Если абсолютная карта QP присоединена к МВФSample, любая разностная карта QP игнорируется кодировщиком MFT.

MFCreateDXGISurfaceBuffer можно использовать для упаковки ресурса GPU в МВФMediaBuffer.

Тип данных каждого элемента в абсолютной карте QP должен соответствовать указанному в поле dataType объекта InputQPSettings , переданного в большом двоичном объекте, полученном с свойством CODECAPI_AVEncVideoInputDeltaQPSettings .

Предоставление разностных значений QP может конфликтовать и иметь переопределение свойств скорости, таких как AVEncCommonMeanBitRate или CODECAPI_AVEncCommonMaxBitRate.

Кодировщик MFT, поддерживающий MFSampleExtension_VideoEncodeInputAbsoluteQPMap , также должен поддерживать CODECAPI_AVEncVideoInputDeltaQPSettings.

Примеры

В этом примере показано, как подключить разностную карту QP к объектам IMFSample , предоставляемым в качестве входных данных для MFT кодировщика. Входной параметр deltaQPBuffer представляет карту QP delta. Сведения о том, как записывать данные в буфер мультимедиа, см. в разделе "Работа с буферами мультимедиа".

#include <mfapi.h>
#include <mfobjects.h>
#include <wil/com.h>
#include <wil/result_macros.h>

// Function to set absolute QP values contained within an IMFMediaBuffer to an input sample.
// The function returns a failure code if the operation fails.
HRESULT SetAbsoluteQPForInputSample(
    _In_ IMFSample* inSample, 
    _In_ IMFMediaBuffer* absoluteQPBuffer // Input: IMFMediaBuffer contains absolute QP values
)
{
    RETURN_HR_IF_NULL(E_INVALIDARG, absoluteQPBuffer);
    RETURN_HR_IF_NULL(E_INVALIDARG, inSample);

    // Retrieve the sample attributes
    wil::com_ptr_nothrow<IMFAttributes> sampleAttributes;
    RETURN_IF_FAILED(wil::com_query_to_nothrow(inSample, &sampleAttributes));

    // Set the IMFMediaBuffer with the absolute QP map
    return sampleAttributes->SetUnknown(MFSampleExtension_VideoEncodeInputAbsoluteQPMap, absoluteQPBuffer);
}

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows 11, сборка 26100
Минимальный поддерживаемый сервер Windows Server 2025 г.
Header mfapi.h