vp8_vaapi_video_decoder_delegate.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef MEDIA_GPU_VAAPI_VP8_VAAPI_VIDEO_DECODER_DELEGATE_H_
  5. #define MEDIA_GPU_VAAPI_VP8_VAAPI_VIDEO_DECODER_DELEGATE_H_
  6. #include "base/memory/scoped_refptr.h"
  7. #include "base/sequence_checker.h"
  8. #include "media/gpu/vaapi/vaapi_video_decoder_delegate.h"
  9. #include "media/gpu/vp8_decoder.h"
  10. #include "media/parsers/vp8_parser.h"
  11. namespace media {
  12. class ScopedVABuffer;
  13. class VP8Picture;
  14. class VP8VaapiVideoDecoderDelegate : public VP8Decoder::VP8Accelerator,
  15. public VaapiVideoDecoderDelegate {
  16. public:
  17. VP8VaapiVideoDecoderDelegate(DecodeSurfaceHandler<VASurface>* const vaapi_dec,
  18. scoped_refptr<VaapiWrapper> vaapi_wrapper);
  19. VP8VaapiVideoDecoderDelegate(const VP8VaapiVideoDecoderDelegate&) = delete;
  20. VP8VaapiVideoDecoderDelegate& operator=(const VP8VaapiVideoDecoderDelegate&) =
  21. delete;
  22. ~VP8VaapiVideoDecoderDelegate() override;
  23. // VP8Decoder::VP8Accelerator implementation.
  24. scoped_refptr<VP8Picture> CreateVP8Picture() override;
  25. bool SubmitDecode(scoped_refptr<VP8Picture> picture,
  26. const Vp8ReferenceFrameVector& reference_frames) override;
  27. bool OutputPicture(scoped_refptr<VP8Picture> pic) override;
  28. // VaapiVideoDecoderDelegate impl.
  29. void OnVAContextDestructionSoon() override;
  30. private:
  31. std::unique_ptr<ScopedVABuffer> iq_matrix_;
  32. std::unique_ptr<ScopedVABuffer> prob_buffer_;
  33. std::unique_ptr<ScopedVABuffer> picture_params_;
  34. std::unique_ptr<ScopedVABuffer> slice_params_;
  35. };
  36. } // namespace media
  37. #endif // MEDIA_GPU_VAAPI_VP8_VAAPI_VIDEO_DECODER_DELEGATE_H_