~medibuntu-maintainers/mplayer/medibuntu.precise

« back to all changes in this revision

Viewing changes to ffmpeg/libavutil/integer.h

  • Committer: Package Import Robot
  • Author(s): Reinhard Tartler
  • Date: 2012-01-12 22:23:28 UTC
  • mfrom: (0.4.7 sid)
  • mto: This revision was merged to the branch mainline in revision 76.
  • Revision ID: package-import@ubuntu.com-20120112222328-8jqdyodym3p84ygu
Tags: 2:1.0~rc4.dfsg1+svn34540-1
* New upstream snapshot
* upload to unstable

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * arbitrary precision integers
3
 
 * Copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at>
4
 
 *
5
 
 * This file is part of Libav.
6
 
 *
7
 
 * Libav 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
 
 * Libav 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 Libav; 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 */