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

Unified Diff: chrome/gpu/arc_gpu_video_decode_accelerator.h

Issue 2919193002: ArcBridge: Rename VideoAcceleratorService to VideoDecodeAccelerator. (Closed)
Patch Set: Address review comments Created 3 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
« no previous file with comments | « chrome/gpu/BUILD.gn ('k') | chrome/gpu/arc_gpu_video_decode_accelerator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/gpu/arc_gpu_video_decode_accelerator.h
diff --git a/chrome/gpu/arc_gpu_video_decode_accelerator.h b/chrome/gpu/arc_gpu_video_decode_accelerator.h
deleted file mode 100644
index 917be53847734bed561f64ed9d01ff3a661d850d..0000000000000000000000000000000000000000
--- a/chrome/gpu/arc_gpu_video_decode_accelerator.h
+++ /dev/null
@@ -1,181 +0,0 @@
-// Copyright 2016 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 CHROME_GPU_ARC_GPU_VIDEO_DECODE_ACCELERATOR_H_
-#define CHROME_GPU_ARC_GPU_VIDEO_DECODE_ACCELERATOR_H_
-
-#include <list>
-#include <memory>
-#include <queue>
-#include <vector>
-
-#include "base/callback.h"
-#include "base/threading/thread_checker.h"
-#include "chrome/gpu/arc_video_accelerator.h"
-#include "gpu/command_buffer/service/gpu_preferences.h"
-#include "media/video/video_decode_accelerator.h"
-
-namespace chromeos {
-namespace arc {
-
-// This class is executed in the GPU process. It takes decoding requests from
-// ARC via IPC channels and translates and sends those requests to an
-// implementation of media::VideoDecodeAccelerator. It also returns the decoded
-// frames back to the ARC side.
-class ArcGpuVideoDecodeAccelerator
- : public ArcVideoAccelerator,
- public media::VideoDecodeAccelerator::Client,
- public base::SupportsWeakPtr<ArcGpuVideoDecodeAccelerator> {
- public:
- explicit ArcGpuVideoDecodeAccelerator(
- const gpu::GpuPreferences& gpu_preferences);
- ~ArcGpuVideoDecodeAccelerator() override;
-
- // Implementation of the ArcVideoAccelerator interface.
- ArcVideoAccelerator::Result Initialize(
- const Config& config,
- ArcVideoAccelerator::Client* client) override;
- void SetNumberOfOutputBuffers(size_t number) override;
- void BindSharedMemory(PortType port,
- uint32_t index,
- base::ScopedFD ashmem_fd,
- off_t offset,
- size_t length) override;
- void BindDmabuf(PortType port,
- uint32_t index,
- base::ScopedFD dmabuf_fd,
- const std::vector<::arc::ArcVideoAcceleratorDmabufPlane>&
- dmabuf_planes) override;
- void UseBuffer(PortType port,
- uint32_t index,
- const BufferMetadata& metadata) override;
- void Reset() override;
- void Flush() override;
-
- // Implementation of the VideoDecodeAccelerator::Client interface.
- void ProvidePictureBuffers(uint32_t requested_num_of_buffers,
- media::VideoPixelFormat output_format,
- uint32_t textures_per_buffer,
- const gfx::Size& dimensions,
- uint32_t texture_target) override;
- void DismissPictureBuffer(int32_t picture_buffer) override;
- void PictureReady(const media::Picture& picture) override;
- void NotifyEndOfBitstreamBuffer(int32_t bitstream_buffer_id) override;
- void NotifyFlushDone() override;
- void NotifyResetDone() override;
- void NotifyError(media::VideoDecodeAccelerator::Error error) override;
-
- private:
- // Some information related to a bitstream buffer. The information is required
- // when input or output buffers are returned back to the client.
- struct InputRecord {
- int32_t bitstream_buffer_id;
- uint32_t buffer_index;
- int64_t timestamp;
-
- InputRecord(int32_t bitstream_buffer_id,
- uint32_t buffer_index,
- int64_t timestamp);
- };
-
- // The information about the shared memory used as an input buffer.
- struct InputBufferInfo {
- // The file handle to access the buffer. It is owned by this class and
- // should be closed after use.
- base::ScopedFD handle;
-
- // The offset of the payload to the beginning of the shared memory.
- off_t offset = 0;
-
- // The size of the payload in bytes.
- size_t length = 0;
-
- InputBufferInfo();
- InputBufferInfo(InputBufferInfo&& other);
- ~InputBufferInfo();
- };
-
- // The information about the dmabuf used as an output buffer.
- struct OutputBufferInfo {
- base::ScopedFD handle;
- std::vector<::arc::ArcVideoAcceleratorDmabufPlane> planes;
-
- OutputBufferInfo();
- OutputBufferInfo(OutputBufferInfo&& other);
- ~OutputBufferInfo();
- };
-
- // The helper method to simplify reporting of the status returned to UMA.
- ArcVideoAccelerator::Result InitializeTask(
- const Config& config,
- ArcVideoAccelerator::Client* client);
-
- // Helper function to validate |port| and |index|.
- bool ValidatePortAndIndex(PortType port, uint32_t index) const;
-
- // Return true if |dmabuf_planes| is valid for a dmabuf |fd|.
- bool VerifyDmabuf(const base::ScopedFD& fd,
- const std::vector<::arc::ArcVideoAcceleratorDmabufPlane>&
- dmabuf_planes) const;
-
- // Creates an InputRecord for the given |bitstream_buffer_id|. The
- // |buffer_index| is the index of the associated input buffer. The |timestamp|
- // is the time the video frame should be displayed.
- void CreateInputRecord(int32_t bitstream_buffer_id,
- uint32_t buffer_index,
- int64_t timestamp);
-
- // Finds the InputRecord which matches to given |bitstream_buffer_id|.
- // Returns |nullptr| if it cannot be found.
- InputRecord* FindInputRecord(int32_t bitstream_buffer_id);
-
- // Notify the client when output format changes.
- void NotifyOutputFormatChanged();
-
- // Global counter that keeps track the number of active clients (i.e., how
- // many VDAs in use by this class).
- // Since this class only works on the same thread, it's safe to access
- // |client_count_| without lock.
- static int client_count_;
-
- std::unique_ptr<media::VideoDecodeAccelerator> vda_;
-
- // It's safe to use the pointer here, the life cycle of the |arc_client_|
- // is longer than this ArcGpuVideoDecodeAccelerator.
- ArcVideoAccelerator::Client* arc_client_;
-
- // The next ID for the bitstream buffer, started from 0.
- int32_t next_bitstream_buffer_id_;
-
- gfx::Size coded_size_;
- gfx::Rect visible_rect_;
- media::VideoPixelFormat output_pixel_format_;
-
- // A list of most recent |kMaxNumberOfInputRecord| InputRecords.
- // |kMaxNumberOfInputRecord| is defined in the cc file.
- std::list<InputRecord> input_records_;
-
- // The details of the shared memory of each input buffers.
- std::vector<InputBufferInfo> input_buffer_info_;
-
- // To keep those output buffers which have been bound by bindDmabuf() but
- // haven't been passed to VDA yet. Will call VDA::ImportBufferForPicture()
- // when those buffers are used for the first time.
- std::vector<OutputBufferInfo> buffers_pending_import_;
-
- base::ThreadChecker thread_checker_;
- size_t output_buffer_size_;
-
- // The minimal number of requested output buffers.
- uint32_t requested_num_of_output_buffers_;
-
- gpu::GpuPreferences gpu_preferences_;
-
- DISALLOW_COPY_AND_ASSIGN(ArcGpuVideoDecodeAccelerator);
-};
-
-} // namespace arc
-} // namespace chromeos
-
-#endif // CHROME_GPU_ARC_GPU_VIDEO_DECODE_ACCELERATOR_H_
« no previous file with comments | « chrome/gpu/BUILD.gn ('k') | chrome/gpu/arc_gpu_video_decode_accelerator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698