~ubuntu-branches/ubuntu/jaunty/xvidcap/jaunty-proposed

« back to all changes in this revision

Viewing changes to ffmpeg/libavutil/integer.c

  • Committer: Bazaar Package Importer
  • Author(s): Lionel Le Folgoc, Andrew Starr-Bochicchio, Lionel Le Folgoc
  • Date: 2008-12-26 00:10:06 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20081226001006-2040ls9680bd1blt
Tags: 1.1.7-0.2ubuntu1
[ Andrew Starr-Bochicchio ]
* Merge from debian-multimedia (LP: #298547), Ubuntu Changes:
 - For ffmpeg-related build-deps, fix versionized dependencies
   as the ubuntu versioning is different than debian-multimedia's.

[ Lionel Le Folgoc ]
* LP: #311412 is fixed since the 1.1.7~rc1-0.1 revision.
* debian/patches/03_ffmpeg.diff: updated to fix FTBFS due to libswscale API
  change (cherry-pick from Gentoo #234383).

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 * You should have received a copy of the GNU Lesser General Public
18
18
 * License along with FFmpeg; if not, write to the Free Software
19
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
 
 *
21
20
 */
22
21
 
23
22
/**
49
48
    return a;
50
49
}
51
50
 
52
 
/**
53
 
 * returns the rounded down value of the logarithm of base 2 of the given AVInteger.
54
 
 * this is simply the index of the most significant bit which is 1. Or 0 of all bits are 0
55
 
 */
56
51
int av_log2_i(AVInteger a){
57
52
    int i;
58
53
 
84
79
    return out;
85
80
}
86
81
 
87
 
/**
88
 
 * returns 0 if a==b, 1 if a>b and -1 if a<b.
89
 
 */
90
82
int av_cmp_i(AVInteger a, AVInteger b){
91
83
    int i;
92
84
    int v= (int16_t)a.v[AV_INTEGER_SIZE-1] - (int16_t)b.v[AV_INTEGER_SIZE-1];
99
91
    return 0;
100
92
}
101
93
 
102
 
/**
103
 
 * bitwise shift.
104
 
 * @param s the number of bits by which the value should be shifted right, may be negative for shifting left
105
 
 */
106
94
AVInteger av_shr_i(AVInteger a, int s){
107
95
    AVInteger out;
108
96
    int i;
109
97
 
110
98
    for(i=0; i<AV_INTEGER_SIZE; i++){
111
 
        int index= i + (s>>4);
 
99
        unsigned int index= i + (s>>4);
112
100
        unsigned int v=0;
113
 
        if(index+1<AV_INTEGER_SIZE && index+1>=0) v = a.v[index+1]<<16;
114
 
        if(index  <AV_INTEGER_SIZE && index  >=0) v+= a.v[index  ];
 
101
        if(index+1<AV_INTEGER_SIZE) v = a.v[index+1]<<16;
 
102
        if(index  <AV_INTEGER_SIZE) v+= a.v[index  ];
115
103
        out.v[i]= v >> (s&15);
116
104
    }
117
105
    return out;
118
106
}
119
107
 
120
 
/**
121
 
 * returns a % b.
122
 
 * @param quot a/b will be stored here
123
 
 */
124
108
AVInteger av_mod_i(AVInteger *quot, AVInteger a, AVInteger b){
125
109
    int i= av_log2_i(a) - av_log2_i(b);
126
110
    AVInteger quot_temp;
145
129
    return a;
146
130
}
147
131
 
148
 
/**
149
 
 * returns a/b.
150
 
 */
151
132
AVInteger av_div_i(AVInteger a, AVInteger b){
152
133
    AVInteger quot;
153
134
    av_mod_i(&quot, a, b);
154
135
    return quot;
155
136
}
156
137
 
157
 
/**
158
 
 * converts the given int64_t to an AVInteger.
159
 
 */
160
138
AVInteger av_int2i(int64_t a){
161
139
    AVInteger out;
162
140
    int i;
168
146
    return out;
169
147
}
170
148
 
171
 
/**
172
 
 * converts the given AVInteger to an int64_t.
173
 
 * if the AVInteger is too large to fit into an int64_t,
174
 
 * then only the least significant 64bit will be used
175
 
 */
176
149
int64_t av_i2int(AVInteger a){
177
150
    int i;
178
151
    int64_t out=(int8_t)a.v[AV_INTEGER_SIZE-1];
183
156
    return out;
184
157
}
185
158
 
186
 
#if 0
 
159
#ifdef TEST
187
160
#undef NDEBUG
188
161
#include <assert.h>
189
162
 
198
171
        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
199
172
};
200
173
 
201
 
main(){
 
174
int main(void){
202
175
    int64_t a,b;
203
176
 
204
177
    for(a=7; a<256*256*256; a+=13215){
219
192
            assert(av_i2int(av_div_i(ai,bi)) == a/b);
220
193
        }
221
194
    }
 
195
    return 0;
222
196
}
223
197
#endif