swscale: refactor vertical scaler
[ffmpeg.git] / libswscale / swscale_internal.h
index 4e1cfc1..0d4ce33 100644 (file)
@@ -1002,6 +1002,15 @@ typedef struct FilterContext
     int xInc;
 } FilterContext;
 
+typedef struct VScalerContext
+{
+    uint16_t *filter[2];
+    int32_t  *filter_pos;
+    int filter_size;
+    int isMMX;
+    void *pfn;
+} VScalerContext;
+
 // warp input lines in the form (src + width*i + j) to slice format (line[i][j])
 int ff_init_slice_from_src(SwsSlice * s, uint8_t *src[4], int stride[4], int srcW, int lumY, int lumH, int chrY, int chrH);
 
@@ -1033,9 +1042,18 @@ int ff_init_desc_chscale(SwsFilterDescriptor *desc, SwsSlice *src, SwsSlice *dst
 
 int ff_init_desc_no_chr(SwsFilterDescriptor *desc, SwsSlice * src, SwsSlice *dst);
 
+/// initializes vertical scaling descriptors
+int ff_init_vscale(SwsContext *c, SwsFilterDescriptor *desc, SwsSlice *src, SwsSlice *dst);
+
+/// setup vertical scaler functions
+void ff_init_vscale_pfn(SwsContext *c, yuv2planar1_fn yuv2plane1, yuv2planarX_fn yuv2planeX,
+    yuv2interleavedX_fn yuv2nv12cX, yuv2packed1_fn yuv2packed1, yuv2packed2_fn yuv2packed2,
+    yuv2packedX_fn yuv2packedX, yuv2anyX_fn yuv2anyX, int use_mmx);
+
 //number of extra lines to process
 #define MAX_LINES_AHEAD 4
 
-
+// enable use of refactored scaler code
 #define NEW_FILTER
+
 #endif /* SWSCALE_SWSCALE_INTERNAL_H */