blob: 522f813644d7f8eb9ea86b9d13cea130bd722813 [file] [log] [blame]
// Copyright 2018 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 cros.mojom;
// The Mojo interfaces defined here should be sync'd with upstream Chromium:
// https://cs.chromium.org/chromium/src/components/chromeos_camera/common/mjpeg_decode_accelerator.mojom
import "mojo/gpu/dmabuf.mojom";
// Decode errors. (see
// https://cs.chromium.org/chromium/src/media/video/jpeg_decode_accelerator.h)
enum DecodeError {
NO_ERRORS,
INVALID_ARGUMENT,
UNREADABLE_INPUT,
PARSE_JPEG_FAILED,
UNSUPPORTED_JPEG,
PLATFORM_FAILURE,
};
// GPU process interface exposed to the browser for decoding MJPEG streams.
//
// Reserved method IDs: 1
// Deprecated method IDs: 2
// Next method ID: 5
interface MjpegDecodeAccelerator {
// Initializes the MJPEG decoder. Should be called once per decoder
// construction and before using Decode(). This call returns true if
// initialization is successful.
Initialize@0() => (bool success);
// Decodes one MJPEG image with the given input and output buffers.
// |task_id| is used to distinguish different tasks. The input image is stored
// in the DMA buffer described by |src_dmabuf_fd|, |src_size|, and
// |src_offset|. The decoded result will be put into |dst_frame| backed by DMA
// buffer. Returns the decode status |error| in the Mojo callback.
DecodeWithDmaBuf@3(int32 task_id, handle src_dmabuf_fd, uint32 src_size,
uint32 src_offset, DmaBufVideoFrame dst_frame)
=> (DecodeError error);
// TODO(c.padhi): This method might not be required, see
// http://crbug.com/699255.
Uninitialize@4();
};