mpp_decoder 参考 demo
以下 demo 为基本流程调用,具体实现可以参考代码
mpp/mpp_test/picture_decoder_test.c
//* 1.创建 mpp_decoder 对象 struct mpp_decoder* dec = mpp_decoder_create(type); struct decode_config config; config.bitstream_buffer_size = (file_len + 1023) & (~1023); config.extra_frame_num = 0; config.packet_count = 1; config.pix_fmt = MPP_FMT_ARGB_8888; //* 2. 初始化 mpp_decoder mpp_decoder_init(dec, &config); //* 3. 获取一个空的 packet struct mpp_packet packet; memset(&packet, 0, sizeof(struct mpp_packet)); mpp_decoder_get_packet(dec, &packet, file_len); //* 4. 把视频码流数据拷贝到 packet fread(packet.data, 1, file_len, fp); packet.size = file_len; packet.flag = PACKET_FLAG_EOS; //* 5. 归还 packet mpp_decoder_put_packet(dec, &packet); //* 6. 解码该笔码流数据 mpp_decoder_decode(dec); //* 7. 获取解码后视频帧数据 struct mpp_frame frame; memset(&frame, 0, sizeof(struct mpp_frame)); mpp_decoder_get_frame(dec, &frame); //* 8. 显示该视频帧 // render_frame... //* 9. 归还该视频帧 mpp_decoder_put_frame(dec, &frame); //* 10. 销毁 mpp_decoder mpp_decoder_destory(dec);