| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkCodec.h" | 8 #include "SkCodec.h" |
| 9 #include "SkJpegCodec.h" | 9 #include "SkJpegCodec.h" |
| 10 #include "SkJpegDecoderMgr.h" | 10 #include "SkJpegDecoderMgr.h" |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 } | 296 } |
| 297 return true; | 297 return true; |
| 298 } | 298 } |
| 299 | 299 |
| 300 /* | 300 /* |
| 301 * Performs the jpeg decode | 301 * Performs the jpeg decode |
| 302 */ | 302 */ |
| 303 SkCodec::Result SkJpegCodec::onGetPixels(const SkImageInfo& dstInfo, | 303 SkCodec::Result SkJpegCodec::onGetPixels(const SkImageInfo& dstInfo, |
| 304 void* dst, size_t dstRowBytes, | 304 void* dst, size_t dstRowBytes, |
| 305 const Options& options, SkPMColor*, int
*) { | 305 const Options& options, SkPMColor*, int
*) { |
| 306 // Rewind the stream if needed | |
| 307 if (!this->rewindIfNeeded()) { | |
| 308 return fDecoderMgr->returnFailure("could not rewind stream", kCouldNotRe
wind); | |
| 309 } | |
| 310 | |
| 311 if (options.fSubset) { | 306 if (options.fSubset) { |
| 312 // Subsets are not supported. | 307 // Subsets are not supported. |
| 313 return kUnimplemented; | 308 return kUnimplemented; |
| 314 } | 309 } |
| 315 | 310 |
| 316 // Get a pointer to the decompress info since we will use it quite frequentl
y | 311 // Get a pointer to the decompress info since we will use it quite frequentl
y |
| 317 jpeg_decompress_struct* dinfo = fDecoderMgr->dinfo(); | 312 jpeg_decompress_struct* dinfo = fDecoderMgr->dinfo(); |
| 318 | 313 |
| 319 // Set the jump location for libjpeg errors | 314 // Set the jump location for libjpeg errors |
| 320 if (setjmp(fDecoderMgr->getJmpBuf())) { | 315 if (setjmp(fDecoderMgr->getJmpBuf())) { |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 this->getInfo())); | 400 this->getInfo())); |
| 406 if (!fSwizzler) { | 401 if (!fSwizzler) { |
| 407 return SkCodec::kUnimplemented; | 402 return SkCodec::kUnimplemented; |
| 408 } | 403 } |
| 409 | 404 |
| 410 return kSuccess; | 405 return kSuccess; |
| 411 } | 406 } |
| 412 | 407 |
| 413 SkCodec::Result SkJpegCodec::onStartScanlineDecode(const SkImageInfo& dstInfo, | 408 SkCodec::Result SkJpegCodec::onStartScanlineDecode(const SkImageInfo& dstInfo, |
| 414 const Options& options, SkPMColor ctable[], int* ctableCount) { | 409 const Options& options, SkPMColor ctable[], int* ctableCount) { |
| 415 // Rewind the stream if needed | |
| 416 if (!this->rewindIfNeeded()) { | |
| 417 return kCouldNotRewind; | |
| 418 } | |
| 419 | |
| 420 // Set the jump location for libjpeg errors | 410 // Set the jump location for libjpeg errors |
| 421 if (setjmp(fDecoderMgr->getJmpBuf())) { | 411 if (setjmp(fDecoderMgr->getJmpBuf())) { |
| 422 SkCodecPrintf("setjmp: Error from libjpeg\n"); | 412 SkCodecPrintf("setjmp: Error from libjpeg\n"); |
| 423 return kInvalidInput; | 413 return kInvalidInput; |
| 424 } | 414 } |
| 425 | 415 |
| 426 // Check if we can decode to the requested destination and set the output co
lor space | 416 // Check if we can decode to the requested destination and set the output co
lor space |
| 427 if (!this->setOutputColorSpace(dstInfo)) { | 417 if (!this->setOutputColorSpace(dstInfo)) { |
| 428 return kInvalidConversion; | 418 return kInvalidConversion; |
| 429 } | 419 } |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 527 // Set the jump location for libjpeg errors | 517 // Set the jump location for libjpeg errors |
| 528 if (setjmp(fDecoderMgr->getJmpBuf())) { | 518 if (setjmp(fDecoderMgr->getJmpBuf())) { |
| 529 return fDecoderMgr->returnFailure("setjmp", kInvalidInput); | 519 return fDecoderMgr->returnFailure("setjmp", kInvalidInput); |
| 530 } | 520 } |
| 531 | 521 |
| 532 jpeg_skip_scanlines(fDecoderMgr->dinfo(), count); | 522 jpeg_skip_scanlines(fDecoderMgr->dinfo(), count); |
| 533 | 523 |
| 534 return kSuccess; | 524 return kSuccess; |
| 535 } | 525 } |
| 536 | 526 |
| OLD | NEW |