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

Unified Diff: media/video/jpeg_decode_accelerator.h

Issue 1124423008: MJPEG acceleration for video capture using VAAPI, the GPU and IPC part (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mjpeg-1-media
Patch Set: split out host part Created 5 years, 6 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/jpeg_decode_accelerator.h
diff --git a/media/video/jpeg_decode_accelerator.h b/media/video/jpeg_decode_accelerator.h
index 83c59403134c3b32da3eab711d30415abd70449f..0bcc452767d8f0027a39e9d90191710486f26998 100644
--- a/media/video/jpeg_decode_accelerator.h
+++ b/media/video/jpeg_decode_accelerator.h
@@ -17,7 +17,7 @@ namespace media {
// The output color format is I420. The decoder will convert the color format
// to I420 if the color space or subsampling does not match that and if it is
// capable of doing so. The client is responsible for allocating buffers and
-// keeps the ownership of them. All methods must be called on the same thread.
+// keeps the ownership of them.
// The intended use case of this interface is decoding MJPEG images coming
// from camera capture. It can also be used for normal still JPEG image
// decoding, but normal JPEG images may use more JPEG features that may not be
@@ -28,6 +28,8 @@ class MEDIA_EXPORT JpegDecodeAccelerator {
// Enumeration of decode errors generated by NotifyError callback.
enum Error {
+ // No error. Decode succeeded.
+ NO_ERROR,
// Invalid argument was passed to an API method, e.g. the output buffer is
// too small, JPEG width/height are too big for JDA.
INVALID_ARGUMENT,
@@ -71,6 +73,12 @@ class MEDIA_EXPORT JpegDecodeAccelerator {
virtual ~Client() {}
};
+ // Destroys the decoder: all pending inputs are dropped immediately. This
+ // call may asynchronously free system resources, but its client-visible
+ // effects are synchronous. After destructor returns, no more callbacks
+ // will be made on the client.
+ virtual ~JpegDecodeAccelerator() = 0;
+
// JPEG decoder functions.
// Initializes the JPEG decoder. Should be called once per decoder
@@ -78,7 +86,7 @@ class MEDIA_EXPORT JpegDecodeAccelerator {
// is successful.
// Parameters:
// |client| is the Client interface for decode callback. The provided
- // pointer must be valid until Destroy() is called.
+ // pointer must be valid until destructor is called.
virtual bool Initialize(Client* client) = 0;
// Decodes the given bitstream buffer that contains one JPEG picture. It
@@ -97,38 +105,11 @@ class MEDIA_EXPORT JpegDecodeAccelerator {
// Ownership of the |bitstream_buffer| and |video_frame| remains with the
// client. The client is not allowed to deallocate them before
// VideoFrameReady or NotifyError() is invoked for given id of
- // |bitstream_buffer|, or Destroy() returns.
+ // |bitstream_buffer|, or destructor returns.
virtual void Decode(const BitstreamBuffer& bitstream_buffer,
const scoped_refptr<media::VideoFrame>& video_frame) = 0;
-
- // Destroys the decoder: all pending inputs are dropped immediately. This
- // call may asynchronously free system resources, but its client-visible
- // effects are synchronous. After this method returns, no more callbacks
- // will be made on the client. Deletes |this| unconditionally, so make sure
- // to drop all pointers to it!
- virtual void Destroy() = 0;
-
- protected:
- // Do not delete directly; use Destroy() or own it with a scoped_ptr, which
- // will Destroy() it properly by default.
- virtual ~JpegDecodeAccelerator();
};
} // namespace media
-namespace base {
-
-template <class T>
-struct DefaultDeleter;
-
-// Specialize DefaultDeleter so that scoped_ptr<JpegDecodeAccelerator> always
-// uses "Destroy()" instead of trying to use the destructor.
-template <>
-struct MEDIA_EXPORT DefaultDeleter<media::JpegDecodeAccelerator> {
- public:
- void operator()(void* jpeg_decode_accelerator) const;
-};
-
-} // namespace base
-
#endif // MEDIA_VIDEO_JPEG_DECODE_ACCELERATOR_H_

Powered by Google App Engine
This is Rietveld 408576698