1 // Copyright (c) 2012 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 #include "remoting/protocol/video_reader.h" 6 7 #include "remoting/protocol/session_config.h" 8 #include "remoting/protocol/protobuf_video_reader.h" 9 10 namespace remoting { 11 namespace protocol { 12 13 VideoReader::~VideoReader() { } 14 15 // static 16 scoped_ptr<VideoReader> VideoReader::Create(const SessionConfig& config) { 17 const ChannelConfig& video_config = config.video_config(); 18 if (video_config.transport == ChannelConfig::TRANSPORT_STREAM) { 19 if (video_config.codec == ChannelConfig::CODEC_VP8) { 20 return scoped_ptr<VideoReader>( 21 new ProtobufVideoReader(VideoPacketFormat::ENCODING_VP8)); 22 } else if (video_config.codec == ChannelConfig::CODEC_VP9) { 23 return scoped_ptr<VideoReader>( 24 new ProtobufVideoReader(VideoPacketFormat::ENCODING_VP9)); 25 } else if (video_config.codec == ChannelConfig::CODEC_ZIP) { 26 return scoped_ptr<VideoReader>( 27 new ProtobufVideoReader(VideoPacketFormat::ENCODING_ZLIB)); 28 } else if (video_config.codec == ChannelConfig::CODEC_VERBATIM) { 29 return scoped_ptr<VideoReader>( 30 new ProtobufVideoReader(VideoPacketFormat::ENCODING_VERBATIM)); 31 } 32 } 33 NOTREACHED(); 34 return scoped_ptr<VideoReader>(); 35 } 36 37 } // namespace protocol 38 } // namespace remoting 39