From 5e826fd65e6e8385a196aa0fdb01f60cfb0b55b6 Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Tue, 2 Oct 2012 16:00:48 +0100 Subject: [PATCH 1/4] ARM: set Tag_ABI_align_preserved in all asm files All our ARM asm preserves alignment so setting this attribute in a common location is simpler. This removes numerous warnings when linking with armcc. Signed-off-by: Mans Rullgard --- libavcodec/arm/dsputil_arm.S | 2 -- libavcodec/arm/dsputil_armv6.S | 2 -- libavcodec/arm/dsputil_neon.S | 2 -- libavcodec/arm/fmtconvert_neon.S | 2 -- libavcodec/arm/h264idct_neon.S | 2 -- libavcodec/arm/int_neon.S | 1 - libavcodec/arm/mdct_fixed_neon.S | 2 -- libavcodec/arm/mdct_neon.S | 2 -- libavcodec/arm/rdft_neon.S | 2 -- libavcodec/arm/synth_filter_neon.S | 2 -- libavutil/arm/asm.S | 9 +-------- libavutil/arm/float_dsp_neon.S | 2 -- 12 files changed, 1 insertion(+), 29 deletions(-) diff --git a/libavcodec/arm/dsputil_arm.S b/libavcodec/arm/dsputil_arm.S index 3686befec1..78d7ad8e81 100644 --- a/libavcodec/arm/dsputil_arm.S +++ b/libavcodec/arm/dsputil_arm.S @@ -22,8 +22,6 @@ #include "config.h" #include "libavutil/arm/asm.S" - preserve8 - #if HAVE_ARMV5TE function ff_prefetch_arm, export=1 subs r2, r2, #1 diff --git a/libavcodec/arm/dsputil_armv6.S b/libavcodec/arm/dsputil_armv6.S index 6eabeee7ab..61535a121f 100644 --- a/libavcodec/arm/dsputil_armv6.S +++ b/libavcodec/arm/dsputil_armv6.S @@ -20,8 +20,6 @@ #include "libavutil/arm/asm.S" - preserve8 - .macro call_2x_pixels type, subp function ff_\type\()_pixels16\subp\()_armv6, export=1 push {r0-r3, lr} diff --git a/libavcodec/arm/dsputil_neon.S b/libavcodec/arm/dsputil_neon.S index 358ed61299..ca1d2dee3f 100644 --- a/libavcodec/arm/dsputil_neon.S +++ b/libavcodec/arm/dsputil_neon.S @@ -22,8 +22,6 @@ #include "config.h" #include "libavutil/arm/asm.S" - preserve8 - function ff_clear_block_neon, export=1 vmov.i16 q0, #0 .rept 8 diff --git a/libavcodec/arm/fmtconvert_neon.S b/libavcodec/arm/fmtconvert_neon.S index 66ff166f24..41a095a9cc 100644 --- a/libavcodec/arm/fmtconvert_neon.S +++ b/libavcodec/arm/fmtconvert_neon.S @@ -22,8 +22,6 @@ #include "config.h" #include "libavutil/arm/asm.S" - preserve8 - function ff_float_to_int16_neon, export=1 subs r2, r2, #8 vld1.64 {d0-d1}, [r1,:128]! diff --git a/libavcodec/arm/h264idct_neon.S b/libavcodec/arm/h264idct_neon.S index 182d3b2393..b23ddb1b73 100644 --- a/libavcodec/arm/h264idct_neon.S +++ b/libavcodec/arm/h264idct_neon.S @@ -20,8 +20,6 @@ #include "libavutil/arm/asm.S" - preserve8 - function ff_h264_idct_add_neon, export=1 vld1.64 {d0-d3}, [r1,:128] diff --git a/libavcodec/arm/int_neon.S b/libavcodec/arm/int_neon.S index 92cc518338..04208c2be9 100644 --- a/libavcodec/arm/int_neon.S +++ b/libavcodec/arm/int_neon.S @@ -21,7 +21,6 @@ #include "libavutil/arm/asm.S" - preserve8 .fpu neon function ff_scalarproduct_int16_neon, export=1 diff --git a/libavcodec/arm/mdct_fixed_neon.S b/libavcodec/arm/mdct_fixed_neon.S index 08a388777a..c77be59c65 100644 --- a/libavcodec/arm/mdct_fixed_neon.S +++ b/libavcodec/arm/mdct_fixed_neon.S @@ -20,8 +20,6 @@ #include "libavutil/arm/asm.S" - preserve8 - .macro prerot dst, rt lsr r3, r6, #2 @ n4 add \rt, r4, r6, lsr #1 @ revtab + n4 diff --git a/libavcodec/arm/mdct_neon.S b/libavcodec/arm/mdct_neon.S index 09dfdf4dd2..9f7cb46cd0 100644 --- a/libavcodec/arm/mdct_neon.S +++ b/libavcodec/arm/mdct_neon.S @@ -21,8 +21,6 @@ #include "libavutil/arm/asm.S" - preserve8 - #define ff_fft_calc_neon X(ff_fft_calc_neon) function ff_imdct_half_neon, export=1 diff --git a/libavcodec/arm/rdft_neon.S b/libavcodec/arm/rdft_neon.S index eb7433aca4..7d01d53f1a 100644 --- a/libavcodec/arm/rdft_neon.S +++ b/libavcodec/arm/rdft_neon.S @@ -21,8 +21,6 @@ #include "libavutil/arm/asm.S" - preserve8 - function ff_rdft_calc_neon, export=1 push {r4-r8,lr} diff --git a/libavcodec/arm/synth_filter_neon.S b/libavcodec/arm/synth_filter_neon.S index 6dabce6db8..62bb6674ed 100644 --- a/libavcodec/arm/synth_filter_neon.S +++ b/libavcodec/arm/synth_filter_neon.S @@ -20,8 +20,6 @@ #include "libavutil/arm/asm.S" - preserve8 - function ff_synth_filter_float_neon, export=1 push {r3-r11,lr} diff --git a/libavutil/arm/asm.S b/libavutil/arm/asm.S index 50305f778b..67d42e6ce6 100644 --- a/libavutil/arm/asm.S +++ b/libavutil/arm/asm.S @@ -52,14 +52,7 @@ .syntax unified T .thumb - -.macro require8 val=1 -ELF .eabi_attribute 24, \val -.endm - -.macro preserve8 val=1 -ELF .eabi_attribute 25, \val -.endm +ELF .eabi_attribute Tag_ABI_align_preserved, 1 .macro function name, export=0 .set .Lpic_idx, 0 diff --git a/libavutil/arm/float_dsp_neon.S b/libavutil/arm/float_dsp_neon.S index 03b164388f..4aa6f838dd 100644 --- a/libavutil/arm/float_dsp_neon.S +++ b/libavutil/arm/float_dsp_neon.S @@ -22,8 +22,6 @@ #include "config.h" #include "asm.S" - preserve8 - function ff_vector_fmul_neon, export=1 subs r3, r3, #8 vld1.32 {d0-d3}, [r1,:128]! From 1ca3b62b10e6c174b5758f94f70f334ccf5097be Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Tue, 2 Oct 2012 16:34:34 +0100 Subject: [PATCH 2/4] ARM: bswap: drop armcc version of av_bswap16() This function causes several versions of armcc to miscompile code, and the performance impact is small. Signed-off-by: Mans Rullgard --- libavutil/arm/bswap.h | 7 ------- 1 file changed, 7 deletions(-) diff --git a/libavutil/arm/bswap.h b/libavutil/arm/bswap.h index f94cbcf23f..e49cdd4640 100644 --- a/libavutil/arm/bswap.h +++ b/libavutil/arm/bswap.h @@ -26,13 +26,6 @@ #ifdef __ARMCC_VERSION #if HAVE_ARMV6 -#define av_bswap16 av_bswap16 -static av_always_inline av_const unsigned av_bswap16(unsigned x) -{ - __asm { rev16 x, x } - return x; -} - #define av_bswap32 av_bswap32 static av_always_inline av_const uint32_t av_bswap32(uint32_t x) { From 4edb34f6cc43a64ea6582ebaf95a7e9e56cbb9af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Sun, 26 Feb 2012 01:35:13 +0200 Subject: [PATCH 3/4] segment: Pass the interrupt callback on to the chained AVFormatContext, too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This might not be needed at the moment, but it's good practice to pass it to all chained AVFormatContexts, if it would happen to be used there at a later point. Signed-off-by: Martin Storsjö --- libavformat/segment.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavformat/segment.c b/libavformat/segment.c index 88d80a41b1..0c644d48ae 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -144,6 +144,7 @@ static int seg_write_header(AVFormatContext *s) goto fail; } + oc->interrupt_callback = s->interrupt_callback; seg->avf = oc; oc->streams = s->streams; From 51a15ed7406f73aed0986de26e16578e55ce0da3 Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Wed, 3 Oct 2012 00:42:57 +0100 Subject: [PATCH 4/4] ARM: use numeric ID for Tag_ABI_align_preserved Some old assemblers still in use do not support named tags. Signed-off-by: Mans Rullgard --- libavutil/arm/asm.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavutil/arm/asm.S b/libavutil/arm/asm.S index 67d42e6ce6..78942c808c 100644 --- a/libavutil/arm/asm.S +++ b/libavutil/arm/asm.S @@ -52,7 +52,7 @@ .syntax unified T .thumb -ELF .eabi_attribute Tag_ABI_align_preserved, 1 +ELF .eabi_attribute 25, 1 @ Tag_ABI_align_preserved .macro function name, export=0 .set .Lpic_idx, 0