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


Quelle  PCameras.ipdl   Sprache: unbekannt

 
/* 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 protocol PContent;
include protocol PBackground;

include PBackgroundSharedTypes;

include "mozilla/dom/MediaIPCUtils.h";

using mozilla::camera::CaptureEngine from "mozilla/media/CamerasTypes.h";
using mozilla::TimeStamp from "mozilla/TimeStamp.h";
using mozilla::media::TimeUnit from "TimeUnits.h";

namespace mozilla {
namespace camera {

// IPC analog for webrtc::VideoCaptureCapability
struct VideoCaptureCapability
{
  int width;
  int height;
  int maxFPS;
  int videoType;
  bool interlaced;
};


// IPC analog for webrtc::VideoFrame
// the described buffer is transported seperately in a Shmem
// See VideoFrameUtils.h
struct VideoFrameProperties
{
  TimeStamp captureTime;
  // Size of image data within the ShMem,
  // the ShMem is at least this large
  uint32_t bufferSize;
  // From webrtc::VideoFrame
  uint32_t rtpTimeStamp;
  int64_t ntpTimeMs;
  int64_t renderTimeMs;
  TimeUnit processingDuration;
  // See webrtc/**/rotation.h
  int rotation;
  int yAllocatedSize;
  int uAllocatedSize;
  int vAllocatedSize;
  // From webrtc::VideoFrameBuffer
  int width;
  int height;
  int yStride;
  int uStride;
  int vStride;
};

[ManualDealloc, ChildImpl=virtual, ParentImpl=virtual]
async protocol PCameras
{
  manager PBackground;

child:
  async CaptureEnded(int streamId);
  // transfers ownership of |buffer| from parent to child
  async DeliverFrame(int streamId, Shmem buffer, VideoFrameProperties props);
  async DeviceChange();
  async ReplyNumberOfCaptureDevices(int deviceCount);
  async ReplyNumberOfCapabilities(int capabilityCount);
  async ReplyAllocateCapture(int captureId);
  async ReplyGetCaptureCapability(VideoCaptureCapability cap);
  async ReplyGetCaptureDevice(nsCString device_name, nsCString device_id, bool scary, bool placeholder);
  async ReplyFailure();
  async ReplySuccess();
  async __delete__();

parent:
  async NumberOfCaptureDevices(CaptureEngine engine);
  async NumberOfCapabilities(CaptureEngine engine, nsCString deviceUniqueIdUTF8);

  async GetCaptureCapability(CaptureEngine engine, nsCString unique_idUTF8,
                             int capability_number);
  async GetCaptureDevice(CaptureEngine engine, int deviceIndex);

  async AllocateCapture(CaptureEngine engine, nsCString unique_idUTF8,
                        uint64_t windowID);
  async ReleaseCapture(CaptureEngine engine, int captureId);
  async StartCapture(CaptureEngine engine, int captureId,
                     VideoCaptureCapability capability);
  async FocusOnSelectedSource(CaptureEngine engine, int captureId);
  async StopCapture(CaptureEngine engine, int captureId);
  // transfers frame back
  async ReleaseFrame(Shmem s);

  // setup camera engine
  async EnsureInitialized(CaptureEngine engine);
};

} // namespace camera
} // namespace mozilla

[ Dauer der Verarbeitung: 0.2 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