2013-06-19 76 views
0

想視頻流從攝像頭轉換。該視頻流稱爲HDYC。我認爲這有點特別,所以我現在沒有控制。我怎麼活視頻流​​從YUV(HDYC)轉換爲RGB

我的問題是如何在格式C++爲rgb使用的ffmpeg轉換?但有一些限制。 我不想製作一個文件。在其他情況下,它需要轉換攝像頭的視頻流。也是一個實時操作。

謝謝。

回答

0

我不知道爲什麼你標記,因爲HDYCUYVY像素格式,佈局和子採樣一番風味,只是ITU-R Rec. 709定義的色彩空間。

所以你的問題是你如何轉換BT.709 YUV與FFmpeg的爲RGB。 FFmpeg的libswscale可以做到這一點:其sws_scale會進行轉換,而且其sws_setColorspaceDetails讓你提供的變換顏色空間的細節。

/** 
* Scale the image slice in srcSlice and put the resulting scaled 
* slice in the image in dst. A slice is a sequence of consecutive 
* rows in an image. 
[...] */ 
int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[], 
       const int srcStride[], int srcSliceY, int srcSliceH, 
       uint8_t *const dst[], const int dstStride[]); 

/** 
[...] 
* @param table the yuv2rgb coefficients describing the output yuv space, normally ff_yuv2rgb_coeffs[x] 
[...] */ 
int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], 
          int srcRange, const int table[4], int dstRange, 
          int brightness, int contrast, int saturation);