Как добавить информацию о цветовом пространстве в заголовок mp4 с помощью Media Foundation? - PullRequest
0 голосов
/ 04 июля 2019

Попытка добавить информацию о цветовом пространстве (основная / матрица передачи / функция преобразования) в транскодировании MediaFoundation.

Чтобы установить атрибуты, связанные с цветом, на

  • MFCreateSinkWriterFromURL(..,..,pAttributes,..)
  • или от IMFSample* до IMFSinkWriter::WriteSample()

Только у Nvidia есть цветовая метка на выходном mp4-заголовке, но у AMD и Intel нет.

Как добавитьЦветная метка для этих двух поставщиков?

1 Ответ

0 голосов
/ 04 июля 2019

Перехватить буфер и вставить параметр vui с цветным тегом в заголовок sps.

  1. Создать оболочку приемника файла, которая внутренне создает фактический приемник файла с помощью MFCreateMPEG4MediaSink.

  2. Установите атрибут MF_MPEG4SINK_SPSPPS_PASSTHROUGH с TRUE для фактического приемника мультимедиа.

  3. Реализуйте IMFMediaSink и IMFStreamSink для перехвата всех API.

  4. IMFStreamSink ::ProcessSample(__RPC__in_opt IMFSample *pSample) получит выходную выборку датчика.

  5. Создайте SinkWriter, используя MFCreateSinkWriterFromMediaSink() с оберткой.

  6. При запуске извлеките необработанный буфер из IMFSample* / IMFMediaBuffer* /BYTE*.Следуйте спецификациям h264 или h265, чтобы вставить заголовок sps с

    • Описание цвета присутствует, 1
    • Основные цвета
    • Характеристики передачи
    • Коэффициенты матрицы
...