[FFmpeg-devel] remove palette8torgb15 and palette8torgb15, was: make swscale's palette functions public
Reimar Döffinger
Reimar.Doeffinger
Mon May 31 18:49:14 CEST 2010
On Mon, May 31, 2010 at 04:40:24PM +0200, Reinhard Tartler wrote:
> On Mo, Mai 24, 2010 at 21:55:04 (CEST), Reinhard Tartler wrote:
>
> > sorry for the cross post, but this is a proposed patch that affects both
> > projects.
> >
> > On Sun, May 16, 2010 at 20:58:36 (CEST), Michael Niedermayer wrote:
> >>> BTW, during my work I noticed that palette8torgb16 and palette8torgb15
> >>> (and their bgr counterparts) implement exactly the same code. Is this
> >>> really intended?
> >>
> >> certainly not
> >> this should definitly be fixed before making them officially public
> >
> > Disclaimer: I'm not sure if this code duplication is intentional or
> > not. I read Michaels comment that it is not. Looking at their users, it
> > looks to me that they can be rewritten to use their 16bit variants. In
> > this case, mplayer code could be simplified like this:
> > Index: libmpcodecs/vf_palette.c
> > ===================================================================
> > --- libmpcodecs/vf_palette.c (revision 31208)
> > +++ libmpcodecs/vf_palette.c (working copy)
> > @@ -114,11 +114,6 @@
> > // no stride conversion needed
> > switch(IMGFMT_RGB_DEPTH(dmpi->imgfmt)){
> > case 15:
> > - if (IMGFMT_IS_BGR(dmpi->imgfmt))
> > - palette8tobgr15(mpi->planes[0],dmpi->planes[0],mpi->h*mpi->w,mpi->planes[1]);
> > - else
> > - palette8torgb15(mpi->planes[0],dmpi->planes[0],mpi->h*mpi->w,mpi->planes[1]);
> > - break;
> > case 16:
> > if (IMGFMT_IS_BGR(dmpi->imgfmt))
> > palette8tobgr16(mpi->planes[0],dmpi->planes[0],mpi->h*mpi->w,mpi->planes[1]);
> > @@ -145,11 +140,6 @@
> > unsigned char* dst=dmpi->planes[0]+y*dmpi->stride[0];
> > switch(IMGFMT_RGB_DEPTH(dmpi->imgfmt)){
> > case 15:
> > - if (IMGFMT_IS_BGR(dmpi->imgfmt))
> > - palette8tobgr15(src,dst,mpi->w,mpi->planes[1]);
> > - else
> > - palette8torgb15(src,dst,mpi->w,mpi->planes[1]);
> > - break;
> > case 16:
> > if (IMGFMT_IS_BGR(dmpi->imgfmt))
> > palette8tobgr16(src,dst,mpi->w,mpi->planes[1]);
> > Index: libswscale/rgb2rgb.c
> > ===================================================================
> > --- libswscale/rgb2rgb.c (revision 31208)
> > +++ libswscale/rgb2rgb.c (working copy)
> > @@ -250,22 +250,6 @@
> > ((uint16_t *)dst)[i] = bswap_16(((const uint16_t *)palette)[src[i]]);
> > }
> >
> > -/**
> > - * Palette is assumed to contain BGR15, see rgb32to15 to convert the palette.
> > - */
> > -void palette8torgb15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
> > -{
> > - long i;
> > - for (i=0; i<num_pixels; i++)
> > - ((uint16_t *)dst)[i] = ((const uint16_t *)palette)[src[i]];
> > -}
> > -void palette8tobgr15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
> > -{
> > - long i;
> > - for (i=0; i<num_pixels; i++)
> > - ((uint16_t *)dst)[i] = bswap_16(((const uint16_t *)palette)[src[i]]);
> > -}
> > -
> > void rgb32to24(const uint8_t *src, uint8_t *dst, long src_size)
> > {
> > long i;
> > Index: libswscale/rgb2rgb.h
> > ===================================================================
> > --- libswscale/rgb2rgb.h (revision 31208)
> > +++ libswscale/rgb2rgb.h (working copy)
> > @@ -70,8 +70,6 @@
> > void palette8topacked24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
> > void palette8torgb16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
> > void palette8tobgr16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
> > -void palette8torgb15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
> > -void palette8tobgr15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
> >
> > /**
> > * Height should be a multiple of 2 and width should be a multiple of 16.
> >
> >
> > In case the 15bit variants are supposed to contain different code, could
> > someone please elaborate, or ideally, fix the code?
>
> ping?
Seems fine, though I think vf_palette might not be 100% working anymore anyway.
At the very least it is not really useful with FFmpeg decoders since they all use the
same palette format.
More information about the ffmpeg-devel
mailing list