From e34635dee169b8710141d6d0841db1e2bde9626b Mon Sep 17 00:00:00 2001 From: yujieqin Date: Thu, 14 Apr 2016 07:04:00 -0700 Subject: Since PIEX can now return an uncompressed RGB thumbnail, check the type of the image before treating it as a JPEG. Highlights of new PIEX: * PIEX can now return JPEG compressed image or uncompressed RGB image * Add IsOfType() and GEtNumberofBytesForIsOfType() to image_type_recognition_lite * Add GetDngInformation() and GetOrientation() to piex * Remove deprecated data entries from piex_types BUG=b/27214608, b/28119810 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1883783002 Review URL: https://codereview.chromium.org/1883783002 --- src/codec/SkRawCodec.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/codec/SkRawCodec.cpp') diff --git a/src/codec/SkRawCodec.cpp b/src/codec/SkRawCodec.cpp index 762e82364c..ef8ba700a4 100644 --- a/src/codec/SkRawCodec.cpp +++ b/src/codec/SkRawCodec.cpp @@ -640,7 +640,11 @@ SkCodec* SkRawCodec::NewFromStream(SkStream* stream) { if (::piex::IsRaw(&piexStream)) { ::piex::Error error = ::piex::GetPreviewImageData(&piexStream, &imageData); - if (error == ::piex::Error::kOk && imageData.preview.length > 0) { + // Theoretically PIEX can return JPEG compressed image or uncompressed RGB image. We only + // handle the JPEG compressed preview image here. + if (error == ::piex::Error::kOk && imageData.preview.length > 0 && + imageData.preview.format == ::piex::Image::kJpegCompressed) + { // transferBuffer() is destructive to the rawStream. Abandon the rawStream after this // function call. // FIXME: one may avoid the copy of memoryStream and use the buffered rawStream. -- cgit v1.2.3