| // 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 MEDIA_GPU_IPC_SERVICE_MEDIA_GPU_CHANNEL_H_ |
| #define MEDIA_GPU_IPC_SERVICE_MEDIA_GPU_CHANNEL_H_ |
| |
| #include <memory> |
| |
| #include "base/unguessable_token.h" |
| #include "ipc/ipc_listener.h" |
| #include "ipc/ipc_sender.h" |
| #include "media/gpu/ipc/service/gpu_jpeg_decode_accelerator.h" |
| #include "media/video/video_decode_accelerator.h" |
| |
| namespace media { |
| struct CreateVideoEncoderParams; |
| } |
| |
| namespace gpu { |
| class GpuChannel; |
| } |
| |
| namespace media { |
| |
| class MediaGpuChannelDispatchHelper; |
| |
| class MediaGpuChannel : public IPC::Listener, public IPC::Sender { |
| public: |
| MediaGpuChannel(gpu::GpuChannel* channel, |
| const base::UnguessableToken& channel_token); |
| ~MediaGpuChannel() override; |
| |
| // IPC::Sender implementation: |
| bool Send(IPC::Message* msg) override; |
| |
| private: |
| friend class MediaGpuChannelDispatchHelper; |
| |
| // IPC::Listener implementation: |
| bool OnMessageReceived(const IPC::Message& message) override; |
| |
| // Message handlers. |
| void OnCreateJpegDecoder(int32_t route_id, IPC::Message* reply_msg); |
| void OnCreateVideoDecoder(int32_t command_buffer_route_id, |
| const VideoDecodeAccelerator::Config& config, |
| int32_t route_id, |
| IPC::Message* reply_message); |
| void OnCreateVideoEncoder(int32_t command_buffer_route_id, |
| const CreateVideoEncoderParams& params, |
| IPC::Message* reply_message); |
| |
| gpu::GpuChannel* const channel_; |
| base::UnguessableToken channel_token_; |
| std::unique_ptr<GpuJpegDecodeAccelerator> jpeg_decoder_; |
| DISALLOW_COPY_AND_ASSIGN(MediaGpuChannel); |
| }; |
| |
| } // namespace media |
| |
| #endif // MEDIA_GPU_IPC_SERVICE_MEDIA_GPU_CHANNEL_H_ |