vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Fri Aug 3 00:15:46 2012 +0300| [f7228aeeb5f7f1f8886b027a5ba1d61c912d273e] | committer: Rémi Denis-Courmont
deinterlace: make pf_end_merge an x86-only thing > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f7228aeeb5f7f1f8886b027a5ba1d61c912d273e --- modules/video_filter/deinterlace/deinterlace.c | 8 ++------ modules/video_filter/deinterlace/deinterlace.h | 6 ++++-- modules/video_filter/deinterlace/merge.h | 7 ++++++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/modules/video_filter/deinterlace/deinterlace.c b/modules/video_filter/deinterlace/deinterlace.c index b03987a..3c6691e 100644 --- a/modules/video_filter/deinterlace/deinterlace.c +++ b/modules/video_filter/deinterlace/deinterlace.c @@ -629,10 +629,7 @@ int Open( vlc_object_t *p_this ) #if defined(CAN_COMPILE_C_ALTIVEC) if( chroma->pixel_size == 1 && vlc_CPU_ALTIVEC() ) - { p_sys->pf_merge = MergeAltivec; - p_sys->pf_end_merge = NULL; - } else #endif #if defined(CAN_COMPILE_SSE) @@ -661,15 +658,14 @@ int Open( vlc_object_t *p_this ) #endif #if defined __ARM_NEON__ // FIXME: runtime detect support if( chroma->pixel_size == 1 && vlc_CPU_ARM_NEON() ) - { p_sys->pf_merge = MergeNEON; - p_sys->pf_end_merge = NULL; - } else #endif { p_sys->pf_merge = chroma->pixel_size == 1 ? Merge8BitGeneric : Merge16BitGeneric; +#if defined(__i386__) || defined(__x86_64__) p_sys->pf_end_merge = NULL; +#endif } /* */ diff --git a/modules/video_filter/deinterlace/deinterlace.h b/modules/video_filter/deinterlace/deinterlace.h index bb632f8..7c99f74 100644 --- a/modules/video_filter/deinterlace/deinterlace.h +++ b/modules/video_filter/deinterlace/deinterlace.h @@ -91,7 +91,7 @@ struct filter_sys_t { const vlc_chroma_description_t *chroma; - int i_mode; /**< Deinterlace mode */ + uint8_t i_mode; /**< Deinterlace mode */ /* Algorithm behaviour flags */ bool b_double_rate; /**< Shall we double the framerate? */ @@ -100,8 +100,10 @@ struct filter_sys_t /** Merge routine: C, MMX, SSE, ALTIVEC, NEON, ... */ void (*pf_merge) ( void *, const void *, const void *, size_t ); - /** Merge finalization routine: C, MMX, SSE, ALTIVEC, NEON, ... */ +#if defined (__i386__) || defined (__x86_64__) + /** Merge finalization routine for SSE */ void (*pf_end_merge) ( void ); +#endif /** * Metadata history (PTS, nb_fields, TFF). Used for framerate doublers. diff --git a/modules/video_filter/deinterlace/merge.h b/modules/video_filter/deinterlace/merge.h index 1117b37..285c1a3 100644 --- a/modules/video_filter/deinterlace/merge.h +++ b/modules/video_filter/deinterlace/merge.h @@ -64,7 +64,12 @@ * EndMerge() macro, which must be called after the merge is * finished, if the Merge() macro was used to perform the merge. */ -#define EndMerge if(p_filter->p_sys->pf_end_merge) p_filter->p_sys->pf_end_merge +#if defined(__i386__) || defined(__x86_64__) +# define EndMerge() \ + if(p_filter->p_sys->pf_end_merge) (p_filter->p_sys->pf_end_merge)() +#else +# define EndMerge() (void)0 +#endif /***************************************************************************** * Merge routines _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
