Mercurial > mplayer.hg
view libvo/fastmemcpy.h @ 11350:007ec48cf146
Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
stream with multibyte characters in the url.
There is a bug in string_utf16() of libmpdemux/asf_mmst_streaming.c:
the url encoding code is written for single-byte character only. It
just fill a zero byte between every two adjacent bytes of the url
string. This is wrong when the url string contains multi-byte
characters.
My patch is in the attachment, and has been tested working. It uses
iconv() to convert the url's encoding to utf-16 correctly. So can this
patch be accepted and commit into CVS?
patch by Wang WenRui <wangwr@mail.ustc.edu.cn>
author | attila |
---|---|
date | Sat, 01 Nov 2003 14:43:28 +0000 |
parents | 23ba417cf64b |
children | ac3fd2ff2561 |
line wrap: on
line source
#ifndef __MPLAYER_MEMCPY #define __MPLAYER_MEMCPY 1 #include "../config.h" #ifdef USE_FASTMEMCPY #if defined(HAVE_MMX) || defined(HAVE_MMX2) || defined(HAVE_3DNOW) \ /* || defined(HAVE_SSE) || defined(HAVE_SSE2) */ #include <stddef.h> extern void * fast_memcpy(void * to, const void * from, size_t len); extern void * mem2agpcpy(void * to, const void * from, size_t len); #define memcpy(a,b,c) fast_memcpy(a,b,c) #else /* HAVE_MMX/MMX2/3DNOW/SSE/SSE2 */ #define mem2agpcpy(a,b,c) memcpy(a,b,c) #endif #else /* USE_FASTMEMCPY */ #define mem2agpcpy(a,b,c) memcpy(a,b,c) #endif static inline void * mem2agpcpy_pic(void * dst, void * src, int bytesPerLine, int height, int dstStride, int srcStride) { int i; void *retval=dst; if(dstStride == srcStride) mem2agpcpy(dst, src, srcStride*height); else { for(i=0; i<height; i++) { mem2agpcpy(dst, src, bytesPerLine); src+= srcStride; dst+= dstStride; } } return retval; } static inline void * memcpy_pic(void * dst, void * src, int bytesPerLine, int height, int dstStride, int srcStride) { int i; void *retval=dst; if(dstStride == srcStride) memcpy(dst, src, srcStride*height); else { for(i=0; i<height; i++) { memcpy(dst, src, bytesPerLine); src+= srcStride; dst+= dstStride; } } return retval; } #endif