avformat/utils: if the id3 tag is too large for data after it to become available...
[ffmpeg.git] / libavutil / utils.c
index 8f83c02..6c9b493 100644 (file)
 
 unsigned avutil_version(void)
 {
+    static int checks_done;
+    if (checks_done)
+        return LIBAVUTIL_VERSION_INT;
+
     av_assert0(AV_PIX_FMT_VDA_VLD == 81); //check if the pix fmt enum has not had anything inserted or removed by mistake
     av_assert0(AV_SAMPLE_FMT_DBLP == 9);
     av_assert0(AVMEDIA_TYPE_ATTACHMENT == 4);
@@ -36,13 +40,21 @@ unsigned avutil_version(void)
     av_assert0(LIBAVUTIL_VERSION_MICRO >= 100);
     av_assert0(HAVE_MMX2 == HAVE_MMXEXT);
 
+    av_assert0(((size_t)-1) > 0); // C gurantees this but if false on a platform we care about revert at least b284e1ffe343d6697fb950d1ee517bafda8a9844
+
     if (av_sat_dadd32(1, 2) != 5) {
         av_log(NULL, AV_LOG_FATAL, "Libavutil has been build with a broken binutils, please upgrade binutils and rebuild\n");
         abort();
     }
 
-    ff_check_pixfmt_descriptors();
+    if (llrint(1LL<<60) != 1LL<<60) {
+        av_log(NULL, AV_LOG_ERROR, "Libavutil has been linked to a broken llrint()\n");
+    }
 
+#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0
+    ff_check_pixfmt_descriptors();
+#endif
+    checks_done = 1;
     return LIBAVUTIL_VERSION_INT;
 }
 
@@ -91,7 +103,7 @@ unsigned av_int_list_length_for_size(unsigned elsize,
     if (!list)
         return 0;
 #define LIST_LENGTH(type) \
-    { type t = term, *l = list; for (i = 0; l[i] != t; i++); }
+    { type t = term, *l = (type *)list; for (i = 0; l[i] != t; i++); }
     switch (elsize) {
     case 1: LIST_LENGTH(uint8_t);  break;
     case 2: LIST_LENGTH(uint16_t); break;
@@ -101,3 +113,8 @@ unsigned av_int_list_length_for_size(unsigned elsize,
     }
     return i;
 }
+
+AVRational av_get_time_base_q(void)
+{
+    return (AVRational){1, AV_TIME_BASE};
+}