// Copyright 2018 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_VAAPI_VAAPI_VIDEO_ENCODER_DELEGATE_H_ #define MEDIA_GPU_VAAPI_VAAPI_VIDEO_ENCODER_DELEGATE_H_ #include <va/va.h> #include <optional> #include <vector> #include "base/containers/queue.h" #include "base/functional/callback.h" #include "base/memory/scoped_refptr.h" #include "base/sequence_checker.h" #include "base/time/time.h" #include "media/base/video_bitrate_allocation.h" #include "media/base/video_codecs.h" #include "media/video/video_encode_accelerator.h" #include "media/video/video_encoder_info.h" #include "ui/gfx/geometry/size.h" namespace media { struct BitstreamBufferMetadata; class CodecPicture; class ScopedVABuffer; class VideoFrame; class VaapiWrapper; // An VaapiVideoEncoderDelegate performs high-level, platform-independent // encoding process tasks, such as managing codec state, reference frames, etc., // but may require support from an external accelerator (typically a hardware // accelerator) to offload some stages of the actual encoding process, using // the parameters that the Delegate prepares beforehand. // // For each frame to be encoded, clients provide an EncodeJob object to be set // up by a Delegate subclass with job parameters, and execute the job // afterwards. Any resources required for the job are also provided by the // clients, and associated with the EncodeJob object. class VaapiVideoEncoderDelegate { … }; } // namespace media #endif // MEDIA_GPU_VAAPI_VAAPI_VIDEO_ENCODER_DELEGATE_H_