Home | History | Annotate | Download | only in video_receiver
      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