Mercurial > mplayer.hg
annotate libmpcodecs/vf_palette.c @ 33307:552f1f7731c8
Set GUI initialization flag earlier.
So far, the flag is set after the call of guiInit(), but there are calls
to GUI functions (like reading the GUI config) before that. As MPlayer
(when exiting) only calls GUI's cleanup function guiDone() if the flag
is set, it neglects calling guiDone() on any error between the first GUI
function call and execution of guiInit(). Now the flag is set before the
first GUI function call.
As a result, GUI's own exit function (also used for fatal GUI errors, and
thus also for errors occurring before guiInit() properly finishes) doesn't
have to handle cleanup any longer. The code can be moved to guiDone().
author | ib |
---|---|
date | Sat, 07 May 2011 15:30:14 +0000 |
parents | 7af3e6f901fd |
children | 389d43c448b3 |
rev | line source |
---|---|
30421
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
1 /* |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
2 * This file is part of MPlayer. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
3 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
7 * (at your option) any later version. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
8 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
12 * GNU General Public License for more details. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
13 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
17 */ |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30072
diff
changeset
|
18 |
5774 | 19 #include <stdio.h> |
20 #include <stdlib.h> | |
21 #include <string.h> | |
22 #include <inttypes.h> | |
23 | |
17012 | 24 #include "config.h" |
25 #include "mp_msg.h" | |
18004
bcd805923554
Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents:
17906
diff
changeset
|
26 #include "help_mp.h" |
5774 | 27 |
28 #include "img_format.h" | |
29 #include "mp_image.h" | |
30 #include "vf.h" | |
31237
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
31 #include "mpbswap.h" |
5774 | 32 |
31235
661755507236
deprecate palette8topacked32 in favor of public API functions sws_convertPalette8ToPacked32 and -24
siretart
parents:
31232
diff
changeset
|
33 #include "libswscale/swscale.h" |
5774 | 34 |
35 //===========================================================================// | |
36 | |
11512
4ff38d168c2f
fix for vf_palette, because paletted 8-bit to BGR{15,16} conversion is incorrect.
joey
parents:
9593
diff
changeset
|
37 // commented out 16 and 15 bit output support, because the conversion |
4ff38d168c2f
fix for vf_palette, because paletted 8-bit to BGR{15,16} conversion is incorrect.
joey
parents:
9593
diff
changeset
|
38 // routines are incorrrect. they assume the palette to be of the same |
4ff38d168c2f
fix for vf_palette, because paletted 8-bit to BGR{15,16} conversion is incorrect.
joey
parents:
9593
diff
changeset
|
39 // depth as the output, which is incorrect. --Joey |
4ff38d168c2f
fix for vf_palette, because paletted 8-bit to BGR{15,16} conversion is incorrect.
joey
parents:
9593
diff
changeset
|
40 |
30662 | 41 static const unsigned int bgr_list[]={ |
5774 | 42 IMGFMT_BGR32, |
43 IMGFMT_BGR24, | |
11512
4ff38d168c2f
fix for vf_palette, because paletted 8-bit to BGR{15,16} conversion is incorrect.
joey
parents:
9593
diff
changeset
|
44 // IMGFMT_BGR16, |
4ff38d168c2f
fix for vf_palette, because paletted 8-bit to BGR{15,16} conversion is incorrect.
joey
parents:
9593
diff
changeset
|
45 // IMGFMT_BGR15, |
6188 | 46 0 |
5774 | 47 }; |
30662 | 48 static const unsigned int rgb_list[]={ |
5774 | 49 IMGFMT_RGB32, |
50 IMGFMT_RGB24, | |
11512
4ff38d168c2f
fix for vf_palette, because paletted 8-bit to BGR{15,16} conversion is incorrect.
joey
parents:
9593
diff
changeset
|
51 // IMGFMT_RGB16, |
4ff38d168c2f
fix for vf_palette, because paletted 8-bit to BGR{15,16} conversion is incorrect.
joey
parents:
9593
diff
changeset
|
52 // IMGFMT_RGB15, |
6188 | 53 0 |
5774 | 54 }; |
55 | |
31237
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
56 /** |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
57 * Palette is assumed to contain BGR16, see rgb32to16 to convert the palette. |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
58 */ |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
59 static void palette8torgb16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette) |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
60 { |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
61 long i; |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
62 for (i=0; i<num_pixels; i++) |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
63 ((uint16_t *)dst)[i] = ((const uint16_t *)palette)[src[i]]; |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
64 } |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
65 |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
66 static void palette8tobgr16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette) |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
67 { |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
68 long i; |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
69 for (i=0; i<num_pixels; i++) |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
70 ((uint16_t *)dst)[i] = bswap_16(((const uint16_t *)palette)[src[i]]); |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
71 } |
878762329600
avoid using swscale internals by copying in palette8torbg16 and its bgr variant
siretart
parents:
31235
diff
changeset
|
72 |
6232 | 73 static unsigned int gray_pal[256]; |
74 | |
30642
a972c1a4a012
cosmetics: Rename struct vf_instance_s --> vf_instance.
diego
parents:
30638
diff
changeset
|
75 static unsigned int find_best(struct vf_instance *vf, unsigned int fmt){ |
5774 | 76 unsigned int best=0; |
77 int ret; | |
30662 | 78 const unsigned int* p; |
5774 | 79 if(fmt==IMGFMT_BGR8) p=bgr_list; |
80 else if(fmt==IMGFMT_RGB8) p=rgb_list; | |
81 else return 0; | |
82 while(*p){ | |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
83 ret=vf->next->query_format(vf->next,*p); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
84 mp_msg(MSGT_VFILTER,MSGL_DBG2,"[%s] query(%s) -> %d\n",vf->info->name,vo_format_name(*p),ret&3); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
85 if(ret&VFCAP_CSP_SUPPORTED_BY_HW){ best=*p; break;} // no conversion -> bingo! |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
86 if(ret&VFCAP_CSP_SUPPORTED && !best) best=*p; // best with conversion |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
87 ++p; |
5774 | 88 } |
89 return best; | |
90 } | |
91 | |
92 //===========================================================================// | |
93 | |
94 struct vf_priv_s { | |
95 unsigned int fmt; | |
9276 | 96 int pal_msg; |
5774 | 97 }; |
98 | |
30642
a972c1a4a012
cosmetics: Rename struct vf_instance_s --> vf_instance.
diego
parents:
30638
diff
changeset
|
99 static int config(struct vf_instance *vf, |
5774 | 100 int width, int height, int d_width, int d_height, |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
101 unsigned int flags, unsigned int outfmt){ |
7160
447066802e64
added bgr support and support for forcing output format
alex
parents:
7127
diff
changeset
|
102 if (!vf->priv->fmt) |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
103 vf->priv->fmt=find_best(vf,outfmt); |
5774 | 104 if(!vf->priv->fmt){ |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
105 // no matching fmt, so force one... |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
106 if(outfmt==IMGFMT_RGB8) vf->priv->fmt=IMGFMT_RGB32; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
107 else if(outfmt==IMGFMT_BGR8) vf->priv->fmt=IMGFMT_BGR32; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
108 else return 0; |
5774 | 109 } |
110 return vf_next_config(vf,width,height,d_width,d_height,flags,vf->priv->fmt); | |
111 } | |
112 | |
30642
a972c1a4a012
cosmetics: Rename struct vf_instance_s --> vf_instance.
diego
parents:
30638
diff
changeset
|
113 static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){ |
5774 | 114 mp_image_t *dmpi; |
30072
e86cf531b110
Restore the old value of planes[1] in vf_palette at the end to ensure
reimar
parents:
29263
diff
changeset
|
115 uint8_t *old_palette = mpi->planes[1]; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27788
diff
changeset
|
116 |
5774 | 117 // hope we'll get DR buffer: |
118 dmpi=vf_get_image(vf->next,vf->priv->fmt, | |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
119 MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE, |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
120 mpi->w, mpi->h); |
5774 | 121 |
7160
447066802e64
added bgr support and support for forcing output format
alex
parents:
7127
diff
changeset
|
122 if (!mpi->planes[1]) |
447066802e64
added bgr support and support for forcing output format
alex
parents:
7127
diff
changeset
|
123 { |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
124 if(!vf->priv->pal_msg){ |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
125 mp_msg(MSGT_VFILTER,MSGL_V,"[%s] no palette given, assuming builtin grayscale one\n",vf->info->name); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
126 vf->priv->pal_msg=1; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
127 } |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
128 mpi->planes[1] = (unsigned char*)gray_pal; |
7160
447066802e64
added bgr support and support for forcing output format
alex
parents:
7127
diff
changeset
|
129 } |
6232 | 130 |
5774 | 131 if(mpi->w==mpi->stride[0] && dmpi->w*(dmpi->bpp>>3)==dmpi->stride[0]){ |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
132 // no stride conversion needed |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
133 switch(IMGFMT_RGB_DEPTH(dmpi->imgfmt)){ |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
134 case 15: |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
135 case 16: |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
136 if (IMGFMT_IS_BGR(dmpi->imgfmt)) |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
137 palette8tobgr16(mpi->planes[0],dmpi->planes[0],mpi->h*mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
138 else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
139 palette8torgb16(mpi->planes[0],dmpi->planes[0],mpi->h*mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
140 break; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
141 case 24: |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
142 if (IMGFMT_IS_BGR(dmpi->imgfmt)) |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
143 sws_convertPalette8ToPacked24(mpi->planes[0],dmpi->planes[0],mpi->h*mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
144 else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
145 sws_convertPalette8ToPacked24(mpi->planes[0],dmpi->planes[0],mpi->h*mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
146 break; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
147 case 32: |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
148 if (IMGFMT_IS_BGR(dmpi->imgfmt)) |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
149 sws_convertPalette8ToPacked32(mpi->planes[0],dmpi->planes[0],mpi->h*mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
150 else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
151 sws_convertPalette8ToPacked32(mpi->planes[0],dmpi->planes[0],mpi->h*mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
152 break; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
153 } |
5774 | 154 } else { |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
155 int y; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
156 for(y=0;y<mpi->h;y++){ |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
157 unsigned char* src=mpi->planes[0]+y*mpi->stride[0]; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
158 unsigned char* dst=dmpi->planes[0]+y*dmpi->stride[0]; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
159 switch(IMGFMT_RGB_DEPTH(dmpi->imgfmt)){ |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
160 case 15: |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
161 case 16: |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
162 if (IMGFMT_IS_BGR(dmpi->imgfmt)) |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
163 palette8tobgr16(src,dst,mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
164 else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
165 palette8torgb16(src,dst,mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
166 break; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
167 case 24: |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
168 if (IMGFMT_IS_BGR(dmpi->imgfmt)) |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
169 sws_convertPalette8ToPacked24(src,dst,mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
170 else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
171 sws_convertPalette8ToPacked24(src,dst,mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
172 break; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
173 case 32: |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
174 if (IMGFMT_IS_BGR(dmpi->imgfmt)) |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
175 sws_convertPalette8ToPacked32(src,dst,mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
176 else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
177 sws_convertPalette8ToPacked32(src,dst,mpi->w,mpi->planes[1]); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
178 break; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
179 } |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
180 } |
5774 | 181 } |
30072
e86cf531b110
Restore the old value of planes[1] in vf_palette at the end to ensure
reimar
parents:
29263
diff
changeset
|
182 mpi->planes[1] = old_palette; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27788
diff
changeset
|
183 |
17906
20aca9baf5d8
passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents:
17012
diff
changeset
|
184 return vf_next_put_image(vf,dmpi, pts); |
5774 | 185 } |
186 | |
187 //===========================================================================// | |
188 | |
30642
a972c1a4a012
cosmetics: Rename struct vf_instance_s --> vf_instance.
diego
parents:
30638
diff
changeset
|
189 static int query_format(struct vf_instance *vf, unsigned int fmt){ |
5774 | 190 int best=find_best(vf,fmt); |
191 if(!best) return 0; // no match | |
192 return vf->next->query_format(vf->next,best); | |
193 } | |
194 | |
13641 | 195 static void uninit(vf_instance_t *vf) { |
196 free(vf->priv); | |
197 } | |
198 | |
30638
a7b908875c14
Rename open() vf initialization function to vf_open().
diego
parents:
30421
diff
changeset
|
199 static int vf_open(vf_instance_t *vf, char *args){ |
6232 | 200 unsigned int i; |
5774 | 201 vf->config=config; |
13641 | 202 vf->uninit=uninit; |
5774 | 203 vf->put_image=put_image; |
204 vf->query_format=query_format; | |
205 vf->priv=malloc(sizeof(struct vf_priv_s)); | |
7160
447066802e64
added bgr support and support for forcing output format
alex
parents:
7127
diff
changeset
|
206 memset(vf->priv, 0, sizeof(struct vf_priv_s)); |
6232 | 207 for(i=0;i<256;i++) gray_pal[i]=0x01010101*i; |
7160
447066802e64
added bgr support and support for forcing output format
alex
parents:
7127
diff
changeset
|
208 if (args) |
447066802e64
added bgr support and support for forcing output format
alex
parents:
7127
diff
changeset
|
209 { |
32702
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
210 if (!strcasecmp(args,"rgb15")) vf->priv->fmt=IMGFMT_RGB15; else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
211 if (!strcasecmp(args,"rgb16")) vf->priv->fmt=IMGFMT_RGB16; else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
212 if (!strcasecmp(args,"rgb24")) vf->priv->fmt=IMGFMT_RGB24; else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
213 if (!strcasecmp(args,"rgb32")) vf->priv->fmt=IMGFMT_RGB32; else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
214 if (!strcasecmp(args,"bgr15")) vf->priv->fmt=IMGFMT_BGR15; else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
215 if (!strcasecmp(args,"bgr16")) vf->priv->fmt=IMGFMT_BGR16; else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
216 if (!strcasecmp(args,"bgr24")) vf->priv->fmt=IMGFMT_BGR24; else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
217 if (!strcasecmp(args,"bgr32")) vf->priv->fmt=IMGFMT_BGR32; else |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
218 { |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
219 mp_msg(MSGT_VFILTER, MSGL_WARN, MSGTR_MPCODECS_UnknownFormatName, args); |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
220 return 0; |
7af3e6f901fd
Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents:
31237
diff
changeset
|
221 } |
7160
447066802e64
added bgr support and support for forcing output format
alex
parents:
7127
diff
changeset
|
222 } |
5774 | 223 return 1; |
224 } | |
225 | |
25221 | 226 const vf_info_t vf_info_palette = { |
5774 | 227 "8bpp indexed (using palette) -> BGR 15/16/24/32 conversion", |
228 "palette", | |
7160
447066802e64
added bgr support and support for forcing output format
alex
parents:
7127
diff
changeset
|
229 "A'rpi & Alex", |
5774 | 230 "", |
30638
a7b908875c14
Rename open() vf initialization function to vf_open().
diego
parents:
30421
diff
changeset
|
231 vf_open, |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
9276
diff
changeset
|
232 NULL |
5774 | 233 }; |
234 | |
235 //===========================================================================// |