diff options
author | Mans Rullgard <mans@mansr.com> | 2012-07-29 14:58:53 +0100 |
---|---|---|
committer | Mans Rullgard <mans@mansr.com> | 2012-08-05 17:46:41 +0100 |
commit | 82494835c4ee2adf5afc51bfd19964b82eb80da9 (patch) | |
tree | cfeb1111d14bb5f6d1d40e605eaa356c4f76be72 | |
parent | 965efc1673074ac1e6c28177a4718ed84f89ac83 (diff) | |
download | ffmpeg-82494835c4ee2adf5afc51bfd19964b82eb80da9.tar.gz |
rational: add av_inv_q() returning the inverse of an AVRational
This allows simplifying a few expressions.
Signed-off-by: Mans Rullgard <mans@mansr.com>
-rw-r--r-- | avconv.c | 6 | ||||
-rw-r--r-- | libavutil/rational.h | 11 |
2 files changed, 13 insertions, 4 deletions
@@ -797,8 +797,7 @@ static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter, AVFilterContext *first_filter = in->filter_ctx; AVFilter *filter = avfilter_get_by_name("buffer"); InputStream *ist = ifilter->ist; - AVRational tb = ist->framerate.num ? (AVRational){ist->framerate.den, - ist->framerate.num} : + AVRational tb = ist->framerate.num ? av_inv_q(ist->framerate) : ist->st->time_base; AVRational sar; char args[255], name[255]; @@ -2197,8 +2196,7 @@ static int output_packet(InputStream *ist, const AVPacket *pkt) if (avpkt.duration) ist->next_dts += av_rescale_q(avpkt.duration, ist->st->time_base, AV_TIME_BASE_Q); else if (ist->st->avg_frame_rate.num) - ist->next_dts += av_rescale_q(1, (AVRational){ist->st->avg_frame_rate.den, - ist->st->avg_frame_rate.num}, + ist->next_dts += av_rescale_q(1, av_inv_q(ist->st->avg_frame_rate), AV_TIME_BASE_Q); else if (ist->st->codec->time_base.num != 0) { int ticks = ist->st->parser ? ist->st->parser->repeat_pict + 1 : diff --git a/libavutil/rational.h b/libavutil/rational.h index 0ec18ec969..5d7dab7fd0 100644 --- a/libavutil/rational.h +++ b/libavutil/rational.h @@ -115,6 +115,17 @@ AVRational av_add_q(AVRational b, AVRational c) av_const; AVRational av_sub_q(AVRational b, AVRational c) av_const; /** + * Invert a rational. + * @param q value + * @return 1 / q + */ +static av_always_inline AVRational av_inv_q(AVRational q) +{ + AVRational r = { q.den, q.num }; + return r; +} + +/** * Convert a double precision floating point number to a rational. * inf is expressed as {1,0} or {-1,0} depending on the sign. * |