mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-05 06:28:55 +02:00
472 lines
19 KiB
Diff
472 lines
19 KiB
Diff
From da55da8c61522776ebb01e3cb6c1f8225c97383b Mon Sep 17 00:00:00 2001
|
|
From: Adrien Destugues <pulkomandy@gmail.com>
|
|
Date: Sat, 30 Aug 2014 22:50:29 +0200
|
|
Subject: applying patch ffmpeg-0.10.14-gcc2.patch
|
|
|
|
|
|
diff --git a/cmdutils.c b/cmdutils.c
|
|
index 01abc51..ea73b8c 100644
|
|
--- a/cmdutils.c
|
|
+++ b/cmdutils.c
|
|
@@ -89,7 +89,7 @@ static void log_callback_report(void *ptr, int level, const char *fmt, va_list v
|
|
char line[1024];
|
|
static int print_prefix = 1;
|
|
|
|
- va_copy(vl2, vl);
|
|
+ __va_copy(vl2, vl);
|
|
av_log_default_callback(ptr, level, fmt, vl);
|
|
av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix);
|
|
va_end(vl2);
|
|
diff --git a/configure b/configure
|
|
index b65cefe..8c6b676 100755
|
|
--- a/configure
|
|
+++ b/configure
|
|
@@ -1369,7 +1369,6 @@ avx_deps="ssse3"
|
|
|
|
aligned_stack_if_any="ppc x86"
|
|
fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
|
|
-fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
|
|
fast_unaligned_if_any="armv6 ppc x86"
|
|
|
|
inline_asm_deps="!tms470"
|
|
@@ -1876,7 +1875,7 @@ AS_O='-o $@'
|
|
CC_O='-o $@'
|
|
CXX_O='-o $@'
|
|
|
|
-host_cflags='-D_ISOC99_SOURCE -O3 -g'
|
|
+host_cflags='-D_ISOC99_SOURCE -O2 -g'
|
|
host_libs='-lm'
|
|
|
|
target_path='$(CURDIR)'
|
|
@@ -1958,6 +1957,7 @@ for n in $COMPONENT_LIST; do
|
|
done
|
|
|
|
enable $ARCH_EXT_LIST $ALL_TESTS
|
|
+disable sse
|
|
|
|
die_unknown(){
|
|
echo "Unknown option \"$1\"."
|
|
@@ -2154,7 +2154,7 @@ elif $cc -v 2>&1 | grep -qi ^gcc; then
|
|
CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
|
|
AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
|
|
fi
|
|
- speed_cflags='-O3'
|
|
+ speed_cflags='-O2'
|
|
size_cflags='-Os'
|
|
elif $cc --version 2>/dev/null | grep -q Intel; then
|
|
cc_type=icc
|
|
@@ -2841,10 +2841,6 @@ check_cc <<EOF && enable attribute_packed
|
|
struct { int x; } __attribute__((packed)) x;
|
|
EOF
|
|
|
|
-check_cc <<EOF && enable attribute_may_alias
|
|
-union { int x; } __attribute__((may_alias)) x;
|
|
-EOF
|
|
-
|
|
check_cc <<EOF || die "endian test failed"
|
|
unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
|
|
EOF
|
|
@@ -3116,8 +3112,6 @@ disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersi
|
|
enabled vaapi && require vaapi va/va.h vaInitialize -lva
|
|
|
|
check_mathfunc cbrtf
|
|
-check_mathfunc exp2
|
|
-check_mathfunc exp2f
|
|
check_mathfunc llrint
|
|
check_mathfunc llrintf
|
|
check_mathfunc log2
|
|
diff --git a/ffmpeg.c b/ffmpeg.c
|
|
index 2d2d081..de93ea2 100644
|
|
--- a/ffmpeg.c
|
|
+++ b/ffmpeg.c
|
|
@@ -1247,9 +1247,11 @@ need_realloc:
|
|
av_fifo_size(ost->fifo) / (enc->channels * osize); // FIXME wrong
|
|
|
|
if (ost->audio_resample) {
|
|
+ uint8_t *buftmp2[] = { buftmp };
|
|
+ const uint8_t *buf2[] = { buf };
|
|
buftmp = audio_buf;
|
|
- size_out = swr_convert(ost->swr, ( uint8_t*[]){buftmp}, audio_buf_size / (enc->channels * osize),
|
|
- (const uint8_t*[]){buf }, size / (dec->channels * isize));
|
|
+ size_out = swr_convert(ost->swr, buftmp2, audio_buf_size / (enc->channels * osize),
|
|
+ buf2, size / (dec->channels * isize));
|
|
size_out = size_out * enc->channels * osize;
|
|
} else {
|
|
buftmp = buf;
|
|
diff --git a/ffprobe.c b/ffprobe.c
|
|
index 48c813a..be3d3ad 100644
|
|
--- a/ffprobe.c
|
|
+++ b/ffprobe.c
|
|
@@ -293,7 +293,9 @@ static void writer_print_time(WriterContext *wctx, const char *key,
|
|
writer_print_string(wctx, key, "N/A", 1);
|
|
} else {
|
|
double d = ts * av_q2d(*time_base);
|
|
- value_string(buf, sizeof(buf), (struct unit_value){.val.d=d, .unit=unit_second_str});
|
|
+ struct unit_value value2 = {.unit=unit_second_str};
|
|
+ value2.val.d = d;
|
|
+ value_string(buf, sizeof(buf), value2);
|
|
writer_print_string(wctx, key, buf, 0);
|
|
}
|
|
}
|
|
@@ -1249,8 +1251,8 @@ static void writer_register_all(void)
|
|
#define print_str_opt(k, v) writer_print_string(w, k, v, 1)
|
|
#define print_time(k, v, tb) writer_print_time(w, k, v, tb)
|
|
#define print_ts(k, v) writer_print_ts(w, k, v)
|
|
-#define print_val(k, v, u) writer_print_string(w, k, \
|
|
- value_string(val_str, sizeof(val_str), (struct unit_value){.val.i = v, .unit=u}), 0)
|
|
+#define print_val(k, v, u) value2.val.i = v; value2.unit=u; writer_print_string(w, k, \
|
|
+ value_string(val_str, sizeof(val_str), value2), 0);
|
|
#define print_section_header(s) writer_print_section_header(w, s)
|
|
#define print_section_footer(s) writer_print_section_footer(w, s)
|
|
#define show_tags(metadata) writer_show_tags(w, metadata)
|
|
@@ -1261,6 +1263,7 @@ static void show_packet(WriterContext *w, AVFormatContext *fmt_ctx, AVPacket *pk
|
|
AVStream *st = fmt_ctx->streams[pkt->stream_index];
|
|
struct print_buf pbuf = {.s = NULL};
|
|
const char *s;
|
|
+ struct unit_value value2;
|
|
|
|
print_section_header("packet");
|
|
s = av_get_media_type_string(st->codec->codec_type);
|
|
@@ -1404,6 +1407,7 @@ static void show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_i
|
|
const char *s;
|
|
AVRational display_aspect_ratio;
|
|
struct print_buf pbuf = {.s = NULL};
|
|
+ struct unit_value value2;
|
|
|
|
print_section_header("stream");
|
|
|
|
@@ -1516,6 +1520,7 @@ static void show_format(WriterContext *w, AVFormatContext *fmt_ctx)
|
|
{
|
|
char val_str[128];
|
|
int64_t size = fmt_ctx->pb ? avio_size(fmt_ctx->pb) : -1;
|
|
+ struct unit_value value2;
|
|
|
|
print_section_header("format");
|
|
print_str("filename", fmt_ctx->filename);
|
|
@@ -1524,9 +1529,9 @@ static void show_format(WriterContext *w, AVFormatContext *fmt_ctx)
|
|
print_str("format_long_name", fmt_ctx->iformat->long_name);
|
|
print_time("start_time", fmt_ctx->start_time, &AV_TIME_BASE_Q);
|
|
print_time("duration", fmt_ctx->duration, &AV_TIME_BASE_Q);
|
|
- if (size >= 0) print_val ("size", size, unit_byte_str);
|
|
+ if (size >= 0) { print_val ("size", size, unit_byte_str); }
|
|
else print_str_opt("size", "N/A");
|
|
- if (fmt_ctx->bit_rate > 0) print_val ("bit_rate", fmt_ctx->bit_rate, unit_bit_per_second_str);
|
|
+ if (fmt_ctx->bit_rate > 0) { print_val ("bit_rate", fmt_ctx->bit_rate, unit_bit_per_second_str); }
|
|
else print_str_opt("bit_rate", "N/A");
|
|
show_tags(fmt_ctx->metadata);
|
|
print_section_footer("format");
|
|
diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
|
|
index 2ff6f9c..344fbd4 100644
|
|
--- a/libavcodec/aacenc.c
|
|
+++ b/libavcodec/aacenc.c
|
|
@@ -223,8 +223,9 @@ WINDOW_FUNC(eight_short)
|
|
const float *pwindow = sce->ics.use_kb_window[1] ? ff_aac_kbd_short_128 : ff_sine_128;
|
|
const float *in = audio + 448;
|
|
float *out = sce->ret;
|
|
+ int w;
|
|
|
|
- for (int w = 0; w < 8; w++) {
|
|
+ for (w = 0; w < 8; w++) {
|
|
dsp->vector_fmul (out, in, w ? pwindow : swindow, 128);
|
|
out += 128;
|
|
in += 128;
|
|
@@ -686,11 +687,12 @@ static av_cold int dsp_init(AVCodecContext *avctx, AACEncContext *s)
|
|
|
|
static av_cold int alloc_buffers(AVCodecContext *avctx, AACEncContext *s)
|
|
{
|
|
+ int ch;
|
|
FF_ALLOCZ_OR_GOTO(avctx, s->buffer.samples, 3 * 1024 * s->channels * sizeof(s->buffer.samples[0]), alloc_fail);
|
|
FF_ALLOCZ_OR_GOTO(avctx, s->cpe, sizeof(ChannelElement) * s->chan_map[0], alloc_fail);
|
|
FF_ALLOCZ_OR_GOTO(avctx, avctx->extradata, 5 + FF_INPUT_BUFFER_PADDING_SIZE, alloc_fail);
|
|
|
|
- for(int ch = 0; ch < s->channels; ch++)
|
|
+ for(ch = 0; ch < s->channels; ch++)
|
|
s->planar_samples[ch] = s->buffer.samples + 3 * 1024 * ch;
|
|
|
|
return 0;
|
|
diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c
|
|
index d36914a..103b742 100644
|
|
--- a/libavcodec/pngenc.c
|
|
+++ b/libavcodec/pngenc.c
|
|
@@ -54,8 +54,9 @@ static void png_get_interlaced_row(uint8_t *dst, int row_size,
|
|
int x, mask, dst_x, j, b, bpp;
|
|
uint8_t *d;
|
|
const uint8_t *s;
|
|
-
|
|
- mask = (int[]){0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff}[pass];
|
|
+ int mask_tmp[] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
|
|
+
|
|
+ mask = mask_tmp[pass];
|
|
switch(bits_per_pixel) {
|
|
case 1:
|
|
memset(dst, 0, row_size);
|
|
diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
|
|
index e73fbfe..3cde56c 100644
|
|
--- a/libavutil/pixdesc.c
|
|
+++ b/libavutil/pixdesc.c
|
|
@@ -1096,12 +1096,6 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = {
|
|
.log2_chroma_h = 1,
|
|
.flags = PIX_FMT_HWACCEL,
|
|
},
|
|
- [PIX_FMT_VDA_VLD] = {
|
|
- .name = "vda_vld",
|
|
- .log2_chroma_w = 1,
|
|
- .log2_chroma_h = 1,
|
|
- .flags = PIX_FMT_HWACCEL,
|
|
- },
|
|
[PIX_FMT_GRAY8A] = {
|
|
.name = "gray8a",
|
|
.nb_components = 2,
|
|
@@ -1110,16 +1104,6 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = {
|
|
{ 0, 1, 2, 0, 7 }, /* A */
|
|
},
|
|
},
|
|
- [PIX_FMT_GBR24P] = {
|
|
- .name = "gbr24p",
|
|
- .nb_components= 3,
|
|
- .comp = {
|
|
- { 1, 0, 1, 0, 7 }, /* B */
|
|
- { 0, 0, 1, 0, 7 }, /* G */
|
|
- { 2, 0, 1, 0, 7 }, /* R */
|
|
- },
|
|
- .flags = PIX_FMT_PLANAR | PIX_FMT_RGB,
|
|
- },
|
|
[PIX_FMT_GBRP] = {
|
|
.name = "gbrp",
|
|
.nb_components = 3,
|
|
diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
|
|
index d4b39f4..b98d38a 100644
|
|
--- a/libswscale/swscale_unscaled.c
|
|
+++ b/libswscale/swscale_unscaled.c
|
|
@@ -370,30 +370,38 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t* src[], int srcStr
|
|
}
|
|
|
|
switch (c->dstFormat) {
|
|
- case PIX_FMT_BGR24:
|
|
- gbr24ptopacked24((const uint8_t* []) {src[1], src[0], src[2]}, (int []) {srcStride[1], srcStride[0], srcStride[2]},
|
|
+ case PIX_FMT_BGR24: {
|
|
+ const uint8_t* src2[] = {src[1], src[0], src[2]};
|
|
+ int srcStride2[] = {srcStride[1], srcStride[0], srcStride[2]};
|
|
+ gbr24ptopacked24(src2, srcStride2,
|
|
dst[0] + srcSliceY * dstStride[0], dstStride[0], srcSliceH, c->srcW);
|
|
break;
|
|
-
|
|
- case PIX_FMT_RGB24:
|
|
- gbr24ptopacked24((const uint8_t* []) {src[2], src[0], src[1]}, (int []) {srcStride[2], srcStride[0], srcStride[1]},
|
|
+ }
|
|
+ case PIX_FMT_RGB24: {
|
|
+ const uint8_t* src2[] = {src[2], src[0], src[1]};
|
|
+ int srcStride2[] = {srcStride[2], srcStride[0], srcStride[1]};
|
|
+ gbr24ptopacked24(src2, srcStride2,
|
|
dst[0] + srcSliceY * dstStride[0], dstStride[0], srcSliceH, c->srcW);
|
|
break;
|
|
-
|
|
+ }
|
|
case PIX_FMT_ARGB:
|
|
alpha_first = 1;
|
|
- case PIX_FMT_RGBA:
|
|
- gbr24ptopacked32((const uint8_t* []) {src[2], src[0], src[1]}, (int []) {srcStride[2], srcStride[0], srcStride[1]},
|
|
+ case PIX_FMT_RGBA: {
|
|
+ const uint8_t* src2[] = {src[2], src[0], src[1]};
|
|
+ int srcStride2[] = {srcStride[2], srcStride[0], srcStride[1]};
|
|
+ gbr24ptopacked32(src2, srcStride2,
|
|
dst[0] + srcSliceY * dstStride[0], dstStride[0], srcSliceH, alpha_first, c->srcW);
|
|
break;
|
|
-
|
|
+ }
|
|
case PIX_FMT_ABGR:
|
|
alpha_first = 1;
|
|
- case PIX_FMT_BGRA:
|
|
- gbr24ptopacked32((const uint8_t* []) {src[1], src[0], src[2]}, (int []) {srcStride[1], srcStride[0], srcStride[2]},
|
|
+ case PIX_FMT_BGRA: {
|
|
+ const uint8_t* src2[] = {src[1], src[0], src[2]};
|
|
+ int srcStride2[] = {srcStride[1], srcStride[0], srcStride[2]};
|
|
+ gbr24ptopacked32(src2, srcStride2,
|
|
dst[0] + srcSliceY * dstStride[0], dstStride[0], srcSliceH, alpha_first, c->srcW);
|
|
break;
|
|
-
|
|
+ }
|
|
default:
|
|
av_log(c, AV_LOG_ERROR, "unsupported planar RGB conversion %s -> %s\n",
|
|
av_get_pix_fmt_name(c->srcFormat), av_get_pix_fmt_name(c->dstFormat));
|
|
--
|
|
1.8.3.4
|
|
|
|
|
|
From 445a786ab5ddf109c669285fa4c68d8ebf3502e9 Mon Sep 17 00:00:00 2001
|
|
From: Adrien Destugues <pulkomandy@gmail.com>
|
|
Date: Wed, 3 Sep 2014 22:14:36 +0200
|
|
Subject: More gcc2 fixes (for the GPL licenced parts)
|
|
|
|
|
|
diff --git a/libavfilter/vsrc_mptestsrc.c b/libavfilter/vsrc_mptestsrc.c
|
|
index 96b2a4c..3043204 100644
|
|
--- a/libavfilter/vsrc_mptestsrc.c
|
|
+++ b/libavfilter/vsrc_mptestsrc.c
|
|
@@ -385,7 +385,6 @@ AVFilter avfilter_vsrc_mptestsrc = {
|
|
|
|
.outputs = (const AVFilterPad[]) {{ .name = "default",
|
|
.type = AVMEDIA_TYPE_VIDEO,
|
|
- .config_props = config_props,
|
|
.request_frame = request_frame,
|
|
.config_props = config_props, },
|
|
{ .name = NULL }},
|
|
diff --git a/libavfilter/x86/yadif_template.c b/libavfilter/x86/yadif_template.c
|
|
index 0b60526..cc6f6a8 100644
|
|
--- a/libavfilter/x86/yadif_template.c
|
|
+++ b/libavfilter/x86/yadif_template.c
|
|
@@ -56,8 +56,8 @@
|
|
#endif
|
|
|
|
#define CHECK(pj,mj) \
|
|
- MOVQU" "#pj"(%[cur],%[mrefs]), "MM"2 \n\t" /* cur[x-refs-1+j] */\
|
|
- MOVQU" "#mj"(%[cur],%[prefs]), "MM"3 \n\t" /* cur[x+refs-1-j] */\
|
|
+ MOVQU" "#pj"(%2,%5), "MM"2 \n\t" /* cur[x-refs-1+j] */\
|
|
+ MOVQU" "#mj"(%2,%4), "MM"3 \n\t" /* cur[x+refs-1-j] */\
|
|
MOVQ" "MM"2, "MM"4 \n\t"\
|
|
MOVQ" "MM"2, "MM"5 \n\t"\
|
|
"pxor "MM"3, "MM"4 \n\t"\
|
|
@@ -115,20 +115,20 @@ void RENAME(ff_yadif_filter_line)(uint8_t *dst,
|
|
for(x=0; x<w; x+=STEP){\
|
|
__asm__ volatile(\
|
|
"pxor "MM"7, "MM"7 \n\t"\
|
|
- LOAD("(%[cur],%[mrefs])", MM"0") /* c = cur[x-refs] */\
|
|
- LOAD("(%[cur],%[prefs])", MM"1") /* e = cur[x+refs] */\
|
|
- LOAD("(%["prev2"])", MM"2") /* prev2[x] */\
|
|
- LOAD("(%["next2"])", MM"3") /* next2[x] */\
|
|
+ LOAD("(%2,%5)", MM"0") /* c = cur[x-refs] */\
|
|
+ LOAD("(%2,%4)", MM"1") /* e = cur[x+refs] */\
|
|
+ LOAD("(%"prev2")", MM"2") /* prev2[x] */\
|
|
+ LOAD("(%"next2")", MM"3") /* next2[x] */\
|
|
MOVQ" "MM"3, "MM"4 \n\t"\
|
|
"paddw "MM"2, "MM"3 \n\t"\
|
|
"psraw $1, "MM"3 \n\t" /* d = (prev2[x] + next2[x])>>1 */\
|
|
- MOVQ" "MM"0, (%[tmpA]) \n\t" /* c */\
|
|
- MOVQ" "MM"3, 16(%[tmpA]) \n\t" /* d */\
|
|
- MOVQ" "MM"1, 32(%[tmpA]) \n\t" /* e */\
|
|
+ MOVQ" "MM"0, (%0) \n\t" /* c */\
|
|
+ MOVQ" "MM"3, 16(%0) \n\t" /* d */\
|
|
+ MOVQ" "MM"1, 32(%0) \n\t" /* e */\
|
|
"psubw "MM"4, "MM"2 \n\t"\
|
|
PABS( MM"4", MM"2") /* temporal_diff0 */\
|
|
- LOAD("(%[prev],%[mrefs])", MM"3") /* prev[x-refs] */\
|
|
- LOAD("(%[prev],%[prefs])", MM"4") /* prev[x+refs] */\
|
|
+ LOAD("(%1,%5)", MM"3") /* prev[x-refs] */\
|
|
+ LOAD("(%1,%4)", MM"4") /* prev[x+refs] */\
|
|
"psubw "MM"0, "MM"3 \n\t"\
|
|
"psubw "MM"1, "MM"4 \n\t"\
|
|
PABS( MM"5", MM"3")\
|
|
@@ -137,8 +137,8 @@ void RENAME(ff_yadif_filter_line)(uint8_t *dst,
|
|
"psrlw $1, "MM"2 \n\t"\
|
|
"psrlw $1, "MM"3 \n\t"\
|
|
"pmaxsw "MM"3, "MM"2 \n\t"\
|
|
- LOAD("(%[next],%[mrefs])", MM"3") /* next[x-refs] */\
|
|
- LOAD("(%[next],%[prefs])", MM"4") /* next[x+refs] */\
|
|
+ LOAD("(%3,%5)", MM"3") /* next[x-refs] */\
|
|
+ LOAD("(%3,%4)", MM"4") /* next[x+refs] */\
|
|
"psubw "MM"0, "MM"3 \n\t"\
|
|
"psubw "MM"1, "MM"4 \n\t"\
|
|
PABS( MM"5", MM"3")\
|
|
@@ -146,7 +146,7 @@ void RENAME(ff_yadif_filter_line)(uint8_t *dst,
|
|
"paddw "MM"4, "MM"3 \n\t" /* temporal_diff2 */\
|
|
"psrlw $1, "MM"3 \n\t"\
|
|
"pmaxsw "MM"3, "MM"2 \n\t"\
|
|
- MOVQ" "MM"2, 48(%[tmpA]) \n\t" /* diff */\
|
|
+ MOVQ" "MM"2, 48(%0) \n\t" /* diff */\
|
|
\
|
|
"paddw "MM"0, "MM"1 \n\t"\
|
|
"paddw "MM"0, "MM"0 \n\t"\
|
|
@@ -154,8 +154,8 @@ void RENAME(ff_yadif_filter_line)(uint8_t *dst,
|
|
"psrlw $1, "MM"1 \n\t" /* spatial_pred */\
|
|
PABS( MM"2", MM"0") /* ABS(c-e) */\
|
|
\
|
|
- MOVQU" -1(%[cur],%[mrefs]), "MM"2 \n\t" /* cur[x-refs-1] */\
|
|
- MOVQU" -1(%[cur],%[prefs]), "MM"3 \n\t" /* cur[x+refs-1] */\
|
|
+ MOVQU" -1(%2,%5), "MM"2 \n\t" /* cur[x-refs-1] */\
|
|
+ MOVQU" -1(%2,%4), "MM"3 \n\t" /* cur[x+refs-1] */\
|
|
MOVQ" "MM"2, "MM"4 \n\t"\
|
|
"psubusb "MM"3, "MM"2 \n\t"\
|
|
"psubusb "MM"4, "MM"3 \n\t"\
|
|
@@ -177,20 +177,20 @@ void RENAME(ff_yadif_filter_line)(uint8_t *dst,
|
|
CHECK2\
|
|
\
|
|
/* if(p->mode<2) ... */\
|
|
- MOVQ" 48(%[tmpA]), "MM"6 \n\t" /* diff */\
|
|
- "cmpl $2, %[mode] \n\t"\
|
|
+ MOVQ" 48(%0), "MM"6 \n\t" /* diff */\
|
|
+ "cmpl $2, %6 \n\t"\
|
|
"jge 1f \n\t"\
|
|
- LOAD("(%["prev2"],%[mrefs],2)", MM"2") /* prev2[x-2*refs] */\
|
|
- LOAD("(%["next2"],%[mrefs],2)", MM"4") /* next2[x-2*refs] */\
|
|
- LOAD("(%["prev2"],%[prefs],2)", MM"3") /* prev2[x+2*refs] */\
|
|
- LOAD("(%["next2"],%[prefs],2)", MM"5") /* next2[x+2*refs] */\
|
|
+ LOAD("(%"prev2",%5,2)", MM"2") /* prev2[x-2*refs] */\
|
|
+ LOAD("(%"next2",%5,2)", MM"4") /* next2[x-2*refs] */\
|
|
+ LOAD("(%"prev2",%4,2)", MM"3") /* prev2[x+2*refs] */\
|
|
+ LOAD("(%"next2",%4,2)", MM"5") /* next2[x+2*refs] */\
|
|
"paddw "MM"4, "MM"2 \n\t"\
|
|
"paddw "MM"5, "MM"3 \n\t"\
|
|
"psrlw $1, "MM"2 \n\t" /* b */\
|
|
"psrlw $1, "MM"3 \n\t" /* f */\
|
|
- MOVQ" (%[tmpA]), "MM"4 \n\t" /* c */\
|
|
- MOVQ" 16(%[tmpA]), "MM"5 \n\t" /* d */\
|
|
- MOVQ" 32(%[tmpA]), "MM"7 \n\t" /* e */\
|
|
+ MOVQ" (%0), "MM"4 \n\t" /* c */\
|
|
+ MOVQ" 16(%0), "MM"5 \n\t" /* d */\
|
|
+ MOVQ" 32(%0), "MM"7 \n\t" /* e */\
|
|
"psubw "MM"4, "MM"2 \n\t" /* b-c */\
|
|
"psubw "MM"7, "MM"3 \n\t" /* f-e */\
|
|
MOVQ" "MM"5, "MM"0 \n\t"\
|
|
@@ -209,7 +209,7 @@ void RENAME(ff_yadif_filter_line)(uint8_t *dst,
|
|
"pmaxsw "MM"4, "MM"6 \n\t" /* diff= MAX3(diff, min, -max); */\
|
|
"1: \n\t"\
|
|
\
|
|
- MOVQ" 16(%[tmpA]), "MM"2 \n\t" /* d */\
|
|
+ MOVQ" 16(%0), "MM"2 \n\t" /* d */\
|
|
MOVQ" "MM"2, "MM"3 \n\t"\
|
|
"psubw "MM"6, "MM"2 \n\t" /* d-diff */\
|
|
"paddw "MM"6, "MM"3 \n\t" /* d+diff */\
|
|
@@ -218,13 +218,13 @@ void RENAME(ff_yadif_filter_line)(uint8_t *dst,
|
|
"packuswb "MM"1, "MM"1 \n\t"\
|
|
\
|
|
:\
|
|
- :[tmpA] "r"(tmpA),\
|
|
- [prev] "r"(prev),\
|
|
- [cur] "r"(cur),\
|
|
- [next] "r"(next),\
|
|
- [prefs]"r"((x86_reg)prefs),\
|
|
- [mrefs]"r"((x86_reg)mrefs),\
|
|
- [mode] "g"(mode)\
|
|
+ : "r"(tmpA),\
|
|
+ "r"(prev),\
|
|
+ "r"(cur),\
|
|
+ "r"(next),\
|
|
+ "r"((x86_reg)prefs),\
|
|
+ "r"((x86_reg)mrefs),\
|
|
+ "g"(mode)\
|
|
);\
|
|
__asm__ volatile(MOV" "MM"1, %0" :"=m"(*dst));\
|
|
dst += STEP;\
|
|
@@ -234,14 +234,14 @@ void RENAME(ff_yadif_filter_line)(uint8_t *dst,
|
|
}
|
|
|
|
if (parity) {
|
|
-#define prev2 "prev"
|
|
-#define next2 "cur"
|
|
+#define prev2 "1"
|
|
+#define next2 "2"
|
|
FILTER
|
|
#undef prev2
|
|
#undef next2
|
|
} else {
|
|
-#define prev2 "cur"
|
|
-#define next2 "next"
|
|
+#define prev2 "2"
|
|
+#define next2 "3"
|
|
FILTER
|
|
#undef prev2
|
|
#undef next2
|
|
--
|
|
1.8.3.4
|
|
|