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

Side by Side Diff: blimp/client/feature/compositor/decoding_image_generator.cc

Issue 1985863002: Incorporate BlobChannel into Blimp image encode/decode pipeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@blobchannel-helium
Patch Set: fix gn dependency warning & rebase Created 4 years, 6 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "blimp/client/feature/compositor/decoding_image_generator.h" 5 #include "blimp/client/feature/compositor/decoding_image_generator.h"
6 6
7 #include "base/numerics/safe_conversions.h" 7 #include "base/numerics/safe_conversions.h"
8 #include "blimp/client/feature/compositor/blimp_image_decoder.h" 8 #include "blimp/client/feature/compositor/blimp_image_decoder.h"
9 #include "blimp/client/feature/compositor/blob_image_serialization_processor.h"
9 #include "blimp/common/proto/blob_cache.pb.h" 10 #include "blimp/common/proto/blob_cache.pb.h"
10 #include "third_party/libwebp/webp/decode.h" 11 #include "third_party/libwebp/webp/decode.h"
11 #include "third_party/libwebp/webp/demux.h" 12 #include "third_party/libwebp/webp/demux.h"
12 #include "third_party/skia/include/core/SkData.h" 13 #include "third_party/skia/include/core/SkData.h"
13 14
14 namespace blimp { 15 namespace blimp {
15 namespace client { 16 namespace client {
16 17
17 SkImageGenerator* DecodingImageGenerator::create(SkData* data) { 18 SkImageGenerator* DecodingImageGenerator::create(SkData* data) {
18 BlobCacheImageMetadata parsed_metadata; 19 BlobCacheImageMetadata parsed_metadata;
19 int signed_size = base::checked_cast<int>(data->size()); 20 int signed_size = base::checked_cast<int>(data->size());
20 if (!parsed_metadata.ParseFromArray(data->data(), signed_size)) { 21 if (!parsed_metadata.ParseFromArray(data->data(), signed_size)) {
21 // Failed to parse proto, so will fail to decode later as well. Inform 22 // Failed to parse proto, so will fail to decode later as well. Inform
22 // Skia by giving back an empty SkImageInfo. 23 // Skia by giving back an empty SkImageInfo.
23 return new DecodingImageGenerator(SkImageInfo::MakeN32Premul(0, 0), 24 return new DecodingImageGenerator(SkImageInfo::MakeN32Premul(0, 0),
24 data->data(), data->size()); 25 data->data(), data->size());
25 } 26 }
26 27
27 return new DecodingImageGenerator( 28 return new DecodingImageGenerator(
28 SkImageInfo::MakeN32Premul(parsed_metadata.width(), 29 SkImageInfo::MakeN32Premul(parsed_metadata.width(),
29 parsed_metadata.height()), 30 parsed_metadata.height()),
30 data->data(), data->size()); 31 data->data(), data->size());
31 } 32 }
32 33
33 DecodingImageGenerator::DecodingImageGenerator(const SkImageInfo info, 34 DecodingImageGenerator::DecodingImageGenerator(const SkImageInfo info,
34 const void* data, 35 const void* data,
35 size_t size) 36 size_t size)
36 : SkImageGenerator(info) { 37 : SkImageGenerator(info) {
37 BlimpImageDecoder(data, size, &decoded_bitmap_); 38 if (!BlobImageSerializationProcessor::current()->GetAndDecodeBlob(
39 data, size, &decoded_bitmap_)) {
40 DLOG(FATAL) << "GetAndDecodeBlob() failed.";
41 }
38 } 42 }
39 43
40 DecodingImageGenerator::~DecodingImageGenerator() {} 44 DecodingImageGenerator::~DecodingImageGenerator() {}
41 45
42 bool DecodingImageGenerator::onGetPixels(const SkImageInfo& info, 46 bool DecodingImageGenerator::onGetPixels(const SkImageInfo& info,
43 void* pixels, 47 void* pixels,
44 size_t rowBytes, 48 size_t rowBytes,
45 SkPMColor table[], 49 SkPMColor table[],
46 int* tableCount) { 50 int* tableCount) {
47 SkAutoLockPixels bitmapLock(decoded_bitmap_); 51 SkAutoLockPixels bitmapLock(decoded_bitmap_);
48 if (decoded_bitmap_.getPixels() != pixels) { 52 if (decoded_bitmap_.getPixels() != pixels) {
49 return decoded_bitmap_.copyPixelsTo(pixels, rowBytes * info.height(), 53 return decoded_bitmap_.copyPixelsTo(pixels, rowBytes * info.height(),
50 rowBytes); 54 rowBytes);
51 } 55 }
52 return true; 56 return true;
53 } 57 }
54 58
55 bool DecodingImageGenerator::onQueryYUV8(SkYUVSizeInfo* sizeInfo, 59 bool DecodingImageGenerator::onQueryYUV8(SkYUVSizeInfo* sizeInfo,
56 SkYUVColorSpace* colorSpace) const { 60 SkYUVColorSpace* colorSpace) const {
57 return false; 61 return false;
58 } 62 }
59 63
60 bool DecodingImageGenerator::onGetYUV8Planes(const SkYUVSizeInfo& sizeInfo, 64 bool DecodingImageGenerator::onGetYUV8Planes(const SkYUVSizeInfo& sizeInfo,
61 void* planes[3]) { 65 void* planes[3]) {
62 return false; 66 return false;
63 } 67 }
64 68
65 } // namespace client 69 } // namespace client
66 } // namespace blimp 70 } // namespace blimp
OLDNEW
« no previous file with comments | « blimp/client/feature/compositor/client_image_serialization_processor.cc ('k') | blimp/client/session/blimp_client_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698