summaryrefslogtreecommitdiff
path: root/chromium/media/mojo/mojom
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/mojo/mojom')
-rw-r--r--chromium/media/mojo/mojom/BUILD.gn15
-rw-r--r--chromium/media/mojo/mojom/audio_input_stream.mojom3
-rw-r--r--chromium/media/mojo/mojom/capture_handle.mojom13
-rw-r--r--chromium/media/mojo/mojom/cdm_capability_mojom_traits.cc39
-rw-r--r--chromium/media/mojo/mojom/cdm_capability_mojom_traits.h50
-rw-r--r--chromium/media/mojo/mojom/display_media_information.mojom3
-rw-r--r--chromium/media/mojo/mojom/key_system_support.mojom17
-rw-r--r--chromium/media/mojo/mojom/media_types.mojom7
-rw-r--r--chromium/media/mojo/mojom/output_protection.mojom6
-rw-r--r--chromium/media/mojo/mojom/pipeline_status_mojom_traits.h2
-rw-r--r--chromium/media/mojo/mojom/platform_verification.mojom2
-rw-r--r--chromium/media/mojo/mojom/speech_recognition_service.mojom47
-rw-r--r--chromium/media/mojo/mojom/status_mojom_traits.cc4
-rw-r--r--chromium/media/mojo/mojom/status_mojom_traits.h10
-rw-r--r--chromium/media/mojo/mojom/video_decoder_config_mojom_traits.cc2
-rw-r--r--chromium/media/mojo/mojom/video_decoder_config_mojom_traits.h2
-rw-r--r--chromium/media/mojo/mojom/video_encode_accelerator.mojom1
-rw-r--r--chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits.cc12
-rw-r--r--chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits.h5
-rw-r--r--chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits_unittest.cc2
-rw-r--r--chromium/media/mojo/mojom/video_frame_metadata_mojom_traits.cc4
-rw-r--r--chromium/media/mojo/mojom/video_frame_metadata_mojom_traits.h28
-rw-r--r--chromium/media/mojo/mojom/video_frame_mojom_traits.cc6
-rw-r--r--chromium/media/mojo/mojom/video_frame_mojom_traits.h7
24 files changed, 217 insertions, 70 deletions
diff --git a/chromium/media/mojo/mojom/BUILD.gn b/chromium/media/mojo/mojom/BUILD.gn
index 341e26de457..2caa8635a66 100644
--- a/chromium/media/mojo/mojom/BUILD.gn
+++ b/chromium/media/mojo/mojom/BUILD.gn
@@ -18,6 +18,7 @@ mojom("mojom") {
"audio_output_stream.mojom",
"audio_parameters.mojom",
"audio_stream_factory.mojom",
+ "capture_handle.mojom",
"cdm_service.mojom",
"cdm_storage.mojom",
"content_decryption_module.mojom",
@@ -536,6 +537,17 @@ mojom("mojom") {
"//ui/gfx/geometry/mojom",
]
},
+ {
+ types = [
+ {
+ mojom = "media.mojom.CdmCapability"
+ cpp = "::media::CdmCapability"
+ },
+ ]
+ traits_headers = [ "cdm_capability_mojom_traits.h" ]
+ traits_sources = [ "cdm_capability_mojom_traits.cc" ]
+ traits_public_deps = [ "//media" ]
+ },
]
cpp_typemaps += shared_typemaps
@@ -554,8 +566,7 @@ source_set("shared_mojom_traits") {
public_deps = [
":mojom_shared",
- "//gpu/ipc/common:common",
- "//gpu/ipc/common:mojom_traits",
+ "//gpu/ipc/common",
"//media",
"//media/base/ipc:ipc",
"//mojo/public/mojom/base",
diff --git a/chromium/media/mojo/mojom/audio_input_stream.mojom b/chromium/media/mojo/mojom/audio_input_stream.mojom
index f77ac9dde6f..9f48a3aab08 100644
--- a/chromium/media/mojo/mojom/audio_input_stream.mojom
+++ b/chromium/media/mojo/mojom/audio_input_stream.mojom
@@ -21,7 +21,7 @@ interface AudioInputStream {
// An interface for receiving notifications of state changes of an
// AudioInputStream.
interface AudioInputStreamClient {
- OnError();
+ OnError(InputStreamErrorCode code);
OnMutedStateChanged(bool is_muted);
};
@@ -42,6 +42,7 @@ interface AudioInputStreamObserver {
kTerminatedByClient = 2,
kStreamCreationFailed = 3,
kDocumentDestroyed = 4,
+ kSystemPermissions = 5,
};
// It will be called only once when input stream starts recording.
diff --git a/chromium/media/mojo/mojom/capture_handle.mojom b/chromium/media/mojo/mojom/capture_handle.mojom
new file mode 100644
index 00000000000..7dc157bd82d
--- /dev/null
+++ b/chromium/media/mojo/mojom/capture_handle.mojom
@@ -0,0 +1,13 @@
+// Copyright 2021 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 media.mojom;
+
+import "mojo/public/mojom/base/string16.mojom";
+import "url/mojom/origin.mojom";
+
+struct CaptureHandle {
+ url.mojom.Origin origin;
+ mojo_base.mojom.String16 capture_handle;
+};
diff --git a/chromium/media/mojo/mojom/cdm_capability_mojom_traits.cc b/chromium/media/mojo/mojom/cdm_capability_mojom_traits.cc
new file mode 100644
index 00000000000..f72a0d32b7e
--- /dev/null
+++ b/chromium/media/mojo/mojom/cdm_capability_mojom_traits.cc
@@ -0,0 +1,39 @@
+// Copyright 2021 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.
+
+#include "media/mojo/mojom/cdm_capability_mojom_traits.h"
+
+#include <utility>
+
+namespace mojo {
+
+// static
+bool StructTraits<media::mojom::CdmCapabilityDataView, media::CdmCapability>::
+ Read(media::mojom::CdmCapabilityDataView input,
+ media::CdmCapability* output) {
+ std::vector<media::AudioCodec> audio_codecs;
+ if (!input.ReadAudioCodecs(&audio_codecs))
+ return false;
+
+ std::vector<media::VideoCodec> video_codecs;
+ if (!input.ReadVideoCodecs(&video_codecs))
+ return false;
+
+ std::vector<media::EncryptionScheme> encryption_schemes;
+ if (!input.ReadEncryptionSchemes(&encryption_schemes))
+ return false;
+
+ std::vector<media::CdmSessionType> session_types;
+ if (!input.ReadSessionTypes(&session_types))
+ return false;
+
+ // |encryption_schemes| and |session_types| are convert to a base::flat_map
+ // implicitly.
+ *output = media::CdmCapability(
+ std::move(audio_codecs), std::move(video_codecs),
+ std::move(encryption_schemes), std::move(session_types));
+ return true;
+}
+
+} // namespace mojo
diff --git a/chromium/media/mojo/mojom/cdm_capability_mojom_traits.h b/chromium/media/mojo/mojom/cdm_capability_mojom_traits.h
new file mode 100644
index 00000000000..178b17a7863
--- /dev/null
+++ b/chromium/media/mojo/mojom/cdm_capability_mojom_traits.h
@@ -0,0 +1,50 @@
+// Copyright 2021 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 MEDIA_MOJO_MOJOM_CDM_CAPABILITY_MOJOM_TRAITS_H_
+#define MEDIA_MOJO_MOJOM_CDM_CAPABILITY_MOJOM_TRAITS_H_
+
+#include <vector>
+
+#include "base/containers/flat_set.h"
+#include "media/base/audio_codecs.h"
+#include "media/base/content_decryption_module.h"
+#include "media/base/encryption_scheme.h"
+#include "media/base/video_codecs.h"
+#include "media/cdm/cdm_capability.h"
+#include "media/mojo/mojom/key_system_support.mojom.h"
+
+namespace mojo {
+
+template <>
+struct StructTraits<media::mojom::CdmCapabilityDataView, media::CdmCapability> {
+ static const std::vector<media::AudioCodec>& audio_codecs(
+ const media::CdmCapability& input) {
+ return input.audio_codecs;
+ }
+
+ static const std::vector<media::VideoCodec>& video_codecs(
+ const media::CdmCapability& input) {
+ return input.video_codecs;
+ }
+
+ // List of encryption schemes supported by the CDM (e.g. cenc).
+ static const base::flat_set<media::EncryptionScheme>& encryption_schemes(
+ const media::CdmCapability& input) {
+ return input.encryption_schemes;
+ }
+
+ // List of session types supported by the CDM.
+ static const base::flat_set<media::CdmSessionType>& session_types(
+ const media::CdmCapability& input) {
+ return input.session_types;
+ }
+
+ static bool Read(media::mojom::CdmCapabilityDataView input,
+ media::CdmCapability* output);
+};
+
+} // namespace mojo
+
+#endif // MEDIA_MOJO_MOJOM_CDM_CAPABILITY_MOJOM_TRAITS_H_
diff --git a/chromium/media/mojo/mojom/display_media_information.mojom b/chromium/media/mojo/mojom/display_media_information.mojom
index ad441305339..387d8cb8a96 100644
--- a/chromium/media/mojo/mojom/display_media_information.mojom
+++ b/chromium/media/mojo/mojom/display_media_information.mojom
@@ -4,6 +4,8 @@
module media.mojom;
+import "media/mojo/mojom/capture_handle.mojom";
+
// Mojo equivalent to media::DisplayMediaInformation. See also
// media/base/display_media_information.h
@@ -24,4 +26,5 @@ struct DisplayMediaInformation {
DisplayCaptureSurfaceType display_surface;
bool logical_surface;
CursorCaptureType cursor;
+ CaptureHandle? capture_handle;
};
diff --git a/chromium/media/mojo/mojom/key_system_support.mojom b/chromium/media/mojo/mojom/key_system_support.mojom
index ce6267224bd..371c259a7f4 100644
--- a/chromium/media/mojo/mojom/key_system_support.mojom
+++ b/chromium/media/mojo/mojom/key_system_support.mojom
@@ -10,20 +10,19 @@ import "media/mojo/mojom/media_types.mojom";
// TODO(xhwang): Use "set" instead of "array" if supported by mojom.
// TODO(crbug.com/796725) Find a way to include profiles and levels for
// supported codecs.
-struct KeySystemCapability {
- // Software secure codecs and encryption schemes supported by the CDM.
+struct CdmCapability {
+ array<AudioCodec> audio_codecs;
array<VideoCodec> video_codecs;
array<EncryptionScheme> encryption_schemes;
-
- // Hardware secure codecs and encryption schemes supported by the CDM.
- array<VideoCodec> hw_secure_video_codecs;
- array<EncryptionScheme> hw_secure_encryption_schemes;
-
- // Session types supported in software secure mode if no
- // |hw_secure_video_codecs| is supported, or in both modes otherwise.
array<CdmSessionType> session_types;
};
+struct KeySystemCapability {
+ CdmCapability? sw_secure_capability;
+ CdmCapability? hw_secure_capability;
+};
+
+// Used to query the browser to see if a specific key system is supported.
interface KeySystemSupport {
// Query to determine if the browser supports the |key_system|. If supported,
// |key_system_capability| is non-null indicating supported capability.
diff --git a/chromium/media/mojo/mojom/media_types.mojom b/chromium/media/mojo/mojom/media_types.mojom
index 1db4788ed02..f9d24e84613 100644
--- a/chromium/media/mojo/mojom/media_types.mojom
+++ b/chromium/media/mojo/mojom/media_types.mojom
@@ -471,3 +471,10 @@ enum MediaStreamType {
kRemote = 5, // The source is a remote peer connection.
kNone = 6, // Not a media stream.
};
+
+// Error codes propagated by Input media streams OnError methods to indicate the
+// reason for an error.
+enum InputStreamErrorCode {
+ kUnknown = 0,
+ kSystemPermissions = 1,
+};
diff --git a/chromium/media/mojo/mojom/output_protection.mojom b/chromium/media/mojo/mojom/output_protection.mojom
index 87dc10d37bf..0d09055e9c7 100644
--- a/chromium/media/mojo/mojom/output_protection.mojom
+++ b/chromium/media/mojo/mojom/output_protection.mojom
@@ -8,14 +8,16 @@ module media.mojom;
// on links that support it.
interface OutputProtection {
+ [Stable, Extensible]
enum ProtectionType {
- NONE = 0,
+ [Default] NONE = 0,
HDCP = 1,
};
// Video output link types.
+ [Stable, Extensible]
enum LinkType {
- NONE = 0,
+ [Default] NONE = 0,
UNKNOWN = 1,
INTERNAL = 2,
VGA = 4,
diff --git a/chromium/media/mojo/mojom/pipeline_status_mojom_traits.h b/chromium/media/mojo/mojom/pipeline_status_mojom_traits.h
index d2893e209d9..220323d75ce 100644
--- a/chromium/media/mojo/mojom/pipeline_status_mojom_traits.h
+++ b/chromium/media/mojo/mojom/pipeline_status_mojom_traits.h
@@ -5,8 +5,6 @@
#ifndef MEDIA_MOJO_MOJOM_PIPELINE_STATUS_MOJOM_TRAITS_H_
#define MEDIA_MOJO_MOJOM_PIPELINE_STATUS_MOJOM_TRAITS_H_
-#include <string>
-
#include "media/base/pipeline_status.h"
#include "media/mojo/mojom/media_types.mojom.h"
diff --git a/chromium/media/mojo/mojom/platform_verification.mojom b/chromium/media/mojo/mojom/platform_verification.mojom
index c96c33bb887..c3cf5b7ab5f 100644
--- a/chromium/media/mojo/mojom/platform_verification.mojom
+++ b/chromium/media/mojo/mojom/platform_verification.mojom
@@ -33,6 +33,6 @@ interface PlatformVerification {
GetStorageId(uint32 version) => (uint32 version, array<uint8> storage_id);
// Returns true if Verified Access is enabled in settings, false otherwise.
- [EnableIf=is_chromeos]
+ [EnableIf=is_chromeos_ash]
IsVerifiedAccessEnabled() => (bool enabled);
};
diff --git a/chromium/media/mojo/mojom/speech_recognition_service.mojom b/chromium/media/mojo/mojom/speech_recognition_service.mojom
index ab4d55221b5..55cf313f7c7 100644
--- a/chromium/media/mojo/mojom/speech_recognition_service.mojom
+++ b/chromium/media/mojo/mojom/speech_recognition_service.mojom
@@ -30,7 +30,8 @@ interface SpeechRecognitionContext {
// indicating whether multichannel audio is supported by the speech
// recognition service.
BindRecognizer(pending_receiver<SpeechRecognitionRecognizer> receiver,
- pending_remote<SpeechRecognitionRecognizerClient> client)
+ pending_remote<SpeechRecognitionRecognizerClient> client,
+ SpeechRecognitionOptions options)
=> (bool is_multichannel_supported);
// Prepares microphone audio to be captured from within the
@@ -38,7 +39,8 @@ interface SpeechRecognitionContext {
// SpeechRecognitionRecognizerClient.
BindAudioSourceFetcher(
pending_receiver<AudioSourceFetcher> fetcher_receiver,
- pending_remote<SpeechRecognitionRecognizerClient> client)
+ pending_remote<SpeechRecognitionRecognizerClient> client,
+ SpeechRecognitionOptions options)
=> (bool is_multichannel_supported);
};
@@ -94,26 +96,21 @@ interface SpeechRecognitionRecognizer {
// to the originating media.
SendAudioToSpeechRecognitionService(AudioDataS16 buffer);
- // Notify the speech recognition recognizer that the caption bubble was
- // closed. Used to determine whether the caption bubble was visible when
- // recording watch time.
- OnCaptionBubbleClosed();
-
- // Notify the speech recognition recognizer that audio was received by the
- // renderer after the caption bubble was closed.
- AudioReceivedAfterBubbleClosed(mojo_base.mojom.TimeDelta duration);
-
// Notify the speech recognition recognizer that the language changed. Takes
// in the locale string (e.g. "en-US").
OnLanguageChanged(string language);
};
// The interface used to return speech recognition events from the speech
-// recognition service back to the originating media. The remote lives in the
-// speech recognition process and the receiver lives in the renderer process.
+// recognition service to the client that will display the results to the user.
+// The remote lives in the speech recognition process and the receiver lives in
+// the browser process.
interface SpeechRecognitionRecognizerClient {
// Triggered by speech recognition process on a speech recognition event.
- OnSpeechRecognitionRecognitionEvent(SpeechRecognitionResult result);
+ // Returns whether the result was received successfully. Speech recognition
+ // will halt if this returns false.
+ OnSpeechRecognitionRecognitionEvent(SpeechRecognitionResult result)
+ => (bool success);
// Triggered by an error within the speech recognition service.
OnSpeechRecognitionError();
@@ -123,7 +120,7 @@ interface SpeechRecognitionRecognizerClient {
};
// A speech recognition result created by the speech service and passed to the
-// renderer.
+// browser.
struct SpeechRecognitionResult {
string transcription;
@@ -164,3 +161,23 @@ interface SpeechRecognitionClientBrowserInterface {
BindSpeechRecognitionBrowserObserver(
pending_remote<SpeechRecognitionBrowserObserver> observer);
};
+
+// Corresponds to ExtendedSodaConfigMsg in
+// chrome/services/speech/soda/proto/soda_api.proto.
+enum SpeechRecognitionMode {
+ kUnknown,
+ // Intended for voice input for keyboard usage.
+ kIme,
+ // Intended to caption a stream of audio.
+ kCaption,
+};
+
+// Options for speech recognition.
+// TODO(crbug.com/1195916): Add language identifier.
+// TODO(crbug.com/1165437): Add option to include timing metrics in the result.
+struct SpeechRecognitionOptions {
+ // What kind of recognition to use.
+ // In the case of web fallback (not for launch, used for development only),
+ // this option will be ignored.
+ SpeechRecognitionMode recognition_mode;
+};
diff --git a/chromium/media/mojo/mojom/status_mojom_traits.cc b/chromium/media/mojo/mojom/status_mojom_traits.cc
index 9efb4af6e57..639e8462643 100644
--- a/chromium/media/mojo/mojom/status_mojom_traits.cc
+++ b/chromium/media/mojo/mojom/status_mojom_traits.cc
@@ -24,7 +24,7 @@ bool StructTraits<media::mojom::StatusDataView, media::Status>::Read(
if (media::StatusCode::kOk == code)
return true;
- base::Optional<std::string> optional_message;
+ absl::optional<std::string> optional_message;
if (!data.ReadMessage(&optional_message))
return false;
message = std::move(optional_message).value_or(std::string());
@@ -38,7 +38,7 @@ bool StructTraits<media::mojom::StatusDataView, media::Status>::Read(
if (!data.ReadCauses(&output->data_->causes))
return false;
- base::Optional<base::Value> optional_data;
+ absl::optional<base::Value> optional_data;
if (!data.ReadData(&optional_data))
return false;
output->data_->data = std::move(optional_data).value_or(base::Value());
diff --git a/chromium/media/mojo/mojom/status_mojom_traits.h b/chromium/media/mojo/mojom/status_mojom_traits.h
index 03eb5ab36ed..8896ea76130 100644
--- a/chromium/media/mojo/mojom/status_mojom_traits.h
+++ b/chromium/media/mojo/mojom/status_mojom_traits.h
@@ -6,11 +6,11 @@
#define MEDIA_MOJO_MOJOM_STATUS_MOJOM_TRAITS_H_
#include "base/containers/span.h"
-#include "base/optional.h"
#include "base/values.h"
#include "media/base/ipc/media_param_traits.h"
#include "media/base/status.h"
#include "media/mojo/mojom/media_types.mojom.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
namespace mojo {
@@ -20,9 +20,9 @@ struct StructTraits<media::mojom::StatusDataView, media::Status> {
return input.code();
}
- static base::Optional<std::string> message(const media::Status& input) {
+ static absl::optional<std::string> message(const media::Status& input) {
if (input.is_ok())
- return base::nullopt;
+ return absl::nullopt;
DCHECK(input.data_);
return input.message();
}
@@ -41,12 +41,12 @@ struct StructTraits<media::mojom::StatusDataView, media::Status> {
return input.data_->causes;
}
- static base::Optional<base::Value> data(const media::Status& input) {
+ static absl::optional<base::Value> data(const media::Status& input) {
if (!input.is_ok()) {
DCHECK(input.data_);
return input.data_->data.Clone();
}
- return base::nullopt;
+ return absl::nullopt;
}
static bool Read(media::mojom::StatusDataView data, media::Status* output);
diff --git a/chromium/media/mojo/mojom/video_decoder_config_mojom_traits.cc b/chromium/media/mojo/mojom/video_decoder_config_mojom_traits.cc
index 4699902207f..f968638da35 100644
--- a/chromium/media/mojo/mojom/video_decoder_config_mojom_traits.cc
+++ b/chromium/media/mojo/mojom/video_decoder_config_mojom_traits.cc
@@ -47,7 +47,7 @@ bool StructTraits<media::mojom::VideoDecoderConfigDataView,
if (!input.ReadColorSpaceInfo(&color_space))
return false;
- base::Optional<gfx::HDRMetadata> hdr_metadata;
+ absl::optional<gfx::HDRMetadata> hdr_metadata;
if (!input.ReadHdrMetadata(&hdr_metadata))
return false;
diff --git a/chromium/media/mojo/mojom/video_decoder_config_mojom_traits.h b/chromium/media/mojo/mojom/video_decoder_config_mojom_traits.h
index f89cfcc2f87..19a0d2f61a1 100644
--- a/chromium/media/mojo/mojom/video_decoder_config_mojom_traits.h
+++ b/chromium/media/mojo/mojom/video_decoder_config_mojom_traits.h
@@ -64,7 +64,7 @@ struct StructTraits<media::mojom::VideoDecoderConfigDataView,
return input.video_transformation();
}
- static const base::Optional<gfx::HDRMetadata>& hdr_metadata(
+ static const absl::optional<gfx::HDRMetadata>& hdr_metadata(
const media::VideoDecoderConfig& input) {
return input.hdr_metadata();
}
diff --git a/chromium/media/mojo/mojom/video_encode_accelerator.mojom b/chromium/media/mojo/mojom/video_encode_accelerator.mojom
index 3516920dd39..82cf95f9a6a 100644
--- a/chromium/media/mojo/mojom/video_encode_accelerator.mojom
+++ b/chromium/media/mojo/mojom/video_encode_accelerator.mojom
@@ -101,6 +101,7 @@ struct VideoEncodeAcceleratorConfig {
bool has_storage_type; // Whether or not config has storage type config
ContentType content_type;
array<SpatialLayer> spatial_layers;
+ bool require_low_delay;
};
interface VideoEncodeAccelerator {
diff --git a/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits.cc b/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits.cc
index df744f70048..506a38e71f7 100644
--- a/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits.cc
+++ b/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits.cc
@@ -5,10 +5,10 @@
#include "media/mojo/mojom/video_encode_accelerator_mojom_traits.h"
#include "base/notreached.h"
-#include "base/optional.h"
#include "media/base/video_bitrate_allocation.h"
#include "media/mojo/mojom/video_encode_accelerator.mojom.h"
#include "mojo/public/cpp/base/time_mojom_traits.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
namespace mojo {
@@ -258,21 +258,21 @@ bool StructTraits<media::mojom::VideoEncodeAcceleratorConfigDataView,
if (!input.ReadOutputProfile(&output_profile))
return false;
- base::Optional<uint32_t> initial_framerate;
+ absl::optional<uint32_t> initial_framerate;
if (input.has_initial_framerate())
initial_framerate = input.initial_framerate();
- base::Optional<uint32_t> gop_length;
+ absl::optional<uint32_t> gop_length;
if (input.has_gop_length())
gop_length = input.gop_length();
- base::Optional<uint8_t> h264_output_level;
+ absl::optional<uint8_t> h264_output_level;
if (input.has_h264_output_level())
h264_output_level = input.h264_output_level();
bool is_constrained_h264 = input.is_constrained_h264();
- base::Optional<media::VideoEncodeAccelerator::Config::StorageType>
+ absl::optional<media::VideoEncodeAccelerator::Config::StorageType>
storage_type;
if (input.has_storage_type()) {
if (!input.ReadStorageType(&storage_type))
@@ -292,6 +292,8 @@ bool StructTraits<media::mojom::VideoEncodeAcceleratorConfigDataView,
input_format, input_visible_size, output_profile, input.initial_bitrate(),
initial_framerate, gop_length, h264_output_level, is_constrained_h264,
storage_type, content_type, spatial_layers);
+
+ output->require_low_delay = input.require_low_delay();
return true;
}
diff --git a/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits.h b/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits.h
index 569b7f912a3..7cc9dc720d0 100644
--- a/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits.h
+++ b/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits.h
@@ -304,6 +304,11 @@ struct StructTraits<media::mojom::VideoEncodeAcceleratorConfigDataView,
return input.spatial_layers;
}
+ static bool require_low_delay(
+ const media::VideoEncodeAccelerator::Config& input) {
+ return input.require_low_delay;
+ }
+
static bool Read(media::mojom::VideoEncodeAcceleratorConfigDataView input,
media::VideoEncodeAccelerator::Config* output);
};
diff --git a/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits_unittest.cc b/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits_unittest.cc
index 15d59d1d76a..57dc0256efb 100644
--- a/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits_unittest.cc
+++ b/chromium/media/mojo/mojom/video_encode_accelerator_mojom_traits_unittest.cc
@@ -67,7 +67,7 @@ TEST(VideoEncodeAcceleratorConfigStructTraitTest, RoundTrip) {
}
::media::VideoEncodeAccelerator::Config input_config(
::media::PIXEL_FORMAT_NV12, kBaseSize, ::media::VP9PROFILE_PROFILE0,
- kBaseBitrateBps, kBaseFramerate, base::nullopt, base::nullopt, false,
+ kBaseBitrateBps, kBaseFramerate, absl::nullopt, absl::nullopt, false,
::media::VideoEncodeAccelerator::Config::StorageType::kGpuMemoryBuffer,
::media::VideoEncodeAccelerator::Config::ContentType::kCamera,
input_spatial_layers);
diff --git a/chromium/media/mojo/mojom/video_frame_metadata_mojom_traits.cc b/chromium/media/mojo/mojom/video_frame_metadata_mojom_traits.cc
index 0e77001b970..95666aaf226 100644
--- a/chromium/media/mojo/mojom/video_frame_metadata_mojom_traits.cc
+++ b/chromium/media/mojo/mojom/video_frame_metadata_mojom_traits.cc
@@ -14,13 +14,13 @@
namespace mojo {
-// Deserializes has_field and field into a base::Optional.
+// Deserializes has_field and field into a absl::optional.
#define DESERIALIZE_INTO_OPT(field) \
if (input.has_##field()) \
output->field = input.field()
#define READ_AND_ASSIGN_OPT(type, field, FieldInCamelCase) \
- base::Optional<type> field; \
+ absl::optional<type> field; \
if (!input.Read##FieldInCamelCase(&field)) \
return false; \
\
diff --git a/chromium/media/mojo/mojom/video_frame_metadata_mojom_traits.h b/chromium/media/mojo/mojom/video_frame_metadata_mojom_traits.h
index 06b7cf3ebc8..c545248edb1 100644
--- a/chromium/media/mojo/mojom/video_frame_metadata_mojom_traits.h
+++ b/chromium/media/mojo/mojom/video_frame_metadata_mojom_traits.h
@@ -6,7 +6,6 @@
#define MEDIA_MOJO_MOJOM_VIDEO_FRAME_METADATA_MOJOM_TRAITS_H_
#include "base/memory/ref_counted.h"
-#include "base/optional.h"
#include "media/base/ipc/media_param_traits_macros.h"
#include "media/base/video_frame_metadata.h"
#include "media/base/video_transformation.h"
@@ -14,11 +13,12 @@
#include "media/mojo/mojom/media_types_enum_mojom_traits.h"
#include "media/mojo/mojom/video_transformation_mojom_traits.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/gfx/geometry/mojom/geometry_mojom_traits.h"
namespace mojo {
-// Creates a has_foo() and a foo() to serialize a foo base::Optional<>.
+// Creates a has_foo() and a foo() to serialize a foo absl::optional<>.
#define GENERATE_OPT_SERIALIZATION(type, field, default_value) \
static bool has_##field(const media::VideoFrameMetadata& input) { \
return input.field.has_value(); \
@@ -79,7 +79,7 @@ struct StructTraits<media::mojom::VideoFrameMetadataDataView,
copy_mode,
media::VideoFrameMetadata::CopyMode::kCopyToNewTexture)
- static base::Optional<media::VideoTransformation> transformation(
+ static absl::optional<media::VideoTransformation> transformation(
const media::VideoFrameMetadata& input) {
return input.transformation;
}
@@ -92,57 +92,57 @@ struct StructTraits<media::mojom::VideoFrameMetadataDataView,
GENERATE_OPT_SERIALIZATION(double, frame_rate, 0.0)
GENERATE_OPT_SERIALIZATION(double, rtp_timestamp, 0.0)
- static base::Optional<gfx::Rect> capture_update_rect(
+ static absl::optional<gfx::Rect> capture_update_rect(
const media::VideoFrameMetadata& input) {
return input.capture_update_rect;
}
- static base::Optional<base::UnguessableToken> overlay_plane_id(
+ static absl::optional<base::UnguessableToken> overlay_plane_id(
const media::VideoFrameMetadata& input) {
return input.overlay_plane_id;
}
- static base::Optional<base::TimeTicks> receive_time(
+ static absl::optional<base::TimeTicks> receive_time(
const media::VideoFrameMetadata& input) {
return input.receive_time;
}
- static base::Optional<base::TimeTicks> capture_begin_time(
+ static absl::optional<base::TimeTicks> capture_begin_time(
const media::VideoFrameMetadata& input) {
return input.capture_begin_time;
}
- static base::Optional<base::TimeTicks> capture_end_time(
+ static absl::optional<base::TimeTicks> capture_end_time(
const media::VideoFrameMetadata& input) {
return input.capture_end_time;
}
- static base::Optional<base::TimeTicks> decode_begin_time(
+ static absl::optional<base::TimeTicks> decode_begin_time(
const media::VideoFrameMetadata& input) {
return input.decode_begin_time;
}
- static base::Optional<base::TimeTicks> decode_end_time(
+ static absl::optional<base::TimeTicks> decode_end_time(
const media::VideoFrameMetadata& input) {
return input.decode_end_time;
}
- static base::Optional<base::TimeTicks> reference_time(
+ static absl::optional<base::TimeTicks> reference_time(
const media::VideoFrameMetadata& input) {
return input.reference_time;
}
- static base::Optional<base::TimeDelta> processing_time(
+ static absl::optional<base::TimeDelta> processing_time(
const media::VideoFrameMetadata& input) {
return input.processing_time;
}
- static base::Optional<base::TimeDelta> frame_duration(
+ static absl::optional<base::TimeDelta> frame_duration(
const media::VideoFrameMetadata& input) {
return input.frame_duration;
}
- static base::Optional<base::TimeDelta> wallclock_frame_duration(
+ static absl::optional<base::TimeDelta> wallclock_frame_duration(
const media::VideoFrameMetadata& input) {
return input.wallclock_frame_duration;
}
diff --git a/chromium/media/mojo/mojom/video_frame_mojom_traits.cc b/chromium/media/mojo/mojom/video_frame_mojom_traits.cc
index 08ad8fc66ef..268def5e1c8 100644
--- a/chromium/media/mojo/mojom/video_frame_mojom_traits.cc
+++ b/chromium/media/mojo/mojom/video_frame_mojom_traits.cc
@@ -174,7 +174,7 @@ bool StructTraits<media::mojom::VideoFrameDataView,
for (size_t i = 0; i < mailbox_holder.size(); i++)
mailbox_holder_array[i] = mailbox_holder[i];
- base::Optional<gfx::BufferFormat> buffer_format =
+ absl::optional<gfx::BufferFormat> buffer_format =
VideoPixelFormatToGfxBufferFormat(format);
if (!buffer_format)
return false;
@@ -203,7 +203,7 @@ bool StructTraits<media::mojom::VideoFrameDataView,
for (size_t i = 0; i < media::VideoFrame::kMaxPlanes; i++)
mailbox_holder_array[i] = mailbox_holder[i];
- base::Optional<gpu::VulkanYCbCrInfo> ycbcr_info;
+ absl::optional<gpu::VulkanYCbCrInfo> ycbcr_info;
if (!mailbox_data.ReadYcbcrData(&ycbcr_info))
return false;
@@ -231,7 +231,7 @@ bool StructTraits<media::mojom::VideoFrameDataView,
return false;
frame->set_color_space(color_space);
- base::Optional<gfx::HDRMetadata> hdr_metadata;
+ absl::optional<gfx::HDRMetadata> hdr_metadata;
if (!input.ReadHdrMetadata(&hdr_metadata))
return false;
frame->set_hdr_metadata(std::move(hdr_metadata));
diff --git a/chromium/media/mojo/mojom/video_frame_mojom_traits.h b/chromium/media/mojo/mojom/video_frame_mojom_traits.h
index 9071089bd2e..93c515276e5 100644
--- a/chromium/media/mojo/mojom/video_frame_mojom_traits.h
+++ b/chromium/media/mojo/mojom/video_frame_mojom_traits.h
@@ -6,14 +6,13 @@
#define MEDIA_MOJO_MOJOM_VIDEO_FRAME_MOJOM_TRAITS_H_
#include "base/memory/ref_counted.h"
-#include "base/optional.h"
-#include "base/values.h"
#include "gpu/ipc/common/mailbox_holder_mojom_traits.h"
#include "gpu/ipc/common/vulkan_ycbcr_info_mojom_traits.h"
#include "media/base/ipc/media_param_traits_macros.h"
#include "media/base/video_frame.h"
#include "media/mojo/mojom/media_types.mojom.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/gfx/geometry/mojom/geometry_mojom_traits.h"
#include "ui/gfx/ipc/color/gfx_param_traits.h"
@@ -62,12 +61,12 @@ struct StructTraits<media::mojom::VideoFrameDataView,
return input->ColorSpace();
}
- static const base::Optional<gfx::HDRMetadata>& hdr_metadata(
+ static const absl::optional<gfx::HDRMetadata>& hdr_metadata(
const scoped_refptr<media::VideoFrame>& input) {
return input->hdr_metadata();
}
- static const base::Optional<gpu::VulkanYCbCrInfo>& ycbcr_info(
+ static const absl::optional<gpu::VulkanYCbCrInfo>& ycbcr_info(
const scoped_refptr<media::VideoFrame>& input) {
return input->ycbcr_info();
}