ffmpeg文档08-表达式计算/求值

8 表达式计算/求值

在计算表达式时,ffmpeg通过libavutil/eval.h接口调用内部计算器进行计算。

表达式可以包含一元运算符、运算符、常数和函数

两个表达式expr1expr2可以组合起来成为"expr1;expr2" ,两个表达式都会被计算,但是新表达式(组合起来的)值实为表达式expr2的值。

表达式支持的二元运算符有:+-*,/,^

一元运算符:+,-

以及下面的函数:

  • abs(x)

    返回x的绝对值.

  • acos(x)

    计算x反余弦 .

  • asin(x)

    计算x的反正弦.

  • atan(x)

    计算x反正切.

  • between(x, min, max)

    判断min<=x<=max是否成立,成立返回1,否则返回0.

  • bitand(x, y)

  • bitor(x, y)

    返回x和y按位与/或的值

    注意计算是作为整数的,转换为整数和转换回浮点数都会损伤精度。这可能造成意外结果(通常2^53和更大的数)

  • ceil(expr)

    返回大于expr的最接近整数,例如"ceil(1.5)" 返回"2.0".

  • clip(x, min, max)

    Return the value of x clipped between min and max.

  • cos(x)

    计算x的余弦.

  • cosh(x)

    计算x的双余弦.

  • eq(x, y)

    如果x==y返回1,否则为0 otherwise.

  • exp(x)

    计算指数x,(底数为e,即计算欧拉数(Euler’s number))

  • floor(expr)

    返回不大于expr的整数,例如 "floor(-1.5)" 为 "-2.0".

  • gauss(x)

    计算x的高斯(Gauss )函数值,即计算(-xx/2) / sqrt(2PI).

  • gcd(x, y)

    返回x和y的最大公约数,如果x和y为0或者任意数小于0则行为未定义。

  • gt(x, y)

    返回判断x>y的结果,符合则为1,否则为0

  • gte(x, y)

    返回判断x>=y的结果,符合则为1,否则为0

  • hypot(x, y)

    这个和C语言中的函数有相同名字和功能,相当于计算"sqrt(xx + yy)",是求长为x,宽为y的斜边长度(勾股定理)

  • if(x, y)

    判断x值,如果x值为非0,则返回y,否则返回0

  • if(x, y, z)

    判断x值,如果x值为非0,则返回y,否则返回z.

  • ifnot(x, y)

    判断x值,如果x值为0,则返回y,否则返回0

  • ifnot(x, y, z)

    判断x值,如果x值为0,则返回y,否则返回z.

  • isinf(x)

    如果x值是正负无穷则返回1.0.否则返回0.0

  • isnan(x)

    如果x是NAN则返回1.0,否则返回0.0

  • ld(var)

    加载预订的内部变量var对应值,其中值是利用st(var, expr)存储的

  • log(x)

    计算x的自然对数值

  • lt(x, y)

    返回x<y判断式值,符合为1,否则为0

  • lte(x, y)

    返回x<=y判断式值,符合为1,否则为0

  • max(x, y)

    返回x和y中的更大的值

  • min(x, y)

    返回x和y中的更小的值

  • mod(x, y)

    计算x%y

  • not(expr)

    如果expr==0则返回1,否则返回0

  • pow(x, y)

    计算"(x)^(y)".

  • print(t)

  • print(t, l)

    以日志层次l打印t,如果l没有定义则采用当前默认日志层次,返回打印内容。

  • random(x)

    返回一个0.0-1.0间的随机数,x是一个随机数种子。

  • root(expr, max)

    对于不同的输入计算表达式expr的值,直到max输入值。即依次取ld(x),x的值为0..max,把ld(x)值作为参数计算expr值

    表达式expr必须是一个连续函数,否则结果不定。

    ld(0)被用作expr表达式的参数,所以表达式可以依据不同的值计算多次。

  • sin(x)

    计算x的正弦

  • sinh(x)

    计算x的双曲正弦

  • sqrt(expr)

    计算x的平方根。相当于 "(expr)^.5".

  • squish(x)

    计算 1/(1 + exp(4*x)).

  • st(var, expr)

    对var变量在内部存储一个expr值,供以后使用,var范围为0-9.注意这些变量当前不能在表达式间共享

  • tan(x)

    返回x的正切.

  • tanh(x)

    计算x的双曲正切

  • taylor(expr, x)

  • taylor(expr, x, id)

    计算泰勒(Taylor)级数值。给出表达式(ld(id))在0阶的导数函数,即taylor(expr,x)=taylor(expr,x,0)

    如果级数不收敛,则结果是不确定的。

    ld(id)用来表示expr的导数阶,这意味着对给定的表达式,输入不同的值可以通过ld(id)进行多次计算。这里我们假定不是预设的0阶。

    注意当你用一个Y值替代默认的0时,相当于计算 taylor(expr, x-y)

  • time(0)

    返回当前时间,单位为秒

  • trunc(expr)

    返回expr最接近的(向0)整数,如"trunc(-1.5)" 值为 "-1.0".

  • while(cond, expr)

    当cond不为0时循环执行expr,直至cond为0

