2013-05-29 51 views

回答

0

2級通用的解決方案:

  1. 使用純軟件算法,可將YUV - > RGB。
  2. 使用3D着色器硬件來完成YUV→RGB轉換。

另外,問題是否這是最佳方法(即,這意味着您正在解碼軟件中的視頻) - 你應該這樣做嗎?硬件能否處理它(並同時顯示)?

+0

_USE 3D渲染硬件做重型轉換YUV - > RGB._ 我用glTexSubImage2D使用着色器嘗試過。它甚至比軟件YUV-> RGB轉換慢。當屏幕的某些部分來自一個畫面而另一個畫面來自另一個畫面時(也許是由於延遲),我在高清視頻中看到了人爲因素。我聽說glTexSubImage2D本身不是很慢,因爲它使用從RAM複製紋理數據到GPU內存(但我可能是錯的)。 – ildaronline

+0

_使用純軟件算法來轉換YUV - > RGB._ 這個原理使用CPU,這對我來說是不可察覺的,因爲我也同時使用ffmpeg來解碼來自視頻的幀。 – ildaronline

+0

你使用什麼樣的硬件?這可能會影響速度。 –

0

在OpenCV中,你可以做到這一點

cv::Mat myuv(height + height/2, width, CV_8UC1, (unsigned char *) mem); 
cv::Mat bgr(width, height, CV_8UC3); 
cv::cvtColor(myuv, bgr, CV_YUV420sp2RGB, 3);