/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ include "mozilla/dom/MediaIPCUtils.h"; include protocol PRemoteDecoderManager; using mozilla::AudioInfo from "MediaInfo.h"; using mozilla::VideoInfo from "MediaInfo.h"; using mozilla::MediaResult from "MediaResult.h"; using mozilla::TrackInfo::TrackType from "MediaInfo.h"; using mozilla::MFMediaEngineError from "MFMediaEngineUtils.h"; using mozilla::MFMediaEngineEvent from "MFMediaEngineUtils.h"; namespace mozilla { struct MediaEngineInfoIPDL { bool preload; }; struct MediaInfoIPDL { AudioInfo? audioInfo; VideoInfo? videoInfo; }; struct StatisticData { uint64_t renderedFrames; uint64_t droppedFrames; }; [ManualDealloc] async protocol PMFMediaEngine { manager PRemoteDecoderManager; parent: // Return 0 if media engine can't be created. async InitMediaEngine(MediaEngineInfoIPDL info) returns (uint64_t id); async NotifyMediaInfo(MediaInfoIPDL info); async Play(); async Pause(); async Seek(double targetTimeInSecond); async SetCDMProxyId(uint64_t type); async SetVolume(double volume); async SetPlaybackRate(double playbackRate); async SetLooping(bool looping); async NotifyEndOfStream(TrackType type); async Shutdown(); async __delete__(); child: async NotifyEvent(MFMediaEngineEvent event); async NotifyError(MediaResult error); async UpdateCurrentTime(double currentTimeInSecond); async RequestSample(TrackType type, bool isEnough); async UpdateStatisticData(StatisticData data); }; } // namespace mozilla