【HarmonyOS NEXT】视频硬解如何将PPS和SPS数据设置到解码器中

【关键字】

视频硬解 / 解码器 / PPS / SPS / annexb

【问题描述】

OpenHarmony / multimedia_av_codec的仓库地址:https://gitee.com/openharmony/multimedia_av_codec/blob/master/

info.flags = AVCODEC_BUFFER_FLAGS_NONE;
if (isFirstFrame_) {
info.flags = AVCODEC_BUFFER_FLAGS_CODEC_DATA;
isFirstFrame_ = false;
}int32_t ret = OH_VideoDecoder_PushInputData(videoDec_, index, info);

1、每个关键帧前,都必须需要设置AVCODEC_BUFFER_FLAGS_CODEC_DATA吗?有没有统一的解码器PPS、SPS信息设置的API调用?

2、PPS/SPS数据和视频帧数据都只能通过OH_VideoDecoder_PushInputData设置吗?AnnexB格式的关键帧packet前面都会带有PPS/SPS数据,那这种情况如何处理?

3、每个关键帧调用OH_VideoDecoder_PushInputData,都必须设置AVCODEC_BUFFER_FLAGS_CODEC_DATA吗?如果视频流中清晰度发生变化,会受到一个OnStreamChanged的回调,这个是解码器的内部检测逻辑触发的,是否依赖AVCODEC_BUFFER_FLAGS_CODEC_DATA标志?

4、对于annexb格式的码流,在OH_VideoDecoder_PushInputData的时候,是否需要设置AVCODEC_BUFFER_FLAGS_CODEC_DATA?

【解决方案】

1、可使用OH_VideoDecoder_PushInputData 来传递。

可参考文档描述:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/_video_decoder-0000001774281286#ZH-CN_TOPIC_0000001811318310__oh_videodecoder_pushinputdata

使用方法可参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/video-decoding-0000001822282761

2、关键帧上的PPS/SPS可以和关键帧一起传进去。

3、AVCODEC_BUFFER_FLAGS_CODEC_DATA可以设置一次,也可以设置多次比如flush之后要重新传。清晰度发生变化,会受到一个OnStreamChanged的回调,不依赖VCODEC_BUFFER_FLAGS_CODEC_DATA标志。

4、对于annexb格式的码流,在OH_VideoDecoder_PushInputData的时候需要设置AVCODEC_BUFFER_FLAGS_CODEC_DATA。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值