Commit 9a2e56d3 authored by Vlad Tsyrklevich's avatar Vlad Tsyrklevich Committed by Commit Bot

libwebp: cherry-pick upstream commit 978eec25

BUG=827826

Change-Id: I6b91c4a9691f19df11f39a0799df5d5a4703681f
Reviewed-on: https://chromium-review.googlesource.com/996251Reviewed-by: default avatarJames Zern <jzern@google.com>
Commit-Queue: Peter Collingbourne <pcc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#548226}
parent eb308d2c
...@@ -26,3 +26,4 @@ Cherry-picks: ...@@ -26,3 +26,4 @@ Cherry-picks:
296c7dc4 fix lossless decoding w/WEBP_REDUCE_SIZE 296c7dc4 fix lossless decoding w/WEBP_REDUCE_SIZE
05f6fe24 upsampling: rm asserts w/REDUCE_CSP+OMIT_C_CODE 05f6fe24 upsampling: rm asserts w/REDUCE_CSP+OMIT_C_CODE
6de58603 MIPS64: Fix defined-but-not-used errors with WEBP_REDUCE_CSP 6de58603 MIPS64: Fix defined-but-not-used errors with WEBP_REDUCE_CSP
978eec25 [CFI] Remove function pointer casts
...@@ -400,7 +400,9 @@ static void DitherRow(VP8Decoder* const dec) { ...@@ -400,7 +400,9 @@ static void DitherRow(VP8Decoder* const dec) {
#define MACROBLOCK_VPOS(mb_y) ((mb_y) * 16) // vertical position of a MB #define MACROBLOCK_VPOS(mb_y) ((mb_y) * 16) // vertical position of a MB
// Finalize and transmit a complete row. Return false in case of user-abort. // Finalize and transmit a complete row. Return false in case of user-abort.
static int FinishRow(VP8Decoder* const dec, VP8Io* const io) { static int FinishRow(void* arg1, void* arg2) {
VP8Decoder* const dec = (VP8Decoder*)arg1;
VP8Io* const io = (VP8Io*)arg2;
int ok = 1; int ok = 1;
const VP8ThreadContext* const ctx = &dec->thread_ctx_; const VP8ThreadContext* const ctx = &dec->thread_ctx_;
const int cache_id = ctx->id_; const int cache_id = ctx->id_;
...@@ -651,7 +653,7 @@ static int InitThreadContext(VP8Decoder* const dec) { ...@@ -651,7 +653,7 @@ static int InitThreadContext(VP8Decoder* const dec) {
} }
worker->data1 = dec; worker->data1 = dec;
worker->data2 = (void*)&dec->thread_ctx_.io_; worker->data2 = (void*)&dec->thread_ctx_.io_;
worker->hook = (WebPWorkerHook)FinishRow; worker->hook = FinishRow;
dec->num_caches_ = dec->num_caches_ =
(dec->filter_type_ > 0) ? MT_CACHE_LINES : MT_CACHE_LINES - 1; (dec->filter_type_ > 0) ? MT_CACHE_LINES : MT_CACHE_LINES - 1;
} else { } else {
......
...@@ -361,7 +361,8 @@ static int EncodeAlpha(VP8Encoder* const enc, ...@@ -361,7 +361,8 @@ static int EncodeAlpha(VP8Encoder* const enc,
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Main calls // Main calls
static int CompressAlphaJob(VP8Encoder* const enc, void* dummy) { static int CompressAlphaJob(void* arg1, void* dummy) {
VP8Encoder* const enc = (VP8Encoder*)arg1;
const WebPConfig* config = enc->config_; const WebPConfig* config = enc->config_;
uint8_t* alpha_data = NULL; uint8_t* alpha_data = NULL;
size_t alpha_size = 0; size_t alpha_size = 0;
...@@ -394,7 +395,7 @@ void VP8EncInitAlpha(VP8Encoder* const enc) { ...@@ -394,7 +395,7 @@ void VP8EncInitAlpha(VP8Encoder* const enc) {
WebPGetWorkerInterface()->Init(worker); WebPGetWorkerInterface()->Init(worker);
worker->data1 = enc; worker->data1 = enc;
worker->data2 = NULL; worker->data2 = NULL;
worker->hook = (WebPWorkerHook)CompressAlphaJob; worker->hook = CompressAlphaJob;
} }
} }
......
...@@ -434,7 +434,9 @@ typedef struct { ...@@ -434,7 +434,9 @@ typedef struct {
} SegmentJob; } SegmentJob;
// main work call // main work call
static int DoSegmentsJob(SegmentJob* const job, VP8EncIterator* const it) { static int DoSegmentsJob(void* arg1, void* arg2) {
SegmentJob* const job = (SegmentJob*)arg1;
VP8EncIterator* const it = (VP8EncIterator*)arg2;
int ok = 1; int ok = 1;
if (!VP8IteratorIsDone(it)) { if (!VP8IteratorIsDone(it)) {
uint8_t tmp[32 + WEBP_ALIGN_CST]; uint8_t tmp[32 + WEBP_ALIGN_CST];
...@@ -462,7 +464,7 @@ static void InitSegmentJob(VP8Encoder* const enc, SegmentJob* const job, ...@@ -462,7 +464,7 @@ static void InitSegmentJob(VP8Encoder* const enc, SegmentJob* const job,
WebPGetWorkerInterface()->Init(&job->worker); WebPGetWorkerInterface()->Init(&job->worker);
job->worker.data1 = job; job->worker.data1 = job;
job->worker.data2 = &job->it; job->worker.data2 = &job->it;
job->worker.hook = (WebPWorkerHook)DoSegmentsJob; job->worker.hook = DoSegmentsJob;
VP8IteratorInit(enc, &job->it); VP8IteratorInit(enc, &job->it);
VP8IteratorSetRow(&job->it, start_row); VP8IteratorSetRow(&job->it, start_row);
VP8IteratorSetCountDown(&job->it, (end_row - start_row) * enc->mb_w_); VP8IteratorSetCountDown(&job->it, (end_row - start_row) * enc->mb_w_);
......
...@@ -1822,7 +1822,7 @@ WebPEncodingError VP8LEncodeStream(const WebPConfig* const config, ...@@ -1822,7 +1822,7 @@ WebPEncodingError VP8LEncodeStream(const WebPConfig* const config,
worker_interface->Init(worker); worker_interface->Init(worker);
worker->data1 = param; worker->data1 = param;
worker->data2 = NULL; worker->data2 = NULL;
worker->hook = (WebPWorkerHook)EncodeStreamHook; worker->hook = EncodeStreamHook;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment