1 // Copyright 2023 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.
5 #ifndef MEDIA_MOJO_SERVICES_MOJO_VIDEO_ENCODER_METRICS_PROVIDER_SERVICE_H_
6 #define MEDIA_MOJO_SERVICES_MOJO_VIDEO_ENCODER_METRICS_PROVIDER_SERVICE_H_
8 #include "media/mojo/mojom/video_encoder_metrics_provider.mojom.h"
9 #include "media/mojo/services/media_mojo_export.h"
10 #include "services/metrics/public/cpp/ukm_source_id.h"
14 // See mojom::VideoEncoderMetricsProvider for documentation.
15 class MEDIA_MOJO_EXPORT MojoVideoEncoderMetricsProviderService
16 : public mojom::VideoEncoderMetricsProvider {
19 ukm::SourceId source_id,
20 mojo::PendingReceiver<mojom::VideoEncoderMetricsProvider> receiver);
22 ~MojoVideoEncoderMetricsProviderService() override;
24 // mojom::VideoEncoderMetricsProvider implementation.
25 void Initialize(uint64_t encoder_id,
26 mojom::VideoEncoderUseCase encoder_use_case,
27 VideoCodecProfile codec_profile,
28 const gfx::Size& encode_size,
29 bool is_hardware_encoder,
30 SVCScalabilityMode svc_mode) override;
31 void SetEncodedFrameCount(uint64_t encoder_id,
32 uint64_t num_encoded_frames) override;
33 void SetError(uint64_t encoder_id, const EncoderStatus& status) override;
34 void Complete(uint64_t encoder_id) override;
37 class EncoderMetricsHandler;
39 explicit MojoVideoEncoderMetricsProviderService(ukm::SourceId source_id);
41 const ukm::SourceId source_id_;
43 std::map<uint64_t, EncoderMetricsHandler> encoders_;
46 #endif // MEDIA_MOJO_SERVICES_VIDEO_ENCODER_METRICS_PROVIDER_H_