// 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_CHROMEOS_FRAME_RESOURCE_CONVERTER_H_ #define MEDIA_GPU_CHROMEOS_FRAME_RESOURCE_CONVERTER_H_ #include "base/memory/scoped_refptr.h" #include "media/gpu/media_gpu_export.h" #include "ui/gfx/generic_shared_memory_id.h" namespace base { class Location; class SequencedTaskRunner; } // namespace base namespace media { class FrameResource; class VideoFrame; // This interface is at the end of VideoDecoderPipeline to convert // FrameResources to VideoFrames. // // A FrameResourceConverter is expected to be used as follows: // // 1) It can be constructed on any sequence. The first method call after // construction must be Initialize() which can happen on any sequence and // should only be called once. // // 2) Other methods must be called on the |parent_task_runner| passed to // Initialize(). // // 3) Destruction must occur through // std::default_delete<FrameResourceConverter> on that same // |parent_task_runner| (unless Initialize() was never called, in which case, // the destruction can occur on any sequence). class FrameResourceConverter { … }; } // namespace media namespace std { // Specialize std::default_delete to call Destroy(). template <> struct MEDIA_GPU_EXPORT default_delete<media::FrameResourceConverter> { … }; } // namespace std #endif // MEDIA_GPU_CHROMEOS_FRAME_RESOURCE_CONVERTER_H_