有如下一些常量:

  • PI

    单位圆周长与直径比,约3.14

  • E

    exp(1)计算值 (Euler’s 欧拉数),约2.718

  • PHI

    黄金分割比,(1+sqrt(5))/2计算值,约1.618

以及布尔运算,其中非0值表示"true"(真),以及运算符:

  • * 表示 AND 与操作

  • + 表示 OR 或操作

例如:
要表示 if (A AND B) then C

等效于if(A*B,C)

如果你了解C语言代码,其所有的一元和二元以及定义的常数均可用于表达式。

表达式也支持国际标准的单位前/后缀(定义),例如i附加在数值后,表示这个数值是基于1024而不是1000计算幂的,"B"表示"Byte",并可以附加一个单位前缀或者当地使用,例如允许KBMiBGB作为单位后缀。

下面的列表就是当前遵循的国际体系前缀列表,并给出了对应2的整10次方值:

y

10^-24 / 2^-80 

z

10^-21 / 2^-70 

a

10^-18 / 2^-60 

f

10^-15 / 2^-50 

p

10^-12 / 2^-40 

n

10^-9 / 2^-30 

u

10^-6 / 2^-20 

m

10^-3 / 2^-10 

c

10^-2 

d

10^-1 

h

10^2 

k

10^3 / 2^10 

K

10^3 / 2^10 

M

10^6 / 2^20 

G

10^9 / 2^30 

T

10^12 / 2^40 

P

10^15 / 2^40 

E

10^18 / 2^50 

Z

10^21 / 2^60 

Y

10^24 / 2^70 

转载于:https://www.cnblogs.com/xdsnet/p/5196483.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么手机游戏手柄没有流行起来?

问答社区知乎上有人提了一个问题&#xff0c;“为什么手机用游戏手柄没有流行&#xff1f;” Ta找了不少论证&#xff1a;1&#xff09;手机用户数量很大&#xff1b;2&#xff09;大量用户在手机上花费最多时间的是玩游戏&#xff1b;3&#xff09;游戏机平台&#xff08;的游…

c++排序算法ppt_C/C++学习教程:C语言排序算法—插入排序算法

前言&#xff1a;插入排序算法是所有排序方法中最简单的一种算法&#xff0c;其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中&#xff0c;最终得到的序列就是已经排序好的数据。直接插入排序是插入排序算法中的一种&#xff0c;采用的方法是&#xff1a;在…

python函数参数

1.位置参数 2.默认参数 指向参数为不可变对象 3.可变参数 **args 一个列表list或是元组tuple 4.关键字参数 **kw,是一个字典dict 5.命名关键字参数 *, 转载于:https://www.cnblogs.com/aliy-pan/p/5198025.html

Python 常用函数 configparser模块

使用ConfigParser模块读写ini文件 ConfigParserPython的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。模块所解析的ini配置文件是由多个section构成&#xff0c;每个section名用中括号‘[]’包含&#xff0c;每…

自制Unity小游戏TankHero-2D(3)开始玩起来

自制Unity小游戏TankHero-2D(3)开始玩起来 我在做这样一个坦克游戏&#xff0c;是仿照&#xff08;http://game.kid.qq.com/a/20140221/028931.htm&#xff09;这个游戏制作的。仅为学习Unity之用。图片大部分是自己画的&#xff0c;少数是从网上搜来的。您可以到我的github页…

mysql按月分列统计_实现mysql按月统计的教程

mysql有个字段是DATETIME类型&#xff0c;要实现可以按月统计&#xff0c;该怎么写sql语句&#xff1f;select month(f1) from tt group by month(f1)or select DATE_FORMAT(f1,%m) from tt group by DATE_FORMAT(f1,%m)比如数据库的为2008-01-15 12&#xff1a;10&#xff1a;…

Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender

Log4j现在已经被大家熟知了&#xff0c;所有细节都可以在网上查到&#xff0c;Log4j支持Appender&#xff0c;其中DailyRollingFileAppender是被经常用到的Appender之一。在讨论今天的主题之前&#xff0c;我们先看下另外一个Appender。 最常用的Appender——RollingFileAppend…

VirtualBox虚拟机安装CentOS 7

