Mercurial > mplayer.hg
annotate libmpcodecs/vf_uspp.c @ 17588:79081ba52e00
Move the v{Y,C}CoeffsBank vectors into the SwsContext, filling them in just
once when the scaler is initialized, instead of building them and freeing
them over and over. This gives massive performance improvements.
patch by Alan Curry, pacman*at*TheWorld*dot*com
author | diego |
---|---|
date | Sat, 11 Feb 2006 14:16:10 +0000 |
parents | f0e7712385dc |
children | 673a0ce6cfb6 |
rev | line source |
---|---|
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
1 /* |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
2 Copyright (C) 2005 Michael Niedermayer <michaelni@gmx.at> |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
3 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
4 This program is free software; you can redistribute it and/or modify |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
5 it under the terms of the GNU General Public License as published by |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
6 the Free Software Foundation; either version 2 of the License, or |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
7 (at your option) any later version. |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
8 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
9 This program is distributed in the hope that it will be useful, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
12 GNU General Public License for more details. |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
13 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
14 You should have received a copy of the GNU General Public License |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
15 along with this program; if not, write to the Free Software |
17367
401b440a6d76
Update licensing information: The FSF changed postal address.
diego
parents:
17081
diff
changeset
|
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
17 */ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
18 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
19 #include <stdio.h> |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
20 #include <stdlib.h> |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
21 #include <string.h> |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
22 #include <inttypes.h> |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
23 #include <math.h> |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
24 |
17012 | 25 #include "config.h" |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
26 |
17012 | 27 #include "mp_msg.h" |
28 #include "cpudetect.h" | |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
29 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
30 #ifdef USE_LIBAVCODEC_SO |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
31 #include <ffmpeg/avcodec.h> |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
32 #include <ffmpeg/dsputil.h> |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
33 #else |
17012 | 34 #include "libavcodec/avcodec.h" |
35 #include "libavcodec/dsputil.h" | |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
36 #endif |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
37 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
38 #ifdef HAVE_MALLOC_H |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
39 #include <malloc.h> |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
40 #endif |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
41 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
42 #include "img_format.h" |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
43 #include "mp_image.h" |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
44 #include "vf.h" |
17012 | 45 #include "libvo/fastmemcpy.h" |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
46 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
47 #define XMIN(a,b) ((a) < (b) ? (a) : (b)) |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
48 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
49 #define BLOCK 16 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
50 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
51 //===========================================================================// |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
52 static const uint8_t __attribute__((aligned(8))) dither[8][8]={ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
53 { 0*4, 48*4, 12*4, 60*4, 3*4, 51*4, 15*4, 63*4, }, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
54 { 32*4, 16*4, 44*4, 28*4, 35*4, 19*4, 47*4, 31*4, }, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
55 { 8*4, 56*4, 4*4, 52*4, 11*4, 59*4, 7*4, 55*4, }, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
56 { 40*4, 24*4, 36*4, 20*4, 43*4, 27*4, 39*4, 23*4, }, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
57 { 2*4, 50*4, 14*4, 62*4, 1*4, 49*4, 13*4, 61*4, }, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
58 { 34*4, 18*4, 46*4, 30*4, 33*4, 17*4, 45*4, 29*4, }, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
59 { 10*4, 58*4, 6*4, 54*4, 9*4, 57*4, 5*4, 53*4, }, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
60 { 42*4, 26*4, 38*4, 22*4, 41*4, 25*4, 37*4, 21*4, }, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
61 }; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
62 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
63 static const uint8_t offset[511][2]= { |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
64 { 0, 0}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
65 { 0, 0}, { 8, 8}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
66 { 0, 0}, { 4, 4}, {12, 8}, { 8,12}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
67 { 0, 0}, {10, 2}, { 4, 4}, {14, 6}, { 8, 8}, { 2,10}, {12,12}, { 6,14}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
68 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
69 { 0, 0}, {10, 2}, { 4, 4}, {14, 6}, { 8, 8}, { 2,10}, {12,12}, { 6,14}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
70 { 5, 1}, {15, 3}, { 9, 5}, { 3, 7}, {13, 9}, { 7,11}, { 1,13}, {11,15}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
71 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
72 { 0, 0}, { 8, 0}, { 0, 8}, { 8, 8}, { 5, 1}, {13, 1}, { 5, 9}, {13, 9}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
73 { 2, 2}, {10, 2}, { 2,10}, {10,10}, { 7, 3}, {15, 3}, { 7,11}, {15,11}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
74 { 4, 4}, {12, 4}, { 4,12}, {12,12}, { 1, 5}, { 9, 5}, { 1,13}, { 9,13}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
75 { 6, 6}, {14, 6}, { 6,14}, {14,14}, { 3, 7}, {11, 7}, { 3,15}, {11,15}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
76 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
77 { 0, 0}, { 8, 0}, { 0, 8}, { 8, 8}, { 4, 0}, {12, 0}, { 4, 8}, {12, 8}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
78 { 1, 1}, { 9, 1}, { 1, 9}, { 9, 9}, { 5, 1}, {13, 1}, { 5, 9}, {13, 9}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
79 { 3, 2}, {11, 2}, { 3,10}, {11,10}, { 7, 2}, {15, 2}, { 7,10}, {15,10}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
80 { 2, 3}, {10, 3}, { 2,11}, {10,11}, { 6, 3}, {14, 3}, { 6,11}, {14,11}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
81 { 0, 4}, { 8, 4}, { 0,12}, { 8,12}, { 4, 4}, {12, 4}, { 4,12}, {12,12}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
82 { 1, 5}, { 9, 5}, { 1,13}, { 9,13}, { 5, 5}, {13, 5}, { 5,13}, {13,13}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
83 { 3, 6}, {11, 6}, { 3,14}, {11,14}, { 7, 6}, {15, 6}, { 7,14}, {15,14}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
84 { 2, 7}, {10, 7}, { 2,15}, {10,15}, { 6, 7}, {14, 7}, { 6,15}, {14,15}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
85 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
86 { 0, 0}, { 8, 0}, { 0, 8}, { 8, 8}, { 0, 2}, { 8, 2}, { 0,10}, { 8,10}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
87 { 0, 4}, { 8, 4}, { 0,12}, { 8,12}, { 0, 6}, { 8, 6}, { 0,14}, { 8,14}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
88 { 1, 1}, { 9, 1}, { 1, 9}, { 9, 9}, { 1, 3}, { 9, 3}, { 1,11}, { 9,11}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
89 { 1, 5}, { 9, 5}, { 1,13}, { 9,13}, { 1, 7}, { 9, 7}, { 1,15}, { 9,15}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
90 { 2, 0}, {10, 0}, { 2, 8}, {10, 8}, { 2, 2}, {10, 2}, { 2,10}, {10,10}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
91 { 2, 4}, {10, 4}, { 2,12}, {10,12}, { 2, 6}, {10, 6}, { 2,14}, {10,14}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
92 { 3, 1}, {11, 1}, { 3, 9}, {11, 9}, { 3, 3}, {11, 3}, { 3,11}, {11,11}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
93 { 3, 5}, {11, 5}, { 3,13}, {11,13}, { 3, 7}, {11, 7}, { 3,15}, {11,15}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
94 { 4, 0}, {12, 0}, { 4, 8}, {12, 8}, { 4, 2}, {12, 2}, { 4,10}, {12,10}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
95 { 4, 4}, {12, 4}, { 4,12}, {12,12}, { 4, 6}, {12, 6}, { 4,14}, {12,14}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
96 { 5, 1}, {13, 1}, { 5, 9}, {13, 9}, { 5, 3}, {13, 3}, { 5,11}, {13,11}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
97 { 5, 5}, {13, 5}, { 5,13}, {13,13}, { 5, 7}, {13, 7}, { 5,15}, {13,15}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
98 { 6, 0}, {14, 0}, { 6, 8}, {14, 8}, { 6, 2}, {14, 2}, { 6,10}, {14,10}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
99 { 6, 4}, {14, 4}, { 6,12}, {14,12}, { 6, 6}, {14, 6}, { 6,14}, {14,14}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
100 { 7, 1}, {15, 1}, { 7, 9}, {15, 9}, { 7, 3}, {15, 3}, { 7,11}, {15,11}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
101 { 7, 5}, {15, 5}, { 7,13}, {15,13}, { 7, 7}, {15, 7}, { 7,15}, {15,15}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
102 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
103 { 0, 0}, { 8, 0}, { 0, 8}, { 8, 8}, { 4, 4}, {12, 4}, { 4,12}, {12,12}, { 0, 4}, { 8, 4}, { 0,12}, { 8,12}, { 4, 0}, {12, 0}, { 4, 8}, {12, 8}, { 2, 2}, {10, 2}, { 2,10}, {10,10}, { 6, 6}, {14, 6}, { 6,14}, {14,14}, { 2, 6}, {10, 6}, { 2,14}, {10,14}, { 6, 2}, {14, 2}, { 6,10}, {14,10}, { 0, 2}, { 8, 2}, { 0,10}, { 8,10}, { 4, 6}, {12, 6}, { 4,14}, {12,14}, { 0, 6}, { 8, 6}, { 0,14}, { 8,14}, { 4, 2}, {12, 2}, { 4,10}, {12,10}, { 2, 0}, {10, 0}, { 2, 8}, {10, 8}, { 6, 4}, {14, 4}, { 6,12}, {14,12}, { 2, 4}, {10, 4}, { 2,12}, {10,12}, { 6, 0}, {14, 0}, { 6, 8}, {14, 8}, { 1, 1}, { 9, 1}, { 1, 9}, { 9, 9}, { 5, 5}, {13, 5}, { 5,13}, {13,13}, { 1, 5}, { 9, 5}, { 1,13}, { 9,13}, { 5, 1}, {13, 1}, { 5, 9}, {13, 9}, { 3, 3}, {11, 3}, { 3,11}, {11,11}, { 7, 7}, {15, 7}, { 7,15}, {15,15}, { 3, 7}, {11, 7}, { 3,15}, {11,15}, { 7, 3}, {15, 3}, { 7,11}, {15,11}, { 1, 3}, { 9, 3}, { 1,11}, { 9,11}, { 5, 7}, {13, 7}, { 5,15}, {13,15}, { 1, 7}, { 9, 7}, { 1,15}, { 9,15}, { 5, 3}, {13, 3}, { 5,11}, {13,11}, { 3, 1}, {11, 1}, { 3, 9}, {11, 9}, { 7, 5}, {15, 5}, { 7,13}, {15,13}, { 3, 5}, {11, 5}, { 3,13}, {11,13}, { 7, 1}, {15, 1}, { 7, 9}, {15, 9}, { 0, 1}, { 8, 1}, { 0, 9}, { 8, 9}, { 4, 5}, {12, 5}, { 4,13}, {12,13}, { 0, 5}, { 8, 5}, { 0,13}, { 8,13}, { 4, 1}, {12, 1}, { 4, 9}, {12, 9}, { 2, 3}, {10, 3}, { 2,11}, {10,11}, { 6, 7}, {14, 7}, { 6,15}, {14,15}, { 2, 7}, {10, 7}, { 2,15}, {10,15}, { 6, 3}, {14, 3}, { 6,11}, {14,11}, { 0, 3}, { 8, 3}, { 0,11}, { 8,11}, { 4, 7}, {12, 7}, { 4,15}, {12,15}, { 0, 7}, { 8, 7}, { 0,15}, { 8,15}, { 4, 3}, {12, 3}, { 4,11}, {12,11}, { 2, 1}, {10, 1}, { 2, 9}, {10, 9}, { 6, 5}, {14, 5}, { 6,13}, {14,13}, { 2, 5}, {10, 5}, { 2,13}, {10,13}, { 6, 1}, {14, 1}, { 6, 9}, {14, 9}, { 1, 0}, { 9, 0}, { 1, 8}, { 9, 8}, { 5, 4}, {13, 4}, { 5,12}, {13,12}, { 1, 4}, { 9, 4}, { 1,12}, { 9,12}, { 5, 0}, {13, 0}, { 5, 8}, {13, 8}, { 3, 2}, {11, 2}, { 3,10}, {11,10}, { 7, 6}, {15, 6}, { 7,14}, {15,14}, { 3, 6}, {11, 6}, { 3,14}, {11,14}, { 7, 2}, {15, 2}, { 7,10}, {15,10}, { 1, 2}, { 9, 2}, { 1,10}, { 9,10}, { 5, 6}, {13, 6}, { 5,14}, {13,14}, { 1, 6}, { 9, 6}, { 1,14}, { 9,14}, { 5, 2}, {13, 2}, { 5,10}, {13,10}, { 3, 0}, {11, 0}, { 3, 8}, {11, 8}, { 7, 4}, {15, 4}, { 7,12}, {15,12}, { 3, 4}, {11, 4}, { 3,12}, {11,12}, { 7, 0}, {15, 0}, { 7, 8}, {15, 8}, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
104 }; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
105 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
106 struct vf_priv_s { |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
107 int log2_count; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
108 int qp; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
109 int mode; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
110 int mpeg2; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
111 int temp_stride[3]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
112 uint8_t *src[3]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
113 int16_t *temp[3]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
114 int outbuf_size; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
115 uint8_t *outbuf; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
116 AVCodecContext *avctx_enc[BLOCK*BLOCK]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
117 AVCodecContext *avctx_dec[BLOCK*BLOCK]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
118 AVFrame *frame; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
119 AVFrame *frame_dec; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
120 }; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
121 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
122 static void store_slice_c(uint8_t *dst, int16_t *src, int dst_stride, int src_stride, int width, int height, int log2_scale){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
123 int y, x; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
124 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
125 #define STORE(pos) \ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
126 temp= ((src[x + y*src_stride + pos]<<log2_scale) + d[pos])>>8;\ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
127 if(temp & 0x100) temp= ~(temp>>31);\ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
128 dst[x + y*dst_stride + pos]= temp; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
129 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
130 for(y=0; y<height; y++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
131 const uint8_t *d= dither[y&7]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
132 for(x=0; x<width; x+=8){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
133 int temp; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
134 STORE(0); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
135 STORE(1); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
136 STORE(2); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
137 STORE(3); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
138 STORE(4); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
139 STORE(5); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
140 STORE(6); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
141 STORE(7); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
142 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
143 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
144 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
145 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
146 static void filter(struct vf_priv_s *p, uint8_t *dst[3], uint8_t *src[3], int dst_stride[3], int src_stride[3], int width, int height, uint8_t *qp_store, int qp_stride){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
147 int x, y, i, j; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
148 const int count= 1<<p->log2_count; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
149 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
150 for(i=0; i<3; i++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
151 int is_chroma= !!i; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
152 int w= width >>is_chroma; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
153 int h= height>>is_chroma; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
154 int stride= p->temp_stride[i]; |
17081 | 155 int block= BLOCK>>is_chroma; |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
156 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
157 if (!src[i] || !dst[i]) |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
158 continue; // HACK avoid crash for Y8 colourspace |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
159 for(y=0; y<h; y++){ |
17081 | 160 int index= block + block*stride + y*stride; |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
161 memcpy(p->src[i] + index, src[i] + y*src_stride[i], w); |
17081 | 162 for(x=0; x<block; x++){ |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
163 p->src[i][index - x - 1]= p->src[i][index + x ]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
164 p->src[i][index + w + x ]= p->src[i][index + w - x - 1]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
165 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
166 } |
17081 | 167 for(y=0; y<block; y++){ |
168 memcpy(p->src[i] + ( block-1-y)*stride, p->src[i] + ( y+block )*stride, stride); | |
169 memcpy(p->src[i] + (h+block +y)*stride, p->src[i] + (h-y+block-1)*stride, stride); | |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
170 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
171 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
172 p->frame->linesize[i]= stride; |
17081 | 173 memset(p->temp[i], 0, (h+2*block)*stride*sizeof(int16_t)); |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
174 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
175 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
176 if(p->qp) |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
177 p->frame->quality= p->qp * FF_QP2LAMBDA; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
178 else |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
179 p->frame->quality= (qp_store[0] * FF_QP2LAMBDA)>>p->mpeg2; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
180 // init per MB qscale stuff FIXME |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
181 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
182 for(i=0; i<count; i++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
183 const int x1= offset[i+count-1][0]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
184 const int y1= offset[i+count-1][1]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
185 int offset, out_size, got_picture; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
186 p->frame->data[0]= p->src[0] + x1 + y1 * p->frame->linesize[0]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
187 p->frame->data[1]= p->src[1] + x1/2 + y1/2 * p->frame->linesize[1]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
188 p->frame->data[2]= p->src[2] + x1/2 + y1/2 * p->frame->linesize[2]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
189 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
190 out_size = avcodec_encode_video(p->avctx_enc[i], p->outbuf, p->outbuf_size, p->frame); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
191 avcodec_decode_video(p->avctx_dec[i], p->frame_dec, &got_picture, p->outbuf, out_size); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
192 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
193 offset= (BLOCK-x1) + (BLOCK-y1)*p->frame_dec->linesize[0]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
194 //FIXME optimize |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
195 for(y=0; y<height; y++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
196 for(x=0; x<width; x++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
197 p->temp[0][ x + y*p->temp_stride[0] ] += p->frame_dec->data[0][ x + y*p->frame_dec->linesize[0] + offset ]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
198 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
199 } |
17081 | 200 offset= (BLOCK/2-x1/2) + (BLOCK/2-y1/2)*p->frame_dec->linesize[1]; |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
201 for(y=0; y<height/2; y++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
202 for(x=0; x<width/2; x++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
203 p->temp[1][ x + y*p->temp_stride[1] ] += p->frame_dec->data[1][ x + y*p->frame_dec->linesize[1] + offset ]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
204 p->temp[2][ x + y*p->temp_stride[2] ] += p->frame_dec->data[2][ x + y*p->frame_dec->linesize[2] + offset ]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
205 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
206 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
207 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
208 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
209 for(j=0; j<3; j++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
210 int is_chroma= !!j; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
211 store_slice_c(dst[j], p->temp[j], dst_stride[j], p->temp_stride[j], width>>is_chroma, height>>is_chroma, 8-p->log2_count); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
212 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
213 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
214 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
215 static int config(struct vf_instance_s* vf, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
216 int width, int height, int d_width, int d_height, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
217 unsigned int flags, unsigned int outfmt){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
218 int i; |
17081 | 219 AVCodec *dec= avcodec_find_decoder(CODEC_ID_SNOW); |
220 AVCodec *enc= avcodec_find_encoder(CODEC_ID_SNOW); | |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
221 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
222 for(i=0; i<3; i++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
223 int is_chroma= !!i; |
17081 | 224 int w= ((width + 4*BLOCK-1) & (~(2*BLOCK-1)))>>is_chroma; |
225 int h= ((height + 4*BLOCK-1) & (~(2*BLOCK-1)))>>is_chroma; | |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
226 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
227 vf->priv->temp_stride[i]= w; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
228 vf->priv->temp[i]= malloc(vf->priv->temp_stride[i]*h*sizeof(int16_t)); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
229 vf->priv->src [i]= malloc(vf->priv->temp_stride[i]*h*sizeof(uint8_t)); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
230 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
231 for(i=0; i< (1<<vf->priv->log2_count); i++){ |
17081 | 232 AVCodecContext *avctx_enc, *avctx_dec; |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
233 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
234 avctx_enc= |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
235 vf->priv->avctx_enc[i]= avcodec_alloc_context(); |
17081 | 236 avctx_dec= |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
237 vf->priv->avctx_dec[i]= avcodec_alloc_context(); |
17081 | 238 avctx_dec->width = |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
239 avctx_enc->width = width + BLOCK; |
17081 | 240 avctx_dec->height = |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
241 avctx_enc->height = height + BLOCK; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
242 avctx_enc->time_base= (AVRational){1,25}; // meaningless |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
243 avctx_enc->gop_size = 300; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
244 avctx_enc->max_b_frames= 0; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
245 avctx_enc->pix_fmt = PIX_FMT_YUV420P; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
246 avctx_enc->flags = CODEC_FLAG_QSCALE | CODEC_FLAG_LOW_DELAY; |
17081 | 247 avctx_enc->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL; |
16946
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
248 avcodec_open(avctx_enc, enc); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
249 avcodec_open(vf->priv->avctx_dec[i], dec); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
250 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
251 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
252 vf->priv->frame= avcodec_alloc_frame(); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
253 vf->priv->frame_dec= avcodec_alloc_frame(); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
254 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
255 vf->priv->outbuf_size= (width + BLOCK)*(height + BLOCK)*10; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
256 vf->priv->outbuf= malloc(vf->priv->outbuf_size); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
257 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
258 return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
259 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
260 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
261 static void get_image(struct vf_instance_s* vf, mp_image_t *mpi){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
262 if(mpi->flags&MP_IMGFLAG_PRESERVE) return; // don't change |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
263 // ok, we can do pp in-place (or pp disabled): |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
264 vf->dmpi=vf_get_image(vf->next,mpi->imgfmt, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
265 mpi->type, mpi->flags | MP_IMGFLAG_READABLE, mpi->width, mpi->height); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
266 mpi->planes[0]=vf->dmpi->planes[0]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
267 mpi->stride[0]=vf->dmpi->stride[0]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
268 mpi->width=vf->dmpi->width; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
269 if(mpi->flags&MP_IMGFLAG_PLANAR){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
270 mpi->planes[1]=vf->dmpi->planes[1]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
271 mpi->planes[2]=vf->dmpi->planes[2]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
272 mpi->stride[1]=vf->dmpi->stride[1]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
273 mpi->stride[2]=vf->dmpi->stride[2]; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
274 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
275 mpi->flags|=MP_IMGFLAG_DIRECT; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
276 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
277 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
278 static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
279 mp_image_t *dmpi; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
280 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
281 if(!(mpi->flags&MP_IMGFLAG_DIRECT)){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
282 // no DR, so get a new image! hope we'll get DR buffer: |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
283 dmpi=vf_get_image(vf->next,mpi->imgfmt, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
284 MP_IMGTYPE_TEMP, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
285 MP_IMGFLAG_ACCEPT_STRIDE|MP_IMGFLAG_PREFER_ALIGNED_STRIDE, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
286 mpi->width,mpi->height); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
287 vf_clone_mpi_attributes(dmpi, mpi); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
288 }else{ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
289 dmpi=vf->dmpi; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
290 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
291 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
292 vf->priv->mpeg2= mpi->qscale_type; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
293 if(vf->priv->log2_count || !(mpi->flags&MP_IMGFLAG_DIRECT)){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
294 if(mpi->qscale || vf->priv->qp){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
295 filter(vf->priv, dmpi->planes, mpi->planes, dmpi->stride, mpi->stride, mpi->w, mpi->h, mpi->qscale, mpi->qstride); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
296 }else{ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
297 memcpy_pic(dmpi->planes[0], mpi->planes[0], mpi->w, mpi->h, dmpi->stride[0], mpi->stride[0]); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
298 memcpy_pic(dmpi->planes[1], mpi->planes[1], mpi->w>>mpi->chroma_x_shift, mpi->h>>mpi->chroma_y_shift, dmpi->stride[1], mpi->stride[1]); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
299 memcpy_pic(dmpi->planes[2], mpi->planes[2], mpi->w>>mpi->chroma_x_shift, mpi->h>>mpi->chroma_y_shift, dmpi->stride[2], mpi->stride[2]); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
300 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
301 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
302 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
303 #ifdef HAVE_MMX |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
304 if(gCpuCaps.hasMMX) asm volatile ("emms\n\t"); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
305 #endif |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
306 #ifdef HAVE_MMX2 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
307 if(gCpuCaps.hasMMX2) asm volatile ("sfence\n\t"); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
308 #endif |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
309 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
310 return vf_next_put_image(vf,dmpi); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
311 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
312 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
313 static void uninit(struct vf_instance_s* vf){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
314 int i; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
315 if(!vf->priv) return; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
316 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
317 for(i=0; i<3; i++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
318 if(vf->priv->temp[i]) free(vf->priv->temp[i]); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
319 vf->priv->temp[i]= NULL; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
320 if(vf->priv->src[i]) free(vf->priv->src[i]); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
321 vf->priv->src[i]= NULL; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
322 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
323 for(i=0; i<BLOCK*BLOCK; i++){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
324 av_freep(&vf->priv->avctx_enc[i]); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
325 av_freep(&vf->priv->avctx_dec[i]); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
326 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
327 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
328 free(vf->priv); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
329 vf->priv=NULL; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
330 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
331 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
332 //===========================================================================// |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
333 static int query_format(struct vf_instance_s* vf, unsigned int fmt){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
334 switch(fmt){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
335 case IMGFMT_YV12: |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
336 case IMGFMT_I420: |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
337 case IMGFMT_IYUV: |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
338 case IMGFMT_Y800: |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
339 case IMGFMT_Y8: |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
340 return vf_next_query_format(vf,fmt); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
341 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
342 return 0; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
343 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
344 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
345 static unsigned int fmt_list[]={ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
346 IMGFMT_YV12, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
347 IMGFMT_I420, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
348 IMGFMT_IYUV, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
349 IMGFMT_Y800, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
350 IMGFMT_Y8, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
351 0 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
352 }; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
353 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
354 static int control(struct vf_instance_s* vf, int request, void* data){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
355 switch(request){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
356 case VFCTRL_QUERY_MAX_PP_LEVEL: |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
357 return 8; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
358 case VFCTRL_SET_PP_LEVEL: |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
359 vf->priv->log2_count= *((unsigned int*)data); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
360 //FIXME we have to realloc a few things here |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
361 return CONTROL_TRUE; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
362 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
363 return vf_next_control(vf,request,data); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
364 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
365 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
366 static int open(vf_instance_t *vf, char* args){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
367 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
368 int log2c=-1; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
369 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
370 vf->config=config; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
371 vf->put_image=put_image; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
372 vf->get_image=get_image; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
373 vf->query_format=query_format; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
374 vf->uninit=uninit; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
375 vf->control= control; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
376 vf->priv=malloc(sizeof(struct vf_priv_s)); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
377 memset(vf->priv, 0, sizeof(struct vf_priv_s)); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
378 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
379 avcodec_init(); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
380 avcodec_register_all(); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
381 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
382 vf->priv->log2_count= 4; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
383 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
384 if (args) sscanf(args, "%d:%d:%d", &log2c, &vf->priv->qp, &vf->priv->mode); |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
385 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
386 if( log2c >=0 && log2c <=8 ) |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
387 vf->priv->log2_count = log2c; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
388 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
389 if(vf->priv->qp < 0) |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
390 vf->priv->qp = 0; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
391 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
392 // #ifdef HAVE_MMX |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
393 // if(gCpuCaps.hasMMX){ |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
394 // store_slice= store_slice_mmx; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
395 // } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
396 // #endif |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
397 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
398 return 1; |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
399 } |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
400 |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
401 vf_info_t vf_info_uspp = { |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
402 "ultra simple/slow postprocess", |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
403 "uspp", |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
404 "Michael Niedermayer", |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
405 "", |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
406 open, |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
407 NULL |
47c5e9846cd3
ultra simple&slow pp filter, yes yet another spp like filter :)
michael
parents:
diff
changeset
|
408 }; |