Delphi-OpenCV/include/ffmpeg/libavutil/rational.pas
Laex 34003fc2e0 Adding
ml.pas
ffmpeg
Signed-off-by: Laex <laex@bk.ru>
2013-11-25 15:38:31 +04:00

168 lines
4.5 KiB
ObjectPascal

unit rational;
{$include ffmpeg.inc}
interface
/// *
// * rational numbers
// * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
// *
// * This file is part of FFmpeg.
// *
// * FFmpeg 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.1 of the License, or (at your option) any later version.
// *
// * FFmpeg 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 FFmpeg; if not, write to the Free Software
// * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
// */
//
/// **
// * @file
// * rational numbers
// * @author Michael Niedermayer <michaelni@gmx.at>
// */
//
// #ifndef AVUTIL_RATIONAL_H
// #define AVUTIL_RATIONAL_H
//
// #include <stdint.h>
// #include <limits.h>
// #include "attributes.h"
//
/// **
// * @addtogroup lavu_math
// * @{
// */
type
(*
* rational number numerator/denominator
*)
pAVRational = ^TAVRational;
TAVRational = {packed} record
num: Integer;
/// < numerator
den: Integer;
/// < denominator
end;
/// **
// * Compare two rationals.
// * @param a first rational
// * @param b second rational
// * @return 0 if a==b, 1 if a>b, -1 if a<b, and INT_MIN if one of the
// * values is of the form 0/0
// */
// static inline int av_cmp_q(AVRational a, AVRational b){
// const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den;
//
// if(tmp) return (int)((tmp ^ a.den ^ b.den)>>63)|1;
// else if(b.den && a.den) return 0;
// else if(a.num && b.num) return (a.num>>31) - (b.num>>31);
// else return INT_MIN;
// }
//
/// **
// * Convert rational to double.
// * @param a rational to convert
// * @return (double) a
// */
// static inline double av_q2d(AVRational a){
// return a.num / (double) a.den;
// }
//
/// **
// * Reduce a fraction.
// * This is useful for framerate calculations.
// * @param dst_num destination numerator
// * @param dst_den destination denominator
// * @param num source numerator
// * @param den source denominator
// * @param max the maximum allowed for dst_num & dst_den
// * @return 1 if exact, 0 otherwise
// */
// int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max);
//
/// **
// * Multiply two rationals.
// * @param b first rational
// * @param c second rational
// * @return b*c
// */
// AVRational av_mul_q(AVRational b, AVRational c) av_const;
//
/// **
// * Divide one rational by another.
// * @param b first rational
// * @param c second rational
// * @return b/c
// */
// AVRational av_div_q(AVRational b, AVRational c) av_const;
//
/// **
// * Add two rationals.
// * @param b first rational
// * @param c second rational
// * @return b+c
// */
// AVRational av_add_q(AVRational b, AVRational c) av_const;
//
/// **
// * Subtract one rational from another.
// * @param b first rational
// * @param c second rational
// * @return b-c
// */
// AVRational av_sub_q(AVRational b, AVRational c) av_const;
//
/// **
// * Invert a rational.
// * @param q value
// * @return 1 / q
// */
// static av_always_inline AVRational av_inv_q(AVRational q)
// {
// AVRational r = { q.den, q.num };
// return r;
// }
//
/// **
// * Convert a double precision floating point number to a rational.
// * inf is expressed as {1,0} or {-1,0} depending on the sign.
// *
// * @param d double to convert
// * @param max the maximum allowed numerator and denominator
// * @return (AVRational) d
// */
// AVRational av_d2q(double d, int max) av_const;
//
/// **
// * @return 1 if q1 is nearer to q than q2, -1 if q2 is nearer
// * than q1, 0 if they have the same distance.
// */
// int av_nearer_q(AVRational q, AVRational q1, AVRational q2);
//
/// **
// * Find the nearest value in q_list to q.
// * @param q_list an array of rationals terminated by {0, 0}
// * @return the index of the nearest value found in the array
// */
// int av_find_nearest_q_idx(AVRational q, const AVRational* q_list);
//
/// **
// * @}
// */
implementation
end.