Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
bb00b15f
Commit
bb00b15f
authored
Jun 26, 2011
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avutil: Remove unused arbitrary precision integer code.
parent
d2ee495f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
0 additions
and
313 deletions
+0
-313
utils.c
libavcodec/utils.c
+0
-1
integer.c
libavutil/integer.c
+0
-197
integer.h
libavutil/integer.h
+0
-86
mathematics.c
libavutil/mathematics.c
+0
-29
No files found.
libavcodec/utils.c
View file @
bb00b15f
...
...
@@ -26,7 +26,6 @@
*/
#include "libavutil/avstring.h"
#include "libavutil/integer.h"
#include "libavutil/crc.h"
#include "libavutil/pixdesc.h"
#include "libavutil/audioconvert.h"
...
...
libavutil/integer.c
deleted
100644 → 0
View file @
d2ee495f
/*
* arbitrary precision integers
* Copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at>
*
* This file is part of Libav.
*
* Libav 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.
*
* Libav 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 Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file
* arbitrary precision integers
* @author Michael Niedermayer <michaelni@gmx.at>
*/
#include "common.h"
#include "integer.h"
AVInteger
av_add_i
(
AVInteger
a
,
AVInteger
b
){
int
i
,
carry
=
0
;
for
(
i
=
0
;
i
<
AV_INTEGER_SIZE
;
i
++
){
carry
=
(
carry
>>
16
)
+
a
.
v
[
i
]
+
b
.
v
[
i
];
a
.
v
[
i
]
=
carry
;
}
return
a
;
}
AVInteger
av_sub_i
(
AVInteger
a
,
AVInteger
b
){
int
i
,
carry
=
0
;
for
(
i
=
0
;
i
<
AV_INTEGER_SIZE
;
i
++
){
carry
=
(
carry
>>
16
)
+
a
.
v
[
i
]
-
b
.
v
[
i
];
a
.
v
[
i
]
=
carry
;
}
return
a
;
}
int
av_log2_i
(
AVInteger
a
){
int
i
;
for
(
i
=
AV_INTEGER_SIZE
-
1
;
i
>=
0
;
i
--
){
if
(
a
.
v
[
i
])
return
av_log2_16bit
(
a
.
v
[
i
])
+
16
*
i
;
}
return
-
1
;
}
AVInteger
av_mul_i
(
AVInteger
a
,
AVInteger
b
){
AVInteger
out
;
int
i
,
j
;
int
na
=
(
av_log2_i
(
a
)
+
16
)
>>
4
;
int
nb
=
(
av_log2_i
(
b
)
+
16
)
>>
4
;
memset
(
&
out
,
0
,
sizeof
(
out
));
for
(
i
=
0
;
i
<
na
;
i
++
){
unsigned
int
carry
=
0
;
if
(
a
.
v
[
i
])
for
(
j
=
i
;
j
<
AV_INTEGER_SIZE
&&
j
-
i
<=
nb
;
j
++
){
carry
=
(
carry
>>
16
)
+
out
.
v
[
j
]
+
a
.
v
[
i
]
*
b
.
v
[
j
-
i
];
out
.
v
[
j
]
=
carry
;
}
}
return
out
;
}
int
av_cmp_i
(
AVInteger
a
,
AVInteger
b
){
int
i
;
int
v
=
(
int16_t
)
a
.
v
[
AV_INTEGER_SIZE
-
1
]
-
(
int16_t
)
b
.
v
[
AV_INTEGER_SIZE
-
1
];
if
(
v
)
return
(
v
>>
16
)
|
1
;
for
(
i
=
AV_INTEGER_SIZE
-
2
;
i
>=
0
;
i
--
){
int
v
=
a
.
v
[
i
]
-
b
.
v
[
i
];
if
(
v
)
return
(
v
>>
16
)
|
1
;
}
return
0
;
}
AVInteger
av_shr_i
(
AVInteger
a
,
int
s
){
AVInteger
out
;
int
i
;
for
(
i
=
0
;
i
<
AV_INTEGER_SIZE
;
i
++
){
unsigned
int
index
=
i
+
(
s
>>
4
);
unsigned
int
v
=
0
;
if
(
index
+
1
<
AV_INTEGER_SIZE
)
v
=
a
.
v
[
index
+
1
]
<<
16
;
if
(
index
<
AV_INTEGER_SIZE
)
v
+=
a
.
v
[
index
];
out
.
v
[
i
]
=
v
>>
(
s
&
15
);
}
return
out
;
}
AVInteger
av_mod_i
(
AVInteger
*
quot
,
AVInteger
a
,
AVInteger
b
){
int
i
=
av_log2_i
(
a
)
-
av_log2_i
(
b
);
AVInteger
quot_temp
;
if
(
!
quot
)
quot
=
&
quot_temp
;
assert
((
int16_t
)
a
[
AV_INTEGER_SIZE
-
1
]
>=
0
&&
(
int16_t
)
b
[
AV_INTEGER_SIZE
-
1
]
>=
0
);
assert
(
av_log2
(
b
)
>=
0
);
if
(
i
>
0
)
b
=
av_shr_i
(
b
,
-
i
);
memset
(
quot
,
0
,
sizeof
(
AVInteger
));
while
(
i
--
>=
0
){
*
quot
=
av_shr_i
(
*
quot
,
-
1
);
if
(
av_cmp_i
(
a
,
b
)
>=
0
){
a
=
av_sub_i
(
a
,
b
);
quot
->
v
[
0
]
+=
1
;
}
b
=
av_shr_i
(
b
,
1
);
}
return
a
;
}
AVInteger
av_div_i
(
AVInteger
a
,
AVInteger
b
){
AVInteger
quot
;
av_mod_i
(
&
quot
,
a
,
b
);
return
quot
;
}
AVInteger
av_int2i
(
int64_t
a
){
AVInteger
out
;
int
i
;
for
(
i
=
0
;
i
<
AV_INTEGER_SIZE
;
i
++
){
out
.
v
[
i
]
=
a
;
a
>>=
16
;
}
return
out
;
}
int64_t
av_i2int
(
AVInteger
a
){
int
i
;
int64_t
out
=
(
int8_t
)
a
.
v
[
AV_INTEGER_SIZE
-
1
];
for
(
i
=
AV_INTEGER_SIZE
-
2
;
i
>=
0
;
i
--
){
out
=
(
out
<<
16
)
+
a
.
v
[
i
];
}
return
out
;
}
#ifdef TEST
#undef NDEBUG
#include <assert.h>
const
uint8_t
ff_log2_tab
[
256
]
=
{
0
,
0
,
1
,
1
,
2
,
2
,
2
,
2
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
};
int
main
(
void
){
int64_t
a
,
b
;
for
(
a
=
7
;
a
<
256
*
256
*
256
;
a
+=
13215
){
for
(
b
=
3
;
b
<
256
*
256
*
256
;
b
+=
27118
){
AVInteger
ai
=
av_int2i
(
a
);
AVInteger
bi
=
av_int2i
(
b
);
assert
(
av_i2int
(
ai
)
==
a
);
assert
(
av_i2int
(
bi
)
==
b
);
assert
(
av_i2int
(
av_add_i
(
ai
,
bi
))
==
a
+
b
);
assert
(
av_i2int
(
av_sub_i
(
ai
,
bi
))
==
a
-
b
);
assert
(
av_i2int
(
av_mul_i
(
ai
,
bi
))
==
a
*
b
);
assert
(
av_i2int
(
av_shr_i
(
ai
,
9
))
==
a
>>
9
);
assert
(
av_i2int
(
av_shr_i
(
ai
,
-
9
))
==
a
<<
9
);
assert
(
av_i2int
(
av_shr_i
(
ai
,
17
))
==
a
>>
17
);
assert
(
av_i2int
(
av_shr_i
(
ai
,
-
17
))
==
a
<<
17
);
assert
(
av_log2_i
(
ai
)
==
av_log2
(
a
));
assert
(
av_i2int
(
av_div_i
(
ai
,
bi
))
==
a
/
b
);
}
}
return
0
;
}
#endif
libavutil/integer.h
deleted
100644 → 0
View file @
d2ee495f
/*
* arbitrary precision integers
* Copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at>
*
* This file is part of Libav.
*
* Libav 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.
*
* Libav 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 Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file
* arbitrary precision integers
* @author Michael Niedermayer <michaelni@gmx.at>
*/
#ifndef AVUTIL_INTEGER_H
#define AVUTIL_INTEGER_H
#include <stdint.h>
#include "common.h"
#define AV_INTEGER_SIZE 8
typedef
struct
AVInteger
{
uint16_t
v
[
AV_INTEGER_SIZE
];
}
AVInteger
;
AVInteger
av_add_i
(
AVInteger
a
,
AVInteger
b
)
av_const
;
AVInteger
av_sub_i
(
AVInteger
a
,
AVInteger
b
)
av_const
;
/**
* Return the rounded-down value of the base 2 logarithm of the given
* AVInteger. This is simply the index of the most significant bit
* which is 1, or 0 if all bits are 0.
*/
int
av_log2_i
(
AVInteger
a
)
av_const
;
AVInteger
av_mul_i
(
AVInteger
a
,
AVInteger
b
)
av_const
;
/**
* Return 0 if a==b, 1 if a>b and -1 if a<b.
*/
int
av_cmp_i
(
AVInteger
a
,
AVInteger
b
)
av_const
;
/**
* bitwise shift
* @param s the number of bits by which the value should be shifted right,
may be negative for shifting left
*/
AVInteger
av_shr_i
(
AVInteger
a
,
int
s
)
av_const
;
/**
* Return a % b.
* @param quot a/b will be stored here.
*/
AVInteger
av_mod_i
(
AVInteger
*
quot
,
AVInteger
a
,
AVInteger
b
);
/**
* Return a/b.
*/
AVInteger
av_div_i
(
AVInteger
a
,
AVInteger
b
)
av_const
;
/**
* Convert the given int64_t to an AVInteger.
*/
AVInteger
av_int2i
(
int64_t
a
)
av_const
;
/**
* Convert the given AVInteger to an int64_t.
* If the AVInteger is too large to fit into an int64_t,
* then only the least significant 64 bits will be used.
*/
int64_t
av_i2int
(
AVInteger
a
)
av_const
;
#endif
/* AVUTIL_INTEGER_H */
libavutil/mathematics.c
View file @
bb00b15f
...
...
@@ -150,32 +150,3 @@ int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod){
c
-=
mod
;
return
c
;
}
#ifdef TEST
#include "integer.h"
#undef printf
int
main
(
void
){
int64_t
a
,
b
,
c
,
d
,
e
;
for
(
a
=
7
;
a
<
(
1LL
<<
62
);
a
+=
a
/
3
+
1
){
for
(
b
=
3
;
b
<
(
1LL
<<
62
);
b
+=
b
/
4
+
1
){
for
(
c
=
9
;
c
<
(
1LL
<<
62
);
c
+=
(
c
*
2
)
/
5
+
3
){
int64_t
r
=
c
/
2
;
AVInteger
ai
;
ai
=
av_mul_i
(
av_int2i
(
a
),
av_int2i
(
b
));
ai
=
av_add_i
(
ai
,
av_int2i
(
r
));
d
=
av_i2int
(
av_div_i
(
ai
,
av_int2i
(
c
)));
e
=
av_rescale
(
a
,
b
,
c
);
if
((
double
)
a
*
(
double
)
b
/
(
double
)
c
>
(
1LL
<<
63
))
continue
;
if
(
d
!=
e
)
printf
(
"%"
PRId64
"*%"
PRId64
"/%"
PRId64
"= %"
PRId64
"=%"
PRId64
"
\n
"
,
a
,
b
,
c
,
d
,
e
);
}
}
}
return
0
;
}
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment