diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-05-23 16:20:46 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-05-23 16:20:46 +0000 |
commit | 4499002cf9122ced80b8c3a74970305640e255ac (patch) | |
tree | 5b1ca7f5abfefabd1d6b01cc958b9f0e81e43519 | |
parent | 00f615778747d8ef65537c57a88c08f3aebfe20a (diff) | |
download | mpv-4499002cf9122ced80b8c3a74970305640e255ac.tar.bz2 mpv-4499002cf9122ced80b8c3a74970305640e255ac.tar.xz |
Speedup asf descrambling (avoid one memcpy and use our fastmemcpy).
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15554 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | libmpdemux/demux_asf.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/libmpdemux/demux_asf.c b/libmpdemux/demux_asf.c index dffe79294c..40066fa718 100644 --- a/libmpdemux/demux_asf.c +++ b/libmpdemux/demux_asf.c @@ -12,6 +12,7 @@ #include "asf.h" #include "demuxer.h" +#include "../libvo/fastmemcpy.h" /* * Load 16/32-bit values in little endian byte order @@ -40,9 +41,9 @@ extern int asf_movielength; // based on asf file-format doc by Eugene [http://divx.euro.ru] -static void asf_descrambling(unsigned char *src,int len){ +static void asf_descrambling(unsigned char **src,int len){ unsigned char *dst=malloc(len); - unsigned char *s2=src; + unsigned char *s2=*src; int i=0,x,y; while(len-i>=asf_scrambling_h*asf_scrambling_w*asf_scrambling_b){ // mp_msg(MSGT_DEMUX,MSGL_DBG4,"descrambling! (w=%d b=%d)\n",w,asf_scrambling_b); @@ -55,8 +56,8 @@ static void asf_descrambling(unsigned char *src,int len){ s2+=asf_scrambling_h*asf_scrambling_w*asf_scrambling_b; } //if(i<len) memcpy(dst+i,src+i,len-i); - memcpy(src,dst,i); - free(dst); + free(*src); + *src = dst; } @@ -96,7 +97,7 @@ static int demux_asf_read_packet(demuxer_t *demux,unsigned char *data,int len,in // closed segment, finalize packet: if(ds==demux->audio) if(asf_scrambling_h>1 && asf_scrambling_w>1) - asf_descrambling(ds->asf_packet->buffer,ds->asf_packet->len); + asf_descrambling(&ds->asf_packet->buffer,ds->asf_packet->len); ds_add_packet(ds,ds->asf_packet); ds->asf_packet=NULL; } else { |