Commit 9fff59c9 authored by diego's avatar diego

altivec_yuv2packedX() ignores the requested output format and unconditionally

outputs RGBA. This patch supports 6 output formats and prints an error message
if it is asked to provide an output format it is not capable of.
patch by Alan Curry, pacman_at_world_dot_std_dot_com


git-svn-id: file:///var/local/repositories/mplayer/trunk/postproc@17561 b3059339-0415-0410-9bf9-f77b7e298cf2
parent 2ce5dff3
......@@ -867,7 +867,25 @@ altivec_yuv2packedX (SwsContext *c,
G = vec_packclp (G0,G1);
B = vec_packclp (B0,B1);
out_rgba (R,G,B,out);
switch(c->dstFormat) {
case IMGFMT_ABGR: out_abgr (R,G,B,out); break;
case IMGFMT_BGRA: out_bgra (R,G,B,out); break;
case IMGFMT_RGBA: out_rgba (R,G,B,out); break;
case IMGFMT_ARGB: out_argb (R,G,B,out); break;
case IMGFMT_RGB24: out_rgb24 (R,G,B,out); break;
case IMGFMT_BGR24: out_bgr24 (R,G,B,out); break;
default:
{
/* FIXME: either write more out_* macros or punt to yuv2packedXinC */
static int printed_error_message;
if(!printed_error_message) {
MSG_ERR("altivec_yuv2packedX doesn't support %s output\n",
vo_format_name(c->dstFormat));
printed_error_message=1;
}
return;
}
}
}
if (i < dstW) {
......@@ -927,7 +945,19 @@ altivec_yuv2packedX (SwsContext *c,
B = vec_packclp (B0,B1);
nout = (vector unsigned char *)scratch;
out_rgba (R,G,B,nout);
switch(c->dstFormat) {
case IMGFMT_ABGR: out_abgr (R,G,B,nout); break;
case IMGFMT_BGRA: out_bgra (R,G,B,nout); break;
case IMGFMT_RGBA: out_rgba (R,G,B,nout); break;
case IMGFMT_ARGB: out_argb (R,G,B,nout); break;
case IMGFMT_RGB24: out_rgb24 (R,G,B,nout); break;
case IMGFMT_BGR24: out_bgr24 (R,G,B,nout); break;
default:
/* Unreachable, I think. */
MSG_ERR("altivec_yuv2packedX doesn't support %s output\n",
vo_format_name(c->dstFormat));
return;
}
memcpy (&((uint32_t*)dest)[i], scratch, (dstW-i)/4);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment