Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(365)

Side by Side Diff: source/convert_jpeg.cc

Issue 2406123002: Remove I411 support, update doc and switch to side by side test (Closed)
Patch Set: bump version, disable a few lint warnings Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/convert_from_argb.cc ('k') | source/convert_to_argb.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 dest->y, dest->y_stride, 79 dest->y, dest->y_stride,
80 dest->u, dest->u_stride, 80 dest->u, dest->u_stride,
81 dest->v, dest->v_stride, 81 dest->v, dest->v_stride,
82 dest->w, rows); 82 dest->w, rows);
83 dest->y += rows * dest->y_stride; 83 dest->y += rows * dest->y_stride;
84 dest->u += ((rows + 1) >> 1) * dest->u_stride; 84 dest->u += ((rows + 1) >> 1) * dest->u_stride;
85 dest->v += ((rows + 1) >> 1) * dest->v_stride; 85 dest->v += ((rows + 1) >> 1) * dest->v_stride;
86 dest->h -= rows; 86 dest->h -= rows;
87 } 87 }
88 88
89 static void JpegI411ToI420(void* opaque,
90 const uint8* const* data,
91 const int* strides,
92 int rows) {
93 I420Buffers* dest = (I420Buffers*)(opaque);
94 I411ToI420(data[0], strides[0],
95 data[1], strides[1],
96 data[2], strides[2],
97 dest->y, dest->y_stride,
98 dest->u, dest->u_stride,
99 dest->v, dest->v_stride,
100 dest->w, rows);
101 dest->y += rows * dest->y_stride;
102 dest->u += ((rows + 1) >> 1) * dest->u_stride;
103 dest->v += ((rows + 1) >> 1) * dest->v_stride;
104 dest->h -= rows;
105 }
106
107 static void JpegI400ToI420(void* opaque, 89 static void JpegI400ToI420(void* opaque,
108 const uint8* const* data, 90 const uint8* const* data,
109 const int* strides, 91 const int* strides,
110 int rows) { 92 int rows) {
111 I420Buffers* dest = (I420Buffers*)(opaque); 93 I420Buffers* dest = (I420Buffers*)(opaque);
112 I400ToI420(data[0], strides[0], 94 I400ToI420(data[0], strides[0],
113 dest->y, dest->y_stride, 95 dest->y, dest->y_stride,
114 dest->u, dest->u_stride, 96 dest->u, dest->u_stride,
115 dest->v, dest->v_stride, 97 dest->v, dest->v_stride,
116 dest->w, rows); 98 dest->w, rows);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 } else if (mjpeg_decoder.GetColorSpace() == 168 } else if (mjpeg_decoder.GetColorSpace() ==
187 MJpegDecoder::kColorSpaceYCbCr && 169 MJpegDecoder::kColorSpaceYCbCr &&
188 mjpeg_decoder.GetNumComponents() == 3 && 170 mjpeg_decoder.GetNumComponents() == 3 &&
189 mjpeg_decoder.GetVertSampFactor(0) == 1 && 171 mjpeg_decoder.GetVertSampFactor(0) == 1 &&
190 mjpeg_decoder.GetHorizSampFactor(0) == 1 && 172 mjpeg_decoder.GetHorizSampFactor(0) == 1 &&
191 mjpeg_decoder.GetVertSampFactor(1) == 1 && 173 mjpeg_decoder.GetVertSampFactor(1) == 1 &&
192 mjpeg_decoder.GetHorizSampFactor(1) == 1 && 174 mjpeg_decoder.GetHorizSampFactor(1) == 1 &&
193 mjpeg_decoder.GetVertSampFactor(2) == 1 && 175 mjpeg_decoder.GetVertSampFactor(2) == 1 &&
194 mjpeg_decoder.GetHorizSampFactor(2) == 1) { 176 mjpeg_decoder.GetHorizSampFactor(2) == 1) {
195 ret = mjpeg_decoder.DecodeToCallback(&JpegI444ToI420, &bufs, dw, dh); 177 ret = mjpeg_decoder.DecodeToCallback(&JpegI444ToI420, &bufs, dw, dh);
196 // YUV411
197 } else if (mjpeg_decoder.GetColorSpace() ==
198 MJpegDecoder::kColorSpaceYCbCr &&
199 mjpeg_decoder.GetNumComponents() == 3 &&
200 mjpeg_decoder.GetVertSampFactor(0) == 1 &&
201 mjpeg_decoder.GetHorizSampFactor(0) == 4 &&
202 mjpeg_decoder.GetVertSampFactor(1) == 1 &&
203 mjpeg_decoder.GetHorizSampFactor(1) == 1 &&
204 mjpeg_decoder.GetVertSampFactor(2) == 1 &&
205 mjpeg_decoder.GetHorizSampFactor(2) == 1) {
206 ret = mjpeg_decoder.DecodeToCallback(&JpegI411ToI420, &bufs, dw, dh);
207 // YUV400 178 // YUV400
208 } else if (mjpeg_decoder.GetColorSpace() == 179 } else if (mjpeg_decoder.GetColorSpace() ==
209 MJpegDecoder::kColorSpaceGrayscale && 180 MJpegDecoder::kColorSpaceGrayscale &&
210 mjpeg_decoder.GetNumComponents() == 1 && 181 mjpeg_decoder.GetNumComponents() == 1 &&
211 mjpeg_decoder.GetVertSampFactor(0) == 1 && 182 mjpeg_decoder.GetVertSampFactor(0) == 1 &&
212 mjpeg_decoder.GetHorizSampFactor(0) == 1) { 183 mjpeg_decoder.GetHorizSampFactor(0) == 1) {
213 ret = mjpeg_decoder.DecodeToCallback(&JpegI400ToI420, &bufs, dw, dh); 184 ret = mjpeg_decoder.DecodeToCallback(&JpegI400ToI420, &bufs, dw, dh);
214 } else { 185 } else {
215 // TODO(fbarchard): Implement conversion for any other colorspace/sample 186 // TODO(fbarchard): Implement conversion for any other colorspace/sample
216 // factors that occur in practice. 411 is supported by libjpeg 187 // factors that occur in practice.
217 // ERROR: Unable to convert MJPEG frame because format is not supported 188 // ERROR: Unable to convert MJPEG frame because format is not supported
218 mjpeg_decoder.UnloadFrame(); 189 mjpeg_decoder.UnloadFrame();
219 return 1; 190 return 1;
220 } 191 }
221 } 192 }
222 return ret ? 0 : 1; 193 return ret ? 0 : 1;
223 } 194 }
224 195
225 #ifdef HAVE_JPEG 196 #ifdef HAVE_JPEG
226 struct ARGBBuffers { 197 struct ARGBBuffers {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 ARGBBuffers* dest = (ARGBBuffers*)(opaque); 236 ARGBBuffers* dest = (ARGBBuffers*)(opaque);
266 I444ToARGB(data[0], strides[0], 237 I444ToARGB(data[0], strides[0],
267 data[1], strides[1], 238 data[1], strides[1],
268 data[2], strides[2], 239 data[2], strides[2],
269 dest->argb, dest->argb_stride, 240 dest->argb, dest->argb_stride,
270 dest->w, rows); 241 dest->w, rows);
271 dest->argb += rows * dest->argb_stride; 242 dest->argb += rows * dest->argb_stride;
272 dest->h -= rows; 243 dest->h -= rows;
273 } 244 }
274 245
275 static void JpegI411ToARGB(void* opaque,
276 const uint8* const* data,
277 const int* strides,
278 int rows) {
279 ARGBBuffers* dest = (ARGBBuffers*)(opaque);
280 I411ToARGB(data[0], strides[0],
281 data[1], strides[1],
282 data[2], strides[2],
283 dest->argb, dest->argb_stride,
284 dest->w, rows);
285 dest->argb += rows * dest->argb_stride;
286 dest->h -= rows;
287 }
288
289 static void JpegI400ToARGB(void* opaque, 246 static void JpegI400ToARGB(void* opaque,
290 const uint8* const* data, 247 const uint8* const* data,
291 const int* strides, 248 const int* strides,
292 int rows) { 249 int rows) {
293 ARGBBuffers* dest = (ARGBBuffers*)(opaque); 250 ARGBBuffers* dest = (ARGBBuffers*)(opaque);
294 I400ToARGB(data[0], strides[0], 251 I400ToARGB(data[0], strides[0],
295 dest->argb, dest->argb_stride, 252 dest->argb, dest->argb_stride,
296 dest->w, rows); 253 dest->w, rows);
297 dest->argb += rows * dest->argb_stride; 254 dest->argb += rows * dest->argb_stride;
298 dest->h -= rows; 255 dest->h -= rows;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 } else if (mjpeg_decoder.GetColorSpace() == 305 } else if (mjpeg_decoder.GetColorSpace() ==
349 MJpegDecoder::kColorSpaceYCbCr && 306 MJpegDecoder::kColorSpaceYCbCr &&
350 mjpeg_decoder.GetNumComponents() == 3 && 307 mjpeg_decoder.GetNumComponents() == 3 &&
351 mjpeg_decoder.GetVertSampFactor(0) == 1 && 308 mjpeg_decoder.GetVertSampFactor(0) == 1 &&
352 mjpeg_decoder.GetHorizSampFactor(0) == 1 && 309 mjpeg_decoder.GetHorizSampFactor(0) == 1 &&
353 mjpeg_decoder.GetVertSampFactor(1) == 1 && 310 mjpeg_decoder.GetVertSampFactor(1) == 1 &&
354 mjpeg_decoder.GetHorizSampFactor(1) == 1 && 311 mjpeg_decoder.GetHorizSampFactor(1) == 1 &&
355 mjpeg_decoder.GetVertSampFactor(2) == 1 && 312 mjpeg_decoder.GetVertSampFactor(2) == 1 &&
356 mjpeg_decoder.GetHorizSampFactor(2) == 1) { 313 mjpeg_decoder.GetHorizSampFactor(2) == 1) {
357 ret = mjpeg_decoder.DecodeToCallback(&JpegI444ToARGB, &bufs, dw, dh); 314 ret = mjpeg_decoder.DecodeToCallback(&JpegI444ToARGB, &bufs, dw, dh);
358 // YUV411
359 } else if (mjpeg_decoder.GetColorSpace() ==
360 MJpegDecoder::kColorSpaceYCbCr &&
361 mjpeg_decoder.GetNumComponents() == 3 &&
362 mjpeg_decoder.GetVertSampFactor(0) == 1 &&
363 mjpeg_decoder.GetHorizSampFactor(0) == 4 &&
364 mjpeg_decoder.GetVertSampFactor(1) == 1 &&
365 mjpeg_decoder.GetHorizSampFactor(1) == 1 &&
366 mjpeg_decoder.GetVertSampFactor(2) == 1 &&
367 mjpeg_decoder.GetHorizSampFactor(2) == 1) {
368 ret = mjpeg_decoder.DecodeToCallback(&JpegI411ToARGB, &bufs, dw, dh);
369 // YUV400 315 // YUV400
370 } else if (mjpeg_decoder.GetColorSpace() == 316 } else if (mjpeg_decoder.GetColorSpace() ==
371 MJpegDecoder::kColorSpaceGrayscale && 317 MJpegDecoder::kColorSpaceGrayscale &&
372 mjpeg_decoder.GetNumComponents() == 1 && 318 mjpeg_decoder.GetNumComponents() == 1 &&
373 mjpeg_decoder.GetVertSampFactor(0) == 1 && 319 mjpeg_decoder.GetVertSampFactor(0) == 1 &&
374 mjpeg_decoder.GetHorizSampFactor(0) == 1) { 320 mjpeg_decoder.GetHorizSampFactor(0) == 1) {
375 ret = mjpeg_decoder.DecodeToCallback(&JpegI400ToARGB, &bufs, dw, dh); 321 ret = mjpeg_decoder.DecodeToCallback(&JpegI400ToARGB, &bufs, dw, dh);
376 } else { 322 } else {
377 // TODO(fbarchard): Implement conversion for any other colorspace/sample 323 // TODO(fbarchard): Implement conversion for any other colorspace/sample
378 // factors that occur in practice. 411 is supported by libjpeg 324 // factors that occur in practice.
379 // ERROR: Unable to convert MJPEG frame because format is not supported 325 // ERROR: Unable to convert MJPEG frame because format is not supported
380 mjpeg_decoder.UnloadFrame(); 326 mjpeg_decoder.UnloadFrame();
381 return 1; 327 return 1;
382 } 328 }
383 } 329 }
384 return ret ? 0 : 1; 330 return ret ? 0 : 1;
385 } 331 }
386 #endif 332 #endif
387 333
388 #endif 334 #endif
389 335
390 #ifdef __cplusplus 336 #ifdef __cplusplus
391 } // extern "C" 337 } // extern "C"
392 } // namespace libyuv 338 } // namespace libyuv
393 #endif 339 #endif
OLDNEW
« no previous file with comments | « source/convert_from_argb.cc ('k') | source/convert_to_argb.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698