summaryrefslogtreecommitdiffstats
path: root/libvo
diff options
context:
space:
mode:
authornplourde <nplourde@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-29 21:57:31 +0000
committernplourde <nplourde@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-29 21:57:31 +0000
commit88166aa171f9282950ffd78077c4efbadaa0929f (patch)
tree376586a3b7b62cf343e94e0fe659d9e396ef5b11 /libvo
parent59a387a829dc2fbebf8c9c507d706022fc5da45b (diff)
downloadmpv-88166aa171f9282950ffd78077c4efbadaa0929f.tar.bz2
mpv-88166aa171f9282950ffd78077c4efbadaa0929f.tar.xz
bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23696 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo')
-rw-r--r--libvo/vo_quartz.c37
1 files changed, 19 insertions, 18 deletions
diff --git a/libvo/vo_quartz.c b/libvo/vo_quartz.c
index 32b0b80c10..4bf40321df 100644
--- a/libvo/vo_quartz.c
+++ b/libvo/vo_quartz.c
@@ -31,6 +31,7 @@
#include "mp_msg.h"
#include "m_option.h"
#include "mp_fifo.h"
+#include "mpbswap.h"
#include "input/input.h"
#include "input/mouse.h"
@@ -203,7 +204,7 @@ static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, unsigne
case IMGFMT_YV12:
case IMGFMT_IYUV:
case IMGFMT_I420:
- vo_draw_alpha_yv12(w,h,src,srca,stride, ((char*)P) + P->componentInfoY.offset + x0 + y0 * imgRect.right, imgRect.right);
+ vo_draw_alpha_yv12(w,h,src,srca,stride, ((char*)P) + be2me_32(P->componentInfoY.offset) + x0 + y0 * imgRect.right, imgRect.right);
break;
case IMGFMT_UYVY:
vo_draw_alpha_uyvy(w,h,src,srca,stride,((char*)P) + (x0 + y0 * imgRect.right) * 2,imgRect.right*2);
@@ -812,12 +813,12 @@ static int config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_
case IMGFMT_YV12:
case IMGFMT_IYUV:
case IMGFMT_I420:
- P->componentInfoY.offset = sizeof(PlanarPixmapInfoYUV420);
- P->componentInfoCb.offset = P->componentInfoY.offset + image_size / 2;
- P->componentInfoCr.offset = P->componentInfoCb.offset + image_size / 4;
- P->componentInfoY.rowBytes = imgRect.right;
- P->componentInfoCb.rowBytes = imgRect.right / 2;
- P->componentInfoCr.rowBytes = imgRect.right / 2;
+ P->componentInfoY.offset = be2me_32(sizeof(PlanarPixmapInfoYUV420));
+ P->componentInfoCb.offset = be2me_32(be2me_32(P->componentInfoY.offset) + image_size / 2);
+ P->componentInfoCr.offset = be2me_32(be2me_32(P->componentInfoCb.offset) + image_size / 4);
+ P->componentInfoY.rowBytes = be2me_32(imgRect.right);
+ P->componentInfoCb.rowBytes = be2me_32(imgRect.right / 2);
+ P->componentInfoCr.rowBytes = be2me_32(imgRect.right / 2);
image_buffer_size = image_size + sizeof(PlanarPixmapInfoYUV420);
break;
case IMGFMT_UYVY:
@@ -998,19 +999,19 @@ static int draw_slice(uint8_t *src[], int stride[], int w,int h,int x,int y)
{
case IMGFMT_YV12:
case IMGFMT_I420:
- memcpy_pic(((char*)P) + P->componentInfoY.offset + x + imgRect.right * y, src[0], w, h, imgRect.right, stride[0]);
+ memcpy_pic(((char*)P) + be2me_32(P->componentInfoY.offset) + x + imgRect.right * y, src[0], w, h, imgRect.right, stride[0]);
x=x/2;y=y/2;w=w/2;h=h/2;
- memcpy_pic(((char*)P) + P->componentInfoCb.offset + x + imgRect.right / 2 * y, src[1], w, h, imgRect.right / 2, stride[1]);
- memcpy_pic(((char*)P) + P->componentInfoCr.offset + x + imgRect.right / 2 * y, src[2], w, h, imgRect.right / 2, stride[2]);
+ memcpy_pic(((char*)P) + be2me_32(P->componentInfoCb.offset) + x + imgRect.right / 2 * y, src[1], w, h, imgRect.right / 2, stride[1]);
+ memcpy_pic(((char*)P) + be2me_32(P->componentInfoCr.offset) + x + imgRect.right / 2 * y, src[2], w, h, imgRect.right / 2, stride[2]);
return 0;
case IMGFMT_IYUV:
- memcpy_pic(((char*)P) + P->componentInfoY.offset + x + imgRect.right * y, src[0], w, h, imgRect.right, stride[0]);
+ memcpy_pic(((char*)P) + be2me_32(P->componentInfoY.offset) + x + imgRect.right * y, src[0], w, h, imgRect.right, stride[0]);
x=x/2;y=y/2;w=w/2;h=h/2;
- memcpy_pic(((char*)P) + P->componentInfoCr.offset + x + imgRect.right / 2 * y, src[1], w, h, imgRect.right / 2, stride[1]);
- memcpy_pic(((char*)P) + P->componentInfoCb.offset + x + imgRect.right / 2 * y, src[2], w, h, imgRect.right / 2, stride[2]);
+ memcpy_pic(((char*)P) + be2me_32(P->componentInfoCr.offset) + x + imgRect.right / 2 * y, src[1], w, h, imgRect.right / 2, stride[1]);
+ memcpy_pic(((char*)P) + be2me_32(P->componentInfoCb.offset) + x + imgRect.right / 2 * y, src[2], w, h, imgRect.right / 2, stride[2]);
return 0;
}
return -1;
@@ -1164,23 +1165,23 @@ static uint32_t get_yuv_image(mp_image_t *mpi)
return VO_FALSE;
}
- mpi->planes[0]=((char*)P) + P->componentInfoY.offset;
+ mpi->planes[0]=((char*)P) + be2me_32(P->componentInfoY.offset);
mpi->stride[0]=imgRect.right;
mpi->width=imgRect.right;
if(mpi->flags&MP_IMGFLAG_SWAPPED)
{
// I420
- mpi->planes[1]=((char*)P) + P->componentInfoCb.offset;
- mpi->planes[2]=((char*)P) + P->componentInfoCr.offset;
+ mpi->planes[1]=((char*)P) + be2me_32(P->componentInfoCb.offset);
+ mpi->planes[2]=((char*)P) + be2me_32(P->componentInfoCr.offset);
mpi->stride[1]=imgRect.right/2;
mpi->stride[2]=imgRect.right/2;
}
else
{
// YV12
- mpi->planes[1]=((char*)P) + P->componentInfoCr.offset;
- mpi->planes[2]=((char*)P) + P->componentInfoCb.offset;
+ mpi->planes[1]=((char*)P) + be2me_32(P->componentInfoCr.offset);
+ mpi->planes[2]=((char*)P) + be2me_32(P->componentInfoCb.offset);
mpi->stride[1]=imgRect.right/2;
mpi->stride[2]=imgRect.right/2;
}