// Copyright (c) 2012 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_H_ #define REMOTING_CODEC_VIDEO_DECODER_H_ namespace webrtc { class DesktopFrame; } // namespace webrtc namespace remoting { class VideoPacket; // Interface for a decoder that decodes video packets. class VideoDecoder { public: // List of supported pixel formats needed by various platforms. enum class PixelFormat { BGRA, RGBA }; VideoDecoder() {} virtual ~VideoDecoder() {} virtual void SetPixelFormat(PixelFormat pixel_format) = 0; // Decodes a video frame. Returns false in case of a failure. The caller must // pre-allocate a |frame| with the size specified in the |packet|. virtual bool DecodePacket(const VideoPacket& packet, webrtc::DesktopFrame* frame) = 0; }; } // namespace remoting #endif // REMOTING_CODEC_VIDEO_DECODER_H_