1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef MEDIA_CAST_VIDEO_RECEIVER_VIDEO_DECODER_H_ 6 #define MEDIA_CAST_VIDEO_RECEIVER_VIDEO_DECODER_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "base/threading/non_thread_safe.h" 10 #include "media/cast/cast_config.h" 11 #include "media/cast/cast_receiver.h" 12 13 namespace media { 14 namespace cast { 15 16 class Vp8Decoder; 17 class VideoFrame; 18 19 // This class is not thread safe; it's only called from the cast video decoder 20 // thread. 21 class VideoDecoder : public base::NonThreadSafe { 22 public: 23 VideoDecoder(const VideoReceiverConfig& video_config, 24 scoped_refptr<CastEnvironment> cast_environment); 25 virtual ~VideoDecoder(); 26 27 // Decode a video frame. Decoded (raw) frame will be returned via the 28 // provided callback 29 bool DecodeVideoFrame(const EncodedVideoFrame* encoded_frame, 30 const base::TimeTicks render_time, 31 const VideoFrameDecodedCallback& frame_decoded_cb); 32 33 private: 34 VideoCodec codec_; 35 scoped_ptr<Vp8Decoder> vp8_decoder_; 36 37 DISALLOW_COPY_AND_ASSIGN(VideoDecoder); 38 }; 39 40 } // namespace cast 41 } // namespace media 42 43 #endif // MEDIA_CAST_VIDEO_RECEIVER_VIDEO_DECODER_H_ 44