ios下QT调用c++与object-c混合编程硬解码ffmpeg

                                                            

 第一次写博客心情好激动。。。。

       大家都知道QT跨平台,在QT下写了一个解码FFMPEG的案例,能显示,但是性能不好。用的是FFMPEG那套大家都知悉的软解码。

      ios硬解码多的是object-c写的,(我基本没有看到有c++写的),这就很坑爹了。。。因为本人工程就是QTc++!!!

然后硬着头皮看了一下各种莫名其妙符号的object-c;摸索了一下怎么在QT里面写oc的代码,没想到成功了!!!

来,上代码分析:(怎么贴图啊 ,哈哈,尴尬)首先记录一下oc编程,然后记录c++调用oc,最后记录怎么qt下实现ios硬解码

内容挺多,慢慢来看。。。

      c++与o混合编程,你需要将文件名称定义为:*.mm

 然后在.mm文件里面,写下你要的oc类:

 @interface OCClass : NSObject
-(void) receivedRawVideoFrame: (NSString *)path ;
-(void) createDecompSession;
@property (nonatomic, copy) VideoDecodeCompleteBlock completeBlock;
-(BOOL)initH264Decoder ;
- (BOOL)readStream;
@property VTDecompressionSessionRef decodeSession;
@property CMFormatDescriptionRef  formatDescription;
@property CVPixelBufferRef pixelBuffer;
@property   uint8_t *buffer;
@property   long bufferSize;
@property   long maxSize;
- (void)setupDecodeSession;
-(CVPixelBufferRef)decode;
@property uint8_t *frame_buffer;
@property long frame_size;
@property long sps_size;
@property uint8_t *pps_buffer;
@property long pps_size;
@property uint8_t *sps_buffer;
@property (nonatomic, strong) NSInputStream *inputStream;
@end
写惯c++的是看起来很别扭对吧, @interface OCClass : NSObject这个就是c++中定义一个类继承自NSObject

@property 后面定义成员变量,可以跟c++或者oc的类型都可以。。。注意!!!!坑爹的是使用,你需要加_成员变量,

例如你需要用pps_buffer这个变量,实际上应该写_pps_buffer;- (void)setupDecodeSession;-代表非静态方法;

oc里面的类对象都只能是new出来的。类定义后面需要加@end;@这个在oc很常见,例如区分c++字符串的时候;

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值