summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-23 16:20:46 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-23 16:20:46 +0000
commit4499002cf9122ced80b8c3a74970305640e255ac (patch)
tree5b1ca7f5abfefabd1d6b01cc958b9f0e81e43519 /libmpdemux
parent00f615778747d8ef65537c57a88c08f3aebfe20a (diff)
downloadmpv-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
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_asf.c11
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 {