#include <altivec.h>
#endif
-#include "avutil.h"
+#include "libavutil/avutil.h"
#define MAX_FILTER_SIZE 256
+#define VOFW 2048
+#define VOF (VOFW*2)
+
typedef int (*SwsFunc)(struct SwsContext *context, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]);
-/* this struct should be aligned on at least 32-byte boundary */
+/* This struct should be aligned on at least a 32-byte boundary. */
typedef struct SwsContext{
/**
* info on struct for av_log
*/
- AVClass *av_class;
+ const AVClass *av_class;
/**
- *
- * Note the src,dst,srcStride,dstStride will be copied, in the sws_scale() warper so they can freely be modified here
+ * Note that src, dst, srcStride, dstStride will be copied in the
+ * sws_scale() wrapper so they can be freely modified here.
*/
SwsFunc swScale;
int srcW, srcH, dstH;
int16_t *vChrFilter;
int16_t *vChrFilterPos;
- uint8_t formatConvBuffer[4000]; //FIXME dynamic alloc, but we have to change a lot of code for this to be useful
+ uint8_t formatConvBuffer[VOF]; //FIXME dynamic allocation, but we have to change a lot of code for this to be useful
int hLumFilterSize;
int hChrFilterSize;
#define V_OFFSET "10*8"
#define LUM_MMX_FILTER_OFFSET "11*8"
#define CHR_MMX_FILTER_OFFSET "11*8+4*4*256"
-#define DSTW_OFFSET "11*8+4*4*256*2" //do not change, it is hardcoded in the asm
+#define DSTW_OFFSET "11*8+4*4*256*2" //do not change, it is hardcoded in the ASM
#define ESP_OFFSET "11*8+4*4*256*2+8"
#define VROUNDER_OFFSET "11*8+4*4*256*2+16"
#define U_TEMP "11*8+4*4*256*2+24"
SwsFunc yuv2rgb_get_func_ptr (SwsContext *c);
int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation);
-char *sws_format_name(int format);
+void yuv2rgb_altivec_init_tables (SwsContext *c, const int inv_table[4],int brightness,int contrast, int saturation);
+SwsFunc yuv2rgb_init_altivec (SwsContext *c);
+void altivec_yuv2packedX (SwsContext *c,
+ int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize,
+ int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize,
+ uint8_t *dest, int dstW, int dstY);
+
+const char *sws_format_name(int format);
//FIXME replace this with something faster
#define isPlanarYUV(x) ( \
}
}
+extern const DECLARE_ALIGNED(8, uint64_t, ff_dither4[2]);
+extern const DECLARE_ALIGNED(8, uint64_t, ff_dither8[2]);
+
+extern const AVClass sws_context_class;
+
#endif /* FFMPEG_SWSCALE_INTERNAL_H */