Separate Simple Backend creation from initialization.
[chromium-blink-merge.git] / webkit / media / crypto / ppapi / cdm_video_decoder.cc
blob935921f501562d6d1bb5a16bb6a59acf17b21bbc
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.
5 #include "base/basictypes.h"
6 #include "base/memory/scoped_ptr.h"
7 #include "webkit/media/crypto/ppapi/cdm/content_decryption_module.h"
8 #include "webkit/media/crypto/ppapi/cdm_video_decoder.h"
10 #if defined(CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER)
11 #include "webkit/media/crypto/ppapi/fake_cdm_video_decoder.h"
12 #endif
14 #if defined(CLEAR_KEY_CDM_USE_FFMPEG_DECODER)
15 #include "webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.h"
16 #endif
18 #if defined(CLEAR_KEY_CDM_USE_LIBVPX_DECODER)
19 #include "webkit/media/crypto/ppapi/libvpx_cdm_video_decoder.h"
20 #endif
22 namespace webkit_media {
24 scoped_ptr<CdmVideoDecoder> CreateVideoDecoder(
25 cdm::Host* host, const cdm::VideoDecoderConfig& config) {
26 scoped_ptr<CdmVideoDecoder> video_decoder;
27 #if defined(CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER)
28 video_decoder.reset(new FakeCdmVideoDecoder(host));
30 if (!video_decoder->Initialize(config))
31 video_decoder.reset();
32 #else
34 #if defined(CLEAR_KEY_CDM_USE_LIBVPX_DECODER)
35 if (config.codec == cdm::VideoDecoderConfig::kCodecVp8) {
36 video_decoder.reset(new LibvpxCdmVideoDecoder(host));
38 if (!video_decoder->Initialize(config))
39 video_decoder.reset();
41 return video_decoder.Pass();
43 #endif
45 #if defined(CLEAR_KEY_CDM_USE_FFMPEG_DECODER)
46 video_decoder.reset(new FFmpegCdmVideoDecoder(host));
48 if (!video_decoder->Initialize(config))
49 video_decoder.reset();
50 #endif
52 #endif // CLEAR_KEY_CDM_USE_FAKE_VIDEO_DECODER
54 return video_decoder.Pass();
57 } // namespace webkit_media