From cb09fb77c5eb95cf6d255d30b98dc90c542173e7 Mon Sep 17 00:00:00 2001 From: zcy <290198252@qq.com> Date: Tue, 10 May 2022 00:05:45 +0800 Subject: [PATCH] no message --- client/webrtc_demo/src/cplaywidget.cpp | 73 +++++--------------------- client/webrtc_demo/src/cplaywidget.h | 3 +- client/webrtc_demo/src/main.cpp | 10 ++-- 3 files changed, 21 insertions(+), 65 deletions(-) diff --git a/client/webrtc_demo/src/cplaywidget.cpp b/client/webrtc_demo/src/cplaywidget.cpp index 730767c..216bda2 100644 --- a/client/webrtc_demo/src/cplaywidget.cpp +++ b/client/webrtc_demo/src/cplaywidget.cpp @@ -107,7 +107,7 @@ CPlayWidget::CPlayWidget(QWidget *parent):QOpenGLWidget(parent) { m_pTextureV = NULL; m_nVideoH = 0; m_nVideoW = 0; - mType = TYPE_YUV420P; + mType = TYPE_UNSET; } CPlayWidget::~CPlayWidget() { @@ -175,20 +175,13 @@ void CPlayWidget::initializeGL() initializeOpenGLFunctions(); glEnable(GL_DEPTH_TEST); - //???opengl??????????????????????????????? - //??????????????openGL???????(OpenGL Shading Language, GLSL)???????????, - // GLSL????????OpenGL???????????,?????GLSL???????????????????????? - //?????????????? ???? - m_pVSHader = new QOpenGLShader(QOpenGLShader::Vertex, this); - //??????????????? bool bCompile = m_pVSHader->compileSourceCode(vsrcyuv); if(!bCompile) { // todo ????????? } - //????????????? ????gpu??yuv?????rgb m_pFSHader = new QOpenGLShader(QOpenGLShader::Fragment, this); if(mType == TYPE_RGB32){ bCompile = m_pFSHader->compileSourceCode(fsrcrgb); @@ -201,33 +194,22 @@ void CPlayWidget::initializeGL() } if(!bCompile) { - // todo ????????? } #define PROGRAM_VERTEX_ATTRIBUTE 0 #define PROGRAM_TEXCOORD_ATTRIBUTE 1 - //????????????????? m_pShaderProgram = new QOpenGLShaderProgram; - //??????????????????????? m_pShaderProgram->addShader(m_pFSHader); - //???????????????????????? m_pShaderProgram->addShader(m_pVSHader); - //??????vertexIn???????ATTRIB_VERTEX,??????????????????????????? m_pShaderProgram->bindAttributeLocation("vertexIn", ATTRIB_VERTEX); - //??????textureIn???????ATTRIB_TEXTURE,??????????????????????????? m_pShaderProgram->bindAttributeLocation("textureIn", ATTRIB_TEXTURE); - //??????????????????????????? m_pShaderProgram->link(); - - //???????????? - m_pShaderProgram->bind(); - if(this->mType == TYPE_YUV420P){ initShaderYuv(); } @@ -237,86 +219,70 @@ void CPlayWidget::initializeGL() if(this->mType == TYPE_I420){ initShaderI420(); } - glClearColor(0.0,0.0,0.0,0.0);//???????? + glClearColor(0.0,0.0,0.0,0.0); } void CPlayWidget::resizeGL(int w, int h) { - if(h == 0)// ???????? + if(h == 0) { - h = 1;// ???????1 + h = 1; } - //??????? glViewport(0,0, w,h); } void CPlayWidget::paintGL() { -// if(!m_buffer) { -// return; -// } - if(mType == TYPE_YUV420P) + if(mType == TYPE_YUV420P) loadYuvTexture(); - if(mType == TYPE_RGB32){ + if(mType == TYPE_RGB32){ loadRgbTexture(); - } - if(mType == TYPE_I420){ + } + if(mType == TYPE_I420){ loadYuvTexture(); - } + } + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); return; } void CPlayWidget::initShaderYuv() { - //?????????????????tex_y, tex_u, tex_v????,?????????????????? textureUniformY = m_pShaderProgram->uniformLocation("tex_y"); textureUniformU = m_pShaderProgram->uniformLocation("tex_u"); textureUniformV = m_pShaderProgram->uniformLocation("tex_v"); - // ??????? static const GLfloat vertexVertices[] = { -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, }; - //???????? static const GLfloat textureVertices[] = { 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, }; - //????????ATTRIB_VERTEX??????????????? glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, vertexVertices); - //????????ATTRIB_TEXTURE????????????????? glVertexAttribPointer(ATTRIB_TEXTURE, 2, GL_FLOAT, 0, 0, textureVertices); - //????ATTRIB_VERTEX?????????,??????? glEnableVertexAttribArray(ATTRIB_VERTEX); - //????ATTRIB_TEXTURE?????????,??????? glEnableVertexAttribArray(ATTRIB_TEXTURE); - //????y,u,v???????? + m_pTextureY = new QOpenGLTexture(QOpenGLTexture::Target2D); m_pTextureU = new QOpenGLTexture(QOpenGLTexture::Target2D); m_pTextureV = new QOpenGLTexture(QOpenGLTexture::Target2D); m_pTextureY->create(); m_pTextureU->create(); m_pTextureV->create(); - //???????y??????????????? id_y = m_pTextureY->textureId(); - //???????u??????????????? id_u = m_pTextureU->textureId(); - //???????v??????????????? id_v = m_pTextureV->textureId(); } void CPlayWidget::initShaderRgb() { - //?????????????????tex_y, tex_u, tex_v????,?????????????????? - //?????????????????? textureUniformRGB = m_pShaderProgram->uniformLocation("rgbdata"); - // ??????? static const GLfloat vertexVertices[] = { -1.0f, -1.0f, 1.0f, -1.0f, @@ -324,26 +290,18 @@ void CPlayWidget::initShaderRgb() 1.0f, 1.0f, }; - //???????? - static const GLfloat textureVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, }; - //????????ATTRIB_VERTEX??????????????? glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, vertexVertices); - //????????ATTRIB_TEXTURE????????????????? glVertexAttribPointer(ATTRIB_TEXTURE, 2, GL_FLOAT, 0, 0, textureVertices); - //????ATTRIB_VERTEX?????????,??????? glEnableVertexAttribArray(ATTRIB_VERTEX); - //????ATTRIB_TEXTURE?????????,??????? glEnableVertexAttribArray(ATTRIB_TEXTURE); - //????y,u,v???????? m_pTextureRGB = new QOpenGLTexture(QOpenGLTexture::Target2D); m_pTextureRGB->create(); - //???????y??????????????? id_rgb = m_pTextureRGB->textureId(); } @@ -387,7 +345,6 @@ int CPlayWidget::loadYuvTexture() return 0; glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, id_y); -// glPixelStorei(GL_UNPACK_ROW_LENGTH, m_buffer->StrideY()); glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, @@ -417,7 +374,7 @@ int CPlayWidget::loadYuvTexture() glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - // v + // v分量 glActiveTexture(GL_TEXTURE2);//???????????GL_TEXTURE2 glBindTexture(GL_TEXTURE_2D, id_v); // glPixelStorei(GL_UNPACK_ROW_LENGTH, m_buffer->StrideV()); @@ -434,9 +391,7 @@ int CPlayWidget::loadYuvTexture() glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glUniform1i(textureUniformY, 0); - //???u??????????? glUniform1i(textureUniformU, 1); - //???v??????????? glUniform1i(textureUniformV, 2); return 0; } @@ -480,7 +435,7 @@ int CPlayWidget::loadRtcI420Texture() glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - // v + // v分量 glActiveTexture(GL_TEXTURE2);//???????????GL_TEXTURE2 glBindTexture(GL_TEXTURE_2D, id_v); glPixelStorei(GL_UNPACK_ROW_LENGTH, m_buffer->StrideV()); @@ -497,9 +452,7 @@ int CPlayWidget::loadRtcI420Texture() glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glUniform1i(textureUniformY, 0); - //???u??????????? glUniform1i(textureUniformU, 1); - //???v??????????? glUniform1i(textureUniformV, 2); return 0; } diff --git a/client/webrtc_demo/src/cplaywidget.h b/client/webrtc_demo/src/cplaywidget.h index 943c772..86298e0 100644 --- a/client/webrtc_demo/src/cplaywidget.h +++ b/client/webrtc_demo/src/cplaywidget.h @@ -34,6 +34,7 @@ public: TYPE_YUV420P, TYPE_RGB32, TYPE_I420, + TYPE_UNSET, }IMG_TYPE; CPlayWidget(QWidget* parent); ~CPlayWidget(); @@ -59,7 +60,7 @@ private: GLuint id_rgb; GLuint id_y; GLuint id_u; - GLuint id_v; //v��������ID + GLuint id_v; QOpenGLTexture* m_pTextureRGB; //RGB diff --git a/client/webrtc_demo/src/main.cpp b/client/webrtc_demo/src/main.cpp index 5804837..f91d036 100644 --- a/client/webrtc_demo/src/main.cpp +++ b/client/webrtc_demo/src/main.cpp @@ -5,6 +5,11 @@ #include "video_capturer_test.h" #include #include +#include +#include +#include +#include + #include "modules/video_capture/video_capture_factory.h" #include "rtc_base/logging.h" #include "video_capture.h" @@ -15,7 +20,6 @@ #include "rtc_base/ssl_adapter.h" #include "rtc_base/win32_socket_init.h" #include "rtc_base/win32_socket_server.h" -#include #include "absl/memory/memory.h" #include "absl/types/optional.h" @@ -41,11 +45,9 @@ #include "rtc_base/logging.h" #include "rtc_base/ref_counted_object.h" #include "rtc_base/rtc_certificate_generator.h" -#include #include "api/video/i420_buffer.h" #include "signal_client.h" -#include -#include + #pragma comment (lib,"advapi32.lib")