## ffmpeg / libavutil / integer.h @ 1fc81e73

History | View | Annotate | Download (2.33 KB)

1 | 29adde83 | Michael Niedermayer | ```
/*
``` |
---|---|---|---|

2 | ```
* arbitrary precision integers
``` |
||

3 | ```
* Copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at>
``` |
||

4 | ```
*
``` |
||

5 | b78e7197 | Diego Biurrun | ```
* This file is part of FFmpeg.
``` |

6 | ```
*
``` |
||

7 | ```
* FFmpeg is free software; you can redistribute it and/or
``` |
||

8 | 29adde83 | Michael Niedermayer | ```
* modify it under the terms of the GNU Lesser General Public
``` |

9 | ```
* License as published by the Free Software Foundation; either
``` |
||

10 | b78e7197 | Diego Biurrun | ```
* version 2.1 of the License, or (at your option) any later version.
``` |

11 | 29adde83 | Michael Niedermayer | ```
*
``` |

12 | b78e7197 | Diego Biurrun | ```
* FFmpeg is distributed in the hope that it will be useful,
``` |

13 | 29adde83 | Michael Niedermayer | ```
* 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 | b78e7197 | Diego Biurrun | ```
* License along with FFmpeg; if not, write to the Free Software
``` |

19 | 5509bffa | Diego Biurrun | ```
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
``` |

20 | 29adde83 | Michael Niedermayer | ```
*/
``` |

21 | 115329f1 | Diego Biurrun | |

22 | 29adde83 | Michael Niedermayer | ```
/**
``` |

23 | ba87f080 | Diego Biurrun | ```
* @file
``` |

24 | 29adde83 | Michael Niedermayer | ```
* arbitrary precision integers
``` |

25 | ```
* @author Michael Niedermayer <michaelni@gmx.at>
``` |
||

26 | ```
*/
``` |
||

27 | 115329f1 | Diego Biurrun | |

28 | 98790382 | Stefano Sabatini | ```
#ifndef AVUTIL_INTEGER_H
``` |

29 | ```
#define AVUTIL_INTEGER_H
``` |
||

30 | 29adde83 | Michael Niedermayer | |

31 | 99545457 | Måns Rullgård | #include <stdint.h> |

32 | 3540b950 | Måns Rullgård | #include "common.h" |

33 | 99545457 | Måns Rullgård | |

34 | 29adde83 | Michael Niedermayer | #define AV_INTEGER_SIZE 8 |

35 | |||

36 | typedef struct AVInteger{ |
||

37 | 115329f1 | Diego Biurrun | uint16_t v[AV_INTEGER_SIZE]; |

38 | 29adde83 | Michael Niedermayer | } AVInteger; |

39 | |||

40 | 85074d3c | Zuxy Meng | AVInteger av_add_i(AVInteger a, AVInteger b) av_const; |

41 | AVInteger av_sub_i(AVInteger a, AVInteger b) av_const; |
||

42 | 395722ba | Panagiotis Issaris | |

43 | ```
/**
``` |
||

44 | 49bd8e4b | Måns Rullgård | ```
* Return the rounded-down value of the base 2 logarithm of the given
``` |

45 | 7d685b48 | Diego Biurrun | ```
* AVInteger. This is simply the index of the most significant bit
``` |

46 | ```
* which is 1, or 0 if all bits are 0.
``` |
||

47 | 395722ba | Panagiotis Issaris | ```
*/
``` |

48 | 85074d3c | Zuxy Meng | ```
int av_log2_i(AVInteger a) av_const;
``` |

49 | AVInteger av_mul_i(AVInteger a, AVInteger b) av_const; |
||

50 | fb7d4f79 | Panagiotis Issaris | |

51 | ```
/**
``` |
||

52 | 49bd8e4b | Måns Rullgård | ```
* Return 0 if a==b, 1 if a>b and -1 if a<b.
``` |

53 | fb7d4f79 | Panagiotis Issaris | ```
*/
``` |

54 | 85074d3c | Zuxy Meng | ```
int av_cmp_i(AVInteger a, AVInteger b) av_const;
``` |

55 | 886368e9 | Panagiotis Issaris | |

56 | ```
/**
``` |
||

57 | 89c9ff50 | Diego Biurrun | ```
* 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 | 886368e9 | Panagiotis Issaris | ```
*/
``` |

61 | 85074d3c | Zuxy Meng | ```
AVInteger av_shr_i(AVInteger a, int s) av_const;
``` |

62 | 607da27c | Panagiotis Issaris | |

63 | ```
/**
``` |
||

64 | 49bd8e4b | Måns Rullgård | ```
* Return a % b.
``` |

65 | 89c9ff50 | Diego Biurrun | ```
* @param quot a/b will be stored here.
``` |

66 | 607da27c | Panagiotis Issaris | ```
*/
``` |

67 | 29adde83 | Michael Niedermayer | AVInteger av_mod_i(AVInteger *quot, AVInteger a, AVInteger b); |

68 | 9375cdd5 | Panagiotis Issaris | |

69 | ```
/**
``` |
||

70 | 49bd8e4b | Måns Rullgård | ```
* Return a/b.
``` |

71 | 9375cdd5 | Panagiotis Issaris | ```
*/
``` |

72 | 85074d3c | Zuxy Meng | AVInteger av_div_i(AVInteger a, AVInteger b) av_const; |

73 | c1f56787 | Panagiotis Issaris | |

74 | ```
/**
``` |
||

75 | 49bd8e4b | Måns Rullgård | ```
* Convert the given int64_t to an AVInteger.
``` |

76 | c1f56787 | Panagiotis Issaris | ```
*/
``` |

77 | 85074d3c | Zuxy Meng | AVInteger av_int2i(int64_t a) av_const; |

78 | 37b2f1d0 | Panagiotis Issaris | |

79 | ```
/**
``` |
||

80 | 49bd8e4b | Måns Rullgård | ```
* Convert the given AVInteger to an int64_t.
``` |

81 | bfe3676f | Diego Biurrun | ```
* If the AVInteger is too large to fit into an int64_t,
``` |

82 | ```
* then only the least significant 64 bits will be used.
``` |
||

83 | 37b2f1d0 | Panagiotis Issaris | ```
*/
``` |

84 | 85074d3c | Zuxy Meng | int64_t av_i2int(AVInteger a) av_const; |

85 | 29adde83 | Michael Niedermayer | |

86 | 98790382 | Stefano Sabatini | #endif /* AVUTIL_INTEGER_H */ |