簡體   English   中英

VideoToolBox可以控制RGB轉YUV矩陣嗎?

[英]Is it possible to control the conversion of RGB to YUV matrix in VideoToolBox?

我發現不同的 Iphone 硬件編碼器有不同的矩陣將輸入的 RGB 轉換為 YUV。也就是說,在函數 OSStatus VTCompressionSessionEncodeFrame(VTCompressionSessionRef session, CVImageBufferRef imageBuffer, CMTime presentationTimeStamp, CMTime duration, CFDictionaryRef frameProperties, void *sourceFrameRefcon, VTEncodeInfoFlags); *infoFlags imageBuffer格式為RGB,編碼前VideoToolBox會將RGB轉YUV發送給encoder。 硬件編碼器VideoToolbox的輸入參數中,只有kVTCompressionPropertyKey_YCbCrMatrix與顏色轉換相關,但該參數不控制輸入RGB轉YUV矩陣。 因為我嘗試輸入不同的值,它沒有改變。這導致解碼時無法匹配矩陣,從而導致色差。我在網上搜索了很長時間。 但是沒有用。 請幫助或嘗試提供一些想法如何實現這一點。

這個問題已經解決。 在VideoToolBox中設置kVTCompressionPropertyKey_PixelTransferProperties來控制RGB到YUV矩陣的轉換

    CFMutableDictionaryRef attrs = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
    CFDictionarySetValue(attrs, kVTPixelTransferPropertyKey_DestinationYCbCrMatrix, kCVImageBufferYCbCrMatrix_ITU_R_601_4);//kCVImageBufferYCbCrMatrix_ITU_R_709_2
    status = VTSessionSetProperty(_encoderSession, kVTCompressionPropertyKey_PixelTransferProperties, attrs);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM