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.pswp.cn/news/257694.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257694.shtml
英文地址,請注明出處:http://en.pswp.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;只是把查詢都離線預先按照規則…