Index: media/gpu/mojo/jpeg_decoder.mojom |
diff --git a/media/gpu/mojo/jpeg_decoder.mojom b/media/gpu/mojo/jpeg_decoder.mojom |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3264ee7d3b56804b64d0aa28dab85b0b202ca983 |
--- /dev/null |
+++ b/media/gpu/mojo/jpeg_decoder.mojom |
@@ -0,0 +1,59 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+module media.mojom; |
+ |
+import "media/mojo/interfaces/media_types.mojom"; |
+import "mojo/common/time.mojom"; |
+import "ui/gfx/geometry/mojo/geometry.mojom"; |
+ |
+// Decode errors (see media/video/jpeg_decode_accelerator.h). |
+enum Error { |
+ NO_ERRORS, |
+ INVALID_ARGUMENT, |
+ UNREADABLE_INPUT, |
+ PARSE_JPEG_FAILED, |
+ UNSUPPORTED_JPEG, |
+ PLATFORM_FAILURE, |
+}; |
+ |
+// This defines a mojo transport format for media::BitstreamBuffer (see |
+// media/base/bitstream_buffer.h). |
+struct BitstreamBuffer { |
+ int32 id; |
+ handle<shared_buffer> memory_handle; |
+ uint32 size; |
+ uint64 offset; |
+ mojo.common.mojom.TimeDelta timestamp; |
+ string key_id; |
+ string iv; |
+ array<SubsampleEntry> subsamples; |
+}; |
+ |
+// GPU process interface exposed to the browser for decoding JPEG images. |
+interface GpuJpegDecodeAccelerator { |
+ // Initializes the JPEG decoder. Should be called once per decoder |
+ // construction and before using Decode(). This call returns true if |
+ // initialization is successful. |
+ // TODO(c.padhi): Make this method asynchronous. |
+ [Sync] |
+ Initialize() => (bool success); |
+ |
+ // Decodes the given bitstream buffer that contains one JPEG image. |
+ // The image is decoded from shared memory |input_buffer.memory_handle| |
+ // with size |input_buffer.size|. The input buffer is associated with |
+ // |input_buffer.id|and the size of JPEG image is |coded_size|. Decoded I420 |
+ // frame data will be put onto shared memory associated with |output_handle| |
+ // with allocated size |output_buffer_size|. |
+ // Returns |bitstream_buffer_id| and |error| in a callback to notify the |
+ // decode status. |bitstream_buffer_id| is the id of BitstreamBuffer |
+ // |input_buffer| and |error| is the error code. |
+ Decode(BitstreamBuffer input_buffer, gfx.mojom.Size coded_size, |
+ handle<shared_buffer> output_handle, uint32 output_buffer_size) |
+ => (int32 bitstream_buffer_id, Error error); |
+ |
+ // TODO(c.padhi): This method might not be required, see |
+ // http://crbug.com/699255. |
+ Uninitialize(); |
+}; |