请原谅我的英语

我需要使用AVID编解码器导入.mov文件。
在导入设置的AVID Composer程序中,可以通过安装选项RGB(0-255)或601(16-235)来自定义颜色级别。

如何在代码中设置此选项(601)?

我在设置 session 时尝试设置她:

    long lwidth;
    CHECK_FAILED( m_pMt->get_Pixels(&lwidth) );
    SInt32 width = lwidth;
    number = CFNumberCreate( NULL, kCFNumberSInt32Type, &width );
    CFDictionaryAddValue( pixelBufferAttributes, kCVPixelBufferWidthKey, number );
    CFRelease( number );

    long lheight;
    CHECK_FAILED( m_pMt->get_Lines(&lheight) );
    SInt32 height = lheight;
    number = CFNumberCreate( NULL, kCFNumberSInt32Type, &height );
    CFDictionaryAddValue( pixelBufferAttributes, kCVPixelBufferHeightKey, number );
    CFRelease( number );

    double gamma = 2.199997;
    // Always seems to equal 2.5 for RGB colorspaces and 2.199997 for YUV
    number = CFNumberCreate( NULL, kCFNumberDoubleType, &gamma );
    CFDictionaryAddValue( pixelBufferAttributes, kCVImageBufferGammaLevelKey, number );
    CFRelease( number );

    CFDictionaryAddValue(pixelBufferAttributes, kCVImageBufferYCbCrMatrixKey, kCVImageBufferYCbCrMatrix_ITU_R_601_4);

    CHECK_OSSTATUS( ICMDecompressionSessionCreate(NULL, imageDesc, NULL, pixelBufferAttributes, &trackingCallbackRecord, &m_decompressionSession) );

但这没有用。

最佳答案

抱歉,告诉您,但是由于它们是特定于AVID编解码器的,因此无法以编程方式配置这些设置(至少我没有找到方法)。

但是,您可以使用AVID Media Composer调用相同的导入设置对话框。

MovieImportDoUserDialog()

API函数。

编辑:

这可能太明显了,但是您是否尝试通过将源帧描述字典中的像素格式类型键设置为YUV像素格式来简单地从解压缩 session 中请求YUV数据?

您可以通过在代码中添加以下代码块来做到这一点:
// request YUV 8 Bit 4:2:2 output from the decompression session
SInt32 pixel_format = k2vuyPixelFormat; // this should be '601 (16-235)' by definition
number = CFNumberCreate( NULL, kCFNumberSInt32Type, & pixel_format );
CFDictionaryAddValue( pixelBufferAttributes, kCVPixelBufferPixelFormatTypeKey, number );
CFRelease( number );

10-05 23:14