Credit Andrew R for finding the direct copy mods for exr and ppm sequences
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / boxblur.h
1 #include "boxblur.inc"
2 #include "loadbalance.h"
3 #include "vframe.h"
4
5 #include <stdint.h>
6
7 class BoxBlurPackage : public LoadPackage
8 {
9 public:
10         BoxBlurPackage();
11         int u1, u2;
12 };
13
14 class BoxBlurUnit : public LoadClient
15 {
16 public:
17         BoxBlurUnit(BoxBlur*server);
18         template<class dst_t, class src_t>
19                 void blurt_package(LoadPackage *package);
20         void process_package(LoadPackage *package);
21 };
22
23 class BoxBlur : public LoadServer
24 {
25 public:
26         BoxBlur(int cpus);
27         virtual ~BoxBlur();
28         void init_packages();
29         LoadClient* new_client();
30         LoadPackage* new_package();
31         void process(VFrame *dst, VFrame *src, int uv,
32                 int radius, int power, int comp);
33         int init_box(VFrame *dst, int x, int y, int w, int h);
34         void hblur(VFrame *dst, VFrame *src, int radius, int power, int comp=-1);
35         void hblur(VFrame *dst, VFrame *src, int radius, int power, int comp,
36                 int x, int y, int w, int h);
37         void vblur(VFrame *dst, VFrame *src, int radius, int power, int comp=-1);
38         void vblur(VFrame *dst, VFrame *src, int radius, int power, int comp,
39                 int x, int y, int w, int h);
40         void blur(VFrame *dst, VFrame *src, int radius, int power, int comp=-1);
41         void blur(VFrame *dst, VFrame *src, int radius, int power, int comp,
42                 int x, int y, int w, int h);
43         int x1, y1, x2, y2;
44         const uint8_t *src_data;
45         uint8_t *dst_data;
46         int src_ustep, dst_ustep;
47         int src_vstep, dst_vstep;
48         int radius, power, uv;
49         int u1, u2, v1, v2;
50         int ulen, vlen, c0, c1;
51         int src_bpc, dst_bpc;
52 };
53