Index: media/mojo/services/mojo_decryptor_service.h |
diff --git a/media/mojo/services/mojo_decryptor_service.h b/media/mojo/services/mojo_decryptor_service.h |
index b5bf2ff2a1284cf75b527f89100491fdbc56e56e..23ddc543775f51f36a4375771ade663b5c57cfc5 100644 |
--- a/media/mojo/services/mojo_decryptor_service.h |
+++ b/media/mojo/services/mojo_decryptor_service.h |
@@ -5,6 +5,11 @@ |
#ifndef MEDIA_MOJO_SERVICES_MOJO_DECRYPTOR_SERVICE_H_ |
#define MEDIA_MOJO_SERVICES_MOJO_DECRYPTOR_SERVICE_H_ |
+#include <stddef.h> |
+#include <stdint.h> |
+ |
+#include <unordered_map> |
+ |
#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/weak_ptr.h" |
@@ -53,6 +58,8 @@ class MojoDecryptorService : public interfaces::Decryptor { |
const DecryptAndDecodeVideoCallback& callback) final; |
void ResetDecoder(interfaces::DemuxerStream::Type stream_type) final; |
void DeinitializeDecoder(interfaces::DemuxerStream::Type stream_type) final; |
+ void ReleaseSharedBuffer(mojo::ScopedSharedBufferHandle buffer, |
+ uint64_t buffer_size) final; |
private: |
// Callback executed once Decrypt() is done. |
@@ -92,6 +99,11 @@ class MojoDecryptorService : public interfaces::Decryptor { |
scoped_refptr<MediaKeys> cdm_; |
media::Decryptor* decryptor_; |
+ // Keep a reference to VideoFrames until ReleaseSharedBuffer() is called |
+ // to release it. |
+ std::unordered_map<MojoHandle, scoped_refptr<VideoFrame>> |
+ in_use_video_frames_; |
+ |
base::WeakPtr<MojoDecryptorService> weak_this_; |
base::WeakPtrFactory<MojoDecryptorService> weak_factory_; |