请原谅我的英语
我需要使用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 );