This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA2E:在从 YUV 到 RGB 的 OpenGL API 中、TDA2E:图像亮度损失,。

Guru**** 2535750 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/884751/tda2e-tda2e-loss-of-image-brightnes-in-opengl-api-from-yuv-to-rgb

器件型号:TDA2E

您好!

在 Vision SDK 版本中:2.8、  

输入格式为 YUV420、像素为全范围(0~255)、我们需要使用 GPU OpenGL API System_eglSetupYuvTexSurface、 预期输出为全范围(0~255)的 RGB 格式像素。  

这意味着: 当 YUV 切换到 RGB 时,范围被剪切。

我们通过以下方式进行检查:  

在函数将 YUV 图像包装为 GL_纹 理_external_OES 格式的外部纹理后、
纹理采样器采样的颜色异常。
 
输入值大于235的通道在采样后被采样到255、而值小于15的通道被削波到0。

功能如下所示:

静态 GLuint System_eglSetupYuvTexSurface (System_EglObj * pObj、System_EglTextProperty * pProp、void * bufAddr、int Texindex)

   EGLint 属性[32];
   int attrIdx;
   PFNEGLCREATEIMAGEKHRPROC eglCreateImageKHR;
   PFNGLEGLIMAGETTEXURE2DOESPROC glEGLImageTargetTexture2DOES;
   attrIdx = 0;
   ATTR[attrIdx++]= EGL_GL_VIDEO_FourCC_TI;
   ATTR[attrIdx+]= FourCC_STR ("NV12");
   ATTR[attrIdx++]= EGL_GL_VIDEO_WIDTH_TI;
   attr[attrIdx++]= pProp->width;
   ATTR[attrIdx++]= EGL_GL_VIDEO_HEATE_TI_;
   attr[attrIdx++]= pProp->高度;
   ATTR[attrIdx++]= EGL_GL_VIDEO_BYTE_STRIDE_TI;
   attr[attrIdx++]= pProp->piting[0];
   ATTR[attrIdx++]= EGL_GL_VIDEO_BYTE_SIZE;
   if (pProp->dataForm=system_DF_YUV420SP_UV)
   {
       ATTR[attrIdx+]=(pProp->pitch[0]* pProp->height * 3)/2;
   }
   其他
   {
       INFO (" EGL:错误:不支持的数据格式(%d)!!!\n"、pProp->dataFormat);
       断言(0);
   }
   ATTR[attrIdx+]= EGL_GL_VIDEO_YUV_FLAGS_TI;
   ATTR[attrIdx+]= EGLIMAGE_FLAGS_YUV_ENTIATE_RANGE | EGLIMAGE_FLAGS_YUV_BT601;
   ATTR[attrIdx++]= EGL_NONE;

   eglCreateImageKHR =
       (PFNEGLCREATEIMAGEKHRPROC) eglGetProAddress("eglCreateImageKHR");
   glEGLImageTargetText2DOES =
       (PFNGLEGLIMAGETRGETTEXURE2DOESPROC) eglGetProcAddress ("glEGLImageTargetTexture2DOES");
   pObj->texImg[Texindex]= eglCreateImageKHR()
                               pObj->display、
                               EGL_NO_Context、
                               EGL_RAW_VIDEO_TI、
                               bufAddr、
                               属性
                             );
  System_eglCheckEglError ("eglCreateImageKHR"、EGL_true);
  if (pObj->teximg[Texindex]== EGL_NO_IMAGE_KHR){
      INFO (" EGL:错误:eglCreateImageKHR 失败!!!\n");
      返回-1;
  }
  格网格纹理(1、&pObj->TexYuv[Texindex]);
  System_eglCheckGlError ("eglCreateImageKHR");
  glBindTexture (GL_纹 理_外部_OES、pObj->texYuv[纹理]);
  System_eglCheckGlError ("glBindTexture");
  GlTextParameteri (GL_turete_external_OES、GL_turete_min_filter、GL_linear_linear);
  GlTextParameteri (GL_turete_external_OES、GL_turete_mag_filter、GL_linear);
  System_eglCheckGlError ("glTexParameteri");
  glEGLImageTargetTexture2DOES (GL_Texture_external_OES、(GLeglImageOES) pObj->TexImg[Texindex]);
  System_eglCheckGlError ("glEGLImageTargetTexture2DOES");
  pObj->bufAddr[Texindex]= bufAddr;
  返回0;
我们将进行一项测试 、将 EGLIMAGE_FLAGS_YUV_ENABLE_RANGE 更改为 EGLIMAGE_FLAGS_YUV_FULL_RANGE、 测试正在进行中。
它能解决这个问题吗?  是否需要编辑其他代码??

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    坏消息:

    我们使用  EGLIMAGE_FLAGS_YUV_FULL_RANGE,但它的剂量不起作用。

    现在、探测变得简单:

    OpenGL 获得255全范围图像。 凸轮如何使它也放置全范围图像。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、user6175115、

    通过 YUV->RGB 通过有限纹理进行 YUV_full_range 颜色转换时、您是否看到了 YUV_range 颜色转换?

    版本是 VISION SDK 2.8吗?

    谢谢、

    Gowtham

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Fan、

    您能否检查 系统中使用的 omap5-SGX-DDK-um-Linux 的提交 ID?

    我猜,这是 5603baba7b8a88173f3652c8e949c0458601e6b (来自 meta-glsdk/metepeta-graphics/libgles/omap5-SGX-DDK-um-linux_1.9.0.12.bbappend)。

    SGX-um 二进制文件已更新、在 DDK1.9中提供了 YUV 全范围支持、但请注意、全范围是默认范围、您无法配置一致的范围。

    请参阅此提交

    https://git.ti.com/cgit/graphics/omap5-sgx-ddk-um-linux/commit/?h=dra7/k3.14&id=7ac19e76160b132bc3d2c3024d9711e594013e2a

    请将 SGX-um 升级到最新提交。

    谢谢

    RamPrasad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们将库替换为提交显示、但它也不起作用。
    我们保留 func System_eglSetupYuvTexSurface。  它是否真的需要更改?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Fan、

    此问题是否仍然存在? 我们目前在 visionSDK3.08上、我没有 visionSDK2.8 (内核3.14)的设置。

    我需要一些时间来设置此代码并将您的用例文本。

    我建议的修复似乎仅适用于陆地显示类型、而 VisionSDK2.8似乎不支持 Weston。

    谢谢

    Ramprasad