1/*
2 *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 *  Use of this source code is governed by a BSD-style license
5 *  that can be found in the LICENSE file in the root of the source
6 *  tree. An additional intellectual property rights grant can be found
7 *  in the file PATENTS.  All contributing project authors may
8 *  be found in the AUTHORS file in the root of the source tree.
9 */
10
11
12#ifndef __VPX_SCALE_ARBITRARY_H__
13#define __VPX_SCALE_ARBITRARY_H__
14
15#include "vpx_scale/yv12config.h"
16
17typedef struct
18{
19    int in_width;
20    int in_height;
21
22    int out_width;
23    int out_height;
24    int max_usable_out_width;
25
26    // numerator for the width and height
27    int nw;
28    int nh;
29    int nh_uv;
30
31    // output to input correspondance array
32    short *l_w;
33    short *l_h;
34    short *l_h_uv;
35
36    // polyphase coefficients
37    short *c_w;
38    short *c_h;
39    short *c_h_uv;
40
41    // buffer for horizontal filtering.
42    unsigned char *hbuf;
43    unsigned char *hbuf_uv;
44} BICUBIC_SCALER_STRUCT;
45
46int bicubic_coefficient_setup(int in_width, int in_height, int out_width, int out_height);
47int bicubic_scale(int in_width, int in_height, int in_stride,
48                  int out_width, int out_height, int out_stride,
49                  unsigned char *input_image, unsigned char *output_image);
50void bicubic_scale_frame_reset();
51void bicubic_scale_frame(YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst,
52                         int new_width, int new_height);
53void bicubic_coefficient_init();
54void bicubic_coefficient_destroy();
55
56#endif /* __VPX_SCALE_ARBITRARY_H__ */
57