]> git.sesse.net Git - ffmpeg/blobdiff - libavutil/common.h
Add lots of missing includes
[ffmpeg] / libavutil / common.h
index a8a9bd39e6e95d1416586ba12a3698d8c992c569..4b757d1ca32b6ea0b170e8a36073917e57c5eb30 100644 (file)
 #endif
 #endif
 
+#ifdef HAVE_AV_CONFIG_H
+#   include "intmath.h"
+#endif
+
 //rounded division & shift
 #define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b))
 /* assume b>0 */
@@ -138,6 +142,7 @@ extern const uint8_t ff_log2_tab[256];
 
 extern const uint8_t av_reverse[256];
 
+#ifndef av_log2
 static inline av_const int av_log2(unsigned int v)
 {
     int n = 0;
@@ -153,7 +158,9 @@ static inline av_const int av_log2(unsigned int v)
 
     return n;
 }
+#endif
 
+#ifndef av_log2_16bit
 static inline av_const int av_log2_16bit(unsigned int v)
 {
     int n = 0;
@@ -165,6 +172,7 @@ static inline av_const int av_log2_16bit(unsigned int v)
 
     return n;
 }
+#endif
 
 /**
  * Clips a signed integer value into the amin-amax range.
@@ -327,6 +335,36 @@ static inline av_const int av_ceil_log2(int x)
         }\
     }
 
+/*!
+ * \def PUT_UTF16(val, tmp, PUT_16BIT)
+ * Converts a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes).
+ * \param val is an input-only argument and should be of type uint32_t. It holds
+ * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If
+ * val is given as a function it is executed only once.
+ * \param tmp is a temporary variable and should be of type uint16_t. It
+ * represents an intermediate value during conversion that is to be
+ * output by PUT_16BIT.
+ * \param PUT_16BIT writes the converted UTF-16 data to any proper destination
+ * in desired endianness. It could be a function or a statement, and uses tmp
+ * as the input byte.  For example, PUT_BYTE could be "*output++ = tmp;"
+ * PUT_BYTE will be executed 1 or 2 times depending on input character.
+ */
+#define PUT_UTF16(val, tmp, PUT_16BIT)\
+    {\
+        uint32_t in = val;\
+        if (in < 0x10000) {\
+            tmp = in;\
+            PUT_16BIT\
+        } else {\
+            tmp = 0xD800 | ((in - 0x10000) >> 10);\
+            PUT_16BIT\
+            tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\
+            PUT_16BIT\
+        }\
+    }\
+
+
+
 #include "mem.h"
 
 #ifdef HAVE_AV_CONFIG_H