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

Side by Side Diff: third_party/libwebp/enc/iterator.c

Issue 1546003002: libwebp: update to 0.5.0 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase around clang-cl fix Created 4 years, 12 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
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 // VP8Iterator: block iterator 10 // VP8Iterator: block iterator
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 } 63 }
64 64
65 int VP8IteratorIsDone(const VP8EncIterator* const it) { 65 int VP8IteratorIsDone(const VP8EncIterator* const it) {
66 return (it->count_down_ <= 0); 66 return (it->count_down_ <= 0);
67 } 67 }
68 68
69 void VP8IteratorInit(VP8Encoder* const enc, VP8EncIterator* const it) { 69 void VP8IteratorInit(VP8Encoder* const enc, VP8EncIterator* const it) {
70 it->enc_ = enc; 70 it->enc_ = enc;
71 it->y_stride_ = enc->pic_->y_stride; 71 it->y_stride_ = enc->pic_->y_stride;
72 it->uv_stride_ = enc->pic_->uv_stride; 72 it->uv_stride_ = enc->pic_->uv_stride;
73 it->yuv_in_ = (uint8_t*)DO_ALIGN(it->yuv_mem_); 73 it->yuv_in_ = (uint8_t*)WEBP_ALIGN(it->yuv_mem_);
74 it->yuv_out_ = it->yuv_in_ + YUV_SIZE; 74 it->yuv_out_ = it->yuv_in_ + YUV_SIZE_ENC;
75 it->yuv_out2_ = it->yuv_out_ + YUV_SIZE; 75 it->yuv_out2_ = it->yuv_out_ + YUV_SIZE_ENC;
76 it->yuv_p_ = it->yuv_out2_ + YUV_SIZE; 76 it->yuv_p_ = it->yuv_out2_ + YUV_SIZE_ENC;
77 it->lf_stats_ = enc->lf_stats_; 77 it->lf_stats_ = enc->lf_stats_;
78 it->percent0_ = enc->percent_; 78 it->percent0_ = enc->percent_;
79 it->y_left_ = (uint8_t*)DO_ALIGN(it->yuv_left_mem_ + 1); 79 it->y_left_ = (uint8_t*)WEBP_ALIGN(it->yuv_left_mem_ + 1);
80 it->u_left_ = it->y_left_ + 16 + 16; 80 it->u_left_ = it->y_left_ + 16 + 16;
81 it->v_left_ = it->u_left_ + 16; 81 it->v_left_ = it->u_left_ + 16;
82 VP8IteratorReset(it); 82 VP8IteratorReset(it);
83 } 83 }
84 84
85 int VP8IteratorProgress(const VP8EncIterator* const it, int delta) { 85 int VP8IteratorProgress(const VP8EncIterator* const it, int delta) {
86 VP8Encoder* const enc = it->enc_; 86 VP8Encoder* const enc = it->enc_;
87 if (delta && enc->pic_->progress_hook != NULL) { 87 if (delta && enc->pic_->progress_hook != NULL) {
88 const int done = it->count_down0_ - it->count_down_; 88 const int done = it->count_down0_ - it->count_down_;
89 const int percent = (it->count_down0_ <= 0) 89 const int percent = (it->count_down0_ <= 0)
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 const int x = it->x_, y = it->y_; 129 const int x = it->x_, y = it->y_;
130 const WebPPicture* const pic = enc->pic_; 130 const WebPPicture* const pic = enc->pic_;
131 const uint8_t* const ysrc = pic->y + (y * pic->y_stride + x) * 16; 131 const uint8_t* const ysrc = pic->y + (y * pic->y_stride + x) * 16;
132 const uint8_t* const usrc = pic->u + (y * pic->uv_stride + x) * 8; 132 const uint8_t* const usrc = pic->u + (y * pic->uv_stride + x) * 8;
133 const uint8_t* const vsrc = pic->v + (y * pic->uv_stride + x) * 8; 133 const uint8_t* const vsrc = pic->v + (y * pic->uv_stride + x) * 8;
134 const int w = MinSize(pic->width - x * 16, 16); 134 const int w = MinSize(pic->width - x * 16, 16);
135 const int h = MinSize(pic->height - y * 16, 16); 135 const int h = MinSize(pic->height - y * 16, 16);
136 const int uv_w = (w + 1) >> 1; 136 const int uv_w = (w + 1) >> 1;
137 const int uv_h = (h + 1) >> 1; 137 const int uv_h = (h + 1) >> 1;
138 138
139 ImportBlock(ysrc, pic->y_stride, it->yuv_in_ + Y_OFF, w, h, 16); 139 ImportBlock(ysrc, pic->y_stride, it->yuv_in_ + Y_OFF_ENC, w, h, 16);
140 ImportBlock(usrc, pic->uv_stride, it->yuv_in_ + U_OFF, uv_w, uv_h, 8); 140 ImportBlock(usrc, pic->uv_stride, it->yuv_in_ + U_OFF_ENC, uv_w, uv_h, 8);
141 ImportBlock(vsrc, pic->uv_stride, it->yuv_in_ + V_OFF, uv_w, uv_h, 8); 141 ImportBlock(vsrc, pic->uv_stride, it->yuv_in_ + V_OFF_ENC, uv_w, uv_h, 8);
142 142
143 if (tmp_32 == NULL) return; 143 if (tmp_32 == NULL) return;
144 144
145 // Import source (uncompressed) samples into boundary. 145 // Import source (uncompressed) samples into boundary.
146 if (x == 0) { 146 if (x == 0) {
147 InitLeft(it); 147 InitLeft(it);
148 } else { 148 } else {
149 if (y == 0) { 149 if (y == 0) {
150 it->y_left_[-1] = it->u_left_[-1] = it->v_left_[-1] = 127; 150 it->y_left_[-1] = it->u_left_[-1] = it->v_left_[-1] = 127;
151 } else { 151 } else {
(...skipping 26 matching lines...) Expand all
178 memcpy(dst, src, w); 178 memcpy(dst, src, w);
179 dst += dst_stride; 179 dst += dst_stride;
180 src += BPS; 180 src += BPS;
181 } 181 }
182 } 182 }
183 183
184 void VP8IteratorExport(const VP8EncIterator* const it) { 184 void VP8IteratorExport(const VP8EncIterator* const it) {
185 const VP8Encoder* const enc = it->enc_; 185 const VP8Encoder* const enc = it->enc_;
186 if (enc->config_->show_compressed) { 186 if (enc->config_->show_compressed) {
187 const int x = it->x_, y = it->y_; 187 const int x = it->x_, y = it->y_;
188 const uint8_t* const ysrc = it->yuv_out_ + Y_OFF; 188 const uint8_t* const ysrc = it->yuv_out_ + Y_OFF_ENC;
189 const uint8_t* const usrc = it->yuv_out_ + U_OFF; 189 const uint8_t* const usrc = it->yuv_out_ + U_OFF_ENC;
190 const uint8_t* const vsrc = it->yuv_out_ + V_OFF; 190 const uint8_t* const vsrc = it->yuv_out_ + V_OFF_ENC;
191 const WebPPicture* const pic = enc->pic_; 191 const WebPPicture* const pic = enc->pic_;
192 uint8_t* const ydst = pic->y + (y * pic->y_stride + x) * 16; 192 uint8_t* const ydst = pic->y + (y * pic->y_stride + x) * 16;
193 uint8_t* const udst = pic->u + (y * pic->uv_stride + x) * 8; 193 uint8_t* const udst = pic->u + (y * pic->uv_stride + x) * 8;
194 uint8_t* const vdst = pic->v + (y * pic->uv_stride + x) * 8; 194 uint8_t* const vdst = pic->v + (y * pic->uv_stride + x) * 8;
195 int w = (pic->width - x * 16); 195 int w = (pic->width - x * 16);
196 int h = (pic->height - y * 16); 196 int h = (pic->height - y * 16);
197 197
198 if (w > 16) w = 16; 198 if (w > 16) w = 16;
199 if (h > 16) h = 16; 199 if (h > 16) h = 16;
200 200
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 } 279 }
280 280
281 #undef BIT 281 #undef BIT
282 282
283 //------------------------------------------------------------------------------ 283 //------------------------------------------------------------------------------
284 // Advance to the next position, doing the bookkeeping. 284 // Advance to the next position, doing the bookkeeping.
285 285
286 void VP8IteratorSaveBoundary(VP8EncIterator* const it) { 286 void VP8IteratorSaveBoundary(VP8EncIterator* const it) {
287 VP8Encoder* const enc = it->enc_; 287 VP8Encoder* const enc = it->enc_;
288 const int x = it->x_, y = it->y_; 288 const int x = it->x_, y = it->y_;
289 const uint8_t* const ysrc = it->yuv_out_ + Y_OFF; 289 const uint8_t* const ysrc = it->yuv_out_ + Y_OFF_ENC;
290 const uint8_t* const uvsrc = it->yuv_out_ + U_OFF; 290 const uint8_t* const uvsrc = it->yuv_out_ + U_OFF_ENC;
291 if (x < enc->mb_w_ - 1) { // left 291 if (x < enc->mb_w_ - 1) { // left
292 int i; 292 int i;
293 for (i = 0; i < 16; ++i) { 293 for (i = 0; i < 16; ++i) {
294 it->y_left_[i] = ysrc[15 + i * BPS]; 294 it->y_left_[i] = ysrc[15 + i * BPS];
295 } 295 }
296 for (i = 0; i < 8; ++i) { 296 for (i = 0; i < 8; ++i) {
297 it->u_left_[i] = uvsrc[7 + i * BPS]; 297 it->u_left_[i] = uvsrc[7 + i * BPS];
298 it->v_left_[i] = uvsrc[15 + i * BPS]; 298 it->v_left_[i] = uvsrc[15 + i * BPS];
299 } 299 }
300 // top-left (before 'top'!) 300 // top-left (before 'top'!)
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 if (it->i4_ == 16) { // we're done 447 if (it->i4_ == 16) { // we're done
448 return 0; 448 return 0;
449 } 449 }
450 450
451 it->i4_top_ = it->i4_boundary_ + VP8TopLeftI4[it->i4_]; 451 it->i4_top_ = it->i4_boundary_ + VP8TopLeftI4[it->i4_];
452 return 1; 452 return 1;
453 } 453 }
454 454
455 //------------------------------------------------------------------------------ 455 //------------------------------------------------------------------------------
456 456
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698