From c4f46eeed8de14c51b38de296b5dccb9e183cb1a Mon Sep 17 00:00:00 2001 From: k-m_schindler Date: Sun, 18 Mar 2012 23:05:42 +0000 Subject: start version 0.7 of ffmpeg git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2841 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/lib/ffmpeg7/rational.pas | 170 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 src/lib/ffmpeg7/rational.pas (limited to 'src/lib/ffmpeg7/rational.pas') diff --git a/src/lib/ffmpeg7/rational.pas b/src/lib/ffmpeg7/rational.pas new file mode 100644 index 00000000..45ca8b87 --- /dev/null +++ b/src/lib/ffmpeg7/rational.pas @@ -0,0 +1,170 @@ +(* + * rational numbers + * Copyright (c) 2003 Michael Niedermayer + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * This is a part of Pascal porting of ffmpeg. + * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows. + * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT + * in the source codes. + * - Changes and updates by the UltraStar Deluxe Team + * + * Conversion of libavutil/rational.h + * avutil version 50.43.0 + * + *) + +unit rational; + +{$IFDEF FPC} + {$MODE DELPHI} + {$PACKENUM 4} (* use 4-byte enums *) + {$PACKRECORDS C} (* C/C++-compatible record packing *) +{$ELSE} + {$MINENUMSIZE 4} (* use 4-byte enums *) +{$ENDIF} + +{$I switches.inc} + +interface + +uses + ctypes, + UConfig; + +type + (* + * rational number numerator/denominator + *) + PAVRational = ^TAVRational; + TAVRational = record + num: cint; ///< numerator + den: cint; ///< denominator + end; + + TAVRationalArray = array[0 .. (MaxInt div SizeOf(TAVRational))-1] of TAVRational; + PAVRationalArray = ^TAVRationalArray; + +(** + * Compare two rationals. + * @param a first rational + * @param b second rational + * @return 0 if a==b, 1 if a>b and -1 if a 0) then + Result := (tmp shr 63) or 1 + else + Result := 0 +end; + +function av_q2d(a: TAVRational): cdouble; +begin + Result := a.num / a.den; +end; + +end. -- cgit v1.2.3