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

Side by Side Diff: third_party/libwebp/webp/encode.h

Issue 116213006: Update libwebp to 0.4.0 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: After Blink Roll Created 6 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « third_party/libwebp/webp/demux.h ('k') | third_party/libwebp/webp/mux.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 Google Inc. All Rights Reserved. 1 // Copyright 2011 Google Inc. All Rights Reserved.
2 // 2 //
3 // Use of this source code is governed by a BSD-style license 3 // Use of this source code is governed by a BSD-style license
4 // that can be found in the COPYING file in the root of the source 4 // that can be found in the COPYING file in the root of the source
5 // tree. An additional intellectual property rights grant can be found 5 // tree. An additional intellectual property rights grant can be found
6 // in the file PATENTS. All contributing project authors may 6 // in the file PATENTS. All contributing project authors may
7 // be found in the AUTHORS file in the root of the source tree. 7 // be found in the AUTHORS file in the root of the source tree.
8 // ----------------------------------------------------------------------------- 8 // -----------------------------------------------------------------------------
9 // 9 //
10 // WebP encoder: main interface 10 // WebP encoder: main interface
11 // 11 //
12 // Author: Skal (pascal.massimino@gmail.com) 12 // Author: Skal (pascal.massimino@gmail.com)
13 13
14 #ifndef WEBP_WEBP_ENCODE_H_ 14 #ifndef WEBP_WEBP_ENCODE_H_
15 #define WEBP_WEBP_ENCODE_H_ 15 #define WEBP_WEBP_ENCODE_H_
16 16
17 #include "./types.h" 17 #include "./types.h"
18 18
19 #if defined(__cplusplus) || defined(c_plusplus) 19 #ifdef __cplusplus
20 extern "C" { 20 extern "C" {
21 #endif 21 #endif
22 22
23 #define WEBP_ENCODER_ABI_VERSION 0x0201 // MAJOR(8b) + MINOR(8b) 23 #define WEBP_ENCODER_ABI_VERSION 0x0202 // MAJOR(8b) + MINOR(8b)
24 24
25 // Note: forward declaring enumerations is not allowed in (strict) C and C++, 25 // Note: forward declaring enumerations is not allowed in (strict) C and C++,
26 // the types are left here for reference. 26 // the types are left here for reference.
27 // typedef enum WebPImageHint WebPImageHint; 27 // typedef enum WebPImageHint WebPImageHint;
28 // typedef enum WebPEncCSP WebPEncCSP; 28 // typedef enum WebPEncCSP WebPEncCSP;
29 // typedef enum WebPPreset WebPPreset; 29 // typedef enum WebPPreset WebPPreset;
30 // typedef enum WebPEncodingError WebPEncodingError; 30 // typedef enum WebPEncodingError WebPEncodingError;
31 typedef struct WebPConfig WebPConfig; 31 typedef struct WebPConfig WebPConfig;
32 typedef struct WebPPicture WebPPicture; // main structure for I/O 32 typedef struct WebPPicture WebPPicture; // main structure for I/O
33 typedef struct WebPAuxStats WebPAuxStats; 33 typedef struct WebPAuxStats WebPAuxStats;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 int alpha_compression; // Algorithm for encoding the alpha plane (0 = none, 110 int alpha_compression; // Algorithm for encoding the alpha plane (0 = none,
111 // 1 = compressed with WebP lossless). Default is 1. 111 // 1 = compressed with WebP lossless). Default is 1.
112 int alpha_filtering; // Predictive filtering method for alpha plane. 112 int alpha_filtering; // Predictive filtering method for alpha plane.
113 // 0: none, 1: fast, 2: best. Default if 1. 113 // 0: none, 1: fast, 2: best. Default if 1.
114 int alpha_quality; // Between 0 (smallest size) and 100 (lossless). 114 int alpha_quality; // Between 0 (smallest size) and 100 (lossless).
115 // Default is 100. 115 // Default is 100.
116 int pass; // number of entropy-analysis passes (in [1..10]). 116 int pass; // number of entropy-analysis passes (in [1..10]).
117 117
118 int show_compressed; // if true, export the compressed picture back. 118 int show_compressed; // if true, export the compressed picture back.
119 // In-loop filtering is not applied. 119 // In-loop filtering is not applied.
120 int preprocessing; // preprocessing filter (0=none, 1=segment-smooth) 120 int preprocessing; // preprocessing filter:
121 // 0=none, 1=segment-smooth, 2=pseudo-random dithering
121 int partitions; // log2(number of token partitions) in [0..3]. Default 122 int partitions; // log2(number of token partitions) in [0..3]. Default
122 // is set to 0 for easier progressive decoding. 123 // is set to 0 for easier progressive decoding.
123 int partition_limit; // quality degradation allowed to fit the 512k limit 124 int partition_limit; // quality degradation allowed to fit the 512k limit
124 // on prediction modes coding (0: no degradation, 125 // on prediction modes coding (0: no degradation,
125 // 100: maximum possible degradation). 126 // 100: maximum possible degradation).
126 int emulate_jpeg_size; // If true, compression parameters will be remapped 127 int emulate_jpeg_size; // If true, compression parameters will be remapped
127 // to better match the expected output size from 128 // to better match the expected output size from
128 // JPEG compression. Generally, the output size will 129 // JPEG compression. Generally, the output size will
129 // be similar but the degradation will be lower. 130 // be similar but the degradation will be lower.
130 int thread_level; // If non-zero, try and use multi-threaded encoding. 131 int thread_level; // If non-zero, try and use multi-threaded encoding.
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 WebPPicture* picture, const uint8_t* bgrx, int bgrx_stride); 437 WebPPicture* picture, const uint8_t* bgrx, int bgrx_stride);
437 438
438 // Converts picture->argb data to the YUVA format specified by 'colorspace'. 439 // Converts picture->argb data to the YUVA format specified by 'colorspace'.
439 // Upon return, picture->use_argb is set to false. The presence of real 440 // Upon return, picture->use_argb is set to false. The presence of real
440 // non-opaque transparent values is detected, and 'colorspace' will be 441 // non-opaque transparent values is detected, and 'colorspace' will be
441 // adjusted accordingly. Note that this method is lossy. 442 // adjusted accordingly. Note that this method is lossy.
442 // Returns false in case of error. 443 // Returns false in case of error.
443 WEBP_EXTERN(int) WebPPictureARGBToYUVA(WebPPicture* picture, 444 WEBP_EXTERN(int) WebPPictureARGBToYUVA(WebPPicture* picture,
444 WebPEncCSP colorspace); 445 WebPEncCSP colorspace);
445 446
447 // Same as WebPPictureARGBToYUVA(), but the conversion is done using
448 // pseudo-random dithering with a strength 'dithering' between
449 // 0.0 (no dithering) and 1.0 (maximum dithering). This is useful
450 // for photographic picture.
451 WEBP_EXTERN(int) WebPPictureARGBToYUVADithered(
452 WebPPicture* picture, WebPEncCSP colorspace, float dithering);
453
446 // Converts picture->yuv to picture->argb and sets picture->use_argb to true. 454 // Converts picture->yuv to picture->argb and sets picture->use_argb to true.
447 // The input format must be YUV_420 or YUV_420A. 455 // The input format must be YUV_420 or YUV_420A.
448 // Note that the use of this method is discouraged if one has access to the 456 // Note that the use of this method is discouraged if one has access to the
449 // raw ARGB samples, since using YUV420 is comparatively lossy. Also, the 457 // raw ARGB samples, since using YUV420 is comparatively lossy. Also, the
450 // conversion from YUV420 to ARGB incurs a small loss too. 458 // conversion from YUV420 to ARGB incurs a small loss too.
451 // Returns false in case of error. 459 // Returns false in case of error.
452 WEBP_EXTERN(int) WebPPictureYUVAToARGB(WebPPicture* picture); 460 WEBP_EXTERN(int) WebPPictureYUVAToARGB(WebPPicture* picture);
453 461
454 // Helper function: given a width x height plane of YUV(A) samples 462 // Helper function: given a width x height plane of YUV(A) samples
455 // (with stride 'stride'), clean-up the YUV samples under fully transparent 463 // (with stride 'stride'), clean-up the YUV samples under fully transparent
456 // area, to help compressibility (no guarantee, though). 464 // area, to help compressibility (no guarantee, though).
457 WEBP_EXTERN(void) WebPCleanupTransparentArea(WebPPicture* picture); 465 WEBP_EXTERN(void) WebPCleanupTransparentArea(WebPPicture* picture);
458 466
459 // Scan the picture 'picture' for the presence of non fully opaque alpha values. 467 // Scan the picture 'picture' for the presence of non fully opaque alpha values.
460 // Returns true in such case. Otherwise returns false (indicating that the 468 // Returns true in such case. Otherwise returns false (indicating that the
461 // alpha plane can be ignored altogether e.g.). 469 // alpha plane can be ignored altogether e.g.).
462 WEBP_EXTERN(int) WebPPictureHasTransparency(const WebPPicture* picture); 470 WEBP_EXTERN(int) WebPPictureHasTransparency(const WebPPicture* picture);
463 471
472 // Remove the transparency information (if present) by blending the color with
473 // the background color 'background_rgb' (specified as 24bit RGB triplet).
474 // After this call, all alpha values are reset to 0xff.
475 WEBP_EXTERN(void) WebPBlendAlpha(WebPPicture* pic, uint32_t background_rgb);
476
464 //------------------------------------------------------------------------------ 477 //------------------------------------------------------------------------------
465 // Main call 478 // Main call
466 479
467 // Main encoding call, after config and picture have been initialized. 480 // Main encoding call, after config and picture have been initialized.
468 // 'picture' must be less than 16384x16384 in dimension (cf WEBP_MAX_DIMENSION), 481 // 'picture' must be less than 16384x16384 in dimension (cf WEBP_MAX_DIMENSION),
469 // and the 'config' object must be a valid one. 482 // and the 'config' object must be a valid one.
470 // Returns false in case of error, true otherwise. 483 // Returns false in case of error, true otherwise.
471 // In case of error, picture->error_code is updated accordingly. 484 // In case of error, picture->error_code is updated accordingly.
472 // 'picture' can hold the source samples in both YUV(A) or ARGB input, depending 485 // 'picture' can hold the source samples in both YUV(A) or ARGB input, depending
473 // on the value of 'picture->use_argb'. It is highly recommended to use 486 // on the value of 'picture->use_argb'. It is highly recommended to use
474 // the former for lossy encoding, and the latter for lossless encoding 487 // the former for lossy encoding, and the latter for lossless encoding
475 // (when config.lossless is true). Automatic conversion from one format to 488 // (when config.lossless is true). Automatic conversion from one format to
476 // another is provided but they both incur some loss. 489 // another is provided but they both incur some loss.
477 WEBP_EXTERN(int) WebPEncode(const WebPConfig* config, WebPPicture* picture); 490 WEBP_EXTERN(int) WebPEncode(const WebPConfig* config, WebPPicture* picture);
478 491
479 //------------------------------------------------------------------------------ 492 //------------------------------------------------------------------------------
480 493
481 #if defined(__cplusplus) || defined(c_plusplus) 494 #ifdef __cplusplus
482 } // extern "C" 495 } // extern "C"
483 #endif 496 #endif
484 497
485 #endif /* WEBP_WEBP_ENCODE_H_ */ 498 #endif /* WEBP_WEBP_ENCODE_H_ */
OLDNEW
« no previous file with comments | « third_party/libwebp/webp/demux.h ('k') | third_party/libwebp/webp/mux.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698