// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. module media.mojom; import "media/mojo/mojom/media_types.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; // The following mojom classes are the corresponding classes in webrtc project. // See third_party/webrtc/api/video_codecs/video_encoder.h for details. // TODO(crbug.com/382015342): Add missing max_framerate_numerator and // max_framerate_denominator as member to the corresponding class in webrtc. struct ResolutionRateLimit { // Maximum frame size in width and height. gfx.mojom.Size frame_size; // Minimum allowed start encoding bitrate in bps. int32 min_start_bitrate_bps; // Minimum allowed encoding bitrate in bps. int32 min_bitrate_bps; // Maximum allowed encoding bitrate in bps. int32 max_bitrate_bps; // Maximum allowed encoding frame rate's numerator. uint32 max_framerate_numerator; // Maximum allowed encoding frame rate's denominator. uint32 max_framerate_denominator; }; struct VideoEncoderInfo { string implementation_name; int32? frame_delay; int32? input_capacity; bool supports_native_handle; bool has_trusted_rate_controller; bool is_hardware_accelerated; bool supports_simulcast; bool reports_average_qp; uint32 requested_resolution_alignment; bool apply_alignment_to_all_simulcast_layers; // True if encoder supports frame size change without re-initialization. bool supports_frame_size_change = false; // Maximum number of manual reference buffers supported by encoder. uint64 number_of_manual_reference_buffers; // This array size is equal to media::VideoEncoderInfo::kMaxSpatialLayers. array, 5> fps_allocation; array resolution_rate_limits; // Pixel formats supported by encoder on the GPU without readback. array gpu_supported_pixel_formats; // True if encoder can handle shared image without readback. bool supports_gpu_shared_images; };