QuickTime - AVID, опция ITU-R 601 (16-235) - PullRequest
1 голос
/ 31 июля 2009

Извините за мой английский

Мне нужно импортировать файл .mov, используя кодек AVID. В программе AVID Composer в настройках импорта можно настроить уровни цвета, установив параметры RGB (0-255) или 601 (16-235).

Как можно задать в коде эту опцию (601)?

Я пытался установить ее при настройке сеанса:

</p> <pre><code> 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) );

Но это не сработало.

1 Ответ

1 голос
/ 31 июля 2009

Извините, что сказал вам, но я боюсь, что нет возможности настроить эти параметры программно (по крайней мере, я не нашел способа сделать это), поскольку они относятся к кодеку AVID.

Возможно, вы сможете вызвать то же диалоговое окно настроек импорта, которое используется AVID Media Composer, но с помощью

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