blob: a918cc3d661452ffa03aa80b43752eafb7ed3ee3 [file] [log] [blame]
// Copyright 2015 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.
#ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_MEDIA_RECORDER_HANDLER_H_
#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_MEDIA_RECORDER_HANDLER_H_
#include <memory>
#include "third_party/blink/public/platform/web_common.h"
#include "third_party/blink/public/platform/modules/media_capabilities/web_media_capabilities_callbacks.h"
#include "third_party/blink/public/platform/web_string.h"
namespace blink {
class WebMediaRecorderHandlerClient;
struct WebMediaConfiguration;
class WebMediaStream;
// Platform interface of a MediaRecorder.
class BLINK_PLATFORM_EXPORT WebMediaRecorderHandler {
public:
virtual ~WebMediaRecorderHandler() = default;
virtual bool Initialize(WebMediaRecorderHandlerClient* client,
const WebMediaStream& stream,
const WebString& type,
const WebString& codecs,
int32_t audio_bits_per_second,
int32_t video_bits_per_second) {
return false;
}
virtual bool Start(int timeslice) { return false; }
virtual void Stop() {}
virtual void Pause() {}
virtual void Resume() {}
// MediaRecorder API isTypeSupported(), which boils down to
// CanSupportMimeType() [1] "If true is returned from this method, it only
// indicates that the MediaRecorder implementation is capable of recording
// Blob objects for the specified MIME type. Recording may still fail if
// sufficient resources are not available to support the concrete media
// encoding."
// [1] https://w3c.github.io/mediacapture-record/MediaRecorder.html#methods
virtual bool CanSupportMimeType(const WebString& type,
const WebString& codecs) {
return false;
}
// What is really being encoded???
virtual WebString ActualMimeType() { return WebString(); }
// Implements WICG Media Capabilities encodingInfo() call for local encoding.
// https://wicg.github.io/media-capabilities/#media-capabilities-interface
virtual void EncodingInfo(
const WebMediaConfiguration&,
std::unique_ptr<blink::WebMediaCapabilitiesEncodingInfoCallbacks>) {}
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_MEDIA_RECORDER_HANDLER_H_