avutil/opt: add AV_OPT_TYPE_BOOL
[ffmpeg.git] / libavutil / mathematics.h
index 479161e..ac94488 100644 (file)
@@ -45,6 +45,9 @@
 #ifndef M_PI
 #define M_PI           3.14159265358979323846  /* pi */
 #endif
+#ifndef M_PI_2
+#define M_PI_2         1.57079632679489661923  /* pi/2 */
+#endif
 #ifndef M_SQRT1_2
 #define M_SQRT1_2      0.70710678118654752440  /* 1/sqrt(2) */
 #endif
@@ -90,8 +93,8 @@ int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const;
  * Rescale a 64-bit integer with specified rounding.
  * A simple a*b/c isn't possible as it can overflow.
  *
- * @return rescaled value a or if AV_ROUND_PASS_MINMAX is set and a is
- *         INT64_MIN or INT64_MAX than a is passed through unchanged.
+ * @return rescaled value a, or if AV_ROUND_PASS_MINMAX is set and a is
+ *         INT64_MIN or INT64_MAX then a is passed through unchanged.
  */
 int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const;
 
@@ -103,8 +106,8 @@ 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.
  *
- * @return rescaled value a or if AV_ROUND_PASS_MINMAX is set and a is
- *         INT64_MIN or INT64_MAX than a is passed through unchanged.
+ * @return rescaled value a, or if AV_ROUND_PASS_MINMAX is set and a is
+ *         INT64_MIN or INT64_MAX then a is passed through unchanged.
  */
 int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq,
                          enum AVRounding) av_const;
@@ -133,14 +136,28 @@ int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod);
  * Rescale a timestamp while preserving known durations.
  *
  * @param in_ts Input timestamp
- * @param in_tb Input timesbase
+ * @param in_tb Input timebase
  * @param fs_tb Duration and *last timebase
  * @param duration duration till the next call
- * @param out_tb Output timesbase
+ * @param out_tb Output timebase
  */
 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 guarantees 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);
+
+
+    /**
  * @}
  */