Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  PRemoteDecoder.ipdl   Sprache: unbekannt

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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::MediaDataDecoder::ConversionRequired from "PlatformDecoderModule.h";
using mozilla::TrackInfo::TrackType from "MediaInfo.h";
using mozilla::layers::LayersBackend from "mozilla/layers/LayersTypes.h";
using mozilla::MediaResult from "MediaResult.h";
[RefCounted] using class mozilla::ArrayOfRemoteMediaRawData from "mozilla/RemoteMediaData.h";
[RefCounted] using class mozilla::ArrayOfRemoteAudioData from "mozilla/RemoteMediaData.h";
[RefCounted] using class mozilla::ArrayOfRemoteVideoData from "mozilla/RemoteMediaData.h";
include PMediaDecoderParams;
include LayersSurfaces;

namespace mozilla {

union DecodedOutputIPDL
{
  nullable ArrayOfRemoteAudioData;
  nullable ArrayOfRemoteVideoData;
};

struct InitCompletionIPDL
{
  TrackType type;
  nsCString decoderDescription;
  nsCString decoderProcessName;
  nsCString decoderCodecName;
  bool hardware;
  nsCString hardwareReason;
  ConversionRequired conversion;
  bool shouldDecoderAlwaysBeRecycled;
};

union InitResultIPDL
{
  MediaResult;
  InitCompletionIPDL;
};

union DecodeResultIPDL
{
  MediaResult;
  DecodedOutputIPDL;
};

// This protocol provides a way to use MediaDataDecoder across processes.
// The parent side currently is only implemented to work with
// RemoteDecoderModule or WindowsMediaFoundation.
// The child side runs in the content process, and the parent side runs
// in the RDD process or the GPU process. We run a separate IPDL thread
// for both sides.
[ManualDealloc]
async protocol PRemoteDecoder
{
  manager PRemoteDecoderManager;
parent:
  async Construct() returns (MediaResult result);

  async Init() returns (InitResultIPDL result);

  // Each output may include a SurfaceDescriptorGPUVideo that represents the decoded
  // frame. This SurfaceDescriptor can be used on the Layers IPDL protocol, but
  // must be released explicitly using DeallocateSurfaceDescriptorGPUVideo
  // on the manager protocol.
  async Decode(nullable ArrayOfRemoteMediaRawData data) returns (DecodeResultIPDL result);
  async Flush() returns (MediaResult error);
  async Drain() returns (DecodeResultIPDL result);
  async Shutdown() returns (bool unused);
  // To clear the threshold, call with INT64_MIN.
  async SetSeekThreshold(TimeUnit time);

  async __delete__();
};

} // namespace mozilla

[ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge