/*
- * Copyright (C) 2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2009-2011 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
#include "imdct.h"
#include "wma.h"
-const char *search_pattern(const char *pattern, int pattern_len, const char *buf, int buf_size)
+/**
+ * Find the first occurrence of the given pattern.
+ *
+ * \param pattern The pattern to search for.
+ * \param pattern_len The length of the pattern in bytes.
+ * \param buf The buffer to search for the pattern.
+ * \param buf_size The number of bytes in \a buf.
+ *
+ * \return A pointer into \a buf or \p NULL if the pattern was not found.
+ */
+const char *search_pattern(const char *pattern, int pattern_len,
+ const char *buf, int buf_size)
{
const char *p, *end = buf + buf_size;
+ /* TODO: Use suffix arrays to speed up the search. */
for (p = buf; p + pattern_len < end; p++) {
if (memcmp(p, pattern, pattern_len))
continue;
PARA_DEBUG_LOG("found %d byte pattern@%d\n",
- pattern_len, p - buf);
+ pattern_len, (int)(p - buf));
return p;
}
PARA_NOTICE_LOG("%d byte pattern not found\n", pattern_len);
if (!p)
return -E_WMA_NO_GUID;
- PARA_DEBUG_LOG("found audio stream guid@%0zx\n", p - buf);
+ PARA_DEBUG_LOG("found audio stream guid@%0x\n", (int)(p - buf));
return p - buf + 16;
}
return 1;
}
-const uint8_t log2_tab[256] = {
+static const uint8_t log2_tab[256] = {
0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
7, 7, 7, 7, 7, 7, 7, 7
};
-int wma_log2(unsigned int v)
+/**
+ * Compute the base-2 logarithm.
+ *
+ * \param v The value to compute the logarithm of.
+ *
+ * \return An integer approximation of log2(v).
+ */
+__a_const int wma_log2(unsigned int v)
{
int n = 0;
if (v & 0xffff0000) {