aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil
diff options
context:
space:
mode:
authorrogerdpack <rogerpack2005@gmail.com>2013-01-15 19:09:15 -0700
committerrogerdpack <rogerpack2005@gmail.com>2013-01-15 19:09:15 -0700
commitc540312ac3b58e0bbd751844fc2c47c6e3713cf5 (patch)
treefcf92b1c0f1772b379828125c2555a47d1c81c6b /libavutil
parent47e88486b4b3b3de992b07f89dfaedf410a8bd5e (diff)
parent2b20397e1fbe52db800ef5deb810f7bc2602f248 (diff)
downloadffmpeg-c540312ac3b58e0bbd751844fc2c47c6e3713cf5.tar.gz
Merge remote-tracking branch 'origin/master' into combined
Diffstat (limited to 'libavutil')
-rw-r--r--libavutil/avstring.c4
-rw-r--r--libavutil/dict.c9
-rw-r--r--libavutil/eval.c2
-rw-r--r--libavutil/mips/float_dsp_mips.c117
-rw-r--r--libavutil/parseutils.c6
-rw-r--r--libavutil/version.h2
6 files changed, 133 insertions, 7 deletions
diff --git a/libavutil/avstring.c b/libavutil/avstring.c
index 2f00374176..e2422c0a59 100644
--- a/libavutil/avstring.c
+++ b/libavutil/avstring.c
@@ -69,11 +69,11 @@ char *av_strnstr(const char *haystack, const char *needle, size_t hay_length)
{
size_t needle_len = strlen(needle);
if (!needle_len)
- return haystack;
+ return (char*)haystack;
while (hay_length >= needle_len) {
hay_length--;
if (!memcmp(haystack, needle, needle_len))
- return haystack;
+ return (char*)haystack;
haystack++;
}
return NULL;
diff --git a/libavutil/dict.c b/libavutil/dict.c
index 06f963cf62..967c9e2fff 100644
--- a/libavutil/dict.c
+++ b/libavutil/dict.c
@@ -94,10 +94,13 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags
m->elems[m->count].value = (char*)(intptr_t)value;
} else if (oldval && flags & AV_DICT_APPEND) {
int len = strlen(oldval) + strlen(value) + 1;
- if (!(oldval = av_realloc(oldval, len)))
+ char *newval = av_mallocz(len);
+ if (!newval)
return AVERROR(ENOMEM);
- av_strlcat(oldval, value, len);
- m->elems[m->count].value = oldval;
+ av_strlcat(newval, oldval, len);
+ av_freep(&oldval);
+ av_strlcat(newval, value, len);
+ m->elems[m->count].value = newval;
} else
m->elems[m->count].value = av_strdup(value);
m->count++;
diff --git a/libavutil/eval.c b/libavutil/eval.c
index 22b491fef3..712d2f2678 100644
--- a/libavutil/eval.c
+++ b/libavutil/eval.c
@@ -467,7 +467,7 @@ static int parse_dB(AVExpr **e, Parser *p, int *sign)
for example, -3dB is not the same as -(3dB) */
if (*p->s == '-') {
char *next;
- strtod(p->s, &next);
+ double av_unused v = strtod(p->s, &next);
if (next != p->s && next[0] == 'd' && next[1] == 'B') {
*sign = 0;
return parse_primary(e, p);
diff --git a/libavutil/mips/float_dsp_mips.c b/libavutil/mips/float_dsp_mips.c
index e39a4bf2bb..5211a265d4 100644
--- a/libavutil/mips/float_dsp_mips.c
+++ b/libavutil/mips/float_dsp_mips.c
@@ -106,6 +106,43 @@ static void vector_fmul_mips(float *dst, const float *src0, const float *src1,
}
}
+static void vector_fmul_scalar_mips(float *dst, const float *src, float mul,
+ int len)
+{
+ float temp0, temp1, temp2, temp3;
+ float *local_src = (float*)src;
+ float *end = local_src + len;
+
+ /* loop unrolled 4 times */
+ __asm__ volatile(
+ ".set push \n\t"
+ ".set noreorder \n\t"
+ "1: \n\t"
+ "lwc1 %[temp0], 0(%[src]) \n\t"
+ "lwc1 %[temp1], 4(%[src]) \n\t"
+ "lwc1 %[temp2], 8(%[src]) \n\t"
+ "lwc1 %[temp3], 12(%[src]) \n\t"
+ "addiu %[dst], %[dst], 16 \n\t"
+ "mul.s %[temp0], %[temp0], %[mul] \n\t"
+ "mul.s %[temp1], %[temp1], %[mul] \n\t"
+ "mul.s %[temp2], %[temp2], %[mul] \n\t"
+ "mul.s %[temp3], %[temp3], %[mul] \n\t"
+ "addiu %[src], %[src], 16 \n\t"
+ "swc1 %[temp0], -16(%[dst]) \n\t"
+ "swc1 %[temp1], -12(%[dst]) \n\t"
+ "swc1 %[temp2], -8(%[dst]) \n\t"
+ "bne %[src], %[end], 1b \n\t"
+ " swc1 %[temp3], -4(%[dst]) \n\t"
+ ".set pop \n\t"
+
+ : [temp0]"=&f"(temp0), [temp1]"=&f"(temp1),
+ [temp2]"=&f"(temp2), [temp3]"=&f"(temp3),
+ [dst]"+r"(dst), [src]"+r"(local_src)
+ : [end]"r"(end), [mul]"f"(mul)
+ : "memory"
+ );
+}
+
static void vector_fmul_window_mips(float *dst, const float *src0,
const float *src1, const float *win, int len)
{
@@ -216,11 +253,91 @@ static void vector_fmul_window_mips(float *dst, const float *src0,
);
}
}
+
+static void butterflies_float_mips(float *av_restrict v1, float *av_restrict v2,
+ int len)
+{
+ float temp0, temp1, temp2, temp3, temp4;
+ float temp5, temp6, temp7, temp8, temp9;
+ float temp10, temp11, temp12, temp13, temp14, temp15;
+ int pom;
+ pom = (len >> 2)-1;
+
+ /* loop unrolled 4 times */
+ __asm__ volatile (
+ "lwc1 %[temp0], 0(%[v1]) \n\t"
+ "lwc1 %[temp1], 4(%[v1]) \n\t"
+ "lwc1 %[temp2], 8(%[v1]) \n\t"
+ "lwc1 %[temp3], 12(%[v1]) \n\t"
+ "lwc1 %[temp4], 0(%[v2]) \n\t"
+ "lwc1 %[temp5], 4(%[v2]) \n\t"
+ "lwc1 %[temp6], 8(%[v2]) \n\t"
+ "lwc1 %[temp7], 12(%[v2]) \n\t"
+ "beq %[pom], $zero, 2f \n\t"
+ "1: \n\t"
+ "sub.s %[temp8], %[temp0], %[temp4] \n\t"
+ "add.s %[temp9], %[temp0], %[temp4] \n\t"
+ "sub.s %[temp10], %[temp1], %[temp5] \n\t"
+ "add.s %[temp11], %[temp1], %[temp5] \n\t"
+ "sub.s %[temp12], %[temp2], %[temp6] \n\t"
+ "add.s %[temp13], %[temp2], %[temp6] \n\t"
+ "sub.s %[temp14], %[temp3], %[temp7] \n\t"
+ "add.s %[temp15], %[temp3], %[temp7] \n\t"
+ "addiu %[v1], %[v1], 16 \n\t"
+ "addiu %[v2], %[v2], 16 \n\t"
+ "addiu %[pom], %[pom], -1 \n\t"
+ "lwc1 %[temp0], 0(%[v1]) \n\t"
+ "lwc1 %[temp1], 4(%[v1]) \n\t"
+ "lwc1 %[temp2], 8(%[v1]) \n\t"
+ "lwc1 %[temp3], 12(%[v1]) \n\t"
+ "lwc1 %[temp4], 0(%[v2]) \n\t"
+ "lwc1 %[temp5], 4(%[v2]) \n\t"
+ "lwc1 %[temp6], 8(%[v2]) \n\t"
+ "lwc1 %[temp7], 12(%[v2]) \n\t"
+ "swc1 %[temp9], -16(%[v1]) \n\t"
+ "swc1 %[temp8], -16(%[v2]) \n\t"
+ "swc1 %[temp11], -12(%[v1]) \n\t"
+ "swc1 %[temp10], -12(%[v2]) \n\t"
+ "swc1 %[temp13], -8(%[v1]) \n\t"
+ "swc1 %[temp12], -8(%[v2]) \n\t"
+ "swc1 %[temp15], -4(%[v1]) \n\t"
+ "swc1 %[temp14], -4(%[v2]) \n\t"
+ "bgtz %[pom], 1b \n\t"
+ "2: \n\t"
+ "sub.s %[temp8], %[temp0], %[temp4] \n\t"
+ "add.s %[temp9], %[temp0], %[temp4] \n\t"
+ "sub.s %[temp10], %[temp1], %[temp5] \n\t"
+ "add.s %[temp11], %[temp1], %[temp5] \n\t"
+ "sub.s %[temp12], %[temp2], %[temp6] \n\t"
+ "add.s %[temp13], %[temp2], %[temp6] \n\t"
+ "sub.s %[temp14], %[temp3], %[temp7] \n\t"
+ "add.s %[temp15], %[temp3], %[temp7] \n\t"
+ "swc1 %[temp9], 0(%[v1]) \n\t"
+ "swc1 %[temp8], 0(%[v2]) \n\t"
+ "swc1 %[temp11], 4(%[v1]) \n\t"
+ "swc1 %[temp10], 4(%[v2]) \n\t"
+ "swc1 %[temp13], 8(%[v1]) \n\t"
+ "swc1 %[temp12], 8(%[v2]) \n\t"
+ "swc1 %[temp15], 12(%[v1]) \n\t"
+ "swc1 %[temp14], 12(%[v2]) \n\t"
+
+ : [v1]"+r"(v1), [v2]"+r"(v2), [pom]"+r"(pom), [temp0] "=&f" (temp0),
+ [temp1]"=&f"(temp1), [temp2]"=&f"(temp2), [temp3]"=&f"(temp3),
+ [temp4]"=&f"(temp4), [temp5]"=&f"(temp5), [temp6]"=&f"(temp6),
+ [temp7]"=&f"(temp7), [temp8]"=&f"(temp8), [temp9]"=&f"(temp9),
+ [temp10]"=&f"(temp10), [temp11]"=&f"(temp11), [temp12]"=&f"(temp12),
+ [temp13]"=&f"(temp13), [temp14]"=&f"(temp14), [temp15]"=&f"(temp15)
+ :
+ : "memory"
+ );
+}
#endif /* HAVE_INLINE_ASM && HAVE_MIPSFPU */
void ff_float_dsp_init_mips(AVFloatDSPContext *fdsp) {
#if HAVE_INLINE_ASM && HAVE_MIPSFPU
fdsp->vector_fmul = vector_fmul_mips;
+ fdsp->vector_fmul_scalar = vector_fmul_scalar_mips;
fdsp->vector_fmul_window = vector_fmul_window_mips;
+ fdsp->butterflies_float = butterflies_float_mips;
#endif /* HAVE_INLINE_ASM && HAVE_MIPSFPU */
}
diff --git a/libavutil/parseutils.c b/libavutil/parseutils.c
index ca40569e6a..73e400ac62 100644
--- a/libavutil/parseutils.c
+++ b/libavutil/parseutils.c
@@ -109,6 +109,12 @@ static const VideoSizeAbbr video_size_abbrs[] = {
{ "hd480", 852, 480 },
{ "hd720", 1280, 720 },
{ "hd1080", 1920,1080 },
+ { "2k", 2048,1080 }, /* Digital Cinema System Specification */
+ { "2kflat", 1998,1080 },
+ { "2kscope", 2048, 858 },
+ { "4k", 4096,2160 }, /* Digital Cinema System Specification */
+ { "4kflat", 3996,2160 },
+ { "4kscope", 4096,1716 },
};
static const VideoRateAbbr video_rate_abbrs[]= {
diff --git a/libavutil/version.h b/libavutil/version.h
index 2b574f57ff..3d53261291 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -76,7 +76,7 @@
#define LIBAVUTIL_VERSION_MAJOR 52
#define LIBAVUTIL_VERSION_MINOR 17
-#define LIBAVUTIL_VERSION_MICRO 100
+#define LIBAVUTIL_VERSION_MICRO 101
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \