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

Unified Diff: blimp/engine/renderer/engine_image_serialization_processor.h

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 side-by-side diff with in-line comments
Download patch
Index: blimp/engine/renderer/engine_image_serialization_processor.h
diff --git a/blimp/engine/renderer/engine_image_serialization_processor.h b/blimp/engine/renderer/engine_image_serialization_processor.h
index d400704b15f52da6187b841a42a9fe9adf5a8b65..b5519678eedd52de6de169d329ed6a5989a1342f 100644
--- a/blimp/engine/renderer/engine_image_serialization_processor.h
+++ b/blimp/engine/renderer/engine_image_serialization_processor.h
@@ -8,12 +8,14 @@
#include <memory>
#include "base/macros.h"
+#include "base/memory/ref_counted.h"
#include "blimp/common/blimp_common_export.h"
+#include "blimp/common/blob_cache/id_util.h"
#include "blimp/engine/mojo/blob_channel.mojom.h"
#include "cc/proto/image_serialization_processor.h"
+#include "third_party/libwebp/webp/encode.h"
#include "third_party/skia/include/core/SkPicture.h"
-
-class SkPixelSerializer;
+#include "third_party/skia/include/core/SkPixelSerializer.h"
namespace content {
class RenderFrame;
@@ -22,22 +24,36 @@ class RenderFrame;
namespace blimp {
namespace engine {
+class BlobChannelSenderProxy;
+
// EngineImageSerializationProcessor provides functionality to serialize and
// deserialize Skia images.
class BLIMP_COMMON_EXPORT EngineImageSerializationProcessor
- : public cc::ImageSerializationProcessor {
+ : public cc::ImageSerializationProcessor,
+ public SkPixelSerializer {
public:
explicit EngineImageSerializationProcessor(
- mojom::BlobChannelPtr blob_channel);
- ~EngineImageSerializationProcessor();
+ std::unique_ptr<BlobChannelSenderProxy> blob_channel);
+ ~EngineImageSerializationProcessor() override;
// cc::ImageSerializationProcessor implementation.
SkPixelSerializer* GetPixelSerializer() override;
SkPicture::InstallPixelRefProc GetPixelDeserializer() override;
+ // SkPixelSerializer implementation.
+ bool onUseEncodedData(const void* data, size_t len) override;
+ SkData* onEncode(const SkPixmap& pixmap) override;
+
private:
+ scoped_refptr<BlobData> EncodeImageAsBlob(const SkPixmap& pixmap);
+
std::unique_ptr<SkPixelSerializer> pixel_serializer_;
- mojom::BlobChannelPtr blob_channel_;
+
+ // Sends image data as blobs to the browser process.
+ std::unique_ptr<BlobChannelSenderProxy> blob_channel_;
+
+ // Reusable output buffer for image encoding.
+ WebPMemoryWriter writer_state_;
DISALLOW_COPY_AND_ASSIGN(EngineImageSerializationProcessor);
};
« no previous file with comments | « blimp/engine/renderer/blob_channel_sender_proxy.cc ('k') | blimp/engine/renderer/engine_image_serialization_processor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698