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

Unified Diff: media/gpu/v4l2_jpeg_decode_accelerator.h

Issue 2559423002: media/gpu: switch v4l2_jpeg_decode_accelerator to use multi-planar APIs (Closed)
Patch Set: add static_assert for kMaxInputPlanes Created 4 years 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/gpu/v4l2_jpeg_decode_accelerator.h
diff --git a/media/gpu/v4l2_jpeg_decode_accelerator.h b/media/gpu/v4l2_jpeg_decode_accelerator.h
index b2824946b9a812bc15c0bc6d8d67071692024417..34ab7b0b99b002aff83afad7f41267aafb4e8b52 100644
--- a/media/gpu/v4l2_jpeg_decode_accelerator.h
+++ b/media/gpu/v4l2_jpeg_decode_accelerator.h
@@ -42,12 +42,17 @@ class MEDIA_GPU_EXPORT V4L2JpegDecodeAccelerator
bool IsSupported() override;
private:
+ // Input pixel format (i.e. V4L2_PIX_FMT_JPEG) has only one physical plane.
+ static const uint32_t kMaxInputPlanes = 1;
+ // Ouput pixel format may have at most three physical planes.
+ static const uint32_t kMaxOutputPlanes = 3;
+
// Record for input/output buffers.
struct BufferRecord {
BufferRecord();
~BufferRecord();
- void* address; // mmap() address.
- size_t length; // mmap() length.
+ void* address[kMaxOutputPlanes]; // mmap() address.
+ size_t length[kMaxOutputPlanes]; // mmap() length.
// Set true during QBUF and DQBUF. |address| will be accessed by hardware.
bool at_device;
@@ -82,6 +87,14 @@ class MEDIA_GPU_EXPORT V4L2JpegDecodeAccelerator
void DestroyInputBuffers();
void DestroyOutputBuffers();
+ // Convert |src_buffer| to I420 and copy the result to |dst_frame|.
+ // The function currently accepts the following format as |src_pixelformat|:
+ // - All splane formats that libyuv::ConvertToI420 can handle.
+ // - V4L2_YUV_420M
+ // - V4L2_YUV_422M
Pawel Osciak 2016/12/20 05:19:12 s/V4L2_YUV_420M/V4L2_PIX_FMT_YUV420M/ s/V4L2_YUV_4
jcliang 2016/12/20 08:33:22 Done.
+ bool ConvertOutputImage(const BufferRecord& output_buffer,
+ const scoped_refptr<VideoFrame>& dst_frame);
+
// Return the number of input/output buffers enqueued to the device.
size_t InputBufferQueuedCount();
size_t OutputBufferQueuedCount();
@@ -127,6 +140,9 @@ class MEDIA_GPU_EXPORT V4L2JpegDecodeAccelerator
// Pixel format of output buffer.
uint32_t output_buffer_pixelformat_;
+ // Number of physical planes the output buffers have.
+ uint32_t output_buffer_num_planes_;
Pawel Osciak 2016/12/20 05:19:12 s/uint32_t/size_t/
jcliang 2016/12/20 08:33:22 Done.
+
// ChildThread's task runner.
scoped_refptr<base::SingleThreadTaskRunner> child_task_runner_;

Powered by Google App Engine
This is Rietveld 408576698