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.
5 #include "media/cast/video_receiver/video_decoder.h"
8 #include "base/logging.h"
9 #include "base/message_loop/message_loop.h"
10 #include "media/cast/video_receiver/codecs/vp8/vp8_decoder.h"
15 VideoDecoder::VideoDecoder(const VideoReceiverConfig
& video_config
,
16 scoped_refptr
<CastEnvironment
> cast_environment
)
17 : codec_(video_config
.codec
), vp8_decoder_() {
18 switch (video_config
.codec
) {
20 vp8_decoder_
.reset(new Vp8Decoder(cast_environment
));
22 case transport::kH264
:
28 VideoDecoder::~VideoDecoder() {}
30 bool VideoDecoder::DecodeVideoFrame(
31 const transport::EncodedVideoFrame
* encoded_frame
,
32 const base::TimeTicks render_time
,
33 const VideoFrameDecodedCallback
& frame_decoded_cb
) {
34 DCHECK(encoded_frame
->codec
== codec_
) << "Invalid codec";
35 DCHECK_GT(encoded_frame
->data
.size(), GG_UINT64_C(0)) << "Empty video frame";
36 return vp8_decoder_
->Decode(encoded_frame
, render_time
, frame_decoded_cb
);