新建虚拟机 因为比较简单&#xff0c;所以对于VirtualBox就不做过多介绍了&#xff0c;直接下载安装即可&#xff0c;安装好之后打开Oracle VM VirtualBox管理器&#xff0c;点击新建&#xff0c;选择Red Hat&#xff08;根据windows主机选择 32/64 bit&#xff0c;通常会自动识…

mysql 指定账户已存在_安装mysql时告诉我指定的账户已存在?

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

C语言:用字符读取流和输出流来读写入数据。(文本文件)

/* 文件的几种操作模式: r:只读 w:只写 rw:可读可写 文件的分类&#xff1a; t:文本文件(字符文件) b:二进制文件(字节文件)注意&#xff1a; 采用只读方式打开文件时,如果源文件不存在,打开文件会失败&#xff01; 采用只写方式打开文件时,不管源文件存不存在,都不会失败…

PC 上访问设备数据库的方法

通过 .NET 访问 .sdf 的数据库的方法&#xff1a; 在 VS2005 IDE 中&#xff0c;创建 SQL MOible 数据库&#xff0c;编辑表结果和填充数据。 具体是在 Server Explorer 中&#xff0c;右键单击 “Data Connections”&#xff0c;选择 “Add Connection”&#xff0c;新建一个 …

模板原理和操作数据类的观点【艰难的一天,慢慢的会过去的】

1.模板原理&#xff1a;视图类【将数据输出到模板中&#xff0c;实现对视图的控制】 smarty的类实现对视图的控制【展示和smarty的基本语法&#xff1a;smarty需要它的库进行支持】 面向对象的编程中对象的访问和类的访问本质上还是代码空间的访问&#xff0c;区别也在于对象的…

mysql 用户 类别_从mysql里读取用户类型

##1、后端1(从mysql里读取用户类型)&#xff1a;from django import formsfrom django.forms import widgetsfrom django.forms import fieldsfrom app01 import modelsfrom django.forms import ModelChoiceField,ModelMultipleChoiceFieldfrom django.shortcuts import rende…

从C语言到C++成长经历所得的一些技巧和感悟

我介绍几个办法&#xff0c;学习办法&#xff0c;期望你能找到爱好1。必定要和喜爱编程的&#xff0c;或编程凶猛的&#xff0c;或常常编程的人&#xff0c;在一同&#xff0c;常常探讨问题&#xff01;初学编程会有许多问题呈现&#xff0c;你自己很 难处理 c是我们必定要学的…

老子《道德经》第三十三章

上德不德&#xff0c;是以有德&#xff1b;下德不失德&#xff0c;是以无德。 上德无为而无不为&#xff0c;下德为之而有以为&#xff0c;上仁为之而无以为&#xff0c;上义为之而有以为。 上礼为之而莫之应&#xff0c;则攘臂而扔之。 故失道而后德&#xff0c;失德而后仁&am…

[Spring]-各种标注-零配置

个人学习笔记&#xff0c;记录了一些比较基础的标注&#xff1b; 1、controller 控制器&#xff08;注入服务&#xff09;2、service 服务&#xff08;注入dao&#xff09;3、repository dao&#xff08;实现dao访问&#xff09;4、component pojo实例化到spring容器中&#xf…

mysql弄丢初始密码_MySql密码丢失

windows下mysql密码忘记了第一步&#xff1a;netstat -nat(可以查看mysql是否启动了&#xff0c;如果启动了&#xff0c;可以用输入net stop mysql(或者通过任务管理器结束进程))第二步&#xff1a;mysqld --skip-grant-tables&#xff0c;不要关闭窗口第三步&#xff1a;开启一…

CodeForces-500C

传送门 给n本不同重量的一摞书编号1&#xff5e;n。给定m次操作。操作b代表花费标号为b的书上方其他书的重量总和&#xff0c;将书b位移到这叠书的最上方。问初始书应该如何叠放&#xff0c;才能使m次操作后总花费最小 输入 n本书 m次操作 n个数 书的重量 m个数 操作对象 输出 …

java基础篇---网络编程(UDP程序设计)

UDP程序设计 在TCP的索引操作都必须建立可靠地连接&#xff0c;这样一来肯定会浪费大量的系统性能&#xff0c;为了减少这种开销&#xff0c;在网络中又提供了另外一种传输协议---UDP,不可靠的连接&#xff0c;这种协议在各个聊天工具中被广泛的应用。 咋UDP开发中使用Datagram…

bzoj - 2038: [2009国家集训队]小Z的袜子(hose)

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id2038 莫队算法可以解决一类不修改、离线查询问题。而这题可以用莫队来做。 *我是看这个论文学会的&#xff1a;&#xff08;链接~&#xff09; 其实莫队就是一种优化的暴力&#xff0c;只是把查询都离线预先按照规则…