X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libswscale%2Frgb2rgb.h;h=9d6e6df415010e1aa5584cf62f5f135abcf54706;hb=a9af75ae850d54cb4a03ce29a0f59c34b4f8f9ce;hp=f7e9e5dd833b7b28cfabb45f662d7731003b641a;hpb=26e16be00e35b11ffe5f953554092bae8e09070c;p=ffmpeg diff --git a/libswscale/rgb2rgb.h b/libswscale/rgb2rgb.h index f7e9e5dd833..9d6e6df4150 100644 --- a/libswscale/rgb2rgb.h +++ b/libswscale/rgb2rgb.h @@ -1,8 +1,8 @@ /* - * rgb2rgb.h, Software RGB to RGB convertor - * pluralize by Software PAL8 to RGB convertor - * Software YUV to YUV convertor - * Software YUV to RGB convertor + * software RGB to RGB converter + * pluralize by Software PAL8 to RGB converter + * Software YUV to YUV converter + * Software YUV to RGB converter * Written by Nick Kurshev. * palette & YUV & runtime CPU stuff by Michael (michaelni@gmx.at) * @@ -20,102 +20,105 @@ * * You should have received a copy of the GNU Lesser General Public * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef RGB2RGB_INCLUDED -#define RGB2RGB_INCLUDED +#ifndef SWSCALE_RGB2RGB_H +#define SWSCALE_RGB2RGB_H -/* A full collection of rgb to rgb(bgr) convertors */ -extern void (*rgb24to32) (const uint8_t *src, uint8_t *dst, long src_size); -extern void (*rgb24to16) (const uint8_t *src, uint8_t *dst, long src_size); -extern void (*rgb24to15) (const uint8_t *src, uint8_t *dst, long src_size); -extern void (*rgb32to24) (const uint8_t *src, uint8_t *dst, long src_size); +#include + +/* A full collection of RGB to RGB(BGR) converters */ +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 (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, long src_size); +extern void (*rgb32tobgr24)(const uint8_t *src, uint8_t *dst, long src_size); extern void (*rgb32to16) (const uint8_t *src, uint8_t *dst, long src_size); extern void (*rgb32to15) (const uint8_t *src, uint8_t *dst, long src_size); extern void (*rgb15to16) (const uint8_t *src, uint8_t *dst, long src_size); -extern void (*rgb15to24) (const uint8_t *src, uint8_t *dst, long src_size); +extern void (*rgb15tobgr24)(const uint8_t *src, uint8_t *dst, long src_size); extern void (*rgb15to32) (const uint8_t *src, uint8_t *dst, long src_size); extern void (*rgb16to15) (const uint8_t *src, uint8_t *dst, long src_size); -extern void (*rgb16to24) (const uint8_t *src, uint8_t *dst, long src_size); +extern void (*rgb16tobgr24)(const uint8_t *src, uint8_t *dst, long src_size); extern void (*rgb16to32) (const uint8_t *src, uint8_t *dst, long src_size); extern void (*rgb24tobgr24)(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 (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, long src_size); +extern void (*rgb24to16) (const uint8_t *src, uint8_t *dst, long src_size); +extern void (*rgb24to15) (const uint8_t *src, uint8_t *dst, long src_size); extern void (*rgb32tobgr32)(const uint8_t *src, uint8_t *dst, long src_size); extern void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, long src_size); extern void (*rgb32tobgr15)(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 rgb32tobgr24(const uint8_t *src, uint8_t *dst, long src_size); -extern void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size); -extern void rgb16tobgr24(const uint8_t *src, uint8_t *dst, long src_size); -extern void rgb16tobgr16(const uint8_t *src, uint8_t *dst, long src_size); -extern void rgb16tobgr15(const uint8_t *src, uint8_t *dst, long src_size); -extern void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size); -extern void rgb15tobgr24(const uint8_t *src, uint8_t *dst, long src_size); -extern void rgb15tobgr16(const uint8_t *src, uint8_t *dst, long src_size); -extern void rgb15tobgr15(const uint8_t *src, uint8_t *dst, long src_size); -extern void rgb8tobgr8 (const uint8_t *src, uint8_t *dst, long src_size); - - -extern void palette8torgb32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); -extern void palette8tobgr32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); -extern void palette8torgb24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); -extern void palette8tobgr24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); -extern void palette8torgb16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); -extern void palette8tobgr16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); -extern void palette8torgb15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); -extern void palette8tobgr15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette); +void rgb24to32 (const uint8_t *src, uint8_t *dst, long src_size); +void rgb32to24 (const uint8_t *src, uint8_t *dst, long src_size); +void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size); +void rgb16to24 (const uint8_t *src, uint8_t *dst, long src_size); +void rgb16tobgr16(const uint8_t *src, uint8_t *dst, long src_size); +void rgb16tobgr15(const uint8_t *src, uint8_t *dst, long src_size); +void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size); +void rgb15to24 (const uint8_t *src, uint8_t *dst, long src_size); +void rgb15tobgr16(const uint8_t *src, uint8_t *dst, long src_size); +void rgb15tobgr15(const uint8_t *src, uint8_t *dst, long src_size); +void bgr8torgb8 (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); +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 (if this is a - * problem for anyone then tell me, and ill fix it) - * chrominance data is only taken from every secound line others are ignored FIXME write HQ version + * Height should be a multiple of 2 and width should be a multiple of 16. + * (If this is a problem for anyone then tell me, and I will fix it.) + * Chrominance data is only taken from every second line, others are ignored. + * FIXME: Write high quality version. */ //void uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, /** - * - * height should be a multiple of 2 and width should be a multiple of 16 (if this is a - * problem for anyone then tell me, and ill fix it) + * Height should be a multiple of 2 and width should be a multiple of 16. + * (If this is a problem for anyone then tell me, and I will fix it.) */ extern void (*yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, long width, long height, long lumStride, long chromStride, long dstStride); /** - * - * width should be a multiple of 16 + * Width should be a multiple of 16. */ extern void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, long width, long height, long lumStride, long chromStride, long dstStride); /** - * - * height should be a multiple of 2 and width should be a multiple of 16 (if this is a - * problem for anyone then tell me, and ill fix it) + * Height should be a multiple of 2 and width should be a multiple of 16. + * (If this is a problem for anyone then tell me, and I will fix it.) */ extern void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, long width, long height, long lumStride, long chromStride, long srcStride); /** - * - * height should be a multiple of 2 and width should be a multiple of 16 (if this is a - * problem for anyone then tell me, and ill fix it) + * Height should be a multiple of 2 and width should be a multiple of 16. + * (If this is a problem for anyone then tell me, and I will fix it.) */ extern void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, long width, long height, long lumStride, long chromStride, long dstStride); /** - * - * height should be a multiple of 2 and width should be a multiple of 2 (if this is a - * problem for anyone then tell me, and ill fix it) - * chrominance data is only taken from every secound line others are ignored FIXME write HQ version + * Width should be a multiple of 16. + */ +extern void (*yuv422ptouyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, + long width, long height, + long lumStride, long chromStride, long dstStride); + +/** + * Height should be a multiple of 2 and width should be a multiple of 2. + * (If this is a problem for anyone then tell me, and I will fix it.) + * Chrominance data is only taken from every second line, others are ignored. + * FIXME: Write high quality version. */ extern void (*rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, long width, long height, @@ -139,6 +142,20 @@ extern void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint long srcStride1, long srcStride2, long srcStride3, long dstStride); + +extern void (*uyvytoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, + long width, long height, + long lumStride, long chromStride, long srcStride); +extern void (*uyvytoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, + long width, long height, + long lumStride, long chromStride, long srcStride); +extern void (*yuyvtoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, + long width, long height, + long lumStride, long chromStride, long srcStride); +extern void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, + long width, long height, + long lumStride, long chromStride, long srcStride); + void sws_rgb2rgb_init(int flags); -#endif +#endif /* SWSCALE_RGB2RGB_H */