2009-07-31 56 views
1

藉口,我的英語的QuickTime - AVID,ITU-R 601(16-235)選項

我需要使用AVID編解碼器導入的.mov文件。 在導入設置中的AVID Composer程序中,可以通過安裝選項RGB(0-255)或601(16-235)來自定義色階。

如何在代碼中設置此選項(601)?

我試着設置會話時設置了:

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)); 

但沒有奏效。

+0

如果你要解決的問題是從你也許可以解壓縮會議收到「601(16-235)」數據通過從解壓縮會話請求YUV數據來完成此操作。看看我的'編輯'如何做到這一點... – Bjoern 2009-12-16 10:05:51

回答

1

對不起,是一個告訴你,但我怕沒有辦法配置這些設置編程(至少我發現沒有辦法做到這一點),因爲它們是AVID編解碼器特定。

您也許能夠調用由AVID媒體作曲家使用的相同的導入設置對話框,雖然使用

MovieImportDoUserDialog() 

API函數。

編輯

這可能是太明顯了,但你嘗試過簡單地通過在源幀描述詞典中的像素格式類型鍵設置爲YUV像素格式要求從減壓會話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); 
+0

你能解釋它是如何做到的嗎? – Vitaliy 2009-08-06 13:31:44