[M120 Migration][MM] Framerate calculation
[platform/framework/web/chromium-efl.git] / media / mojo / mojom / video_encoder_info_mojom_traits.cc
1 // Copyright 2019 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/mojo/mojom/video_encoder_info_mojom_traits.h"
6
7 #include "media/mojo/mojom/video_encoder_info.mojom.h"
8
9 namespace mojo {
10
11 // static
12 bool StructTraits<media::mojom::ResolutionBitrateLimitDataView,
13                   media::ResolutionBitrateLimit>::
14     Read(media::mojom::ResolutionBitrateLimitDataView data,
15          media::ResolutionBitrateLimit* out) {
16   if (!data.ReadFrameSize(&out->frame_size))
17     return false;
18   out->min_start_bitrate_bps = data.min_start_bitrate_bps();
19   out->min_bitrate_bps = data.min_bitrate_bps();
20   out->max_bitrate_bps = data.max_bitrate_bps();
21   return true;
22 }
23
24 // static
25 bool StructTraits<
26     media::mojom::VideoEncoderInfoDataView,
27     media::VideoEncoderInfo>::Read(media::mojom::VideoEncoderInfoDataView data,
28                                    media::VideoEncoderInfo* out) {
29   out->supports_native_handle = data.supports_native_handle();
30   out->has_trusted_rate_controller = data.has_trusted_rate_controller();
31   out->is_hardware_accelerated = data.is_hardware_accelerated();
32   out->supports_simulcast = data.supports_simulcast();
33   out->reports_average_qp = data.reports_average_qp();
34   out->apply_alignment_to_all_simulcast_layers =
35       data.apply_alignment_to_all_simulcast_layers();
36   out->requested_resolution_alignment = data.requested_resolution_alignment();
37
38   if (!data.ReadImplementationName(&out->implementation_name))
39     return false;
40
41   if (data.has_frame_delay())
42     out->frame_delay = data.frame_delay();
43   else
44     out->frame_delay.reset();
45
46   if (data.has_input_capacity())
47     out->input_capacity = data.input_capacity();
48   else
49     out->input_capacity.reset();
50
51   base::span<std::vector<uint8_t>> fps_allocation(out->fps_allocation);
52   if (!data.ReadFpsAllocation(&fps_allocation))
53     return false;
54
55   if (!data.ReadResolutionBitrateLimits(&out->resolution_bitrate_limits))
56     return false;
57
58   return true;
59 }
60 }  // namespace mojo