OpenGLWidgetAPI.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "OpenGLWidgetAPI.h"
  2. #include "PlayerGLWidget.h"
  3. #include "spdlog/spdlog.h"
  4. /* 创建窗口,返回QWidget指针 */
  5. QWidget* createOpenGLWidget(QWidget* parent)
  6. {
  7. PlayerGLWidget* widget = new PlayerGLWidget(parent);
  8. if(widget == nullptr)
  9. {
  10. return nullptr; // 创建失败
  11. }
  12. return widget;
  13. }
  14. /* 销毁窗口 */
  15. void destroyOpenGLWidget(QWidget* widget)
  16. {
  17. if(widget == nullptr)
  18. {
  19. SPDLOG_ERROR("destroyOpenGLWidget: widget is nullptr");
  20. return;
  21. }
  22. PlayerGLWidget* playerWidget = qobject_cast<PlayerGLWidget*>(widget);
  23. if(playerWidget == nullptr)
  24. {
  25. SPDLOG_WARN("destroyOpenGLWidget: widget is not a PlayerGLWidget");
  26. return;
  27. }
  28. delete playerWidget;
  29. playerWidget = nullptr;
  30. widget = nullptr;
  31. }
  32. /* 刷新一帧RGBA图片 */
  33. void refreshRGBAImage(QWidget* widget, QImage& image)
  34. {
  35. if(widget == nullptr)
  36. {
  37. SPDLOG_ERROR("refreshRGBAImage: widget is nullptr");
  38. return;
  39. }
  40. PlayerGLWidget* playerWidget = qobject_cast<PlayerGLWidget*>(widget);
  41. if(playerWidget == nullptr)
  42. {
  43. SPDLOG_WARN("refreshRGBAImage: widget is not a PlayerGLWidget");
  44. return;
  45. }
  46. playerWidget->showOneRGBAImage(image);
  47. }
  48. /* 刷新一帧YUV420图片 */
  49. void refreshYUV420Image(QWidget* widget, Image_YUV420P* yuvData)
  50. {
  51. if(widget == nullptr)
  52. {
  53. SPDLOG_ERROR("refreshYUV420Image: widget is nullptr");
  54. return;
  55. }
  56. PlayerGLWidget* playerWidget = qobject_cast<PlayerGLWidget*>(widget);
  57. if(playerWidget == nullptr)
  58. {
  59. SPDLOG_WARN("refreshYUV420Image: widget is not a PlayerGLWidget");
  60. return;
  61. }
  62. if(yuvData == nullptr || !yuvData->isValid())
  63. {
  64. SPDLOG_WARN("refreshYUV420Image: yuvData is nullptr or invalid");
  65. return;
  66. }
  67. playerWidget->showOneYUV420Image(*yuvData);
  68. }