Qt音视频开发13-视频解码线程基类的设计

一、前言

这个解码线程基类的设计,是到目前为止个人觉得自己设计的最好的基类之一,当然也不是一开始就知道这样设计,没有个三五年的摸爬滚打以及社会的毒打,是想不到要这样设计的,一方面是要不断提炼各种视频类视频组件的共性作为局部变量,比如通用的参数有视频画面宽度videoWidth、视频画面高度videoHeight、视频画面帧率frameRate、视频旋转角度rotate、音频采样率sampleRate、音频通道数channelCount等。这些共性参数都是在疯狂实战的过程中提炼的,久而久之就出来了。

翻阅Qt源码本身,他里面也基本上都是这种设计思路,有个巨大的好处可以复用这些代码,子类只要继承了这个类,就能直接使用,不需要还在子类中写这些参数变量,函数接口只需要重载实现即可,重载实现了的就调用子类的实现,没有重载的就调用基类的实现,这也是为何c++如此流行的一个重要原因,封装、继承、多态这三大特性成就了c++。

基类的设计优点优势巨大,也不是没有缺点的,缺点就是有部分共性是大部分子类都有的,但是部分没有,或者部分子类没有去实现重载,所以使用的时候万一实例化的子类没有去实现对应接口,就算你调用了,可能没效果,因为默认是基类的,所以有的时候就会很纳闷为何明明调用了函数,但是没有效果,仔细跟进一查原来子类并没有去实现接口,可能该子类是本来就不需要这个接口。

二、效果图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/feiyangqingyun/article/details/128812406