---
title: ve编码参数xml配置使用指南
subtitle:
author: Allwinner
changelog:
- ver: 1.0
date: 2023.12.29
author: 陈亦斌
desc: |
初稿
---
# 概述
## 背景介绍
在一些场景下,如画质调节,存在编码方案在编码过程能够动态调整参数的需求。
### 编写目的
指导基于ve_param_x.xml文件,如何进行参数的配置和使用。
## 适用范围
AW系列编码方案。
## 相关人员
编码相关产品的开发人员及技术支持人员。
# xml文件内容解释
举例,有xml文件ve_param_0.xml,配置内容如下:
```xml
```
## xml文件路径
1. xml文件默认路径是/etc目录,默认文件名ve_param_[n].xml,eg. /etc/ve_param_0.xml
2. 用户可以自己修改路径,方法如下:
- 在tmp目录下创建文件ve_param_file_path.conf,eg. touch ve_param_file_path.conf
- 把xml路径和前缀输入到conf文件中,如 echo /tmp/ve_param_ > ve_param_file_path.conf。注意不需要输入完整的文件名,只输入前缀,这样是为了能够匹配到所有通道。
下次push xml文件就push到自己指定的路径中即可,eg. adb push ve_param_0.xml /tmp
## 文件名中的数字后缀
快起和非快起区别如下:
1. 在长电方案即非快起,表示第几通道,只是简单的増序id(非vipp num),如ve_param_4.xml表示要设置第四个通道的参数;
2. 在快起方案,表示第几通道,同时也代表了是哪个vipp num,如ve_param_4.xml表示第4通道,同时也表示vipp_num是4。
## tag中的status属性
1. on,表示要设置该tag中的参数
2. off,表示不需要设置
## tag中的static和dynamic属性
1. tag在static范围内的内容,在编码初始化的时候才会进行解析,会把用户设置的参数修改为xml中的内容;
2. tag在dynamic范围内的内容,在编码过程中进行解析,解析完后会自动给文件名添加后缀_used,表示已经解析过了,eg: ve_param_0_used.xml。
如需再次设置请重新push xml文件到/etc目录或者自己修改的目录中,或者直接mv ve_param_0_used.xml ve_param_0.xml后再次使用
## 如何在代码中自己添加参数设置
请搜索关键函数check_ve_param_file去查看例子,简单概述如下:
1. xml文件添加tag和键值对,如
```xml
```
2. 代码start_parse_tag函数中添加相应的tag字符串比对,并把值赋值给对应添加的参数成员,同时设置参数到编码器中。
```c
if (strcmp(tag_name, "frame_rate") == 0) {
for (unsigned int i = 0; attr[i]; i += 2) {
parse_frame_rate_param(ve_param, attr, i);
}
VencSetParameter(pVideoEnc, VENC_IndexParamFramerate, &ve_param->fps);
}
```
具体请查看对应函数代码
# 使用方式
以上面的ve_param_0.xml文件为例子,另改变了xml文件路径到tmp目录。
1. 首先在tmp目录创建ve_param_file_path.conf,并echo 文件路径进去,如下
```shell
root@TinaLinux:/tmp# touch ve_param_file_path.conf
root@TinaLinux:/tmp# echo /tmp/ve_param_ > ve_param_file_path.conf
root@TinaLinux:/tmp# cat ve_param_file_path.conf
/tmp/ve_param_
```
2. 确认好哪些参数需要配置的,把status改为on,然后把文件ve_param_0.xml,用adb或者其他方式,放置到tmp目录
```shell
adb push .\ve_param_0.xml tmp
```
3. 运行demo/app,编码器初始化的时候会配置xml中tag 为static并status 为on的内容,编码过程中会配置xml中tag 为dynamic并status 为on的内容。