FFMPEG学习【libavutil】:Mathematics:AVRational

Rationnal数的计算。


虽然rational数字可以表示为浮点数,但是转换过程是一个有损的,浮点操作也是如此。另一方面,FFmpeg的性质要求精确地计算时间戳。这组有理数实用程序充当了一个通用接口,用于操作有理数作为数字和分母的一对。


在AVRational的许多函数中都有后缀q,这是指数学符号“”(q),它表示所有有理数的集合。


一、数据结构

struct   AVRational{
int num;
int den;
}


二、函数

static AVRational  av_make_q (int num, int den)
创建AVRationnal。

对不支持复合文字的编译器有用。

注意:返回值并没有减少。


static int  av_cmp_q (AVRational aAVRational b)
比较两个rational。

参数:a:第一个有理数

   b:第二个有理数

返回:下列值的其中一个

    0如果a==b

    1如果a>b

     -1如果a<b

     INT_MIN如果其中一个值事0/0

static double  av_q2d (AVRational a)
将AVRationnal转换为double。

参数:a:用来转换的AVRationnal。

返回:一个浮点形式。


int  av_reduce (int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
减少一部分。

这对于framerate的计算很有用。

参数:dst_num:目的分子

   dst_den:目的分母

   num:源分子

   den:源分母

   max:最大允许dst_num&dst_den的值

返回:如果操作正确,返回1,否则返回0、


AVRational  av_mul_q (AVRational bAVRational cav_const
两个rationnal相乘。

参数:b:第一个有理数

   c:第二个有理数

返回:b*c


AVRational  av_div_q (AVRational bAVRational cav_const
使用一个rationnal除以另一个。

参数:b:第一个有理数

   c:第二个有理数

返回:b/c


AVRational  av_add_q (AVRational bAVRational cav_const
把两个 rationnal相加。

参数:b:第一个有理数

  c:第二个有理数

返回:b+c


AVRational  av_add_q (AVRational bAVRational cav_const
使用rationnal减去另外一个。

参数:b:第一个有理数

   c:第二个有理数

返回:b-c


static av_always_inline AVRational  av_inv_q (AVRational q)
反转一个rationnal。

参数:q:值

返回:1/q


AVRational  av_d2q (double d, int max) av_const
将双精度浮点数转换为一个rational。

在无穷大的情况下,返回的值被表示为1、0或-1,这取决于符号。

参数:d:双转换

   max:最大允许的分子和分母

返回:d AVRationnal形式


int  av_nearer_q (AVRational q, AVRational q1AVRational q2)
找出两个rationnal中那个更接近rantional。

参数:q:理性的加以比较值

   q1,q2:用来测试的有理数

返回:下列值得一个

    1如果Q1接近Q而不是Q2

    -1如果Q2比Q值接近Q值1

    0如果它们有相同的距离


int  av_find_nearest_q_idx (AVRational q, const AVRational *q_list)
在一个给定的参考rational的最接近的rational的列表中找到它的值。

参数:q:参考有理数

   q_list:有理数的终止{0, 0}阵

返回:数组中最近值的索引


uint32_t  av_q2intfloat (AVRational q)
将AVRational转换为以固定点格式表示的IEEE 32位浮点数。

参数:q:用来转换的有理数

返回:等效浮点值,表示为无符号32位整数。

注意:返回值是平台独立的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值