annotate libmpcodecs/vf_rgbtest.c @ 24576:6704a924d4aa

According to MSDN a thread must call CoUninitialize once for each successful call it has made to CoInitialize or CoInitializeEx, including any call that returns S_FALSE. Only the CoUninitialize call corresponding to the CoInitialize or CoInitializeEx call that initialized the library can close it. patch by Gianluigi Tiesi, mplayer netfarm it
author diego
date Sun, 23 Sep 2007 20:37:33 +0000
parents f8d4f8eff72b
children 00fff9a3b735
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
1 #include <stdio.h>
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
2 #include <stdlib.h>
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
3 #include <string.h>
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
4 #include <inttypes.h>
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
5
17012
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 13145
diff changeset
6 #include "config.h"
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 13145
diff changeset
7 #include "mp_msg.h"
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
8
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
9 #include "img_format.h"
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
10 #include "mp_image.h"
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
11 #include "vf.h"
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
12
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
13 //===========================================================================//
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
14
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
15 struct vf_priv_s {
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
16 unsigned int fmt;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
17 };
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
18
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
19 static unsigned int getfmt(unsigned int outfmt){
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
20 switch(outfmt){
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
21 case IMGFMT_RGB15:
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
22 case IMGFMT_RGB16:
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
23 case IMGFMT_RGB24:
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
24 case IMGFMT_RGBA:
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
25 case IMGFMT_ARGB:
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
26 case IMGFMT_BGR15:
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
27 case IMGFMT_BGR16:
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
28 case IMGFMT_BGR24:
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
29 case IMGFMT_BGRA:
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
30 case IMGFMT_ABGR:
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
31 return outfmt;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
32 }
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
33 return 0;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
34 }
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
35
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
36 static void put_pixel(uint8_t *buf, int x, int y, int stride, int r, int g, int b, int fmt){
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
37 switch(fmt){
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
38 case IMGFMT_BGR15: ((uint16_t*)(buf + y*stride))[x]= ((r>>3)<<10) | ((g>>3)<<5) | (b>>3);
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
39 break;
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
40 case IMGFMT_RGB15: ((uint16_t*)(buf + y*stride))[x]= ((b>>3)<<10) | ((g>>3)<<5) | (r>>3);
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
41 break;
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
42 case IMGFMT_BGR16: ((uint16_t*)(buf + y*stride))[x]= ((r>>3)<<11) | ((g>>2)<<5) | (b>>3);
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
43 break;
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
44 case IMGFMT_RGB16: ((uint16_t*)(buf + y*stride))[x]= ((b>>3)<<11) | ((g>>2)<<5) | (r>>3);
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
45 break;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
46 case IMGFMT_RGB24:
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
47 buf[3*x + y*stride + 0]= r;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
48 buf[3*x + y*stride + 1]= g;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
49 buf[3*x + y*stride + 2]= b;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
50 break;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
51 case IMGFMT_BGR24:
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
52 buf[3*x + y*stride + 0]= b;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
53 buf[3*x + y*stride + 1]= g;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
54 buf[3*x + y*stride + 2]= r;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
55 break;
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
56 case IMGFMT_RGBA:
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
57 buf[4*x + y*stride + 0]= r;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
58 buf[4*x + y*stride + 1]= g;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
59 buf[4*x + y*stride + 2]= b;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
60 break;
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
61 case IMGFMT_BGRA:
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
62 buf[4*x + y*stride + 0]= b;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
63 buf[4*x + y*stride + 1]= g;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
64 buf[4*x + y*stride + 2]= r;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
65 break;
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
66 case IMGFMT_ARGB:
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
67 buf[4*x + y*stride + 1]= r;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
68 buf[4*x + y*stride + 2]= g;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
69 buf[4*x + y*stride + 3]= b;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
70 break;
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
71 case IMGFMT_ABGR:
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
72 buf[4*x + y*stride + 1]= b;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
73 buf[4*x + y*stride + 2]= g;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
74 buf[4*x + y*stride + 3]= r;
13145
be7ed0dfe056 change to match current bgr/rgb definition
michael
parents: 11894
diff changeset
75 break;
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
76 }
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
77 }
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
78
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
79 static int config(struct vf_instance_s* vf,
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
80 int width, int height, int d_width, int d_height,
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
81 unsigned int flags, unsigned int outfmt){
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
82 vf->priv->fmt=getfmt(outfmt);
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
83 mp_msg(MSGT_VFILTER,MSGL_V,"rgb test format:%s\n", vo_format_name(outfmt));
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
84 return vf_next_config(vf,width,height,d_width,d_height,flags,vf->priv->fmt);
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
85 }
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
86
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17012
diff changeset
87 static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
88 mp_image_t *dmpi;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
89 int x, y;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
90
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
91 // hope we'll get DR buffer:
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
92 dmpi=vf_get_image(vf->next,vf->priv->fmt,
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
93 MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE,
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
94 mpi->w, mpi->h);
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
95
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
96 for(y=0; y<mpi->h; y++){
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
97 for(x=0; x<mpi->w; x++){
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
98 int c= 256*x/mpi->w;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
99 int r=0,g=0,b=0;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
100
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
101 if(3*y<mpi->h) r=c;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
102 else if(3*y<2*mpi->h) g=c;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
103 else b=c;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
104
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
105 put_pixel(dmpi->planes[0], x, y, dmpi->stride[0], r, g, b, vf->priv->fmt);
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
106 }
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
107 }
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
108
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17012
diff changeset
109 return vf_next_put_image(vf,dmpi, pts);
11894
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
110 }
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
111
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
112 //===========================================================================//
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
113
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
114 static int query_format(struct vf_instance_s* vf, unsigned int outfmt){
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
115 unsigned int fmt=getfmt(outfmt);
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
116 if(!fmt) return 0;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
117 return vf_next_query_format(vf,fmt) & (~VFCAP_CSP_SUPPORTED_BY_HW);
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
118 }
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
119
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
120 static int open(vf_instance_t *vf, char* args){
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
121 vf->config=config;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
122 vf->put_image=put_image;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
123 vf->query_format=query_format;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
124 vf->priv=malloc(sizeof(struct vf_priv_s));
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
125 return 1;
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
126 }
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
127
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
128 vf_info_t vf_info_rgbtest = {
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
129 "rgbtest",
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
130 "rgbtest",
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
131 "Michael Niedermayer",
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
132 "",
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
133 open,
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
134 NULL
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
135 };
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
136
4c24bad2a86b rgb test pattern generator, so we could change everything to match alex's definition of rgb/bgr
michael
parents:
diff changeset
137 //===========================================================================//