| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MEDIA_GPU_VP9_PICTURE_H_ |
| #define MEDIA_GPU_VP9_PICTURE_H_ |
| |
| #include <memory> |
| |
| #include "base/macros.h" |
| #include "media/filters/vp9_parser.h" |
| #include "media/gpu/codec_picture.h" |
| #include "media/video/video_encode_accelerator.h" |
| #include "third_party/abseil-cpp/absl/types/optional.h" |
| |
| namespace media { |
| |
| class V4L2VP9Picture; |
| class VaapiVP9Picture; |
| |
| class VP9Picture : public CodecPicture { |
| public: |
| VP9Picture(); |
| |
| // TODO(tmathmeyer) remove these and just use static casts everywhere. |
| virtual V4L2VP9Picture* AsV4L2VP9Picture(); |
| virtual VaapiVP9Picture* AsVaapiVP9Picture(); |
| |
| // Create a duplicate instance and copy the data to it. It is used to support |
| // VP9 show_existing_frame feature. Return the scoped_refptr pointing to the |
| // duplicate instance, or nullptr on failure. |
| scoped_refptr<VP9Picture> Duplicate(); |
| |
| std::unique_ptr<Vp9FrameHeader> frame_hdr; |
| |
| absl::optional<Vp9Metadata> metadata_for_encoding; |
| |
| protected: |
| ~VP9Picture() override; |
| |
| private: |
| // Create a duplicate instance. |
| virtual scoped_refptr<VP9Picture> CreateDuplicate(); |
| |
| DISALLOW_COPY_AND_ASSIGN(VP9Picture); |
| }; |
| |
| } // namespace media |
| |
| #endif // MEDIA_GPU_VP9_PICTURE_H_ |