aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/ffmpeg
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/ffmpeg-0.10/rational.pas22
-rw-r--r--src/lib/ffmpeg-0.7/rational.pas22
-rw-r--r--src/lib/ffmpeg-0.8/rational.pas22
-rw-r--r--src/lib/ffmpeg/rational.pas19
4 files changed, 75 insertions, 10 deletions
diff --git a/src/lib/ffmpeg-0.10/rational.pas b/src/lib/ffmpeg-0.10/rational.pas
index 19c1026a..c0d76168 100644
--- a/src/lib/ffmpeg-0.10/rational.pas
+++ b/src/lib/ffmpeg-0.10/rational.pas
@@ -155,19 +155,37 @@ function av_find_nearest_q_idx(q: TAVRational; q_list: {const} PAVRationalArray)
implementation
-function av_cmp_q (a: TAVRational; b: TAVRational): cint;
+function av_cmp_q (a: TAVRational; b: TAVRational): cint; {$IFDEF HasInline}inline;{$ENDIF}
var
tmp: cint64;
begin
tmp := a.num * cint64(b.den) - b.num * cint64(a.den);
+{ old version
if (tmp <> 0) then
Result := (tmp shr 63) or 1
else
+ Result := 0;
+}
+{ C original:
+ if(tmp) return ((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;
+}
+
+ if tmp <> 0 then
+ Result := ((tmp xor a.den xor b.den) >> 63) or 1
+ else if (b.den and a.den) <> 0 then
Result := 0
+ else if (a.num and b.num) <> 0 then
+ Result := (a.num >> 31) - (b.num >> 31)
+ else
+ Result := low(cint);
+
end;
-function av_q2d(a: TAVRational): cdouble;
+function av_q2d(a: TAVRational): cdouble; {$IFDEF HasInline}inline;{$ENDIF}
begin
Result := a.num / a.den;
end;
diff --git a/src/lib/ffmpeg-0.7/rational.pas b/src/lib/ffmpeg-0.7/rational.pas
index a6792100..371a6fd7 100644
--- a/src/lib/ffmpeg-0.7/rational.pas
+++ b/src/lib/ffmpeg-0.7/rational.pas
@@ -152,19 +152,37 @@ implementation
// This corresponds to the old c version and should be updated to
// the new c version.
-function av_cmp_q (a: TAVRational; b: TAVRational): cint;
+function av_cmp_q (a: TAVRational; b: TAVRational): cint; {$IFDEF HasInline}inline;{$ENDIF}
var
tmp: cint64;
begin
tmp := a.num * cint64(b.den) - b.num * cint64(a.den);
+{ old version
if (tmp <> 0) then
Result := (tmp shr 63) or 1
else
+ Result := 0;
+}
+{ C original:
+ if(tmp) return ((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;
+}
+
+ if tmp <> 0 then
+ Result := ((tmp xor a.den xor b.den) >> 63) or 1
+ else if (b.den and a.den) <> 0 then
Result := 0
+ else if (a.num and b.num) <> 0 then
+ Result := (a.num >> 31) - (b.num >> 31)
+ else
+ Result := low(cint);
+
end;
-function av_q2d(a: TAVRational): cdouble;
+function av_q2d(a: TAVRational): cdouble; {$IFDEF HasInline}inline;{$ENDIF}
begin
Result := a.num / a.den;
end;
diff --git a/src/lib/ffmpeg-0.8/rational.pas b/src/lib/ffmpeg-0.8/rational.pas
index f20fc68f..d3601ec5 100644
--- a/src/lib/ffmpeg-0.8/rational.pas
+++ b/src/lib/ffmpeg-0.8/rational.pas
@@ -152,19 +152,37 @@ implementation
// This corresponds to the old c version and should be updated to
// the new c version.
-function av_cmp_q (a: TAVRational; b: TAVRational): cint;
+function av_cmp_q (a: TAVRational; b: TAVRational): cint; {$IFDEF HasInline}inline;{$ENDIF}
var
tmp: cint64;
begin
tmp := a.num * cint64(b.den) - b.num * cint64(a.den);
+{ old version
if (tmp <> 0) then
Result := (tmp shr 63) or 1
else
+ Result := 0;
+}
+{ C original:
+ if(tmp) return ((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;
+}
+
+ if tmp <> 0 then
+ Result := ((tmp xor a.den xor b.den) >> 63) or 1
+ else if (b.den and a.den) <> 0 then
Result := 0
+ else if (a.num and b.num) <> 0 then
+ Result := (a.num >> 31) - (b.num >> 31)
+ else
+ Result := low(cint);
+
end;
-function av_q2d(a: TAVRational): cdouble;
+function av_q2d(a: TAVRational): cdouble; {$IFDEF HasInline}inline;{$ENDIF}
begin
Result := a.num / a.den;
end;
diff --git a/src/lib/ffmpeg/rational.pas b/src/lib/ffmpeg/rational.pas
index 892f2273..24bbfa8d 100644
--- a/src/lib/ffmpeg/rational.pas
+++ b/src/lib/ffmpeg/rational.pas
@@ -151,7 +151,7 @@ function av_find_nearest_q_idx(q: TAVRational; q_list: {const} PAVRationalArray)
implementation
-function av_cmp_q (a: TAVRational; b: TAVRational): cint;
+function av_cmp_q (a: TAVRational; b: TAVRational): cint; {$IFDEF HasInline}inline;{$ENDIF}
var
tmp: cint64;
begin
@@ -160,16 +160,27 @@ begin
if (tmp <> 0) then
Result := (tmp shr 63) or 1
else
- Result := 0
-{ new version:
+ Result := 0;
+
+{ C original:
if(tmp) return ((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;
}
+{
+ if tmp <> 0 then
+ Result := ((tmp xor a.den xor b.den) >> 63) or 1
+ else if (b.den and a.den) <> 0 then
+ Result := 0
+ else if (a.num and b.num) <> 0 then
+ Result := (a.num >> 31) - (b.num >> 31)
+ else
+ Result := low(cint);
+}
end;
-function av_q2d(a: TAVRational): cdouble;
+function av_q2d(a: TAVRational): cdouble; {$IFDEF HasInline}inline;{$ENDIF}
begin
Result := a.num / a.den;
end;