首页| 论坛| 消息

标题:Qt音视频开发13-视频解码线程基类的设计
作者:liudianwu
日期:2023-01-31 10:03
内容:

## 一、前言
这个解码线程基类的设计,是到目前为止个人觉得自己设计的最好的基类之一,当然也不是一开始就知道这样设计,没有个三五年的摸爬滚打以及社会的毒打,是想不到要这样设计的,一方面是要不断提炼各种视频类视频组件的共性作为局部变量,比如通用的参数有视频画面宽度videoWidth、视频画面高度videoHeight、视频画面帧率frameRate、视频旋转角度rotate、音频采样率sampleRate、音频通道数channelCount等。这些共性参数都是在疯狂实战的过程中提炼的,久而久之就出来了。
翻阅Qt源码本身,他里面也基本上都是这种设计思路,有个巨大的好处可以复用这些代码,子类只要继承了这个类,就能直接使用,不需要还在子类中写这些参数变量,函数接口只需要重载实现即可,重载实现了的就调用子类的实现,没有重载的就调用基类的实现,这也是为何c++如此流行的一个重要原因,封装、继承、多态这三大特性成就了c++。
基类的设计优点优势巨大,也不是没有缺点的,缺点就是有部分共性是大部分子类都有的,但是部分没有,或者部分子类没有去实现重载,所以使用的时候万一实例化的子类没有去实现对应接口,就算你调用了,可能没效果,因为默认是基类的,所以有的时候就会很纳闷为何明明调用了函数,但是没有效果,仔细跟进一查原来子类并没有去实现接口,可能该子类是本来就不需要这个接口。
## 二、效果图

## 三、体验地址
1. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
2. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
3. 个人作品:[https://blog.csdn.net/feiyangqingyun/article/details/97565652](https://blog.csdn.net/feiyangqingyun/article/details/97565652)
4. 体验地址:[https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g](https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g) 提取码:01jf 文件名:bin_video_demo/bin_linux_video。
## 四、相关代码
```cpp
void AbstractVideoThread::debug(const QString &head, const QString &msg, const QString &url)
{
if (debugInfo == 0) {
return;
}
//如果设置了唯一标识则放在打印前面
&n ..

回复 发表
主题 版块