summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/libwebp/enc/vp8l.c
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/libwebp/enc/vp8l.c')
-rw-r--r--chromium/third_party/libwebp/enc/vp8l.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/chromium/third_party/libwebp/enc/vp8l.c b/chromium/third_party/libwebp/enc/vp8l.c
index 945870ca46a..15726318e25 100644
--- a/chromium/third_party/libwebp/enc/vp8l.c
+++ b/chromium/third_party/libwebp/enc/vp8l.c
@@ -25,10 +25,6 @@
#include "../utils/utils.h"
#include "../webp/format_constants.h"
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
#define PALETTE_KEY_RIGHT_SHIFT 22 // Key for 1K buffer.
#define MAX_HUFF_IMAGE_SIZE (16 * 1024 * 1024)
#define MAX_COLORS_FOR_GRAPH 64
@@ -168,9 +164,6 @@ static int VP8LEncAnalyze(VP8LEncoder* const enc, WebPImageHint image_hint) {
}
if (pred_entropy < 0.95 * non_pred_entropy) {
enc->use_predict_ = 1;
- // TODO(vikasa): Observed some correlation of cross_color transform with
- // predict. Need to investigate this further and add separate heuristic
- // for setting use_cross_color flag.
enc->use_cross_color_ = 1;
}
}
@@ -451,12 +444,12 @@ static void StoreImageToBitMask(
int bits, n_bits;
int code, distance;
- PrefixEncode(v->len, &code, &n_bits, &bits);
+ VP8LPrefixEncode(v->len, &code, &n_bits, &bits);
WriteHuffmanCode(bw, codes, 256 + code);
VP8LWriteBits(bw, n_bits, bits);
distance = PixOrCopyDistance(v);
- PrefixEncode(distance, &code, &n_bits, &bits);
+ VP8LPrefixEncode(distance, &code, &n_bits, &bits);
WriteHuffmanCode(bw, codes + 4, code);
VP8LWriteBits(bw, n_bits, bits);
}
@@ -702,7 +695,7 @@ static int ApplyCrossColorFilter(const VP8LEncoder* const enc,
const int ccolor_transform_bits = enc->transform_bits_;
const int transform_width = VP8LSubSampleSize(width, ccolor_transform_bits);
const int transform_height = VP8LSubSampleSize(height, ccolor_transform_bits);
- const int step = (quality == 0) ? 32 : 8;
+ const int step = (quality < 25) ? 32 : (quality > 50) ? 8 : 16;
VP8LColorSpaceTransform(width, height, ccolor_transform_bits, step,
enc->argb_, enc->transform_data_);
@@ -827,7 +820,7 @@ static void ApplyPalette(uint32_t* src, uint32_t* dst,
}
if (use_LUT) {
- int inv_palette[MAX_PALETTE_SIZE] = { 0 };
+ uint8_t inv_palette[MAX_PALETTE_SIZE] = { 0 };
for (i = 0; i < palette_size; ++i) {
const int color = (palette[i] >> 8) & 0xff;
inv_palette[color] = i;
@@ -895,7 +888,7 @@ static WebPEncodingError EncodePalette(VP8LBitWriter* const bw,
if (err != VP8_ENC_OK) goto Error;
dst = enc->argb_;
- row = WebPSafeMalloc((uint64_t)width, sizeof(*row));
+ row = (uint8_t*)WebPSafeMalloc((uint64_t)width, sizeof(*row));
if (row == NULL) return VP8_ENC_ERROR_OUT_OF_MEMORY;
ApplyPalette(src, dst, pic->argb_stride, enc->current_width_,
@@ -959,6 +952,9 @@ static VP8LEncoder* VP8LEncoderNew(const WebPConfig* const config,
}
enc->config_ = config;
enc->pic_ = picture;
+
+ VP8LDspInit();
+
return enc;
}
@@ -1170,6 +1166,3 @@ int VP8LEncodeImage(const WebPConfig* const config,
//------------------------------------------------------------------------------
-#if defined(__cplusplus) || defined(c_plusplus)
-} // extern "C"
-#endif