一、RKMPP整个解码流程简单介绍一下:
1. 创建 MPP context 和 MPP api 接口。 (注意,和RGA一样,多个线程多个实例需要多个独立的的context)
- ret = mpp_create(&ctx, &mpi);
-
- if (MPP_OK != ret) {
-
- mpp_err("mpp_create failed\n");
-
- goto MPP_TEST_OUT;
-
- }
2. 设置一些MPP的模式(这里设置的是 MPP_DEC_SET_PARSER_SPLIT_MODE)
- mpi_cmd = MPP_DEC_SET_PARSER_SPLIT_MODE;
-
- param = &need_split;
-
- ret = mpi->control(ctx, mpi_cmd, param);
-
- if (MPP_OK != ret) {
-
- mpp_err("mpi->control failed\n");
-
- goto MPP_TEST_OUT;
-
- }
常用设置的一些模式解释如下:(其余的可以看MPP自带的开发文档,在doc目录下有详细说明)MPP_DEC_SET_PARSER_SPLIT_MODE : (仅限解码),自动拼包(建议开启),硬编解码器每次解码就是一个Frame,所以如果输入的数据不确定是不是一个Frame(例如可能是一个Slice、一个Nalu或者一个FU-A分包,甚至可能随意读的任意长度数据),那就必须把该模式打开,MPP会自动分包拼包成