You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-11-06 08:29:25 +02:00
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 Originally committed as revision 17561 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
This commit is contained in:
committed by
Diego Biurrun
parent
ad97e414e2
commit
3845b56dd1
@@ -867,7 +867,25 @@ altivec_yuv2packedX (SwsContext *c,
|
|||||||
G = vec_packclp (G0,G1);
|
G = vec_packclp (G0,G1);
|
||||||
B = vec_packclp (B0,B1);
|
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) {
|
if (i < dstW) {
|
||||||
@@ -927,7 +945,19 @@ altivec_yuv2packedX (SwsContext *c,
|
|||||||
B = vec_packclp (B0,B1);
|
B = vec_packclp (B0,B1);
|
||||||
|
|
||||||
nout = (vector unsigned char *)scratch;
|
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);
|
memcpy (&((uint32_t*)dest)[i], scratch, (dstW-i)/4);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user