| 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(); | 
| +}; | 
|  |