Index: content/common/gpu/media/v4l2_jpeg_decode_accelerator.h |
diff --git a/content/common/gpu/media/v4l2_jpeg_decode_accelerator.h b/content/common/gpu/media/v4l2_jpeg_decode_accelerator.h |
deleted file mode 100644 |
index a7e0f65d00dc88b1c949cf4f81e2fc7620fc5d70..0000000000000000000000000000000000000000 |
--- a/content/common/gpu/media/v4l2_jpeg_decode_accelerator.h |
+++ /dev/null |
@@ -1,182 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CONTENT_COMMON_GPU_MEDIA_V4L2_JPEG_DECODE_ACCELERATOR_H_ |
-#define CONTENT_COMMON_GPU_MEDIA_V4L2_JPEG_DECODE_ACCELERATOR_H_ |
- |
-#include <stddef.h> |
-#include <stdint.h> |
- |
-#include <queue> |
-#include <vector> |
- |
-#include "base/macros.h" |
-#include "base/memory/linked_ptr.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/single_thread_task_runner.h" |
-#include "base/threading/thread.h" |
-#include "content/common/content_export.h" |
-#include "content/common/gpu/media/shared_memory_region.h" |
-#include "content/common/gpu/media/v4l2_device.h" |
-#include "media/base/bitstream_buffer.h" |
-#include "media/base/video_frame.h" |
-#include "media/video/jpeg_decode_accelerator.h" |
- |
-namespace content { |
- |
-class CONTENT_EXPORT V4L2JpegDecodeAccelerator |
- : public media::JpegDecodeAccelerator { |
- public: |
- V4L2JpegDecodeAccelerator( |
- const scoped_refptr<V4L2Device>& device, |
- const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner); |
- ~V4L2JpegDecodeAccelerator() override; |
- |
- // media::JpegDecodeAccelerator implementation. |
- bool Initialize(Client* client) override; |
- void Decode(const media::BitstreamBuffer& bitstream_buffer, |
- const scoped_refptr<media::VideoFrame>& video_frame) override; |
- bool IsSupported() override; |
- |
- private: |
- // Record for input/output buffers. |
- struct BufferRecord { |
- BufferRecord(); |
- ~BufferRecord(); |
- void* address; // mmap() address. |
- size_t length; // mmap() length. |
- |
- // Set true during QBUF and DQBUF. |address| will be accessed by hardware. |
- bool at_device; |
- }; |
- |
- // Job record. Jobs are processed in a FIFO order. This is separate from |
- // BufferRecord of input, because a BufferRecord of input may be returned |
- // before we dequeue the corresponding output buffer. It can't always be |
- // associated with a BufferRecord of output immediately either, because at |
- // the time of submission we may not have one available (and don't need one |
- // to submit input to the device). |
- struct JobRecord { |
- JobRecord(const media::BitstreamBuffer& bitstream_buffer, |
- scoped_refptr<media::VideoFrame> video_frame); |
- ~JobRecord(); |
- |
- // Input image buffer ID. |
- int32_t bitstream_buffer_id; |
- // Memory mapped from |bitstream_buffer|. |
- SharedMemoryRegion shm; |
- // Output frame buffer. |
- scoped_refptr<media::VideoFrame> out_frame; |
- }; |
- |
- void EnqueueInput(); |
- void EnqueueOutput(); |
- void Dequeue(); |
- bool EnqueueInputRecord(); |
- bool EnqueueOutputRecord(); |
- bool CreateInputBuffers(); |
- bool CreateOutputBuffers(); |
- void DestroyInputBuffers(); |
- void DestroyOutputBuffers(); |
- |
- // Return the number of input/output buffers enqueued to the device. |
- size_t InputBufferQueuedCount(); |
- size_t OutputBufferQueuedCount(); |
- |
- // Return true if input buffer size is not enough. |
- bool ShouldRecreateInputBuffers(); |
- // Destroy and create input buffers. Return false on error. |
- bool RecreateInputBuffers(); |
- // Destroy and create output buffers. Return false on error. |
- bool RecreateOutputBuffers(); |
- |
- void VideoFrameReady(int32_t bitstream_buffer_id); |
- void NotifyError(int32_t bitstream_buffer_id, Error error); |
- void PostNotifyError(int32_t bitstream_buffer_id, Error error); |
- |
- // Run on |decoder_thread_| to enqueue the coming frame. |
- void DecodeTask(std::unique_ptr<JobRecord> job_record); |
- |
- // Run on |decoder_thread_| to dequeue last frame and enqueue next frame. |
- // This task is triggered by DevicePollTask. |event_pending| means that device |
- // has resolution change event or pixelformat change event. |
- void ServiceDeviceTask(bool event_pending); |
- |
- // Dequeue source change event. Return false on error. |
- bool DequeueSourceChangeEvent(); |
- |
- // Start/Stop |device_poll_thread_|. |
- void StartDevicePoll(); |
- bool StopDevicePoll(); |
- |
- // Run on |device_poll_thread_| to wait for device events. |
- void DevicePollTask(); |
- |
- // Run on |decoder_thread_| to destroy input and output buffers. |
- void DestroyTask(); |
- |
- // The number of input buffers and output buffers. |
- const size_t kBufferCount = 2; |
- |
- // Coded size of output buffer. |
- gfx::Size output_buffer_coded_size_; |
- |
- // Pixel format of output buffer. |
- uint32_t output_buffer_pixelformat_; |
- |
- // ChildThread's task runner. |
- scoped_refptr<base::SingleThreadTaskRunner> child_task_runner_; |
- |
- // GPU IO task runner. |
- scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; |
- |
- // The client of this class. |
- Client* client_; |
- |
- // The V4L2Device this class is operating upon. |
- scoped_refptr<V4L2Device> device_; |
- |
- // Thread to communicate with the device. |
- base::Thread decoder_thread_; |
- // Decode task runner. |
- scoped_refptr<base::SingleThreadTaskRunner> decoder_task_runner_; |
- // Thread used to poll the V4L2 for events only. |
- base::Thread device_poll_thread_; |
- // Device poll task runner. |
- scoped_refptr<base::SingleThreadTaskRunner> device_poll_task_runner_; |
- |
- // All the below members except |weak_factory_| are accessed from |
- // |decoder_thread_| only (if it's running). |
- std::queue<linked_ptr<JobRecord>> input_jobs_; |
- std::queue<linked_ptr<JobRecord>> running_jobs_; |
- |
- // Input queue state. |
- bool input_streamon_; |
- // Mapping of int index to an input buffer record. |
- std::vector<BufferRecord> input_buffer_map_; |
- // Indices of input buffers ready to use; LIFO since we don't care about |
- // ordering. |
- std::vector<int> free_input_buffers_; |
- |
- // Output queue state. |
- bool output_streamon_; |
- // Mapping of int index to an output buffer record. |
- std::vector<BufferRecord> output_buffer_map_; |
- // Indices of output buffers ready to use; LIFO since we don't care about |
- // ordering. |
- std::vector<int> free_output_buffers_; |
- |
- // Weak factory for producing weak pointers on the child thread. |
- base::WeakPtrFactory<V4L2JpegDecodeAccelerator> weak_factory_; |
- // Point to |this| for use in posting tasks from the decoder thread back to |
- // the ChildThread. |
- base::WeakPtr<V4L2JpegDecodeAccelerator> weak_ptr_; |
- |
- DISALLOW_COPY_AND_ASSIGN(V4L2JpegDecodeAccelerator); |
-}; |
- |
-} // namespace content |
- |
-#endif // CONTENT_COMMON_GPU_MEDIA_V4L2_JPEG_DECODE_ACCELERATOR_H_ |