Mercurial > libavcodec.hg
annotate imgconvert.c @ 9896:bbefbca72722 libavcodec
Drop code that attempts to decode frames that are prefixed by junk.
Too often it ends up decoding random data into noise without detecting
it (for example after seeking of some MP3 data with oddly often occurring
startcode emulation).
Fixes issue1154.
| author | michael |
|---|---|
| date | Tue, 30 Jun 2009 03:57:27 +0000 |
| parents | d42979883bb1 |
| children | 9bdf9fe9018c |
| rev | line source |
|---|---|
| 0 | 1 /* |
| 5355 | 2 * Misc image conversion routines |
|
8629
04423b2f6e0b
cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents:
8601
diff
changeset
|
3 * Copyright (c) 2001, 2002, 2003 Fabrice Bellard |
| 0 | 4 * |
|
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3646
diff
changeset
|
5 * This file is part of FFmpeg. |
|
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3646
diff
changeset
|
6 * |
|
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3646
diff
changeset
|
7 * FFmpeg is free software; you can redistribute it and/or |
| 429 | 8 * modify it under the terms of the GNU Lesser General Public |
| 9 * License as published by the Free Software Foundation; either | |
|
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3646
diff
changeset
|
10 * version 2.1 of the License, or (at your option) any later version. |
| 0 | 11 * |
|
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3646
diff
changeset
|
12 * FFmpeg is distributed in the hope that it will be useful, |
| 0 | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 429 | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 * Lesser General Public License for more details. | |
| 0 | 16 * |
| 429 | 17 * You should have received a copy of the GNU Lesser General Public |
|
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3646
diff
changeset
|
18 * License along with FFmpeg; if not, write to the Free Software |
|
3036
0b546eab515d
Update licensing information: The FSF changed postal address.
diego
parents:
2979
diff
changeset
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 0 | 20 */ |
| 1106 | 21 |
| 22 /** | |
|
8718
e9d9d946f213
Use full internal pathname in doxygen @file directives.
diego
parents:
8631
diff
changeset
|
23 * @file libavcodec/imgconvert.c |
| 5355 | 24 * misc image conversion routines |
| 1106 | 25 */ |
| 26 | |
|
1203
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
27 /* TODO: |
|
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
28 * - write 'ffimg' program to test all the image related stuff |
|
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
29 * - move all api to slice based system |
|
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
30 * - integrate deinterlacing, postprocessing and scaling in the conversion process |
|
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
31 */ |
| 1106 | 32 |
| 0 | 33 #include "avcodec.h" |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
34 #include "dsputil.h" |
| 5354 | 35 #include "colorspace.h" |
| 0 | 36 |
| 8590 | 37 #if HAVE_MMX |
| 8430 | 38 #include "x86/mmx.h" |
| 39 #include "x86/dsputil_mmx.h" | |
| 801 | 40 #endif |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
41 |
| 1204 | 42 #define xglue(x, y) x ## y |
| 43 #define glue(x, y) xglue(x, y) | |
| 44 | |
| 4549 | 45 #define FF_COLOR_RGB 0 /**< RGB color space */ |
| 46 #define FF_COLOR_GRAY 1 /**< gray color space */ | |
| 47 #define FF_COLOR_YUV 2 /**< YUV color space. 16 <= Y <= 235, 16 <= U, V <= 240 */ | |
| 48 #define FF_COLOR_YUV_JPEG 3 /**< YUV color space. 0 <= Y <= 255, 0 <= U, V <= 255 */ | |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
49 |
| 4549 | 50 #define FF_PIXEL_PLANAR 0 /**< each channel has one component in AVPicture */ |
| 51 #define FF_PIXEL_PACKED 1 /**< only one components containing all the channels */ | |
| 52 #define FF_PIXEL_PALETTE 2 /**< one components containing indexes for a palette */ | |
| 1204 | 53 |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
54 typedef struct PixFmtInfo { |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
55 const char *name; |
| 4549 | 56 uint8_t nb_channels; /**< number of channels (including alpha) */ |
| 57 uint8_t color_type; /**< color type (see FF_COLOR_xxx constants) */ | |
| 58 uint8_t pixel_type; /**< pixel storage type (see FF_PIXEL_xxx constants) */ | |
| 59 uint8_t is_alpha : 1; /**< true if alpha can be specified */ | |
|
9011
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
60 uint8_t is_hwaccel : 1; /**< true if this is an HW accelerated format */ |
| 4549 | 61 uint8_t x_chroma_shift; /**< X chroma subsampling factor is 2 ^ shift */ |
| 62 uint8_t y_chroma_shift; /**< Y chroma subsampling factor is 2 ^ shift */ | |
| 63 uint8_t depth; /**< bit depth of the color components */ | |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
64 } PixFmtInfo; |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
65 |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
66 /* this table gives more information about formats */ |
| 3420 | 67 static const PixFmtInfo pix_fmt_info[PIX_FMT_NB] = { |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
68 /* YUV formats */ |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
69 [PIX_FMT_YUV420P] = { |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
70 .name = "yuv420p", |
| 1204 | 71 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
72 .color_type = FF_COLOR_YUV, |
| 1204 | 73 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
74 .depth = 8, |
| 2967 | 75 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
76 }, |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
77 [PIX_FMT_YUV422P] = { |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
78 .name = "yuv422p", |
| 1204 | 79 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
80 .color_type = FF_COLOR_YUV, |
| 1204 | 81 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
82 .depth = 8, |
| 2967 | 83 .x_chroma_shift = 1, .y_chroma_shift = 0, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
84 }, |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
85 [PIX_FMT_YUV444P] = { |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
86 .name = "yuv444p", |
| 1204 | 87 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
88 .color_type = FF_COLOR_YUV, |
| 1204 | 89 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
90 .depth = 8, |
| 2967 | 91 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
92 }, |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
93 [PIX_FMT_YUYV422] = { |
|
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
94 .name = "yuyv422", |
| 1204 | 95 .nb_channels = 1, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
96 .color_type = FF_COLOR_YUV, |
| 1204 | 97 .pixel_type = FF_PIXEL_PACKED, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
98 .depth = 8, |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
99 .x_chroma_shift = 1, .y_chroma_shift = 0, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
100 }, |
|
2137
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
101 [PIX_FMT_UYVY422] = { |
|
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
102 .name = "uyvy422", |
|
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
103 .nb_channels = 1, |
|
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
104 .color_type = FF_COLOR_YUV, |
|
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
105 .pixel_type = FF_PIXEL_PACKED, |
|
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
106 .depth = 8, |
|
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
107 .x_chroma_shift = 1, .y_chroma_shift = 0, |
|
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
108 }, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
109 [PIX_FMT_YUV410P] = { |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
110 .name = "yuv410p", |
| 1204 | 111 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
112 .color_type = FF_COLOR_YUV, |
| 1204 | 113 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
114 .depth = 8, |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
115 .x_chroma_shift = 2, .y_chroma_shift = 2, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
116 }, |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
117 [PIX_FMT_YUV411P] = { |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
118 .name = "yuv411p", |
| 1204 | 119 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
120 .color_type = FF_COLOR_YUV, |
| 1204 | 121 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
122 .depth = 8, |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
123 .x_chroma_shift = 2, .y_chroma_shift = 0, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
124 }, |
| 5363 | 125 [PIX_FMT_YUV440P] = { |
| 126 .name = "yuv440p", | |
| 127 .nb_channels = 3, | |
| 128 .color_type = FF_COLOR_YUV, | |
| 129 .pixel_type = FF_PIXEL_PLANAR, | |
| 130 .depth = 8, | |
| 131 .x_chroma_shift = 0, .y_chroma_shift = 1, | |
| 132 }, | |
|
9519
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
133 [PIX_FMT_YUV420PLE] = { |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
134 .name = "yuv420ple", |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
135 .nb_channels = 3, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
136 .color_type = FF_COLOR_YUV, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
137 .pixel_type = FF_PIXEL_PLANAR, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
138 .depth = 16, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
139 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
140 }, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
141 [PIX_FMT_YUV422PLE] = { |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
142 .name = "yuv422ple", |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
143 .nb_channels = 3, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
144 .color_type = FF_COLOR_YUV, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
145 .pixel_type = FF_PIXEL_PLANAR, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
146 .depth = 16, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
147 .x_chroma_shift = 1, .y_chroma_shift = 0, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
148 }, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
149 [PIX_FMT_YUV444PLE] = { |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
150 .name = "yuv444ple", |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
151 .nb_channels = 3, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
152 .color_type = FF_COLOR_YUV, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
153 .pixel_type = FF_PIXEL_PLANAR, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
154 .depth = 16, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
155 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
156 }, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
157 [PIX_FMT_YUV420PBE] = { |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
158 .name = "yuv420pbe", |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
159 .nb_channels = 3, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
160 .color_type = FF_COLOR_YUV, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
161 .pixel_type = FF_PIXEL_PLANAR, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
162 .depth = 16, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
163 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
164 }, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
165 [PIX_FMT_YUV422PBE] = { |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
166 .name = "yuv422pbe", |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
167 .nb_channels = 3, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
168 .color_type = FF_COLOR_YUV, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
169 .pixel_type = FF_PIXEL_PLANAR, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
170 .depth = 16, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
171 .x_chroma_shift = 1, .y_chroma_shift = 0, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
172 }, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
173 [PIX_FMT_YUV444PBE] = { |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
174 .name = "yuv444pbe", |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
175 .nb_channels = 3, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
176 .color_type = FF_COLOR_YUV, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
177 .pixel_type = FF_PIXEL_PLANAR, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
178 .depth = 16, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
179 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
180 }, |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
181 |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
182 |
|
5706
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
183 /* YUV formats with alpha plane */ |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
184 [PIX_FMT_YUVA420P] = { |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
185 .name = "yuva420p", |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
186 .nb_channels = 4, |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
187 .color_type = FF_COLOR_YUV, |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
188 .pixel_type = FF_PIXEL_PLANAR, |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
189 .depth = 8, |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
190 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
191 }, |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
192 |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
193 /* JPEG YUV */ |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
194 [PIX_FMT_YUVJ420P] = { |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
195 .name = "yuvj420p", |
| 1204 | 196 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
197 .color_type = FF_COLOR_YUV_JPEG, |
| 1204 | 198 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
199 .depth = 8, |
| 2967 | 200 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
201 }, |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
202 [PIX_FMT_YUVJ422P] = { |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
203 .name = "yuvj422p", |
| 1204 | 204 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
205 .color_type = FF_COLOR_YUV_JPEG, |
| 1204 | 206 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
207 .depth = 8, |
| 2967 | 208 .x_chroma_shift = 1, .y_chroma_shift = 0, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
209 }, |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
210 [PIX_FMT_YUVJ444P] = { |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
211 .name = "yuvj444p", |
| 1204 | 212 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
213 .color_type = FF_COLOR_YUV_JPEG, |
| 1204 | 214 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
215 .depth = 8, |
| 2967 | 216 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
217 }, |
| 5363 | 218 [PIX_FMT_YUVJ440P] = { |
| 219 .name = "yuvj440p", | |
| 220 .nb_channels = 3, | |
| 221 .color_type = FF_COLOR_YUV_JPEG, | |
| 222 .pixel_type = FF_PIXEL_PLANAR, | |
| 223 .depth = 8, | |
| 224 .x_chroma_shift = 0, .y_chroma_shift = 1, | |
| 225 }, | |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
226 |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
227 /* RGB formats */ |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
228 [PIX_FMT_RGB24] = { |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
229 .name = "rgb24", |
| 1204 | 230 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
231 .color_type = FF_COLOR_RGB, |
| 1204 | 232 .pixel_type = FF_PIXEL_PACKED, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
233 .depth = 8, |
| 1593 | 234 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
235 }, |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
236 [PIX_FMT_BGR24] = { |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
237 .name = "bgr24", |
| 1204 | 238 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
239 .color_type = FF_COLOR_RGB, |
| 1204 | 240 .pixel_type = FF_PIXEL_PACKED, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
241 .depth = 8, |
| 1593 | 242 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
243 }, |
|
9245
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
244 [PIX_FMT_ARGB] = { |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
245 .name = "argb", |
| 1204 | 246 .nb_channels = 4, .is_alpha = 1, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
247 .color_type = FF_COLOR_RGB, |
| 1204 | 248 .pixel_type = FF_PIXEL_PACKED, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
249 .depth = 8, |
| 1593 | 250 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
251 }, |
| 9001 | 252 [PIX_FMT_RGB48BE] = { |
| 253 .name = "rgb48be", | |
| 254 .nb_channels = 3, | |
| 255 .color_type = FF_COLOR_RGB, | |
| 256 .pixel_type = FF_PIXEL_PACKED, | |
| 257 .depth = 16, | |
| 258 .x_chroma_shift = 0, .y_chroma_shift = 0, | |
| 259 }, | |
| 260 [PIX_FMT_RGB48LE] = { | |
| 261 .name = "rgb48le", | |
| 262 .nb_channels = 3, | |
| 263 .color_type = FF_COLOR_RGB, | |
| 264 .pixel_type = FF_PIXEL_PACKED, | |
| 265 .depth = 16, | |
| 266 .x_chroma_shift = 0, .y_chroma_shift = 0, | |
| 267 }, | |
|
9223
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
268 [PIX_FMT_RGB565BE] = { |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
269 .name = "rgb565be", |
| 1204 | 270 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
271 .color_type = FF_COLOR_RGB, |
| 1204 | 272 .pixel_type = FF_PIXEL_PACKED, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
273 .depth = 5, |
| 1593 | 274 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
275 }, |
|
9223
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
276 [PIX_FMT_RGB565LE] = { |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
277 .name = "rgb565le", |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
278 .nb_channels = 3, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
279 .color_type = FF_COLOR_RGB, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
280 .pixel_type = FF_PIXEL_PACKED, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
281 .depth = 5, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
282 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
283 }, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
284 [PIX_FMT_RGB555BE] = { |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
285 .name = "rgb555be", |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
286 .nb_channels = 3, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
287 .color_type = FF_COLOR_RGB, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
288 .pixel_type = FF_PIXEL_PACKED, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
289 .depth = 5, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
290 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
291 }, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
292 [PIX_FMT_RGB555LE] = { |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
293 .name = "rgb555le", |
| 4208 | 294 .nb_channels = 3, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
295 .color_type = FF_COLOR_RGB, |
| 1204 | 296 .pixel_type = FF_PIXEL_PACKED, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
297 .depth = 5, |
| 1593 | 298 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
299 }, |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
300 |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
301 /* gray / mono formats */ |
| 4066 | 302 [PIX_FMT_GRAY16BE] = { |
| 303 .name = "gray16be", | |
| 304 .nb_channels = 1, | |
| 305 .color_type = FF_COLOR_GRAY, | |
| 306 .pixel_type = FF_PIXEL_PLANAR, | |
| 307 .depth = 16, | |
| 308 }, | |
| 309 [PIX_FMT_GRAY16LE] = { | |
| 310 .name = "gray16le", | |
| 311 .nb_channels = 1, | |
| 312 .color_type = FF_COLOR_GRAY, | |
| 313 .pixel_type = FF_PIXEL_PLANAR, | |
| 314 .depth = 16, | |
| 315 }, | |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
316 [PIX_FMT_GRAY8] = { |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
317 .name = "gray", |
| 1204 | 318 .nb_channels = 1, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
319 .color_type = FF_COLOR_GRAY, |
| 1204 | 320 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
321 .depth = 8, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
322 }, |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
323 [PIX_FMT_MONOWHITE] = { |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
324 .name = "monow", |
| 1204 | 325 .nb_channels = 1, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
326 .color_type = FF_COLOR_GRAY, |
| 1204 | 327 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
328 .depth = 1, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
329 }, |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
330 [PIX_FMT_MONOBLACK] = { |
|
1014
48349e11c9b2
C99 initializers and kill warnings patch by (mru at users dot sourceforge dot net (M?ns Rullg?rd))
michaelni
parents:
993
diff
changeset
|
331 .name = "monob", |
| 1204 | 332 .nb_channels = 1, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
333 .color_type = FF_COLOR_GRAY, |
| 1204 | 334 .pixel_type = FF_PIXEL_PLANAR, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
335 .depth = 1, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
336 }, |
| 1055 | 337 |
| 338 /* paletted formats */ | |
| 339 [PIX_FMT_PAL8] = { | |
| 340 .name = "pal8", | |
| 1204 | 341 .nb_channels = 4, .is_alpha = 1, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
342 .color_type = FF_COLOR_RGB, |
| 1204 | 343 .pixel_type = FF_PIXEL_PALETTE, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
344 .depth = 8, |
| 1055 | 345 }, |
|
2179
34eaf41657d5
enrtries for PIX_FMT_XVMC_MPEG2_MC and PIX_FMT_XVMC_MPEG2_IDCT patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
2137
diff
changeset
|
346 [PIX_FMT_XVMC_MPEG2_MC] = { |
|
34eaf41657d5
enrtries for PIX_FMT_XVMC_MPEG2_MC and PIX_FMT_XVMC_MPEG2_IDCT patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
2137
diff
changeset
|
347 .name = "xvmcmc", |
|
9011
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
348 .is_hwaccel = 1, |
|
2179
34eaf41657d5
enrtries for PIX_FMT_XVMC_MPEG2_MC and PIX_FMT_XVMC_MPEG2_IDCT patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
2137
diff
changeset
|
349 }, |
|
34eaf41657d5
enrtries for PIX_FMT_XVMC_MPEG2_MC and PIX_FMT_XVMC_MPEG2_IDCT patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
2137
diff
changeset
|
350 [PIX_FMT_XVMC_MPEG2_IDCT] = { |
|
34eaf41657d5
enrtries for PIX_FMT_XVMC_MPEG2_MC and PIX_FMT_XVMC_MPEG2_IDCT patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
2137
diff
changeset
|
351 .name = "xvmcidct", |
|
9011
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
352 .is_hwaccel = 1, |
|
2179
34eaf41657d5
enrtries for PIX_FMT_XVMC_MPEG2_MC and PIX_FMT_XVMC_MPEG2_IDCT patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
2137
diff
changeset
|
353 }, |
|
8601
8b80f8285b1b
Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents:
8590
diff
changeset
|
354 [PIX_FMT_VDPAU_MPEG1] = { |
|
8b80f8285b1b
Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents:
8590
diff
changeset
|
355 .name = "vdpau_mpeg1", |
|
9011
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
356 .is_hwaccel = 1, |
|
9111
5f04afc7af53
Set PixFmtInfo::{x, y}_chroma_shift for VDPAU and VAAPI formats.
gb
parents:
9070
diff
changeset
|
357 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
8601
8b80f8285b1b
Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents:
8590
diff
changeset
|
358 }, |
|
8b80f8285b1b
Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents:
8590
diff
changeset
|
359 [PIX_FMT_VDPAU_MPEG2] = { |
|
8b80f8285b1b
Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents:
8590
diff
changeset
|
360 .name = "vdpau_mpeg2", |
|
9011
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
361 .is_hwaccel = 1, |
|
9111
5f04afc7af53
Set PixFmtInfo::{x, y}_chroma_shift for VDPAU and VAAPI formats.
gb
parents:
9070
diff
changeset
|
362 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
8601
8b80f8285b1b
Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents:
8590
diff
changeset
|
363 }, |
|
8522
f8c091bb5779
Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
8430
diff
changeset
|
364 [PIX_FMT_VDPAU_H264] = { |
|
f8c091bb5779
Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
8430
diff
changeset
|
365 .name = "vdpau_h264", |
|
9011
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
366 .is_hwaccel = 1, |
|
9111
5f04afc7af53
Set PixFmtInfo::{x, y}_chroma_shift for VDPAU and VAAPI formats.
gb
parents:
9070
diff
changeset
|
367 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
8522
f8c091bb5779
Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
8430
diff
changeset
|
368 }, |
|
8631
2d7269e13a8d
Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents:
8629
diff
changeset
|
369 [PIX_FMT_VDPAU_WMV3] = { |
|
2d7269e13a8d
Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents:
8629
diff
changeset
|
370 .name = "vdpau_wmv3", |
|
9011
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
371 .is_hwaccel = 1, |
|
9111
5f04afc7af53
Set PixFmtInfo::{x, y}_chroma_shift for VDPAU and VAAPI formats.
gb
parents:
9070
diff
changeset
|
372 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
8631
2d7269e13a8d
Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents:
8629
diff
changeset
|
373 }, |
|
2d7269e13a8d
Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents:
8629
diff
changeset
|
374 [PIX_FMT_VDPAU_VC1] = { |
|
2d7269e13a8d
Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents:
8629
diff
changeset
|
375 .name = "vdpau_vc1", |
|
9011
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
376 .is_hwaccel = 1, |
|
9111
5f04afc7af53
Set PixFmtInfo::{x, y}_chroma_shift for VDPAU and VAAPI formats.
gb
parents:
9070
diff
changeset
|
377 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
8631
2d7269e13a8d
Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents:
8629
diff
changeset
|
378 }, |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
379 [PIX_FMT_UYYVYY411] = { |
|
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
380 .name = "uyyvyy411", |
| 2309 | 381 .nb_channels = 1, |
| 382 .color_type = FF_COLOR_YUV, | |
| 383 .pixel_type = FF_PIXEL_PACKED, | |
| 384 .depth = 8, | |
| 385 .x_chroma_shift = 2, .y_chroma_shift = 0, | |
| 386 }, | |
|
9245
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
387 [PIX_FMT_ABGR] = { |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
388 .name = "abgr", |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
389 .nb_channels = 4, .is_alpha = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
390 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
391 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
392 .depth = 8, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
393 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
394 }, |
|
9223
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
395 [PIX_FMT_BGR565BE] = { |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
396 .name = "bgr565be", |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
397 .nb_channels = 3, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
398 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
399 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
400 .depth = 5, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
401 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
402 }, |
|
9223
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
403 [PIX_FMT_BGR565LE] = { |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
404 .name = "bgr565le", |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
405 .nb_channels = 3, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
406 .color_type = FF_COLOR_RGB, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
407 .pixel_type = FF_PIXEL_PACKED, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
408 .depth = 5, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
409 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
410 }, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
411 [PIX_FMT_BGR555BE] = { |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
412 .name = "bgr555be", |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
413 .nb_channels = 3, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
414 .color_type = FF_COLOR_RGB, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
415 .pixel_type = FF_PIXEL_PACKED, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
416 .depth = 5, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
417 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
418 }, |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
419 [PIX_FMT_BGR555LE] = { |
|
53f2c0f6e71d
Change the RGB5X5/BGR5X5 pixel format defines so that we have little
stefano
parents:
9222
diff
changeset
|
420 .name = "bgr555le", |
|
4207
bc9de4875ebd
BGR555 has never been working as alpha supporting format. Remove the false setting.
alex
parents:
4201
diff
changeset
|
421 .nb_channels = 3, |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
422 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
423 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
424 .depth = 5, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
425 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
426 }, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
427 [PIX_FMT_RGB8] = { |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
428 .name = "rgb8", |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
429 .nb_channels = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
430 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
431 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
432 .depth = 8, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
433 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
434 }, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
435 [PIX_FMT_RGB4] = { |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
436 .name = "rgb4", |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
437 .nb_channels = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
438 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
439 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
440 .depth = 4, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
441 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
442 }, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
443 [PIX_FMT_RGB4_BYTE] = { |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
444 .name = "rgb4_byte", |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
445 .nb_channels = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
446 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
447 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
448 .depth = 8, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
449 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
450 }, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
451 [PIX_FMT_BGR8] = { |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
452 .name = "bgr8", |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
453 .nb_channels = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
454 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
455 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
456 .depth = 8, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
457 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
458 }, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
459 [PIX_FMT_BGR4] = { |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
460 .name = "bgr4", |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
461 .nb_channels = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
462 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
463 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
464 .depth = 4, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
465 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
466 }, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
467 [PIX_FMT_BGR4_BYTE] = { |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
468 .name = "bgr4_byte", |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
469 .nb_channels = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
470 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
471 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
472 .depth = 8, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
473 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
474 }, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
475 [PIX_FMT_NV12] = { |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
476 .name = "nv12", |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
477 .nb_channels = 2, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
478 .color_type = FF_COLOR_YUV, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
479 .pixel_type = FF_PIXEL_PLANAR, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
480 .depth = 8, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
481 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
482 }, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
483 [PIX_FMT_NV21] = { |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
484 .name = "nv12", |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
485 .nb_channels = 2, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
486 .color_type = FF_COLOR_YUV, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
487 .pixel_type = FF_PIXEL_PLANAR, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
488 .depth = 8, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
489 .x_chroma_shift = 1, .y_chroma_shift = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
490 }, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
491 |
|
9245
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
492 [PIX_FMT_BGRA] = { |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
493 .name = "bgra", |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
494 .nb_channels = 4, .is_alpha = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
495 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
496 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
497 .depth = 8, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
498 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
499 }, |
|
9245
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
500 [PIX_FMT_RGBA] = { |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
501 .name = "rgba", |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
502 .nb_channels = 4, .is_alpha = 1, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
503 .color_type = FF_COLOR_RGB, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
504 .pixel_type = FF_PIXEL_PACKED, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
505 .depth = 8, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
506 .x_chroma_shift = 0, .y_chroma_shift = 0, |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
507 }, |
| 9061 | 508 |
| 509 /* VA API formats */ | |
| 510 [PIX_FMT_VAAPI_MOCO] = { | |
| 511 .name = "vaapi_moco", | |
| 512 .is_hwaccel = 1, | |
|
9111
5f04afc7af53
Set PixFmtInfo::{x, y}_chroma_shift for VDPAU and VAAPI formats.
gb
parents:
9070
diff
changeset
|
513 .x_chroma_shift = 1, .y_chroma_shift = 1, |
| 9061 | 514 }, |
| 515 [PIX_FMT_VAAPI_IDCT] = { | |
| 516 .name = "vaapi_idct", | |
| 517 .is_hwaccel = 1, | |
|
9111
5f04afc7af53
Set PixFmtInfo::{x, y}_chroma_shift for VDPAU and VAAPI formats.
gb
parents:
9070
diff
changeset
|
518 .x_chroma_shift = 1, .y_chroma_shift = 1, |
| 9061 | 519 }, |
| 520 [PIX_FMT_VAAPI_VLD] = { | |
| 521 .name = "vaapi_vld", | |
| 522 .is_hwaccel = 1, | |
|
9111
5f04afc7af53
Set PixFmtInfo::{x, y}_chroma_shift for VDPAU and VAAPI formats.
gb
parents:
9070
diff
changeset
|
523 .x_chroma_shift = 1, .y_chroma_shift = 1, |
| 9061 | 524 }, |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
525 }; |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
526 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
527 void avcodec_get_chroma_sub_sample(enum PixelFormat pix_fmt, int *h_shift, int *v_shift) |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
528 { |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
529 *h_shift = pix_fmt_info[pix_fmt].x_chroma_shift; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
530 *v_shift = pix_fmt_info[pix_fmt].y_chroma_shift; |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
531 } |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
532 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
533 const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt) |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
534 { |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
535 if (pix_fmt < 0 || pix_fmt >= PIX_FMT_NB) |
|
7463
5515e19b9137
Add graceful error handling to avcodec_get_pix_fmt_name() and avcodec_get_pix_fmt().
pross
parents:
6963
diff
changeset
|
536 return NULL; |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
537 else |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
538 return pix_fmt_info[pix_fmt].name; |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
539 } |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
540 |
|
9222
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
541 static enum PixelFormat avcodec_get_pix_fmt_internal(const char *name) |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
542 { |
| 2967 | 543 int i; |
| 544 | |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
545 for (i=0; i < PIX_FMT_NB; i++) |
| 9434 | 546 if (pix_fmt_info[i].name && !strcmp(pix_fmt_info[i].name, name)) |
| 9435 | 547 return i; |
|
7463
5515e19b9137
Add graceful error handling to avcodec_get_pix_fmt_name() and avcodec_get_pix_fmt().
pross
parents:
6963
diff
changeset
|
548 return PIX_FMT_NONE; |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
549 } |
|
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
550 |
| 9240 | 551 #ifdef WORDS_BIGENDIAN |
| 552 # define X_NE(be, le) be | |
| 553 #else | |
| 554 # define X_NE(be, le) le | |
| 555 #endif | |
| 556 | |
|
9222
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
557 enum PixelFormat avcodec_get_pix_fmt(const char *name) |
|
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
558 { |
|
9245
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
559 enum PixelFormat pix_fmt; |
|
9222
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
560 |
|
9245
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
561 if (!strcmp(name, "rgb32")) |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
562 name = X_NE("argb", "bgra"); |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
563 else if (!strcmp(name, "bgr32")) |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
564 name = X_NE("abgr", "rgba"); |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
565 |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
566 pix_fmt = avcodec_get_pix_fmt_internal(name); |
|
9222
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
567 if (pix_fmt == PIX_FMT_NONE) { |
|
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
568 char name2[32]; |
|
9242
3153dcc9f8d0
Factorize: use the X_NE() macro in avcodec_get_pix_fmt().
stefano
parents:
9240
diff
changeset
|
569 snprintf(name2, sizeof(name2), "%s%s", name, X_NE("be", "le")); |
|
9222
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
570 pix_fmt = avcodec_get_pix_fmt_internal(name2); |
|
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
571 } |
|
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
572 return pix_fmt; |
|
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
573 } |
|
e314914641bc
Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a
stefano
parents:
9221
diff
changeset
|
574 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
575 void avcodec_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt) |
|
5084
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
576 { |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
577 /* print header */ |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
578 if (pix_fmt < 0) |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
579 snprintf (buf, buf_size, |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
580 "name " " nb_channels" " depth" " is_alpha" |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
581 ); |
| 6911 | 582 else{ |
| 583 PixFmtInfo info= pix_fmt_info[pix_fmt]; | |
| 584 | |
| 585 char is_alpha_char= info.is_alpha ? 'y' : 'n'; | |
| 586 | |
|
5084
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
587 snprintf (buf, buf_size, |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
588 "%-10s" " %1d " " %2d " " %c ", |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
589 info.name, |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
590 info.nb_channels, |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
591 info.depth, |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
592 is_alpha_char |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
593 ); |
| 6911 | 594 } |
|
5084
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
595 } |
|
9930b7031cb2
Add support for listing the supported pixel formats using the option
benoit
parents:
5077
diff
changeset
|
596 |
|
9011
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
597 int ff_is_hwaccel_pix_fmt(enum PixelFormat pix_fmt) |
|
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
598 { |
|
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
599 return pix_fmt_info[pix_fmt].is_hwaccel; |
|
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
600 } |
|
90c99bda19f5
Approved hunks for VAAPI / our new shiny hwaccel API
michael
parents:
9007
diff
changeset
|
601 |
|
8748
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
602 int ff_set_systematic_pal(uint32_t pal[256], enum PixelFormat pix_fmt){ |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
603 int i; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
604 |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
605 for(i=0; i<256; i++){ |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
606 int r,g,b; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
607 |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
608 switch(pix_fmt) { |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
609 case PIX_FMT_RGB8: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
610 r= (i>>5 )*36; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
611 g= ((i>>2)&7)*36; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
612 b= (i&3 )*85; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
613 break; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
614 case PIX_FMT_BGR8: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
615 b= (i>>6 )*85; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
616 g= ((i>>3)&7)*36; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
617 r= (i&7 )*36; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
618 break; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
619 case PIX_FMT_RGB4_BYTE: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
620 r= (i>>3 )*255; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
621 g= ((i>>1)&3)*85; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
622 b= (i&1 )*255; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
623 break; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
624 case PIX_FMT_BGR4_BYTE: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
625 b= (i>>3 )*255; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
626 g= ((i>>1)&3)*85; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
627 r= (i&1 )*255; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
628 break; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
629 case PIX_FMT_GRAY8: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
630 r=b=g= i; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
631 break; |
|
8788
5e9e735cd793
Add a default (error) for the switch in case of an unsupported PIX_FMT.
gpoirier
parents:
8748
diff
changeset
|
632 default: |
|
5e9e735cd793
Add a default (error) for the switch in case of an unsupported PIX_FMT.
gpoirier
parents:
8748
diff
changeset
|
633 return -1; |
|
8748
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
634 } |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
635 pal[i] = b + (g<<8) + (r<<16); |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
636 } |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
637 |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
638 return 0; |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
639 } |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
640 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
641 int ff_fill_linesize(AVPicture *picture, enum PixelFormat pix_fmt, int width) |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
642 { |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
643 int w2; |
| 3420 | 644 const PixFmtInfo *pinfo; |
| 2967 | 645 |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
646 memset(picture->linesize, 0, sizeof(picture->linesize)); |
| 2422 | 647 |
|
1047
3f316a471019
handle odd image sizes when using subsampled chroma (useful for JPEG images)
bellard
parents:
1044
diff
changeset
|
648 pinfo = &pix_fmt_info[pix_fmt]; |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
649 switch(pix_fmt) { |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
650 case PIX_FMT_YUV420P: |
|
1047
3f316a471019
handle odd image sizes when using subsampled chroma (useful for JPEG images)
bellard
parents:
1044
diff
changeset
|
651 case PIX_FMT_YUV422P: |
|
3f316a471019
handle odd image sizes when using subsampled chroma (useful for JPEG images)
bellard
parents:
1044
diff
changeset
|
652 case PIX_FMT_YUV444P: |
|
3f316a471019
handle odd image sizes when using subsampled chroma (useful for JPEG images)
bellard
parents:
1044
diff
changeset
|
653 case PIX_FMT_YUV410P: |
|
3f316a471019
handle odd image sizes when using subsampled chroma (useful for JPEG images)
bellard
parents:
1044
diff
changeset
|
654 case PIX_FMT_YUV411P: |
| 5363 | 655 case PIX_FMT_YUV440P: |
|
1203
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
656 case PIX_FMT_YUVJ420P: |
|
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
657 case PIX_FMT_YUVJ422P: |
|
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
658 case PIX_FMT_YUVJ444P: |
| 5363 | 659 case PIX_FMT_YUVJ440P: |
|
1047
3f316a471019
handle odd image sizes when using subsampled chroma (useful for JPEG images)
bellard
parents:
1044
diff
changeset
|
660 w2 = (width + (1 << pinfo->x_chroma_shift) - 1) >> pinfo->x_chroma_shift; |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
661 picture->linesize[0] = width; |
|
1047
3f316a471019
handle odd image sizes when using subsampled chroma (useful for JPEG images)
bellard
parents:
1044
diff
changeset
|
662 picture->linesize[1] = w2; |
|
3f316a471019
handle odd image sizes when using subsampled chroma (useful for JPEG images)
bellard
parents:
1044
diff
changeset
|
663 picture->linesize[2] = w2; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
664 break; |
|
9519
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
665 case PIX_FMT_YUV420PLE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
666 case PIX_FMT_YUV422PLE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
667 case PIX_FMT_YUV444PLE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
668 case PIX_FMT_YUV420PBE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
669 case PIX_FMT_YUV422PBE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
670 case PIX_FMT_YUV444PBE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
671 w2 = (width + (1 << pinfo->x_chroma_shift) - 1) >> pinfo->x_chroma_shift; |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
672 picture->linesize[0] = 2*width; |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
673 picture->linesize[1] = 2*w2; |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
674 picture->linesize[2] = 2*w2; |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
675 break; |
|
5706
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
676 case PIX_FMT_YUVA420P: |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
677 w2 = (width + (1 << pinfo->x_chroma_shift) - 1) >> pinfo->x_chroma_shift; |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
678 picture->linesize[0] = width; |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
679 picture->linesize[1] = w2; |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
680 picture->linesize[2] = w2; |
|
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
681 picture->linesize[3] = width; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
682 break; |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
683 case PIX_FMT_NV12: |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
684 case PIX_FMT_NV21: |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
685 w2 = (width + (1 << pinfo->x_chroma_shift) - 1) >> pinfo->x_chroma_shift; |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
686 picture->linesize[0] = width; |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
687 picture->linesize[1] = w2; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
688 break; |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
689 case PIX_FMT_RGB24: |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
690 case PIX_FMT_BGR24: |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
691 picture->linesize[0] = width * 3; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
692 break; |
|
9245
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
693 case PIX_FMT_ARGB: |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
694 case PIX_FMT_ABGR: |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
695 case PIX_FMT_RGBA: |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
696 case PIX_FMT_BGRA: |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
697 picture->linesize[0] = width * 4; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
698 break; |
| 9001 | 699 case PIX_FMT_RGB48BE: |
| 700 case PIX_FMT_RGB48LE: | |
| 701 picture->linesize[0] = width * 6; | |
| 702 break; | |
| 4066 | 703 case PIX_FMT_GRAY16BE: |
| 704 case PIX_FMT_GRAY16LE: | |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
705 case PIX_FMT_BGR555: |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
706 case PIX_FMT_BGR565: |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
707 case PIX_FMT_RGB555: |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
708 case PIX_FMT_RGB565: |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
709 case PIX_FMT_YUYV422: |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
710 picture->linesize[0] = width * 2; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
711 break; |
|
2137
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
712 case PIX_FMT_UYVY422: |
|
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
713 picture->linesize[0] = width * 2; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
714 break; |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
715 case PIX_FMT_UYYVYY411: |
| 2309 | 716 picture->linesize[0] = width + width/2; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
717 break; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
718 case PIX_FMT_RGB4: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
719 case PIX_FMT_BGR4: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
720 picture->linesize[0] = width / 2; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
721 break; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
722 case PIX_FMT_MONOWHITE: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
723 case PIX_FMT_MONOBLACK: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
724 picture->linesize[0] = (width + 7) >> 3; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
725 break; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
726 case PIX_FMT_PAL8: |
|
8748
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
727 case PIX_FMT_RGB8: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
728 case PIX_FMT_BGR8: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
729 case PIX_FMT_RGB4_BYTE: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
730 case PIX_FMT_BGR4_BYTE: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
731 case PIX_FMT_GRAY8: |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
732 picture->linesize[0] = width; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
733 break; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
734 default: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
735 return -1; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
736 } |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
737 return 0; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
738 } |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
739 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
740 int ff_fill_pointer(AVPicture *picture, uint8_t *ptr, enum PixelFormat pix_fmt, |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
741 int height) |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
742 { |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
743 int size, h2, size2; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
744 const PixFmtInfo *pinfo; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
745 |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
746 pinfo = &pix_fmt_info[pix_fmt]; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
747 size = picture->linesize[0] * height; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
748 switch(pix_fmt) { |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
749 case PIX_FMT_YUV420P: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
750 case PIX_FMT_YUV422P: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
751 case PIX_FMT_YUV444P: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
752 case PIX_FMT_YUV410P: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
753 case PIX_FMT_YUV411P: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
754 case PIX_FMT_YUV440P: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
755 case PIX_FMT_YUVJ420P: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
756 case PIX_FMT_YUVJ422P: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
757 case PIX_FMT_YUVJ444P: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
758 case PIX_FMT_YUVJ440P: |
|
9519
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
759 case PIX_FMT_YUV420PLE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
760 case PIX_FMT_YUV422PLE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
761 case PIX_FMT_YUV444PLE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
762 case PIX_FMT_YUV420PBE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
763 case PIX_FMT_YUV422PBE: |
|
d42979883bb1
Add 420,422 and 444 planar 16bit per component pix formats.
michael
parents:
9483
diff
changeset
|
764 case PIX_FMT_YUV444PBE: |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
765 h2 = (height + (1 << pinfo->y_chroma_shift) - 1) >> pinfo->y_chroma_shift; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
766 size2 = picture->linesize[1] * h2; |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
767 picture->data[0] = ptr; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
768 picture->data[1] = picture->data[0] + size; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
769 picture->data[2] = picture->data[1] + size2; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
770 picture->data[3] = NULL; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
771 return size + 2 * size2; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
772 case PIX_FMT_YUVA420P: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
773 h2 = (height + (1 << pinfo->y_chroma_shift) - 1) >> pinfo->y_chroma_shift; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
774 size2 = picture->linesize[1] * h2; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
775 picture->data[0] = ptr; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
776 picture->data[1] = picture->data[0] + size; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
777 picture->data[2] = picture->data[1] + size2; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
778 picture->data[3] = picture->data[1] + size2 + size2; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
779 return 2 * size + 2 * size2; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
780 case PIX_FMT_NV12: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
781 case PIX_FMT_NV21: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
782 h2 = (height + (1 << pinfo->y_chroma_shift) - 1) >> pinfo->y_chroma_shift; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
783 size2 = picture->linesize[1] * h2 * 2; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
784 picture->data[0] = ptr; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
785 picture->data[1] = picture->data[0] + size; |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
786 picture->data[2] = NULL; |
|
5706
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
787 picture->data[3] = NULL; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
788 return size + 2 * size2; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
789 case PIX_FMT_RGB24: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
790 case PIX_FMT_BGR24: |
|
9245
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
791 case PIX_FMT_ARGB: |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
792 case PIX_FMT_ABGR: |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
793 case PIX_FMT_RGBA: |
|
b5d1395879a0
Make the pixel formats which were defined as macros:
stefano
parents:
9242
diff
changeset
|
794 case PIX_FMT_BGRA: |
| 9001 | 795 case PIX_FMT_RGB48BE: |
| 796 case PIX_FMT_RGB48LE: | |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
797 case PIX_FMT_GRAY16BE: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
798 case PIX_FMT_GRAY16LE: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
799 case PIX_FMT_BGR555: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
800 case PIX_FMT_BGR565: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
801 case PIX_FMT_RGB555: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
802 case PIX_FMT_RGB565: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
803 case PIX_FMT_YUYV422: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
804 case PIX_FMT_UYVY422: |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
805 case PIX_FMT_UYYVYY411: |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
806 case PIX_FMT_RGB4: |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
807 case PIX_FMT_BGR4: |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
808 case PIX_FMT_MONOWHITE: |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
809 case PIX_FMT_MONOBLACK: |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
810 picture->data[0] = ptr; |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
811 picture->data[1] = NULL; |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
812 picture->data[2] = NULL; |
|
5706
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
813 picture->data[3] = NULL; |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
814 return size; |
| 1055 | 815 case PIX_FMT_PAL8: |
|
8748
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
816 case PIX_FMT_RGB8: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
817 case PIX_FMT_BGR8: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
818 case PIX_FMT_RGB4_BYTE: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
819 case PIX_FMT_BGR4_BYTE: |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
820 case PIX_FMT_GRAY8: |
| 1055 | 821 size2 = (size + 3) & ~3; |
| 822 picture->data[0] = ptr; | |
| 823 picture->data[1] = ptr + size2; /* palette is stored here as 256 32 bit words */ | |
| 824 picture->data[2] = NULL; | |
|
5706
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5363
diff
changeset
|
825 picture->data[3] = NULL; |
| 1055 | 826 return size2 + 256 * 4; |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
827 default: |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
828 picture->data[0] = NULL; |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
829 picture->data[1] = NULL; |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
830 picture->data[2] = NULL; |
| 1055 | 831 picture->data[3] = NULL; |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
832 return -1; |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
833 } |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
834 } |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
835 |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
836 int avpicture_fill(AVPicture *picture, uint8_t *ptr, |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
837 enum PixelFormat pix_fmt, int width, int height) |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
838 { |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
839 |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
840 if(avcodec_check_dimensions(NULL, width, height)) |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
841 return -1; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
842 |
| 6357 | 843 if (ff_fill_linesize(picture, pix_fmt, width)) |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
844 return -1; |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
845 |
| 6357 | 846 return ff_fill_pointer(picture, ptr, pix_fmt, height); |
|
6356
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
847 } |
|
afa99894d8d9
Split avpicture_fill() in two functions. This will be
vitor
parents:
6350
diff
changeset
|
848 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
849 int avpicture_layout(const AVPicture* src, enum PixelFormat pix_fmt, int width, int height, |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
850 unsigned char *dest, int dest_size) |
|
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
851 { |
| 3420 | 852 const PixFmtInfo* pf = &pix_fmt_info[pix_fmt]; |
|
9070
87f496299f09
Fix avpicture_layout to not chroma shift the alpha plane when outputting YUVA420P
sdrik
parents:
9061
diff
changeset
|
853 int i, j, w, ow, h, oh, data_planes; |
| 2967 | 854 const unsigned char* s; |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
855 int size = avpicture_get_size(pix_fmt, width, height); |
|
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
856 |
| 2422 | 857 if (size > dest_size || size < 0) |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
858 return -1; |
|
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
859 |
|
1243
5d2376294fbf
* fixing a bug in avpicture_layout (PAL8 wasn't handled properly)
romansh
parents:
1231
diff
changeset
|
860 if (pf->pixel_type == FF_PIXEL_PACKED || pf->pixel_type == FF_PIXEL_PALETTE) { |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
861 if (pix_fmt == PIX_FMT_YUYV422 || |
| 2967 | 862 pix_fmt == PIX_FMT_UYVY422 || |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
863 pix_fmt == PIX_FMT_BGR565 || |
| 4088 | 864 pix_fmt == PIX_FMT_BGR555 || |
|
2137
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
865 pix_fmt == PIX_FMT_RGB565 || |
|
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
866 pix_fmt == PIX_FMT_RGB555) |
|
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
867 w = width * 2; |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
868 else if (pix_fmt == PIX_FMT_UYYVYY411) |
| 2979 | 869 w = width + width/2; |
| 870 else if (pix_fmt == PIX_FMT_PAL8) | |
| 871 w = width; | |
| 872 else | |
| 873 w = width * (pf->depth * pf->nb_channels / 8); | |
| 2967 | 874 |
| 2979 | 875 data_planes = 1; |
| 876 h = height; | |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
877 } else { |
|
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
878 data_planes = pf->nb_channels; |
| 2979 | 879 w = (width*pf->depth + 7)/8; |
| 880 h = height; | |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
881 } |
| 2967 | 882 |
|
9070
87f496299f09
Fix avpicture_layout to not chroma shift the alpha plane when outputting YUVA420P
sdrik
parents:
9061
diff
changeset
|
883 ow = w; |
|
87f496299f09
Fix avpicture_layout to not chroma shift the alpha plane when outputting YUVA420P
sdrik
parents:
9061
diff
changeset
|
884 oh = h; |
|
87f496299f09
Fix avpicture_layout to not chroma shift the alpha plane when outputting YUVA420P
sdrik
parents:
9061
diff
changeset
|
885 |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
886 for (i=0; i<data_planes; i++) { |
|
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
887 if (i == 1) { |
| 2979 | 888 w = width >> pf->x_chroma_shift; |
| 889 h = height >> pf->y_chroma_shift; | |
|
9070
87f496299f09
Fix avpicture_layout to not chroma shift the alpha plane when outputting YUVA420P
sdrik
parents:
9061
diff
changeset
|
890 } else if (i == 3) { |
|
87f496299f09
Fix avpicture_layout to not chroma shift the alpha plane when outputting YUVA420P
sdrik
parents:
9061
diff
changeset
|
891 w = ow; |
|
87f496299f09
Fix avpicture_layout to not chroma shift the alpha plane when outputting YUVA420P
sdrik
parents:
9061
diff
changeset
|
892 h = oh; |
| 2979 | 893 } |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
894 s = src->data[i]; |
| 2979 | 895 for(j=0; j<h; j++) { |
| 896 memcpy(dest, s, w); | |
| 897 dest += w; | |
| 898 s += src->linesize[i]; | |
| 899 } | |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
900 } |
| 2967 | 901 |
|
1243
5d2376294fbf
* fixing a bug in avpicture_layout (PAL8 wasn't handled properly)
romansh
parents:
1231
diff
changeset
|
902 if (pf->pixel_type == FF_PIXEL_PALETTE) |
| 2979 | 903 memcpy((unsigned char *)(((size_t)dest + 3) & ~3), src->data[1], 256 * 4); |
| 2967 | 904 |
|
1231
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
905 return size; |
|
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
906 } |
|
b88dfc4bbf8c
* introducing new public interface in imgconvert.c
romansh
parents:
1209
diff
changeset
|
907 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
908 int avpicture_get_size(enum PixelFormat pix_fmt, int width, int height) |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
909 { |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
910 AVPicture dummy_pict; |
|
9217
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
911 if(avcodec_check_dimensions(NULL, width, height)) |
|
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
912 return -1; |
|
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
913 switch (pix_fmt) { |
|
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
914 case PIX_FMT_RGB8: |
|
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
915 case PIX_FMT_BGR8: |
|
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
916 case PIX_FMT_RGB4_BYTE: |
|
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
917 case PIX_FMT_BGR4_BYTE: |
|
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
918 case PIX_FMT_GRAY8: |
|
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
919 // do not include palette for these pseudo-paletted formats |
|
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
920 return width * height; |
|
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
921 } |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
922 return avpicture_fill(&dummy_pict, NULL, pix_fmt, width, height); |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
923 } |
|
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
924 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
925 int avcodec_get_pix_fmt_loss(enum PixelFormat dst_pix_fmt, enum PixelFormat src_pix_fmt, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
926 int has_alpha) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
927 { |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
928 const PixFmtInfo *pf, *ps; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
929 int loss; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
930 |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
931 ps = &pix_fmt_info[src_pix_fmt]; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
932 |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
933 /* compute loss */ |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
934 loss = 0; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
935 pf = &pix_fmt_info[dst_pix_fmt]; |
|
1206
fd676abc754c
loss fixes (thanks to Daniel Serpell) - shrink22 fix
bellard
parents:
1205
diff
changeset
|
936 if (pf->depth < ps->depth || |
|
fd676abc754c
loss fixes (thanks to Daniel Serpell) - shrink22 fix
bellard
parents:
1205
diff
changeset
|
937 (dst_pix_fmt == PIX_FMT_RGB555 && src_pix_fmt == PIX_FMT_RGB565)) |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
938 loss |= FF_LOSS_DEPTH; |
|
1206
fd676abc754c
loss fixes (thanks to Daniel Serpell) - shrink22 fix
bellard
parents:
1205
diff
changeset
|
939 if (pf->x_chroma_shift > ps->x_chroma_shift || |
|
fd676abc754c
loss fixes (thanks to Daniel Serpell) - shrink22 fix
bellard
parents:
1205
diff
changeset
|
940 pf->y_chroma_shift > ps->y_chroma_shift) |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
941 loss |= FF_LOSS_RESOLUTION; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
942 switch(pf->color_type) { |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
943 case FF_COLOR_RGB: |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
944 if (ps->color_type != FF_COLOR_RGB && |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
945 ps->color_type != FF_COLOR_GRAY) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
946 loss |= FF_LOSS_COLORSPACE; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
947 break; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
948 case FF_COLOR_GRAY: |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
949 if (ps->color_type != FF_COLOR_GRAY) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
950 loss |= FF_LOSS_COLORSPACE; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
951 break; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
952 case FF_COLOR_YUV: |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
953 if (ps->color_type != FF_COLOR_YUV) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
954 loss |= FF_LOSS_COLORSPACE; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
955 break; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
956 case FF_COLOR_YUV_JPEG: |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
957 if (ps->color_type != FF_COLOR_YUV_JPEG && |
| 2967 | 958 ps->color_type != FF_COLOR_YUV && |
|
1206
fd676abc754c
loss fixes (thanks to Daniel Serpell) - shrink22 fix
bellard
parents:
1205
diff
changeset
|
959 ps->color_type != FF_COLOR_GRAY) |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
960 loss |= FF_LOSS_COLORSPACE; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
961 break; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
962 default: |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
963 /* fail safe test */ |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
964 if (ps->color_type != pf->color_type) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
965 loss |= FF_LOSS_COLORSPACE; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
966 break; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
967 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
968 if (pf->color_type == FF_COLOR_GRAY && |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
969 ps->color_type != FF_COLOR_GRAY) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
970 loss |= FF_LOSS_CHROMA; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
971 if (!pf->is_alpha && (ps->is_alpha && has_alpha)) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
972 loss |= FF_LOSS_ALPHA; |
| 2967 | 973 if (pf->pixel_type == FF_PIXEL_PALETTE && |
| 1204 | 974 (ps->pixel_type != FF_PIXEL_PALETTE && ps->color_type != FF_COLOR_GRAY)) |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
975 loss |= FF_LOSS_COLORQUANT; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
976 return loss; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
977 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
978 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
979 static int avg_bits_per_pixel(enum PixelFormat pix_fmt) |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
980 { |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
981 int bits; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
982 const PixFmtInfo *pf; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
983 |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
984 pf = &pix_fmt_info[pix_fmt]; |
| 1204 | 985 switch(pf->pixel_type) { |
| 986 case FF_PIXEL_PACKED: | |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
987 switch(pix_fmt) { |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
988 case PIX_FMT_YUYV422: |
|
2137
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
989 case PIX_FMT_UYVY422: |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
990 case PIX_FMT_RGB565: |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
991 case PIX_FMT_RGB555: |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
992 case PIX_FMT_BGR565: |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
993 case PIX_FMT_BGR555: |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
994 bits = 16; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
995 break; |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
996 case PIX_FMT_UYYVYY411: |
| 2979 | 997 bits = 12; |
| 998 break; | |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
999 default: |
| 1204 | 1000 bits = pf->depth * pf->nb_channels; |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1001 break; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1002 } |
| 1204 | 1003 break; |
| 1004 case FF_PIXEL_PLANAR: | |
| 1005 if (pf->x_chroma_shift == 0 && pf->y_chroma_shift == 0) { | |
| 1006 bits = pf->depth * pf->nb_channels; | |
| 1007 } else { | |
| 2967 | 1008 bits = pf->depth + ((2 * pf->depth) >> |
| 1204 | 1009 (pf->x_chroma_shift + pf->y_chroma_shift)); |
| 1010 } | |
| 1011 break; | |
| 1012 case FF_PIXEL_PALETTE: | |
| 1013 bits = 8; | |
| 1014 break; | |
| 1015 default: | |
| 1016 bits = -1; | |
| 1017 break; | |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1018 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1019 return bits; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1020 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1021 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1022 static enum PixelFormat avcodec_find_best_pix_fmt1(int64_t pix_fmt_mask, |
|
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1023 enum PixelFormat src_pix_fmt, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1024 int has_alpha, |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1025 int loss_mask) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1026 { |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1027 int dist, i, loss, min_dist; |
|
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1028 enum PixelFormat dst_pix_fmt; |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1029 |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1030 /* find exact color match with smallest size */ |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1031 dst_pix_fmt = -1; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1032 min_dist = 0x7fffffff; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1033 for(i = 0;i < PIX_FMT_NB; i++) { |
|
8321
e9db9859de6c
Prevent shift overflow, patch by Anders Gr?nberg, galileo.m2 gmail com.
diego
parents:
8316
diff
changeset
|
1034 if (pix_fmt_mask & (1ULL << i)) { |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1035 loss = avcodec_get_pix_fmt_loss(i, src_pix_fmt, has_alpha) & loss_mask; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1036 if (loss == 0) { |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1037 dist = avg_bits_per_pixel(i); |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1038 if (dist < min_dist) { |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1039 min_dist = dist; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1040 dst_pix_fmt = i; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1041 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1042 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1043 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1044 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1045 return dst_pix_fmt; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1046 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1047 |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1048 enum PixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum PixelFormat src_pix_fmt, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1049 int has_alpha, int *loss_ptr) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1050 { |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1051 enum PixelFormat dst_pix_fmt; |
|
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1052 int loss_mask, i; |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1053 static const int loss_mask_order[] = { |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1054 ~0, /* no loss first */ |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1055 ~FF_LOSS_ALPHA, |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1056 ~FF_LOSS_RESOLUTION, |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1057 ~(FF_LOSS_COLORSPACE | FF_LOSS_RESOLUTION), |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1058 ~FF_LOSS_COLORQUANT, |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1059 ~FF_LOSS_DEPTH, |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1060 0, |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1061 }; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1062 |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1063 /* try with successive loss */ |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1064 i = 0; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1065 for(;;) { |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1066 loss_mask = loss_mask_order[i++]; |
| 2967 | 1067 dst_pix_fmt = avcodec_find_best_pix_fmt1(pix_fmt_mask, src_pix_fmt, |
|
1202
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1068 has_alpha, loss_mask); |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1069 if (dst_pix_fmt >= 0) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1070 goto found; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1071 if (loss_mask == 0) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1072 break; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1073 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1074 return -1; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1075 found: |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1076 if (loss_ptr) |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1077 *loss_ptr = avcodec_get_pix_fmt_loss(dst_pix_fmt, src_pix_fmt, has_alpha); |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1078 return dst_pix_fmt; |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1079 } |
|
8b49a7ee4e4e
YUV formats/gray formats are correctly defined - added format loss information - preliminary JPEG YUV formats support
bellard
parents:
1199
diff
changeset
|
1080 |
| 3245 | 1081 void ff_img_copy_plane(uint8_t *dst, int dst_wrap, |
| 1205 | 1082 const uint8_t *src, int src_wrap, |
| 1083 int width, int height) | |
| 1204 | 1084 { |
| 2967 | 1085 if((!dst) || (!src)) |
| 2785 | 1086 return; |
| 1204 | 1087 for(;height > 0; height--) { |
| 1088 memcpy(dst, src, width); | |
| 1089 dst += dst_wrap; | |
| 1090 src += src_wrap; | |
| 1091 } | |
| 1092 } | |
| 1093 | |
| 6358 | 1094 int ff_get_plane_bytewidth(enum PixelFormat pix_fmt, int width, int plane) |
| 1204 | 1095 { |
| 6347 | 1096 int bits; |
| 3420 | 1097 const PixFmtInfo *pf = &pix_fmt_info[pix_fmt]; |
| 2967 | 1098 |
| 1204 | 1099 pf = &pix_fmt_info[pix_fmt]; |
| 1100 switch(pf->pixel_type) { | |
| 1101 case FF_PIXEL_PACKED: | |
| 1102 switch(pix_fmt) { | |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
1103 case PIX_FMT_YUYV422: |
|
2137
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
1593
diff
changeset
|
1104 case PIX_FMT_UYVY422: |
| 1204 | 1105 case PIX_FMT_RGB565: |
| 1106 case PIX_FMT_RGB555: | |
|
3646
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
1107 case PIX_FMT_BGR565: |
|
e324e5ce41a1
Minimal support for the new pixel formats in libavcodec
lucabe
parents:
3589
diff
changeset
|
1108 case PIX_FMT_BGR555: |
| 1204 | 1109 bits = 16; |
| 1110 break; | |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4359
diff
changeset
|
1111 case PIX_FMT_UYYVYY411: |
| 2979 | 1112 bits = 12; |
| 1113 break; | |
| 1204 | 1114 default: |
| 1115 bits = pf->depth * pf->nb_channels; | |
| 1116 break; | |
| 1117 } | |
| 6347 | 1118 return (width * bits + 7) >> 3; |
| 1119 break; | |
| 1120 case FF_PIXEL_PLANAR: | |
| 1121 if (plane == 1 || plane == 2) | |
|
8083
1fe764a5c33e
Fix av_picture_copy missing pixels on packed planar AVPictures with odd size.
diego
parents:
8073
diff
changeset
|
1122 width= -((-width)>>pf->x_chroma_shift); |
| 6347 | 1123 |
| 1124 return (width * pf->depth + 7) >> 3; | |
| 1125 break; | |
| 1126 case FF_PIXEL_PALETTE: | |
| 1127 if (plane == 0) | |
| 1128 return width; | |
| 1204 | 1129 break; |
| 6347 | 1130 } |
| 1131 | |
| 1132 return -1; | |
| 1133 } | |
| 1134 | |
| 1135 void av_picture_copy(AVPicture *dst, const AVPicture *src, | |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1136 enum PixelFormat pix_fmt, int width, int height) |
| 6347 | 1137 { |
| 1138 int i; | |
| 1139 const PixFmtInfo *pf = &pix_fmt_info[pix_fmt]; | |
| 1140 | |
| 1141 switch(pf->pixel_type) { | |
| 1142 case FF_PIXEL_PACKED: | |
| 1204 | 1143 case FF_PIXEL_PLANAR: |
| 1144 for(i = 0; i < pf->nb_channels; i++) { | |
|
8087
661cd381d996
Remove unused variable, patch by Art Clarke, aclarke vlideshow com.
diego
parents:
8083
diff
changeset
|
1145 int h; |
| 6358 | 1146 int bwidth = ff_get_plane_bytewidth(pix_fmt, width, i); |
| 1204 | 1147 h = height; |
| 1148 if (i == 1 || i == 2) { | |
|
8083
1fe764a5c33e
Fix av_picture_copy missing pixels on packed planar AVPictures with odd size.
diego
parents:
8073
diff
changeset
|
1149 h= -((-height)>>pf->y_chroma_shift); |
| 1204 | 1150 } |
| 3245 | 1151 ff_img_copy_plane(dst->data[i], dst->linesize[i], |
| 1204 | 1152 src->data[i], src->linesize[i], |
| 1153 bwidth, h); | |
| 1154 } | |
| 1155 break; | |
| 1156 case FF_PIXEL_PALETTE: | |
| 3245 | 1157 ff_img_copy_plane(dst->data[0], dst->linesize[0], |
| 1204 | 1158 src->data[0], src->linesize[0], |
| 1159 width, height); | |
| 1160 /* copy the palette */ | |
| 3245 | 1161 ff_img_copy_plane(dst->data[1], dst->linesize[1], |
| 1204 | 1162 src->data[1], src->linesize[1], |
| 1163 4, 256); | |
| 1164 break; | |
| 1165 } | |
| 1166 } | |
|
993
895d3b01c6f4
added missing formats in all functions - added monoblack, monowhite and gray8 support for most conversions
bellard
parents:
989
diff
changeset
|
1167 |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1168 /* 2x2 -> 1x1 */ |
| 3245 | 1169 void ff_shrink22(uint8_t *dst, int dst_wrap, |
| 1205 | 1170 const uint8_t *src, int src_wrap, |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1171 int width, int height) |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1172 { |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1173 int w; |
| 1205 | 1174 const uint8_t *s1, *s2; |
| 1175 uint8_t *d; | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1176 |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1177 for(;height > 0; height--) { |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1178 s1 = src; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1179 s2 = s1 + src_wrap; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1180 d = dst; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1181 for(w = width;w >= 4; w-=4) { |
|
1206
fd676abc754c
loss fixes (thanks to Daniel Serpell) - shrink22 fix
bellard
parents:
1205
diff
changeset
|
1182 d[0] = (s1[0] + s1[1] + s2[0] + s2[1] + 2) >> 2; |
|
fd676abc754c
loss fixes (thanks to Daniel Serpell) - shrink22 fix
bellard
parents:
1205
diff
changeset
|
1183 d[1] = (s1[2] + s1[3] + s2[2] + s2[3] + 2) >> 2; |
|
fd676abc754c
loss fixes (thanks to Daniel Serpell) - shrink22 fix
bellard
parents:
1205
diff
changeset
|
1184 d[2] = (s1[4] + s1[5] + s2[4] + s2[5] + 2) >> 2; |
|
fd676abc754c
loss fixes (thanks to Daniel Serpell) - shrink22 fix
bellard
parents:
1205
diff
changeset
|
1185 d[3] = (s1[6] + s1[7] + s2[6] + s2[7] + 2) >> 2; |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1186 s1 += 8; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1187 s2 += 8; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1188 d += 4; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1189 } |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1190 for(;w > 0; w--) { |
|
1206
fd676abc754c
loss fixes (thanks to Daniel Serpell) - shrink22 fix
bellard
parents:
1205
diff
changeset
|
1191 d[0] = (s1[0] + s1[1] + s2[0] + s2[1] + 2) >> 2; |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1192 s1 += 2; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1193 s2 += 2; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1194 d++; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1195 } |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1196 src += 2 * src_wrap; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1197 dst += dst_wrap; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1198 } |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1199 } |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1200 |
| 1205 | 1201 /* 4x4 -> 1x1 */ |
| 3245 | 1202 void ff_shrink44(uint8_t *dst, int dst_wrap, |
| 1205 | 1203 const uint8_t *src, int src_wrap, |
|
576
9aa5f0d0124e
YUV410P to YUV420P patch by Fran?ois Revol <revol at free dot fr>
michaelni
parents:
440
diff
changeset
|
1204 int width, int height) |
|
9aa5f0d0124e
YUV410P to YUV420P patch by Fran?ois Revol <revol at free dot fr>
michaelni
parents:
440
diff
changeset
|
1205 { |
|
9aa5f0d0124e
YUV410P to YUV420P patch by Fran?ois Revol <revol at free dot fr>
michaelni
parents:
440
diff
changeset
|
1206 int w; |
| 1205 | 1207 const uint8_t *s1, *s2, *s3, *s4; |
| 1208 uint8_t *d; | |
|
576
9aa5f0d0124e
YUV410P to YUV420P patch by Fran?ois Revol <revol at free dot fr>
michaelni
parents:
440
diff
changeset
|
1209 |
|
9aa5f0d0124e
YUV410P to YUV420P patch by Fran?ois Revol <revol at free dot fr>
michaelni
parents:
440
diff
changeset
|
1210 for(;height > 0; height--) { |
|
9aa5f0d0124e
YUV410P to YUV420P patch by Fran?ois Revol <revol at free dot fr>
michaelni
parents:
440
diff
changeset
|
1211 s1 = src; |
| 1205 | 1212 s2 = s1 + src_wrap; |
| 1213 s3 = s2 + src_wrap; | |
| 1214 s4 = s3 + src_wrap; | |
|
576
9aa5f0d0124e
YUV410P to YUV420P patch by Fran?ois Revol <revol at free dot fr>
michaelni
parents:
440
diff
changeset
|
1215 d = dst; |
| 1205 | 1216 for(w = width;w > 0; w--) { |
| 1217 d[0] = (s1[0] + s1[1] + s1[2] + s1[3] + | |
| 1218 s2[0] + s2[1] + s2[2] + s2[3] + | |
| 1219 s3[0] + s3[1] + s3[2] + s3[3] + | |
| 1220 s4[0] + s4[1] + s4[2] + s4[3] + 8) >> 4; | |
| 1221 s1 += 4; | |
| 1222 s2 += 4; | |
| 1223 s3 += 4; | |
| 1224 s4 += 4; | |
|
576
9aa5f0d0124e
YUV410P to YUV420P patch by Fran?ois Revol <revol at free dot fr>
michaelni
parents:
440
diff
changeset
|
1225 d++; |
|
9aa5f0d0124e
YUV410P to YUV420P patch by Fran?ois Revol <revol at free dot fr>
michaelni
parents:
440
diff
changeset
|
1226 } |
| 1205 | 1227 src += 4 * src_wrap; |
| 1228 dst += dst_wrap; | |
| 1229 } | |
| 1230 } | |
| 1231 | |
| 3245 | 1232 /* 8x8 -> 1x1 */ |
| 1233 void ff_shrink88(uint8_t *dst, int dst_wrap, | |
| 1234 const uint8_t *src, int src_wrap, | |
| 1235 int width, int height) | |
| 1236 { | |
| 1237 int w, i; | |
| 1238 | |
| 1239 for(;height > 0; height--) { | |
| 1240 for(w = width;w > 0; w--) { | |
| 1241 int tmp=0; | |
| 1242 for(i=0; i<8; i++){ | |
| 1243 tmp += src[0] + src[1] + src[2] + src[3] + src[4] + src[5] + src[6] + src[7]; | |
| 1244 src += src_wrap; | |
| 1245 } | |
| 1246 *(dst++) = (tmp + 32)>>6; | |
| 1247 src += 8 - 8*src_wrap; | |
| 1248 } | |
| 1249 src += 8*src_wrap - 8*width; | |
| 1250 dst += dst_wrap - width; | |
| 1251 } | |
| 1252 } | |
| 1253 | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1254 |
| 1508 | 1255 int avpicture_alloc(AVPicture *picture, |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1256 enum PixelFormat pix_fmt, int width, int height) |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1257 { |
|
3266
3b785e80ce3e
make "size" variable in avpicture_alloc signed, since avpicture_get_size
reimar
parents:
3257
diff
changeset
|
1258 int size; |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1259 void *ptr; |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1260 |
|
9217
53ec03e7ba40
Fix avpicture_get_size for non-paletted formats with a helper palette
reimar
parents:
9191
diff
changeset
|
1261 size = avpicture_fill(picture, NULL, pix_fmt, width, height); |
| 2422 | 1262 if(size<0) |
| 1263 goto fail; | |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1264 ptr = av_malloc(size); |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1265 if (!ptr) |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1266 goto fail; |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1267 avpicture_fill(picture, ptr, pix_fmt, width, height); |
|
8748
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
1268 if(picture->data[1] && !picture->data[2]) |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
1269 ff_set_systematic_pal((uint32_t*)picture->data[1], pix_fmt); |
|
eaa08ce79f9a
Ensure that the palette is set in data[1] for all 8bit formats.
michael
parents:
8718
diff
changeset
|
1270 |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1271 return 0; |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1272 fail: |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1273 memset(picture, 0, sizeof(AVPicture)); |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1274 return -1; |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1275 } |
|
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1276 |
| 1508 | 1277 void avpicture_free(AVPicture *picture) |
|
989
fe9083c56733
simplified code (need automatic testing) - added primitive new format support.
bellard
parents:
940
diff
changeset
|
1278 { |
|
1031
19de1445beb2
use av_malloc() functions - added av_strdup and av_realloc()
bellard
parents:
1028
diff
changeset
|
1279 av_free(picture->data[0]); |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1280 } |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1281 |
|
1203
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
1282 /* return true if yuv planar */ |
| 3420 | 1283 static inline int is_yuv_planar(const PixFmtInfo *ps) |
|
1203
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
1284 { |
|
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
1285 return (ps->color_type == FF_COLOR_YUV || |
| 2967 | 1286 ps->color_type == FF_COLOR_YUV_JPEG) && |
| 1204 | 1287 ps->pixel_type == FF_PIXEL_PLANAR; |
|
1203
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
1288 } |
|
80c73b9b0ba2
accurate YUV to RGB and RGB to YUV conversions - added comments
bellard
parents:
1202
diff
changeset
|
1289 |
|
4624
6a900f539e2c
Add the prefix "av_" to img_crop(), img_copy() and img_pad(), and rename "img"
takis
parents:
4593
diff
changeset
|
1290 int av_picture_crop(AVPicture *dst, const AVPicture *src, |
| 3179 | 1291 int pix_fmt, int top_band, int left_band) |
| 1292 { | |
| 1293 int y_shift; | |
| 1294 int x_shift; | |
| 1295 | |
| 1296 if (pix_fmt < 0 || pix_fmt >= PIX_FMT_NB || !is_yuv_planar(&pix_fmt_info[pix_fmt])) | |
| 1297 return -1; | |
| 1298 | |
| 1299 y_shift = pix_fmt_info[pix_fmt].y_chroma_shift; | |
| 1300 x_shift = pix_fmt_info[pix_fmt].x_chroma_shift; | |
| 1301 | |
| 1302 dst->data[0] = src->data[0] + (top_band * src->linesize[0]) + left_band; | |
| 1303 dst->data[1] = src->data[1] + ((top_band >> y_shift) * src->linesize[1]) + (left_band >> x_shift); | |
| 1304 dst->data[2] = src->data[2] + ((top_band >> y_shift) * src->linesize[2]) + (left_band >> x_shift); | |
| 1305 | |
| 1306 dst->linesize[0] = src->linesize[0]; | |
| 1307 dst->linesize[1] = src->linesize[1]; | |
| 1308 dst->linesize[2] = src->linesize[2]; | |
| 1309 return 0; | |
| 1310 } | |
| 1311 | |
|
4624
6a900f539e2c
Add the prefix "av_" to img_crop(), img_copy() and img_pad(), and rename "img"
takis
parents:
4593
diff
changeset
|
1312 int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1313 enum PixelFormat pix_fmt, int padtop, int padbottom, int padleft, int padright, |
| 4358 | 1314 int *color) |
|
3257
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1315 { |
|
4359
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1316 uint8_t *optr; |
|
3257
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1317 int y_shift; |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1318 int x_shift; |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1319 int yheight; |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1320 int i, y; |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1321 |
| 4358 | 1322 if (pix_fmt < 0 || pix_fmt >= PIX_FMT_NB || |
| 1323 !is_yuv_planar(&pix_fmt_info[pix_fmt])) return -1; | |
|
3257
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1324 |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1325 for (i = 0; i < 3; i++) { |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1326 x_shift = i ? pix_fmt_info[pix_fmt].x_chroma_shift : 0; |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1327 y_shift = i ? pix_fmt_info[pix_fmt].y_chroma_shift : 0; |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1328 |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1329 if (padtop || padleft) { |
| 4358 | 1330 memset(dst->data[i], color[i], |
| 1331 dst->linesize[i] * (padtop >> y_shift) + (padleft >> x_shift)); | |
|
3257
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1332 } |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1333 |
|
4359
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1334 if (padleft || padright) { |
| 4358 | 1335 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + |
| 1336 (dst->linesize[i] - (padright >> x_shift)); | |
|
3257
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1337 yheight = (height - 1 - (padtop + padbottom)) >> y_shift; |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1338 for (y = 0; y < yheight; y++) { |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1339 memset(optr, color[i], (padleft + padright) >> x_shift); |
|
4359
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1340 optr += dst->linesize[i]; |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1341 } |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1342 } |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1343 |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1344 if (src) { /* first line */ |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1345 uint8_t *iptr = src->data[i]; |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1346 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1347 (padleft >> x_shift); |
|
6963
cc2c5a21a0eb
memcpy considering output width, not src linesize, fix segv with av_picture_pad
bcoudurier
parents:
6911
diff
changeset
|
1348 memcpy(optr, iptr, (width - padleft - padright) >> x_shift); |
|
4359
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1349 iptr += src->linesize[i]; |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1350 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1351 (dst->linesize[i] - (padright >> x_shift)); |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1352 yheight = (height - 1 - (padtop + padbottom)) >> y_shift; |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1353 for (y = 0; y < yheight; y++) { |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1354 memset(optr, color[i], (padleft + padright) >> x_shift); |
|
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1355 memcpy(optr + ((padleft + padright) >> x_shift), iptr, |
|
6963
cc2c5a21a0eb
memcpy considering output width, not src linesize, fix segv with av_picture_pad
bcoudurier
parents:
6911
diff
changeset
|
1356 (width - padleft - padright) >> x_shift); |
|
4359
d276d6eed6a0
Avoid branches in the loop and solve a gcc warning
lu_zero
parents:
4358
diff
changeset
|
1357 iptr += src->linesize[i]; |
|
3257
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1358 optr += dst->linesize[i]; |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1359 } |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1360 } |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1361 |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1362 if (padbottom || padright) { |
| 4358 | 1363 optr = dst->data[i] + dst->linesize[i] * |
| 1364 ((height - padbottom) >> y_shift) - (padright >> x_shift); | |
| 1365 memset(optr, color[i],dst->linesize[i] * | |
| 1366 (padbottom >> y_shift) + (padright >> x_shift)); | |
|
3257
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1367 } |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1368 } |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1369 return 0; |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1370 } |
|
63f61b09dcee
Baptiste COUDURIER's padding patch (reworked by me a little bit).
lucabe
parents:
3245
diff
changeset
|
1371 |
| 1208 | 1372 /* NOTE: we scan all the pixels to have an exact information */ |
|
1488
766a2f4edbea
avcodec const correctness patch by (Drew Hess <dhess at ilm dot com>)
michaelni
parents:
1425
diff
changeset
|
1373 static int get_alpha_info_pal8(const AVPicture *src, int width, int height) |
| 1208 | 1374 { |
| 1375 const unsigned char *p; | |
| 1376 int src_wrap, ret, x, y; | |
| 1377 unsigned int a; | |
| 1378 uint32_t *palette = (uint32_t *)src->data[1]; | |
| 2967 | 1379 |
| 1208 | 1380 p = src->data[0]; |
| 1381 src_wrap = src->linesize[0] - width; | |
| 1382 ret = 0; | |
| 1383 for(y=0;y<height;y++) { | |
| 1384 for(x=0;x<width;x++) { | |
| 1385 a = palette[p[0]] >> 24; | |
| 1386 if (a == 0x00) { | |
| 1387 ret |= FF_ALPHA_TRANSP; | |
| 1388 } else if (a != 0xff) { | |
| 1389 ret |= FF_ALPHA_SEMI_TRANSP; | |
| 1390 } | |
| 1391 p++; | |
| 1392 } | |
| 1393 p += src_wrap; | |
| 1394 } | |
| 1395 return ret; | |
| 1396 } | |
| 1397 | |
|
1488
766a2f4edbea
avcodec const correctness patch by (Drew Hess <dhess at ilm dot com>)
michaelni
parents:
1425
diff
changeset
|
1398 int img_get_alpha_info(const AVPicture *src, |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1399 enum PixelFormat pix_fmt, int width, int height) |
| 1208 | 1400 { |
| 3420 | 1401 const PixFmtInfo *pf = &pix_fmt_info[pix_fmt]; |
| 1208 | 1402 int ret; |
| 1403 | |
| 1404 /* no alpha can be represented in format */ | |
| 1405 if (!pf->is_alpha) | |
| 1406 return 0; | |
| 1407 switch(pix_fmt) { | |
| 1408 case PIX_FMT_PAL8: | |
| 1409 ret = get_alpha_info_pal8(src, width, height); | |
| 1410 break; | |
| 1411 default: | |
| 1412 /* we do not know, so everything is indicated */ | |
| 1413 ret = FF_ALPHA_TRANSP | FF_ALPHA_SEMI_TRANSP; | |
| 1414 break; | |
| 1415 } | |
| 1416 return ret; | |
| 1417 } | |
| 801 | 1418 |
| 8590 | 1419 #if HAVE_MMX |
| 801 | 1420 #define DEINT_INPLACE_LINE_LUM \ |
| 1421 movd_m2r(lum_m4[0],mm0);\ | |
| 1422 movd_m2r(lum_m3[0],mm1);\ | |
| 1423 movd_m2r(lum_m2[0],mm2);\ | |
| 1424 movd_m2r(lum_m1[0],mm3);\ | |
| 1425 movd_m2r(lum[0],mm4);\ | |
| 1426 punpcklbw_r2r(mm7,mm0);\ | |
| 1427 movd_r2m(mm2,lum_m4[0]);\ | |
| 1428 punpcklbw_r2r(mm7,mm1);\ | |
| 1429 punpcklbw_r2r(mm7,mm2);\ | |
| 1430 punpcklbw_r2r(mm7,mm3);\ | |
| 1431 punpcklbw_r2r(mm7,mm4);\ | |
| 1432 paddw_r2r(mm3,mm1);\ | |
| 1433 psllw_i2r(1,mm2);\ | |
| 1434 paddw_r2r(mm4,mm0);\ | |
| 1435 psllw_i2r(2,mm1);\ | |
| 1436 paddw_r2r(mm6,mm2);\ | |
| 1437 paddw_r2r(mm2,mm1);\ | |
| 1438 psubusw_r2r(mm0,mm1);\ | |
| 1439 psrlw_i2r(3,mm1);\ | |
| 1440 packuswb_r2r(mm7,mm1);\ | |
| 1441 movd_r2m(mm1,lum_m2[0]); | |
| 1442 | |
| 1443 #define DEINT_LINE_LUM \ | |
| 1444 movd_m2r(lum_m4[0],mm0);\ | |
| 1445 movd_m2r(lum_m3[0],mm1);\ | |
| 1446 movd_m2r(lum_m2[0],mm2);\ | |
| 1447 movd_m2r(lum_m1[0],mm3);\ | |
| 1448 movd_m2r(lum[0],mm4);\ | |
| 1449 punpcklbw_r2r(mm7,mm0);\ | |
| 1450 punpcklbw_r2r(mm7,mm1);\ | |
| 1451 punpcklbw_r2r(mm7,mm2);\ | |
| 1452 punpcklbw_r2r(mm7,mm3);\ | |
| 1453 punpcklbw_r2r(mm7,mm4);\ | |
| 1454 paddw_r2r(mm3,mm1);\ | |
| 1455 psllw_i2r(1,mm2);\ | |
| 1456 paddw_r2r(mm4,mm0);\ | |
| 1457 psllw_i2r(2,mm1);\ | |
| 1458 paddw_r2r(mm6,mm2);\ | |
| 1459 paddw_r2r(mm2,mm1);\ | |
| 1460 psubusw_r2r(mm0,mm1);\ | |
| 1461 psrlw_i2r(3,mm1);\ | |
| 1462 packuswb_r2r(mm7,mm1);\ | |
| 1463 movd_r2m(mm1,dst[0]); | |
| 1464 #endif | |
| 1465 | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1466 /* filter parameters: [-1 4 2 4 -1] // 8 */ |
| 2967 | 1467 static void deinterlace_line(uint8_t *dst, |
| 2979 | 1468 const uint8_t *lum_m4, const uint8_t *lum_m3, |
| 1469 const uint8_t *lum_m2, const uint8_t *lum_m1, | |
| 1470 const uint8_t *lum, | |
| 1471 int size) | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1472 { |
| 8590 | 1473 #if !HAVE_MMX |
| 4176 | 1474 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1475 int sum; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1476 |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1477 for(;size > 0;size--) { |
| 801 | 1478 sum = -lum_m4[0]; |
| 1479 sum += lum_m3[0] << 2; | |
| 1480 sum += lum_m2[0] << 1; | |
| 1481 sum += lum_m1[0] << 2; | |
| 1482 sum += -lum[0]; | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1483 dst[0] = cm[(sum + 4) >> 3]; |
| 801 | 1484 lum_m4++; |
| 1485 lum_m3++; | |
| 1486 lum_m2++; | |
| 1487 lum_m1++; | |
| 1488 lum++; | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1489 dst++; |
| 801 | 1490 } |
| 1491 #else | |
| 1492 | |
| 1044 | 1493 { |
| 1494 pxor_r2r(mm7,mm7); | |
| 8316 | 1495 movq_m2r(ff_pw_4,mm6); |
| 1044 | 1496 } |
| 801 | 1497 for (;size > 3; size-=4) { |
| 1498 DEINT_LINE_LUM | |
| 1499 lum_m4+=4; | |
| 1500 lum_m3+=4; | |
| 1501 lum_m2+=4; | |
| 1502 lum_m1+=4; | |
| 1503 lum+=4; | |
| 1504 dst+=4; | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1505 } |
| 801 | 1506 #endif |
| 1507 } | |
| 1064 | 1508 static void deinterlace_line_inplace(uint8_t *lum_m4, uint8_t *lum_m3, uint8_t *lum_m2, uint8_t *lum_m1, uint8_t *lum, |
| 801 | 1509 int size) |
| 1510 { | |
| 8590 | 1511 #if !HAVE_MMX |
| 4176 | 1512 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; |
| 801 | 1513 int sum; |
| 1514 | |
| 1515 for(;size > 0;size--) { | |
| 1516 sum = -lum_m4[0]; | |
| 1517 sum += lum_m3[0] << 2; | |
| 1518 sum += lum_m2[0] << 1; | |
| 1519 lum_m4[0]=lum_m2[0]; | |
| 1520 sum += lum_m1[0] << 2; | |
| 1521 sum += -lum[0]; | |
| 1522 lum_m2[0] = cm[(sum + 4) >> 3]; | |
| 1523 lum_m4++; | |
| 1524 lum_m3++; | |
| 1525 lum_m2++; | |
| 1526 lum_m1++; | |
| 1527 lum++; | |
| 1528 } | |
| 1529 #else | |
| 1530 | |
| 1044 | 1531 { |
| 1532 pxor_r2r(mm7,mm7); | |
| 8316 | 1533 movq_m2r(ff_pw_4,mm6); |
| 1044 | 1534 } |
| 801 | 1535 for (;size > 3; size-=4) { |
| 1536 DEINT_INPLACE_LINE_LUM | |
| 1537 lum_m4+=4; | |
| 1538 lum_m3+=4; | |
| 1539 lum_m2+=4; | |
| 1540 lum_m1+=4; | |
| 1541 lum+=4; | |
| 1542 } | |
| 1543 #endif | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1544 } |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1545 |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1546 /* deinterlacing : 2 temporal taps, 3 spatial taps linear filter. The |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1547 top field is copied as is, but the bottom field is deinterlaced |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1548 against the top field. */ |
| 1064 | 1549 static void deinterlace_bottom_field(uint8_t *dst, int dst_wrap, |
|
1488
766a2f4edbea
avcodec const correctness patch by (Drew Hess <dhess at ilm dot com>)
michaelni
parents:
1425
diff
changeset
|
1550 const uint8_t *src1, int src_wrap, |
| 801 | 1551 int width, int height) |
| 1552 { | |
|
1488
766a2f4edbea
avcodec const correctness patch by (Drew Hess <dhess at ilm dot com>)
michaelni
parents:
1425
diff
changeset
|
1553 const uint8_t *src_m2, *src_m1, *src_0, *src_p1, *src_p2; |
| 801 | 1554 int y; |
| 1555 | |
| 1556 src_m2 = src1; | |
| 1557 src_m1 = src1; | |
| 1558 src_0=&src_m1[src_wrap]; | |
| 1559 src_p1=&src_0[src_wrap]; | |
| 1560 src_p2=&src_p1[src_wrap]; | |
| 1561 for(y=0;y<(height-2);y+=2) { | |
| 1562 memcpy(dst,src_m1,width); | |
| 1563 dst += dst_wrap; | |
| 1564 deinterlace_line(dst,src_m2,src_m1,src_0,src_p1,src_p2,width); | |
| 1565 src_m2 = src_0; | |
| 1566 src_m1 = src_p1; | |
| 1567 src_0 = src_p2; | |
| 1568 src_p1 += 2*src_wrap; | |
| 1569 src_p2 += 2*src_wrap; | |
| 1570 dst += dst_wrap; | |
| 1571 } | |
| 1572 memcpy(dst,src_m1,width); | |
| 1573 dst += dst_wrap; | |
| 1574 /* do last line */ | |
| 1575 deinterlace_line(dst,src_m2,src_m1,src_0,src_0,src_0,width); | |
| 1576 } | |
| 1577 | |
| 1064 | 1578 static void deinterlace_bottom_field_inplace(uint8_t *src1, int src_wrap, |
| 2979 | 1579 int width, int height) |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1580 { |
| 1064 | 1581 uint8_t *src_m1, *src_0, *src_p1, *src_p2; |
| 801 | 1582 int y; |
| 1064 | 1583 uint8_t *buf; |
| 1584 buf = (uint8_t*)av_malloc(width); | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1585 |
| 801 | 1586 src_m1 = src1; |
| 1587 memcpy(buf,src_m1,width); | |
| 1588 src_0=&src_m1[src_wrap]; | |
| 1589 src_p1=&src_0[src_wrap]; | |
| 1590 src_p2=&src_p1[src_wrap]; | |
| 1591 for(y=0;y<(height-2);y+=2) { | |
| 1592 deinterlace_line_inplace(buf,src_m1,src_0,src_p1,src_p2,width); | |
| 1593 src_m1 = src_p1; | |
| 1594 src_0 = src_p2; | |
| 1595 src_p1 += 2*src_wrap; | |
| 1596 src_p2 += 2*src_wrap; | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1597 } |
| 801 | 1598 /* do last line */ |
| 1599 deinterlace_line_inplace(buf,src_m1,src_0,src_0,src_0,width); | |
|
396
fce0a2520551
removed useless header includes - use av memory functions
glantau
parents:
315
diff
changeset
|
1600 av_free(buf); |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1601 } |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1602 |
|
1488
766a2f4edbea
avcodec const correctness patch by (Drew Hess <dhess at ilm dot com>)
michaelni
parents:
1425
diff
changeset
|
1603 int avpicture_deinterlace(AVPicture *dst, const AVPicture *src, |
|
9221
a15ec86bf752
Globally prefer enum PixelFormat over int when it makes sense.
stefano
parents:
9217
diff
changeset
|
1604 enum PixelFormat pix_fmt, int width, int height) |
| 0 | 1605 { |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1606 int i; |
| 0 | 1607 |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1608 if (pix_fmt != PIX_FMT_YUV420P && |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1609 pix_fmt != PIX_FMT_YUV422P && |
|
1425
f53d31c5eac9
* ffmpeg was *silently* rejecting to deinterlace NTSC DV. The problem
romansh
parents:
1353
diff
changeset
|
1610 pix_fmt != PIX_FMT_YUV444P && |
| 5810 | 1611 pix_fmt != PIX_FMT_YUV411P && |
| 1612 pix_fmt != PIX_FMT_GRAY8) | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1613 return -1; |
| 801 | 1614 if ((width & 3) != 0 || (height & 3) != 0) |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1615 return -1; |
| 801 | 1616 |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1617 for(i=0;i<3;i++) { |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1618 if (i == 1) { |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1619 switch(pix_fmt) { |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1620 case PIX_FMT_YUV420P: |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1621 width >>= 1; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1622 height >>= 1; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1623 break; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1624 case PIX_FMT_YUV422P: |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1625 width >>= 1; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1626 break; |
|
1425
f53d31c5eac9
* ffmpeg was *silently* rejecting to deinterlace NTSC DV. The problem
romansh
parents:
1353
diff
changeset
|
1627 case PIX_FMT_YUV411P: |
|
f53d31c5eac9
* ffmpeg was *silently* rejecting to deinterlace NTSC DV. The problem
romansh
parents:
1353
diff
changeset
|
1628 width >>= 2; |
|
f53d31c5eac9
* ffmpeg was *silently* rejecting to deinterlace NTSC DV. The problem
romansh
parents:
1353
diff
changeset
|
1629 break; |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1630 default: |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1631 break; |
|
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1632 } |
| 5810 | 1633 if (pix_fmt == PIX_FMT_GRAY8) { |
| 1634 break; | |
| 1635 } | |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1636 } |
| 801 | 1637 if (src == dst) { |
|
1488
766a2f4edbea
avcodec const correctness patch by (Drew Hess <dhess at ilm dot com>)
michaelni
parents:
1425
diff
changeset
|
1638 deinterlace_bottom_field_inplace(dst->data[i], dst->linesize[i], |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1639 width, height); |
| 801 | 1640 } else { |
| 1641 deinterlace_bottom_field(dst->data[i],dst->linesize[i], | |
| 1642 src->data[i], src->linesize[i], | |
| 1643 width, height); | |
| 1644 } | |
| 0 | 1645 } |
| 5735 | 1646 emms_c(); |
|
52
1d796bdb2c2a
added 422P, 444P support - added deinterlace support - added xxx to RGB24 convertion
glantau
parents:
18
diff
changeset
|
1647 return 0; |
| 0 | 1648 } |
|
440
000aeeac27a2
* started to cleanup name clashes for onetime compilation
kabi
parents:
429
diff
changeset
|
1649 |
