• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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