summaryrefslogtreecommitdiff
path: root/libswscale/swscale.c
diff options
context:
space:
mode:
authorReinhard Tartler <siretart@tauware.de>2010-06-01 19:35:16 +0000
committerReinhard Tartler <siretart@tauware.de>2010-06-01 19:35:16 +0000
commit2b991422f8fd6865bd5d0069a3f91827a4e6016e (patch)
tree3d9ebeffbe27eaaaf2c5c630646bddd5914ad86a /libswscale/swscale.c
parent73404a44c1aa647c48bb8d91e1ed51824e8f3376 (diff)
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
Diffstat (limited to 'libswscale/swscale.c')
-rw-r--r--libswscale/swscale.c35
1 files changed, 29 insertions, 6 deletions
diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 8868f5b1be..a64c09b334 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -1419,12 +1419,12 @@ static int palToRgbWrapper(SwsContext *c, const uint8_t* src[], int srcStride[],
if (usePal(srcFormat)) {
switch (dstFormat) {
- case PIX_FMT_RGB32 : conv = palette8topacked32; break;
- case PIX_FMT_BGR32 : conv = palette8topacked32; break;
- case PIX_FMT_BGR32_1: conv = palette8topacked32; break;
- case PIX_FMT_RGB32_1: conv = palette8topacked32; break;
- case PIX_FMT_RGB24 : conv = palette8topacked24; break;
- case PIX_FMT_BGR24 : conv = palette8topacked24; break;
+ case PIX_FMT_RGB32 : conv = sws_convertPalette8ToPacked32; break;
+ case PIX_FMT_BGR32 : conv = sws_convertPalette8ToPacked32; break;
+ case PIX_FMT_BGR32_1: conv = sws_convertPalette8ToPacked32; break;
+ case PIX_FMT_RGB32_1: conv = sws_convertPalette8ToPacked32; break;
+ case PIX_FMT_RGB24 : conv = sws_convertPalette8ToPacked24; 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);
}
#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;
+ }
+}