summaryrefslogtreecommitdiffstats
path: root/libvo/vosub_vidix.c
diff options
context:
space:
mode:
authornick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-01-06 19:21:10 +0000
committernick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-01-06 19:21:10 +0000
commit468a8546fa788aa0be1d4da536968524ffa6bedd (patch)
treeae4d451ec06b53a1a0edddabdb26f572f2e022e4 /libvo/vosub_vidix.c
parent2e955c8bfcb340e9115892ee1f8adbeb12791711 (diff)
downloadmpv-468a8546fa788aa0be1d4da536968524ffa6bedd.tar.bz2
mpv-468a8546fa788aa0be1d4da536968524ffa6bedd.tar.xz
Looks working ;)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4015 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/vosub_vidix.c')
-rw-r--r--libvo/vosub_vidix.c45
1 files changed, 22 insertions, 23 deletions
diff --git a/libvo/vosub_vidix.c b/libvo/vosub_vidix.c
index 2868f77ddc..e0e7b26ff3 100644
--- a/libvo/vosub_vidix.c
+++ b/libvo/vosub_vidix.c
@@ -1,3 +1,4 @@
+
/*
* vosub_vidix.c
*
@@ -123,6 +124,7 @@ int vidix_init(unsigned src_width,unsigned src_height,
}
image_width = src_width;
image_height = src_height;
+ src_format = format;
memset(&vidix_play,0,sizeof(vidix_playback_t));
vidix_play.fourcc = format;
vidix_play.capability = vidix_cap.flags; /* every ;) */
@@ -167,10 +169,10 @@ uint32_t vidix_draw_slice_420(uint8_t *image[], int stride[], int w,int h,int x,
{
uint8_t *src;
uint8_t *dest;
- unsigned bespitch;
+ unsigned bespitch,apitch;
int i;
-
- bespitch = (vidix_play.dest.w + (vidix_play.dest.pitch.y-1)) & ~(vidix_play.dest.pitch.y-1);
+ apitch = vidix_play.dest.pitch.y-1;
+ bespitch = (w + apitch) & ~apitch;
dest = vidix_mem + frames[next_frame] + vidix_play.offset.y;
dest += bespitch*y + x;
@@ -181,28 +183,26 @@ uint32_t vidix_draw_slice_420(uint8_t *image[], int stride[], int w,int h,int x,
dest += bespitch;
}
- w/=2;h/=2;x/=2;y/=2;
-
- bespitch = (vidix_play.dest.w + (vidix_play.dest.pitch.u-1)) & ~(vidix_play.dest.pitch.u-1);
-
- dest = vidix_mem + frames[next_frame] + vidix_play.offset.u;
- dest += bespitch*y + x;
+ apitch = vidix_play.dest.pitch.v-1;
+ bespitch = (w + apitch) & ~apitch;
+ dest = vidix_mem + frames[next_frame] + vidix_play.offset.v;
+ dest += (bespitch*y + x)/2;
src = image[1];
- for(i=0;i<h;i++){
- memcpy(dest,src,w);
+ for(i=0;i<h/2;i++){
+ memcpy(dest,src,w/2);
src+=stride[1];
- dest+=bespitch;
+ dest+=bespitch/2;
}
+ apitch = vidix_play.dest.pitch.u-1;
+ bespitch = (w + apitch) & ~apitch;
- bespitch = (vidix_play.dest.w + (vidix_play.dest.pitch.v-1)) & ~(vidix_play.dest.pitch.v-1);
-
- dest = vidix_mem + frames[next_frame] + vidix_play.offset.v;
- dest += bespitch*y + x;
+ dest = vidix_mem + frames[next_frame] + vidix_play.offset.u;
+ dest += (bespitch*y + x)/2;
src = image[2];
- for(i=0;i<h;i++){
- memcpy(dest,src,w);
+ for(i=0;i<h/2;i++){
+ memcpy(dest,src,w/2);
src+=stride[2];
- dest += bespitch;
+ dest += bespitch/2;
}
return 0;
}
@@ -211,11 +211,10 @@ uint32_t vidix_draw_slice_422(uint8_t *image[], int stride[], int w,int h,int x,
{
uint8_t *src;
uint8_t *dest;
- unsigned bespitch;
+ unsigned bespitch,apitch;
int i;
-
- bespitch = (vidix_play.dest.w + (vidix_play.dest.pitch.y-1)) & ~(vidix_play.dest.pitch.y-1);
-
+ apitch = vidix_play.dest.pitch.y-1;
+ bespitch = (w*2 + apitch) & ~apitch;
dest = vidix_mem + frames[next_frame] + vidix_play.offset.y;
dest += bespitch*y + x;
src = image[0];