mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
additionallym deprecate palette8torgb16 and its bgr variant without replacement. These functions are not meant to be used by applications. Discussed at: http://comments.gmane.org/gmane.comp.video.ffmpeg.devel/109340 Originally committed as revision 31301 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
This commit is contained in:
parent
73404a44c1
commit
2b991422f8
@ -207,31 +207,15 @@ void sws_rgb2rgb_init(int flags)
|
|||||||
rgb2rgb_init_C();
|
rgb2rgb_init_C();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#if LIBSWSCALE_VERSION_MAJOR < 1
|
||||||
* Convert the palette to the same packet 32-bit format as the palette
|
|
||||||
*/
|
|
||||||
void palette8topacked32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
|
void palette8topacked32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
|
||||||
{
|
{
|
||||||
long i;
|
sws_convertPalette8ToPacked32(src, dst, num_pixels, palette);
|
||||||
|
|
||||||
for (i=0; i<num_pixels; i++)
|
|
||||||
((uint32_t *) dst)[i] = ((const uint32_t *) palette)[src[i]];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Palette format: ABCD -> dst format: ABC
|
|
||||||
*/
|
|
||||||
void palette8topacked24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
|
void palette8topacked24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
|
||||||
{
|
{
|
||||||
long i;
|
sws_convertPalette8ToPacked24(src, dst, num_pixels, palette);
|
||||||
|
|
||||||
for (i=0; i<num_pixels; i++) {
|
|
||||||
//FIXME slow?
|
|
||||||
dst[0]= palette[src[i]*4+0];
|
|
||||||
dst[1]= palette[src[i]*4+1];
|
|
||||||
dst[2]= palette[src[i]*4+2];
|
|
||||||
dst+= 3;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -249,6 +233,7 @@ void palette8tobgr16(const uint8_t *src, uint8_t *dst, long num_pixels, const ui
|
|||||||
for (i=0; i<num_pixels; i++)
|
for (i=0; i<num_pixels; i++)
|
||||||
((uint16_t *)dst)[i] = bswap_16(((const uint16_t *)palette)[src[i]]);
|
((uint16_t *)dst)[i] = bswap_16(((const uint16_t *)palette)[src[i]]);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void rgb32to24(const uint8_t *src, uint8_t *dst, long src_size)
|
void rgb32to24(const uint8_t *src, uint8_t *dst, long src_size)
|
||||||
{
|
{
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* Software YUV to YUV converter
|
* Software YUV to YUV converter
|
||||||
* Software YUV to RGB converter
|
* Software YUV to RGB converter
|
||||||
* Written by Nick Kurshev.
|
* Written by Nick Kurshev.
|
||||||
* palette & YUV & runtime CPU stuff by Michael (michaelni@gmx.at)
|
* YUV & runtime CPU stuff by Michael (michaelni@gmx.at)
|
||||||
*
|
*
|
||||||
* This file is part of FFmpeg.
|
* This file is part of FFmpeg.
|
||||||
*
|
*
|
||||||
@ -28,6 +28,9 @@
|
|||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
#include "libswscale/swscale.h"
|
||||||
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
/* A full collection of RGB to RGB(BGR) converters */
|
/* A full collection of RGB to RGB(BGR) converters */
|
||||||
extern void (*rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long src_size);
|
extern void (*rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long src_size);
|
||||||
extern void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, long src_size);
|
extern void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, long src_size);
|
||||||
@ -66,10 +69,15 @@ void shuffle_bytes_2103(const uint8_t *src, uint8_t *dst, long src_size);
|
|||||||
void shuffle_bytes_3012(const uint8_t *src, uint8_t *dst, long src_size);
|
void shuffle_bytes_3012(const uint8_t *src, uint8_t *dst, long src_size);
|
||||||
void shuffle_bytes_3210(const uint8_t *src, uint8_t *dst, long src_size);
|
void shuffle_bytes_3210(const uint8_t *src, uint8_t *dst, long src_size);
|
||||||
|
|
||||||
void palette8topacked32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
|
#if LIBSWSCALE_VERSION_MAJOR < 1
|
||||||
void palette8topacked24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
|
/* deprecated, use the public versions in swscale.h */
|
||||||
void palette8torgb16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
|
attribute_deprecated void palette8topacked32(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);
|
attribute_deprecated void palette8topacked24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
|
||||||
|
|
||||||
|
/* totally deprecated, please fix code that uses this */
|
||||||
|
attribute_deprecated void palette8torgb16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
|
||||||
|
attribute_deprecated void palette8tobgr16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Height should be a multiple of 2 and width should be a multiple of 16.
|
* Height should be a multiple of 2 and width should be a multiple of 16.
|
||||||
|
@ -1419,12 +1419,12 @@ static int palToRgbWrapper(SwsContext *c, const uint8_t* src[], int srcStride[],
|
|||||||
|
|
||||||
if (usePal(srcFormat)) {
|
if (usePal(srcFormat)) {
|
||||||
switch (dstFormat) {
|
switch (dstFormat) {
|
||||||
case PIX_FMT_RGB32 : conv = palette8topacked32; break;
|
case PIX_FMT_RGB32 : conv = sws_convertPalette8ToPacked32; break;
|
||||||
case PIX_FMT_BGR32 : conv = palette8topacked32; break;
|
case PIX_FMT_BGR32 : conv = sws_convertPalette8ToPacked32; break;
|
||||||
case PIX_FMT_BGR32_1: conv = palette8topacked32; break;
|
case PIX_FMT_BGR32_1: conv = sws_convertPalette8ToPacked32; break;
|
||||||
case PIX_FMT_RGB32_1: conv = palette8topacked32; break;
|
case PIX_FMT_RGB32_1: conv = sws_convertPalette8ToPacked32; break;
|
||||||
case PIX_FMT_RGB24 : conv = palette8topacked24; break;
|
case PIX_FMT_RGB24 : conv = sws_convertPalette8ToPacked24; break;
|
||||||
case PIX_FMT_BGR24 : conv = palette8topacked24; break;
|
case PIX_FMT_BGR24 : conv = sws_convertPalette8ToPacked24; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1957,3 +1957,26 @@ int sws_scale_ordered(SwsContext *c, const uint8_t* const src[], int srcStride[]
|
|||||||
return sws_scale(c, src, srcStride, srcSliceY, srcSliceH, dst, dstStride);
|
return sws_scale(c, src, srcStride, srcSliceY, srcSliceH, dst, dstStride);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Convert the palette to the same packed 32-bit format as the palette */
|
||||||
|
void sws_convertPalette8ToPacked32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
|
||||||
|
{
|
||||||
|
long i;
|
||||||
|
|
||||||
|
for (i=0; i<num_pixels; i++)
|
||||||
|
((uint32_t *) dst)[i] = ((const uint32_t *) palette)[src[i]];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Palette format: ABCD -> dst format: ABC */
|
||||||
|
void sws_convertPalette8ToPacked24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
|
||||||
|
{
|
||||||
|
long i;
|
||||||
|
|
||||||
|
for (i=0; i<num_pixels; i++) {
|
||||||
|
//FIXME slow?
|
||||||
|
dst[0]= palette[src[i]*4+0];
|
||||||
|
dst[1]= palette[src[i]*4+1];
|
||||||
|
dst[2]= palette[src[i]*4+2];
|
||||||
|
dst+= 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "libavutil/avutil.h"
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
#define LIBSWSCALE_VERSION_MAJOR 0
|
#define LIBSWSCALE_VERSION_MAJOR 0
|
||||||
#define LIBSWSCALE_VERSION_MINOR 10
|
#define LIBSWSCALE_VERSION_MINOR 11
|
||||||
#define LIBSWSCALE_VERSION_MICRO 0
|
#define LIBSWSCALE_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
|
#define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
|
||||||
@ -303,4 +303,29 @@ struct SwsContext *sws_getCachedContext(struct SwsContext *context,
|
|||||||
int flags, SwsFilter *srcFilter,
|
int flags, SwsFilter *srcFilter,
|
||||||
SwsFilter *dstFilter, const double *param);
|
SwsFilter *dstFilter, const double *param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts an 8bit paletted frame into a frame with a color depth of 32-bits.
|
||||||
|
*
|
||||||
|
* The output frame will have the same packed format as the palette.
|
||||||
|
*
|
||||||
|
* @param src source frame buffer
|
||||||
|
* @param dst destination frame buffer
|
||||||
|
* @param num_pixels number of pixels to convert
|
||||||
|
* @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src
|
||||||
|
*/
|
||||||
|
void sws_convertPalette8ToPacked32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts an 8bit paletted frame into a frame with a color depth of 24 bits.
|
||||||
|
*
|
||||||
|
* With the palette format "ABCD", the destination frame ends up with the format "ABC".
|
||||||
|
*
|
||||||
|
* @param src source frame buffer
|
||||||
|
* @param dst destination frame buffer
|
||||||
|
* @param num_pixels number of pixels to convert
|
||||||
|
* @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src
|
||||||
|
*/
|
||||||
|
void sws_convertPalette8ToPacked24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette);
|
||||||
|
|
||||||
|
|
||||||
#endif /* SWSCALE_SWSCALE_H */
|
#endif /* SWSCALE_SWSCALE_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user