// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_CAST_ENCODING_EXTERNAL_VIDEO_ENCODER_H_ #define MEDIA_CAST_ENCODING_EXTERNAL_VIDEO_ENCODER_H_ #include <stddef.h> #include <stdint.h> #include <memory> #include <string_view> #include "base/memory/raw_ref.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "media/cast/cast_environment.h" #include "media/cast/encoding/size_adaptable_video_encoder_base.h" #include "media/cast/encoding/video_encoder.h" #include "media/video/video_encode_accelerator.h" #include "ui/gfx/geometry/size.h" namespace media { class VideoEncoderMetricsProvider; namespace cast { // Cast MAIN thread proxy to the internal media::VideoEncodeAccelerator // implementation running on a separate thread. Encodes media::VideoFrames and // emits media::cast::EncodedFrames. class ExternalVideoEncoder final : public VideoEncoder { … }; // An implementation of SizeAdaptableVideoEncoderBase to proxy for // ExternalVideoEncoder instances. class SizeAdaptableExternalVideoEncoder final : public SizeAdaptableVideoEncoderBase { … }; // A utility class for examining the sequence of frames sent to an external // encoder, and returning an estimate of the what the software VP8 encoder would // have used for a quantizer value when encoding each frame. The quantizer // value is related to the complexity of the content of the frame. class QuantizerEstimator { … }; } // namespace cast } // namespace media #endif // MEDIA_CAST_ENCODING_EXTERNAL_VIDEO_ENCODER_H_