FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavutil
integer.h
Go to the documentation of this file.
1
/*
2
* arbitrary precision integers
3
* Copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at>
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
/**
23
* @file
24
* arbitrary precision integers
25
* @author Michael Niedermayer <michaelni@gmx.at>
26
*/
27
28
#ifndef AVUTIL_INTEGER_H
29
#define AVUTIL_INTEGER_H
30
31
#include <stdint.h>
32
#include "
common.h
"
33
34
#define AV_INTEGER_SIZE 8
35
36
typedef
struct
AVInteger
{
37
uint16_t
v
[
AV_INTEGER_SIZE
];
38
}
AVInteger
;
39
40
AVInteger
av_add_i
(
AVInteger
a
,
AVInteger
b
)
av_const
;
41
AVInteger
av_sub_i
(
AVInteger
a
,
AVInteger
b
)
av_const
;
42
43
/**
44
* Return the rounded-down value of the base 2 logarithm of the given
45
* AVInteger. This is simply the index of the most significant bit
46
* which is 1, or 0 if all bits are 0.
47
*/
48
int
av_log2_i
(
AVInteger
a
)
av_const
;
49
AVInteger
av_mul_i
(
AVInteger
a
,
AVInteger
b
)
av_const
;
50
51
/**
52
* Return 0 if a==b, 1 if a>b and -1 if a<b.
53
*/
54
int
av_cmp_i
(
AVInteger
a
,
AVInteger
b
)
av_const
;
55
56
/**
57
* bitwise shift
58
* @param s the number of bits by which the value should be shifted right,
59
may be negative for shifting left
60
*/
61
AVInteger
av_shr_i
(
AVInteger
a
,
int
s)
av_const
;
62
63
/**
64
* Return a % b.
65
* @param quot a/b will be stored here.
66
*/
67
AVInteger
av_mod_i
(
AVInteger
*quot,
AVInteger
a
,
AVInteger
b
);
68
69
/**
70
* Return a/b.
71
*/
72
AVInteger
av_div_i
(
AVInteger
a
,
AVInteger
b
)
av_const
;
73
74
/**
75
* Convert the given int64_t to an AVInteger.
76
*/
77
AVInteger
av_int2i
(int64_t
a
)
av_const
;
78
79
/**
80
* Convert the given AVInteger to an int64_t.
81
* If the AVInteger is too large to fit into an int64_t,
82
* then only the least significant 64 bits will be used.
83
*/
84
int64_t
av_i2int
(
AVInteger
a
)
av_const
;
85
86
#endif
/* AVUTIL_INTEGER_H */
Generated on Sat May 25 2013 03:58:50 for FFmpeg by
1.8.2