forked from FFmpeg/FFmpeg
avutil/mathematics: add av_add_stable()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
de5b6c736b
commit
b317f9459f
4 changed files with 32 additions and 1 deletions
|
@ -15,6 +15,9 @@ libavutil: 2012-10-22
|
||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2014-01-04 - xxxxxxx - lavu 52.60.100 - mathematics.h
|
||||||
|
Add av_add_stable() function.
|
||||||
|
|
||||||
2013-12-22 - xxxxxxx - lavu 52.59.100 - avstring.h
|
2013-12-22 - xxxxxxx - lavu 52.59.100 - avstring.h
|
||||||
Add av_strnlen() function.
|
Add av_strnlen() function.
|
||||||
|
|
||||||
|
|
|
@ -174,3 +174,17 @@ simple_round:
|
||||||
|
|
||||||
return av_rescale_q(this, fs_tb, out_tb);
|
return av_rescale_q(this, fs_tb, out_tb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t av_add_stable(AVRational ts_tb, int64_t ts, AVRational inc_tb, int64_t inc)
|
||||||
|
{
|
||||||
|
AVRational step = av_mul_q(inc_tb, (AVRational) {inc, 1});
|
||||||
|
|
||||||
|
if (av_cmp_q(step, ts_tb) < 0) {
|
||||||
|
//increase step is too small for even 1 step to be representable
|
||||||
|
return ts;
|
||||||
|
} else {
|
||||||
|
int64_t old = av_rescale_q(ts, ts_tb, step);
|
||||||
|
int64_t old_ts = av_rescale_q(old, step, ts_tb);
|
||||||
|
return av_rescale_q(old + 1, step, ts_tb) + (ts - old_ts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -141,6 +141,20 @@ int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod);
|
||||||
int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int duration, int64_t *last, AVRational out_tb);
|
int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int duration, int64_t *last, AVRational out_tb);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Add a value to a timestamp.
|
||||||
|
*
|
||||||
|
* This function gurantees that when the same value is repeatly added that
|
||||||
|
* no accumulation of rounding errors occurs.
|
||||||
|
*
|
||||||
|
* @param ts Input timestamp
|
||||||
|
* @param ts_tb Input timestamp timebase
|
||||||
|
* @param inc value to add to ts
|
||||||
|
* @param inc_tb inc timebase
|
||||||
|
*/
|
||||||
|
int64_t av_add_stable(AVRational ts_tb, int64_t ts, AVRational inc_tb, int64_t inc);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_MAJOR 52
|
#define LIBAVUTIL_VERSION_MAJOR 52
|
||||||
#define LIBAVUTIL_VERSION_MINOR 59
|
#define LIBAVUTIL_VERSION_MINOR 60
|
||||||
#define LIBAVUTIL_VERSION_MICRO 100
|
#define LIBAVUTIL_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
|
|
Loading…
Add table
Reference in a new issue