chromium/media/gpu/windows/h264_video_rate_control_wrapper.h

// Copyright 2024 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_GPU_WINDOWS_H264_VIDEO_RATE_CONTROL_WRAPPER_H_
#define MEDIA_GPU_WINDOWS_H264_VIDEO_RATE_CONTROL_WRAPPER_H_

#include "media/gpu/windows/video_rate_control_wrapper.h"

namespace media {
struct H264RateControllerSettings;
typedef H264RateControllerSettings H264RateControlConfigRTC;
struct H264FrameParamsRTC;
class H264RateCtrlRTC;

using H264RateControl =
    VideoRateControlWrapperInternal<H264RateControlConfigRTC,
                                    H264RateCtrlRTC,
                                    H264FrameParamsRTC>;

template <>
int H264RateControl::GetLoopfilterLevel() const;

template <>
void H264RateControl::PostEncodeUpdate(uint64_t encoded_frame_size,
                                       const FrameParams& frame_params);
template <>
H264RateControlConfigRTC H264RateControl::ConvertControlConfig(
    const RateControlConfig& config);

template <>
H264FrameParamsRTC H264RateControl::ConvertFrameParams(
    const FrameParams& frame_params);

}  // namespace media

#endif  // MEDIA_GPU_WINDOWS_H264_VIDEO_RATE_CONTROL_WRAPPER_H_