You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Merge commit 'f61bece684d9685b07895508e6c1c733b5564ccf'
* commit 'f61bece684d9685b07895508e6c1c733b5564ccf': ppc: Add and use convenience macro to check for AltiVec availability Conflicts: libavcodec/ppc/dsputil_ppc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		| @@ -25,6 +25,7 @@ | ||||
| #include "libavutil/attributes.h" | ||||
| #include "libavutil/cpu.h" | ||||
| #include "libavutil/mem.h" | ||||
| #include "libavutil/ppc/cpu.h" | ||||
| #include "dsputil_altivec.h" | ||||
|  | ||||
| /* ***** WARNING ***** WARNING ***** WARNING ***** */ | ||||
| @@ -156,8 +157,7 @@ av_cold void ff_dsputil_init_ppc(DSPContext *c, AVCodecContext *avctx) | ||||
|     } | ||||
|     } | ||||
|  | ||||
| #if HAVE_ALTIVEC | ||||
|     if (mm_flags & AV_CPU_FLAG_ALTIVEC) { | ||||
|     if (PPC_ALTIVEC(mm_flags)) { | ||||
|         ff_dsputil_init_altivec(c, avctx); | ||||
|         ff_int_init_altivec(c, avctx); | ||||
|         c->gmc1 = ff_gmc1_altivec; | ||||
| @@ -180,5 +180,4 @@ av_cold void ff_dsputil_init_ppc(DSPContext *c, AVCodecContext *avctx) | ||||
|         } | ||||
|  | ||||
|     } | ||||
| #endif /* HAVE_ALTIVEC */ | ||||
| } | ||||
|   | ||||
							
								
								
									
										28
									
								
								libavutil/ppc/cpu.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								libavutil/ppc/cpu.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| /* | ||||
|  * This file is part of FFmpeg. | ||||
|  * | ||||
|  * FFmpeg is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Lesser General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2.1 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * FFmpeg is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Lesser General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Lesser General Public | ||||
|  * License along with FFmpeg; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
|  */ | ||||
|  | ||||
| #ifndef AVUTIL_PPC_CPU_H | ||||
| #define AVUTIL_PPC_CPU_H | ||||
|  | ||||
| #include "config.h" | ||||
| #include "libavutil/cpu.h" | ||||
| #include "libavutil/cpu_internal.h" | ||||
|  | ||||
| #define PPC_ALTIVEC(flags) CPUEXT(flags, ALTIVEC) | ||||
|  | ||||
| #endif /* AVUTIL_PPC_CPU_H */ | ||||
| @@ -22,12 +22,12 @@ | ||||
| #include "libavutil/attributes.h" | ||||
| #include "libavutil/cpu.h" | ||||
| #include "libavutil/float_dsp.h" | ||||
| #include "libavutil/ppc/cpu.h" | ||||
| #include "float_dsp_altivec.h" | ||||
|  | ||||
| av_cold void ff_float_dsp_init_ppc(AVFloatDSPContext *fdsp, int bit_exact) | ||||
| { | ||||
| #if HAVE_ALTIVEC | ||||
|     if (!(av_get_cpu_flags() & AV_CPU_FLAG_ALTIVEC)) | ||||
|     if (!PPC_ALTIVEC(av_get_cpu_flags())) | ||||
|         return; | ||||
|  | ||||
|     fdsp->vector_fmul = ff_vector_fmul_altivec; | ||||
| @@ -37,5 +37,4 @@ av_cold void ff_float_dsp_init_ppc(AVFloatDSPContext *fdsp, int bit_exact) | ||||
|     if (!bit_exact) { | ||||
|         fdsp->vector_fmul_window = ff_vector_fmul_window_altivec; | ||||
|     } | ||||
| #endif | ||||
| } | ||||
|   | ||||
| @@ -46,6 +46,7 @@ | ||||
| #include "libavutil/mathematics.h" | ||||
| #include "libavutil/opt.h" | ||||
| #include "libavutil/pixdesc.h" | ||||
| #include "libavutil/ppc/cpu.h" | ||||
| #include "libavutil/x86/asm.h" | ||||
| #include "libavutil/x86/cpu.h" | ||||
| #include "rgb2rgb.h" | ||||
| @@ -532,7 +533,7 @@ static av_cold int initFilter(int16_t **outFilter, int32_t **filterPos, | ||||
|             minFilterSize = min; | ||||
|     } | ||||
|  | ||||
|     if (HAVE_ALTIVEC && cpu_flags & AV_CPU_FLAG_ALTIVEC) { | ||||
|     if (PPC_ALTIVEC(cpu_flags)) { | ||||
|         // we can handle the special case 4, so we don't want to go the full 8 | ||||
|         if (minFilterSize < 5) | ||||
|             filterAlign = 4; | ||||
| @@ -990,7 +991,7 @@ int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], | ||||
|                              contrast, saturation); | ||||
|     // FIXME factorize | ||||
|  | ||||
|     if (HAVE_ALTIVEC && av_get_cpu_flags() & AV_CPU_FLAG_ALTIVEC) | ||||
|     if (PPC_ALTIVEC(av_get_cpu_flags())) | ||||
|         ff_yuv2rgb_init_tables_altivec(c, inv_table, brightness, | ||||
|                                        contrast, saturation); | ||||
|     } | ||||
| @@ -1412,8 +1413,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, | ||||
|         { | ||||
|             const int filterAlign = | ||||
|                 (HAVE_MMX && cpu_flags & AV_CPU_FLAG_MMX) ? 4 : | ||||
|                 (HAVE_ALTIVEC && cpu_flags & AV_CPU_FLAG_ALTIVEC) ? 8 : | ||||
|                 1; | ||||
|                 PPC_ALTIVEC(cpu_flags)                    ? 8 : 1; | ||||
|  | ||||
|             if (initFilter(&c->hLumFilter, &c->hLumFilterPos, | ||||
|                            &c->hLumFilterSize, c->lumXInc, | ||||
| @@ -1440,8 +1440,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, | ||||
|     { | ||||
|         const int filterAlign = | ||||
|             (HAVE_MMX && cpu_flags & AV_CPU_FLAG_MMX) ? 2 : | ||||
|             (HAVE_ALTIVEC && cpu_flags & AV_CPU_FLAG_ALTIVEC) ? 8 : | ||||
|             1; | ||||
|             PPC_ALTIVEC(cpu_flags)                    ? 8 : 1; | ||||
|  | ||||
|         if (initFilter(&c->vLumFilter, &c->vLumFilterPos, &c->vLumFilterSize, | ||||
|                        c->lumYInc, srcH, dstH, filterAlign, (1 << 12), | ||||
| @@ -1592,7 +1591,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, | ||||
|             av_log(c, AV_LOG_INFO, "using 3DNOW\n"); | ||||
|         else if (INLINE_MMX(cpu_flags)) | ||||
|             av_log(c, AV_LOG_INFO, "using MMX\n"); | ||||
|         else if (HAVE_ALTIVEC && cpu_flags & AV_CPU_FLAG_ALTIVEC) | ||||
|         else if (PPC_ALTIVEC(cpu_flags)) | ||||
|             av_log(c, AV_LOG_INFO, "using AltiVec\n"); | ||||
|         else | ||||
|             av_log(c, AV_LOG_INFO, "using C\n"); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user