From d2feb83773352001fa05fa90ead7a53aede0278c Mon Sep 17 00:00:00 2001 From: "yuzhuohuang@qq.com" Date: Fri, 12 Oct 2012 15:33:02 +0800 Subject: [PATCH] X64 transport [Part 2](we do not(?) need _mm_empty in x64 build) --- src/filters/transform/basevideofilter/BaseVideoFilter.cpp | 3 +++ src/subpic/MemSubPic.cpp | 9 +++++++++ src/subpic/SimpleSubpicImpl.cpp | 4 +++- src/subtitles/Rasterizer.cpp | 5 ++++- src/subtitles/xy_filter.cpp | 3 +++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/filters/transform/basevideofilter/BaseVideoFilter.cpp b/src/filters/transform/basevideofilter/BaseVideoFilter.cpp index 3a1bb8c..509bed2 100644 --- a/src/filters/transform/basevideofilter/BaseVideoFilter.cpp +++ b/src/filters/transform/basevideofilter/BaseVideoFilter.cpp @@ -155,7 +155,10 @@ CBasePin* CBaseVideoFilter::GetPin(int n) HRESULT CBaseVideoFilter::Receive(IMediaSample* pIn) { +#ifndef _WIN64 + // TODOX64 : fixme! _mm_empty(); // just for safety +#endif CAutoLock cAutoLock(&m_csReceive); diff --git a/src/subpic/MemSubPic.cpp b/src/subpic/MemSubPic.cpp index 7617639..2c6e27f 100644 --- a/src/subpic/MemSubPic.cpp +++ b/src/subpic/MemSubPic.cpp @@ -770,7 +770,10 @@ HRESULT CMemSubPic::AlphaBltOther(const RECT* pSrc, const RECT* pDst, SubPicDesc AlphaBltYv12Chroma( dd[0], dst.pitchUV, w, h2, ss[0], src_origin, src.pitch); AlphaBltYv12Chroma( dd[1], dst.pitchUV, w, h2, ss[1], src_origin, src.pitch); +#ifndef _WIN64 + // TODOX64 : fixme! _mm_empty(); +#endif } break; default: @@ -1430,7 +1433,10 @@ HRESULT CMemSubPic::AlphaBltAnv12_P010( const BYTE* src_a, const BYTE* src_y, co hleft_vmid_mix_uv_p010_c(d, w, src_uv, src_a, src_pitch); } } +#ifndef _WIN64 + // TODOX64 : fixme! _mm_empty(); +#endif return S_OK; } else @@ -1492,7 +1498,10 @@ HRESULT CMemSubPic::AlphaBltAnv12_Nv12( const BYTE* src_a, const BYTE* src_y, co hleft_vmid_mix_uv_nv12_sse2(d+head, w00, src_uv+head, src_a+head, src_pitch, head>0 ? -1 : 0); hleft_vmid_mix_uv_nv12_c2(d+head+w00, tail, src_uv+head+w00, src_a+head+w00, src_pitch, (w00+head)>0 ? -1 : 0); } +#ifndef _WIN64 + // TODOX64 : fixme! _mm_empty(); +#endif } else { diff --git a/src/subpic/SimpleSubpicImpl.cpp b/src/subpic/SimpleSubpicImpl.cpp index e6fc597..8cc9a9f 100644 --- a/src/subpic/SimpleSubpicImpl.cpp +++ b/src/subpic/SimpleSubpicImpl.cpp @@ -318,8 +318,10 @@ HRESULT SimpleSubpic::AlphaBlt( SubPicDesc* target, const Bitmap& src ) CMemSubPic::AlphaBltYv12Luma( d, dst.pitch, w, h, sy, sa, src.pitch ); CMemSubPic::AlphaBltYv12Chroma( dd[0], dst.pitchUV, w, h2, su, sa, src.pitch); CMemSubPic::AlphaBltYv12Chroma( dd[1], dst.pitchUV, w, h2, sv, sa, src.pitch); - +#ifndef _WIN64 + // TODOX64 : fixme! _mm_empty(); +#endif } break; default: diff --git a/src/subtitles/Rasterizer.cpp b/src/subtitles/Rasterizer.cpp index 50f22f2..6c181d4 100644 --- a/src/subtitles/Rasterizer.cpp +++ b/src/subtitles/Rasterizer.cpp @@ -1366,13 +1366,16 @@ static __forceinline void pixmix2_sse2(DWORD* dst, DWORD color, DWORD shapealpha // Calculate a - b clamping to 0 instead of underflowing static __forceinline DWORD safe_subtract(DWORD a, DWORD b) { +#ifndef _WIN64 __m64 ap = _mm_cvtsi32_si64(a); __m64 bp = _mm_cvtsi32_si64(b); __m64 rp = _mm_subs_pu16(ap, bp); DWORD r = (DWORD)_mm_cvtsi64_si32(rp); _mm_empty(); return r; - //return (b > a) ? 0 : a - b; +#else + return (b > a) ? 0 : a - b; +#endif } /*** diff --git a/src/subtitles/xy_filter.cpp b/src/subtitles/xy_filter.cpp index 7c3a7c6..7c4ce28 100644 --- a/src/subtitles/xy_filter.cpp +++ b/src/subtitles/xy_filter.cpp @@ -929,7 +929,10 @@ void xy_gaussian_blur(PUINT8 dst, int dst_stride, xy_float_2_byte_transpose_sse(dst, true_width, dst_stride, ver_buff-r_y*2, true_height, true_width, fstride_ver); xy_free(buff_base); +#ifndef _WIN64 + // TODOX64 : fixme! _mm_empty(); +#endif } -- 2.11.4.GIT