如何使用Media Foundation在mp4标头中添加色彩空间信息?

时间:2019-07-04 09:45:22

标签: ms-media-foundation

尝试在MediaFoundation转码中添加色彩空间信息(主要/传输矩阵/变换功能)。

要在

上设置颜色相关的属性
  • MFCreateSinkWriterFromURL(..,..,pAttributes,..)
  • IMFSample*IMFSinkWriter::WriteSample()

只有Nvidia的输出mp4标头上有颜色标签,而AMD和Intel没有。

如何为这两个供应商添加颜色标签?

1 个答案:

答案 0 :(得分:0)

拦截缓冲区,并将带有颜色标签的vui参数插入sps标头中。

  1. 创建文件接收器包装器,该文件接收器包装器由MFCreateMPEG4MediaSink在内部创建实际的文件接收器。

  2. MF_MPEG4SINK_SPSPPS_PASSTHROUGH的属性TRUE设置为实际的媒体接收器。

  3. 执行IMFMediaSinkIMFStreamSink来挂接所有API。

  4. IMFStreamSink ::ProcessSample(__RPC__in_opt IMFSample *pSample)将获得编码器输出样本。

  5. 使用MFCreateSinkWriterFromMediaSink()和包装器创建SinkWriter。

  6. 运行时,从IMFSample* / IMFMediaBuffer* / BYTE*中提取原始缓冲区。按照h264或h265规范,用

    插入sps标头
    • 颜色说明存在,1
    • 颜色原色
    • 传输特性
    • 矩阵系数