专栏底层软件J6X codec encoder sample

J6X codec encoder sample

新手村2026-08-19
16
0

1.功能概述

编码 yuv 图像,生成 h264/h265 视频或 jpg 图片。

1.1. 软件架构说明

采用MediaCodec的poll模式来解耦输入和输出,可使编码帧率性能达到最优。 在主线程中灌YUV数据:取出一个空的input buffer,配置YUV数据的地址信息(如phys addr),再queue input buffer并通知编码器处理该帧数据; 另一个线程取输出码流:通过select接收硬件编码完成通知,取出一个硬件填满输出码流的output buffer,将编码结果写到文件中后归还output buffer。

1.11.1.2. 硬件数据流说明

1.2. 硬件数据流说明

1.3. 代码位置及目录结构

sample代码位置在工程目录{sdk_dir}/test/samples/platform_samples/source/S83_Sample/S83E04_Module/codec_sample。

目录结构如下:

根目录包含Kconfig、codec_sample.sh和外部接口的makefile,Kconfig用于控制该demo是否加入整体编译;codec_sample.sh提供几种编解码执行脚本。

src目录下的makefile用于src目录下的编译。src目录下的sample.c是main入口的所在文件,sample_common包含了一些共用的api,sample_venc.c包含编码相关函数,sample_vdec.c包含解码相关函数。

2. 编译

2.1. 编译环境

本sample的编译环境使用SDK中的build工具,请参考: Build 环境建立

2.2. 编译说明

本sample主要依赖libmm提供的API头文件:

编译依赖的库有如下:

编译命令:

3. 运行

3.1. 支持平台

Matrix 6P/H

3.2. 板端部署及配置

刷写系统软件镜像后,本sample的可执行文件位于板端:/app/sample/S83_Sample/S83E04_Module/codec_sample/bin/。

可能需要用到的资源:

  • 执行脚本 codec_sample.sh 位于板端:/app/sample/S83_Sample/S83E04_Module/codec_sample/bin/;
  • 输入YUV图像可使用脚本或者用户自行准备。

3.3. 运行指南

3.3.1. 运行参数说明

codec_sample : 应用程序名字。

下面的表格是具体参数的说明:

参数名

用法

是否必需

-m

编码或解码,默认编码, 0: encoder 1: decoder

-c

编解码器类型,默认H264, 0:H264 1:H265 2:mjpg 3:jpg

-w

图像宽度,默认3840

-h

图像高度,默认2160

-p

编解码图像格式,默认nv12, 0:yuv420p 1:nv12 2:nv21

-n

测试线程数量,默认1个

-i

输入文件的路径,默认./input_${w}x${h}_${pixfmt}.yuv

-o

输出文件的路径,默认./output_${w}x${h}_${pixfmt}.{code_type}

-H

打印帮助信息

-u

指定硬件单元

3.3.2. 帮助菜单

3.3.3. 运行方法

输入源准备:

执行如下脚本,此脚本的作用是把测试用的源文件拷贝到/map/路径下,然后用-i指定文件路径;

用户也可以不执行脚本,自行准备源文件,拷贝到/map/路径下,然后用-i指定文件路径。

编码一路 3840x2160 的YUV图像序列,生成 H264 视频码流。

编码一路 1920x1080 的YUV图像序列,生成 H265 视频码流。

编码一张 1920x1088 的YUV图像,生成 jpg 图片。

编码两路 3840x2160 的YUV图像序列,生成 H265 视频。

编码四路 1920x1080 的YUV图像序列,生成 H265 视频。

VPU CROP读入并编码:将1920x1300(图像尺寸不满足对齐要求)输入按{x=200, y=300, w=1280, h=720}大小读入数据并编码生成 H265 视频。

上面的命令默认跑VPU或者JPU硬件核0,可通过-u 参数调整,加入-u 1表示指定运行VPU核1或者JPU核1,加入-u 2表示指定运行VPU核2或者JPU核2。

例如跑VPU核1,编码一路 3840x2160 的YUV图像序列,生成 H264 视频码流。

例如跑JPU核2,编码一张 1920x1088 的YUV图像,生成 jpg 图片。

3.3.4. 运行结果说明

如下图所示为运行成功:

查看生成的h264/h265/jpg是否正常:

底层软件
社区征文官方教程技术深度解析征程6
评论0
0/600