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 #include "base/basictypes.h" 6 #include "base/memory/scoped_ptr.h" 7 #include "media/cdm/ppapi/cdm_video_decoder.h" 8 9 #if defined(CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER) 10 #include "media/cdm/ppapi/fake_cdm_video_decoder.h" 11 #endif 12 13 #if defined(CLEAR_KEY_CDM_USE_FFMPEG_DECODER) 14 #include "media/cdm/ppapi/ffmpeg_cdm_video_decoder.h" 15 #endif 16 17 #if defined(CLEAR_KEY_CDM_USE_LIBVPX_DECODER) 18 #include "media/cdm/ppapi/libvpx_cdm_video_decoder.h" 19 #endif 20 21 namespace media { 22 23 scoped_ptr<CdmVideoDecoder> CreateVideoDecoder( 24 ClearKeyCdmHost* host, const cdm::VideoDecoderConfig& config) { 25 scoped_ptr<CdmVideoDecoder> video_decoder; 26 #if defined(CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER) 27 video_decoder.reset(new FakeCdmVideoDecoder(host)); 28 29 if (!video_decoder->Initialize(config)) 30 video_decoder.reset(); 31 #else 32 33 #if defined(CLEAR_KEY_CDM_USE_LIBVPX_DECODER) 34 if (config.codec == cdm::VideoDecoderConfig::kCodecVp8) { 35 video_decoder.reset(new LibvpxCdmVideoDecoder(host)); 36 37 if (!video_decoder->Initialize(config)) 38 video_decoder.reset(); 39 40 return video_decoder.Pass(); 41 } 42 #endif 43 44 #if defined(CLEAR_KEY_CDM_USE_FFMPEG_DECODER) 45 video_decoder.reset(new FFmpegCdmVideoDecoder(host)); 46 47 if (!video_decoder->Initialize(config)) 48 video_decoder.reset(); 49 #endif 50 51 #endif // CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER 52 53 return video_decoder.Pass(); 54 } 55 56 } // namespace media 57