本文主要是介绍【Codecs系列】AMBA CV22芯片编码流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
DATE: 2019-9-1
AMBA CV22编码流程:
- 建立netlink通信:目的是开启idsp,vdsp及其与arm之间的通信;
- 打开IAV和ucode设备;
- 系统初始化:IAV进入IDLE状态,进行Buffer,canvas和stream配置,IAV进入Preview状态。
- 设置编码参数:在启动编码配置静态编码参数(编码器类型设置,码率控制参数初始化,GOP初始化),编码启动之后设置动态参数(实时更改参数)。
- 启动编码:调用API即可(IAV_IOC_START_ENCODE);
- 启动获取码流线程:具体参考test_stream.c(单独调用情况下)
- 开始EFM送帧:采用EFM方式将YUV按帧送入vDSP中进行编码(为YUV/QP Matrix/码流BSB获取内存)
6.1. 为YUV获取内存,创建ME1/ME0文件
6.2. 获取一帧EFM帧,用于填YUV(IAV_IOC_EFM_REQUEST_FRAME)
6.3. 启动一帧EFM帧的编码(IAV_IOC_EFM_HANDSHAKE_FRAME),作用是设置一帧YUV内存到DSP中
6.4 ROI配置,采用stream sync。 - 写码流:调用IAV_IOC_QUERY_DESC, 将码流缓冲区BSB中的编码帧码流写到文件中。注意事项:码流获取可以采用阻塞获取,或者非阻塞获取。采用非阻塞获取情况下
这篇关于【Codecs系列】AMBA CV22芯片编码流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!