日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg文档08-表达式计算/求值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

8 表達式計算/求值

在計算表達式時,ffmpeg通過libavutil/eval.h接口調用內部計算器進行計算。

表達式可以包含一元運算符、運算符、常數和函數

兩個表達式expr1和expr2可以組合起來成為"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",并可以附加一個單位前綴或者當地使用,例如允許KB,MiB,G和B作為單位后綴。

下面的列表就是當前遵循的國際體系前綴列表,并給出了對應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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的ffmpeg文档08-表达式计算/求值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。