diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2012-02-14 00:35:00 +0400 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2012-02-21 00:08:40 +0400 |
commit | 0b42a9388c98c8669811d4e7e5da7240e6707a41 (patch) | |
tree | 97898f00de8874229f6ba8ff2e077ce221b6d513 /libavutil | |
parent | 0996f406c4d32858e00637206fff7c435b51488c (diff) |
avutil: add av_rescale_q_rnd() to allow different rounding
Diffstat (limited to 'libavutil')
-rw-r--r-- | libavutil/avutil.h | 2 | ||||
-rw-r--r-- | libavutil/mathematics.c | 11 | ||||
-rw-r--r-- | libavutil/mathematics.h | 6 |
3 files changed, 16 insertions, 3 deletions
diff --git a/libavutil/avutil.h b/libavutil/avutil.h index 05e9248375..b5f9a24f14 100644 --- a/libavutil/avutil.h +++ b/libavutil/avutil.h @@ -154,7 +154,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 51 -#define LIBAVUTIL_VERSION_MINOR 22 +#define LIBAVUTIL_VERSION_MINOR 23 #define LIBAVUTIL_VERSION_MICRO 1 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ diff --git a/libavutil/mathematics.c b/libavutil/mathematics.c index e6ce2f98ad..e2f06eda29 100644 --- a/libavutil/mathematics.c +++ b/libavutil/mathematics.c @@ -130,10 +130,17 @@ int64_t av_rescale(int64_t a, int64_t b, int64_t c){ return av_rescale_rnd(a, b, c, AV_ROUND_NEAR_INF); } -int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq){ +int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq, + enum AVRounding rnd) +{ int64_t b= bq.num * (int64_t)cq.den; int64_t c= cq.num * (int64_t)bq.den; - return av_rescale_rnd(a, b, c, AV_ROUND_NEAR_INF); + return av_rescale_rnd(a, b, c, rnd); +} + +int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) +{ + return av_rescale_q_rnd(a, bq, cq, AV_ROUND_NEAR_INF); } int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b){ diff --git a/libavutil/mathematics.h b/libavutil/mathematics.h index 0b072ebe63..ec27979bc9 100644 --- a/libavutil/mathematics.h +++ b/libavutil/mathematics.h @@ -96,6 +96,12 @@ int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_cons int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; /** + * Rescale a 64-bit integer by 2 rational numbers with specified rounding. + */ +int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq, + enum AVRounding) av_const; + +/** * Compare 2 timestamps each in its own timebases. * The result of the function is undefined if one of the timestamps * is outside the int64_t range when represented in the others timebase. |