Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(520)

Unified Diff: media/video/video_decode_accelerator.h

Issue 7361010: Enable fire-and-forget Destroy of HW video decoder, and misc other improvements. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: vrk CR responses. Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/video/video_decode_accelerator.h
diff --git a/media/video/video_decode_accelerator.h b/media/video/video_decode_accelerator.h
index 85eef242f4229de69a2dbd8194caa414b5dddd4a..55d1ad12e188dbbfc3e462cfbe88ba4ea858dafc 100644
--- a/media/video/video_decode_accelerator.h
+++ b/media/video/video_decode_accelerator.h
@@ -161,10 +161,12 @@ enum VideoColorFormat {
// Video decoder interface.
// This interface is extended by the various components that ultimately
// implement the backend of PPB_VideoDecode_Dev.
-class VideoDecodeAccelerator {
+//
+// No thread-safety guarantees are implied by the use of RefCountedThreadSafe
+// below.
+class VideoDecodeAccelerator
+ : public base::RefCountedThreadSafe<VideoDecodeAccelerator> {
public:
- virtual ~VideoDecodeAccelerator();
-
// Enumeration of potential errors generated by the API.
// TODO(fischman): these errors are a bad match for both what OMX generates
// and for what the plugin wants. Overhaul this list with a more useful set.
@@ -226,9 +228,6 @@ class VideoDecodeAccelerator {
// Reset completion callback.
virtual void NotifyResetDone() = 0;
- // Destroy completion callback.
- virtual void NotifyDestroyDone() = 0;
-
// Callback to notify about decoding errors.
virtual void NotifyError(Error error) = 0;
};
@@ -279,11 +278,14 @@ class VideoDecodeAccelerator {
virtual void Reset() = 0;
// Destroys the decoder: all pending inputs are dropped immediately and the
- // component is freed, followed by NotifyDestroyDone being called on the
- // client. After this is called no other calls may be made on the decoder,
- // and after NotifyDestroyDone is called no callbacks will be made by the
- // decoder on the client.
+ // component is freed. This call may asynchornously free system resources,
+ // but its client-visible effects are synchronous. After this method returns
+ // no more callbacks will be made on the client.
virtual void Destroy() = 0;
+
+ protected:
+ friend class base::RefCountedThreadSafe<VideoDecodeAccelerator>;
+ virtual ~VideoDecodeAccelerator();
};
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698