rational.h
上传用户:hjq518
上传日期:2021-12-09
资源大小:5084k
文件大小:2k
源码类别:

Audio

开发平台:

Visual C++

  1. /*  * Rational numbers  * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>  *  * This library is free software; you can redistribute it and/or  * modify it under the terms of the GNU Lesser General Public  * License as published by the Free Software Foundation; either  * version 2 of the License, or (at your option) any later version.  *  * This library is distributed in the hope that it will be useful,  * but WITHOUT ANY WARRANTY; without even the implied warranty of  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  * Lesser General Public License for more details.  *  * You should have received a copy of the GNU Lesser General Public  * License along with this library; if not, write to the Free Software  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  *  */   /**  * @file rational.h  * Rational numbers.  * @author Michael Niedermayer <michaelni@gmx.at>  */ #ifndef RATIONAL_H #define RATIONAL_H typedef struct AVRational{
  2.     int num; 
  3.     int den;
  4. } AVRational;
  5. static inline int av_cmp_q(AVRational a, AVRational b){
  6. //static int av_cmp_q(AVRational a, AVRational b){
  7.     const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den;
  8.     if     (tmp <  0) return -1;
  9.     else if(tmp == 0) return  0;
  10.     else              return  1;
  11. }
  12. //static inline double av_q2d(AVRational a){
  13. static double av_q2d(AVRational a){
  14.     return a.num / (double) a.den;
  15. }
  16. AVRational av_mul_q(AVRational b, AVRational c); AVRational av_div_q(AVRational b, AVRational c); AVRational av_add_q(AVRational b, AVRational c); AVRational av_sub_q(AVRational b, AVRational c); AVRational av_d2q(double d, int max); #endif // RATIONAL_H