[FFmpeg-devel] [PATCH] get rid of nonsense palette pointer for RGB8, GRAY8 etc.
Reimar Döffinger
Reimar.Doeffinger
Fri Mar 20 21:58:37 CET 2009
On Fri, Mar 20, 2009 at 09:12:49PM +0100, Michael Niedermayer wrote:
> On Fri, Mar 20, 2009 at 08:30:38PM +0100, Reimar D?ffinger wrote:
> > About fixing the swscale planarCopy, are you fine with this ugly hack (I
> > assume there is no need to "reset" the GRAY8 palette data in dst):
>
> no, sws_scale() passes dst through and this would end up changing the
> users dst[] i think
Sorry, that was a thinking error. Even more ugly, but this is what I
meant:
Index: libswscale/swscale.c
===================================================================
--- libswscale/swscale.c (revision 29018)
+++ libswscale/swscale.c (working copy)
@@ -2107,10 +2107,15 @@
return srcSliceH;
}
-static int planarCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
- int srcSliceH, uint8_t* dst[], int dstStride[])
+static int planarCopy(SwsContext *c, uint8_t* srcp[], int srcStride[], int srcSliceY,
+ int srcSliceH, uint8_t* dstp[], int dstStride[])
{
int plane;
+ uint8_t *src[4] = {srcp[0], srcp[1], srcp[2], srcp[3]};
+ uint8_t *dst[4] = {dstp[0], dstp[1], dstp[2], dstp[3]};
+ // ignore palette for GRAY8
+ if (!dst[2]) dst[1] = NULL;
+ if (!src[2]) src[1] = NULL;
for (plane=0; plane<4; plane++)
{
int length= (plane==0 || plane==3) ? c->srcW : -((-c->srcW)>>c->chrDstHSubSample);
More information about the ffmpeg-devel
mailing list