| // Copyright 2013 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 REMOTING_CODEC_VIDEO_DECODER_VPX_H_ |
| #define REMOTING_CODEC_VIDEO_DECODER_VPX_H_ |
| |
| #include <memory> |
| |
| #include "base/compiler_specific.h" |
| #include "base/macros.h" |
| #include "remoting/codec/scoped_vpx_codec.h" |
| #include "remoting/codec/video_decoder.h" |
| |
| typedef const struct vpx_codec_iface vpx_codec_iface_t; |
| typedef struct vpx_image vpx_image_t; |
| |
| namespace remoting { |
| |
| class VideoDecoderVpx : public VideoDecoder { |
| public: |
| // Create decoders for the specified protocol. |
| static std::unique_ptr<VideoDecoderVpx> CreateForVP8(); |
| static std::unique_ptr<VideoDecoderVpx> CreateForVP9(); |
| |
| ~VideoDecoderVpx() override; |
| |
| // VideoDecoder interface. |
| void SetPixelFormat(PixelFormat pixel_format) override; |
| bool DecodePacket(const VideoPacket& packet, |
| webrtc::DesktopFrame* frame) override; |
| |
| private: |
| explicit VideoDecoderVpx(vpx_codec_iface_t* codec); |
| |
| ScopedVpxCodec codec_; |
| PixelFormat pixel_format_ = PixelFormat::BGRA; |
| |
| DISALLOW_COPY_AND_ASSIGN(VideoDecoderVpx); |
| }; |
| |
| } // namespace remoting |
| |
| #endif // REMOTING_CODEC_VIDEO_DECODER_VP8_H_ |