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

Unified Diff: content/common/gpu/media/vaapi_jpeg_decoder.h

Issue 825843002: Add JPEG decoder for VAAPI JPEG decode acceleration (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mjpeg-vaapi-jpeg-parser
Patch Set: rebase+revise due to parser cl Created 5 years, 11 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: content/common/gpu/media/vaapi_jpeg_decoder.h
diff --git a/content/common/gpu/media/vaapi_jpeg_decoder.h b/content/common/gpu/media/vaapi_jpeg_decoder.h
new file mode 100644
index 0000000000000000000000000000000000000000..27ec5698abf2cbf1eeed55e94675c8657f067c32
--- /dev/null
+++ b/content/common/gpu/media/vaapi_jpeg_decoder.h
@@ -0,0 +1,79 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
wuchengli 2015/01/12 09:08:52 2015 :)
kcwu 2015/01/16 15:12:55 Done.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// This file contains an implementation of a class that provides JPEG decode
wuchengli 2015/01/12 09:08:52 This should be removed or merged with VaapiJpegDec
kcwu 2015/01/16 15:12:55 Done This is modified from vaapi_h264_decoder.h ;)
+// support for use with VAAPI hardware video decode acceleration on Intel
+// systems.
+
+#ifndef CONTENT_COMMON_GPU_MEDIA_VAAPI_JPEG_DECODER_H_
+#define CONTENT_COMMON_GPU_MEDIA_VAAPI_JPEG_DECODER_H_
+
+#include <vector>
+
+#include "base/callback_forward.h"
+#include "base/memory/linked_ptr.h"
Owen Lin 2015/01/13 06:17:58 not used ?
kcwu 2015/01/16 15:12:55 Done.
+#include "base/memory/ref_counted.h"
Owen Lin 2015/01/13 06:17:58 not used?
kcwu 2015/01/16 15:12:55 Done.
+#include "base/memory/scoped_ptr.h"
+#include "content/common/gpu/media/vaapi_wrapper.h"
+#include "media/base/limits.h"
wuchengli 2015/01/12 09:08:52 Move to .cc?
kcwu 2015/01/16 15:12:54 Done.
+#include "media/filters/jpeg_parser.h"
wuchengli 2015/01/12 09:08:52 move to .cc? Please check every #include here.
kcwu 2015/01/16 15:12:55 Done.
+
+namespace content {
+
+// TODO(kcwu) comment
wuchengli 2015/01/12 09:08:52 Remove TODO and add the documentation.
kcwu 2015/01/16 15:12:55 Done.
+// An JPEG decoder that utilizes VA-API. Provides features not supported by
+// the VA-API userspace library (libva), like stream parsing.
+//
+// Provides functionality to allow plugging VAAPI HW acceleration into the
+// JDA framework.
+//
+// Clients of this class are expected to pass H264 Annex-B byte stream and
wuchengli 2015/01/12 09:08:52 update the comments
kcwu 2015/01/16 15:12:55 Done.
+// will receive decoded surfaces via client-provided |OutputPicCB|.
+//
+// This class must be created, called and destroyed on a single thread, and
+// does nothing internally on any other thread.
+class CONTENT_EXPORT VaapiJpegDecoder {
+ public:
+ enum DecodeStatus {
+ SUCCESS = 0,
+ PARSE_ERROR,
+ VAAPI_ERROR,
wuchengli 2015/01/12 09:08:52 Document these errors.
kcwu 2015/01/16 15:12:54 Done.
+ };
+
+ // Callback to report errors for UMA purposes, not used to return errors
+ // to clients.
+ typedef base::Callback<void(DecodeStatus error)> ReportErrorToUmaCB;
wuchengli 2015/01/12 09:08:52 Remove all UMA code because this needs the corresp
kcwu 2015/01/16 15:12:55 Done.
+
+ // |vaapi_wrapper| should be initialized.
+ // |output_pic_cb| notifies the client a surface is to be displayed.
wuchengli 2015/01/12 09:08:52 remove
kcwu 2015/01/16 15:12:54 Done.
+ // |report_error_to_uma_cb| called on errors for UMA purposes, not used
+ // to report errors to clients.
+ VaapiJpegDecoder(VaapiWrapper* vaapi_wrapper,
+ const ReportErrorToUmaCB& report_error_to_uma_cb);
+
+ ~VaapiJpegDecoder();
+
+ DecodeStatus Decode(const uint8* buffer,
wuchengli 2015/01/12 09:08:52 Add documentation for this and DecodeDone.
kcwu 2015/01/16 15:12:55 Done.
+ size_t buffer_size,
+ gfx::Size* output_size,
+ VASurfaceID* surface);
+
+ void DecodeDone();
+
+ private:
+ // Unused VA surface, ready to be reused.
+ scoped_refptr<VASurface> available_va_surface_;
Owen Lin 2015/01/13 06:17:58 Not used?
kcwu 2015/01/16 15:12:55 Done.
+
+ VaapiWrapper* vaapi_wrapper_;
+
+ // Called to report decoding error to UMA, not used to indicate errors
+ // to clients.
+ ReportErrorToUmaCB report_error_to_uma_cb_;
+
+ DISALLOW_COPY_AND_ASSIGN(VaapiJpegDecoder);
+};
+
+} // namespace content
+
+#endif // CONTENT_COMMON_GPU_MEDIA_VAAPI_JPEG_DECODER_H_

Powered by Google App Engine
This is Rietveld 408576698