Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: webkit/media/filter_helpers.cc

Issue 11414138: Encrypted Media: No NeedKey if --enable-encrypted-media is not set. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/media/filter_helpers.h" 5 #include "webkit/media/filter_helpers.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "media/base/filter_collection.h" 8 #include "media/base/filter_collection.h"
9 #include "media/base/message_loop_factory.h" 9 #include "media/base/message_loop_factory.h"
10 #include "media/filters/decrypting_audio_decoder.h" 10 #include "media/filters/decrypting_audio_decoder.h"
(...skipping 18 matching lines...) Expand all
29 // DecryptingVideoDecoder only supports encrypted video stream. 29 // DecryptingVideoDecoder only supports encrypted video stream.
30 static void AddDefaultDecodersToCollection( 30 static void AddDefaultDecodersToCollection(
31 media::MessageLoopFactory* message_loop_factory, 31 media::MessageLoopFactory* message_loop_factory,
32 media::FilterCollection* filter_collection, 32 media::FilterCollection* filter_collection,
33 ProxyDecryptor* proxy_decryptor) { 33 ProxyDecryptor* proxy_decryptor) {
34 scoped_refptr<media::FFmpegAudioDecoder> ffmpeg_audio_decoder = 34 scoped_refptr<media::FFmpegAudioDecoder> ffmpeg_audio_decoder =
35 new media::FFmpegAudioDecoder( 35 new media::FFmpegAudioDecoder(
36 base::Bind(&media::MessageLoopFactory::GetMessageLoop, 36 base::Bind(&media::MessageLoopFactory::GetMessageLoop,
37 base::Unretained(message_loop_factory), 37 base::Unretained(message_loop_factory),
38 media::MessageLoopFactory::kPipeline)); 38 media::MessageLoopFactory::kPipeline));
39 filter_collection->GetAudioDecoders()->push_back(ffmpeg_audio_decoder);
39 40
40 scoped_refptr<media::DecryptingAudioDecoder> decrypting_audio_decoder = 41 if (proxy_decryptor) {
41 new media::DecryptingAudioDecoder( 42 scoped_refptr<media::DecryptingAudioDecoder> decrypting_audio_decoder =
42 base::Bind(&media::MessageLoopFactory::GetMessageLoop, 43 new media::DecryptingAudioDecoder(
43 base::Unretained(message_loop_factory), 44 base::Bind(&media::MessageLoopFactory::GetMessageLoop,
44 media::MessageLoopFactory::kPipeline), 45 base::Unretained(message_loop_factory),
45 base::Bind(&ProxyDecryptor::RequestDecryptorNotification, 46 media::MessageLoopFactory::kPipeline),
46 base::Unretained(proxy_decryptor))); 47 base::Bind(&ProxyDecryptor::RequestDecryptorNotification,
48 base::Unretained(proxy_decryptor)));
49 filter_collection->GetAudioDecoders()->push_back(decrypting_audio_decoder);
47 50
48 filter_collection->GetAudioDecoders()->push_back(ffmpeg_audio_decoder); 51 scoped_refptr<media::DecryptingVideoDecoder> decrypting_video_decoder =
49 filter_collection->GetAudioDecoders()->push_back(decrypting_audio_decoder); 52 new media::DecryptingVideoDecoder(
50 53 base::Bind(&media::MessageLoopFactory::GetMessageLoop,
51 scoped_refptr<media::DecryptingVideoDecoder> decrypting_video_decoder = 54 base::Unretained(message_loop_factory),
52 new media::DecryptingVideoDecoder( 55 media::MessageLoopFactory::kPipeline),
53 base::Bind(&media::MessageLoopFactory::GetMessageLoop, 56 base::Bind(&ProxyDecryptor::RequestDecryptorNotification,
54 base::Unretained(message_loop_factory), 57 base::Unretained(proxy_decryptor)));
55 media::MessageLoopFactory::kPipeline), 58 // TODO(xhwang): Ideally we should have decrypting video decoder after
56 base::Bind(&ProxyDecryptor::RequestDecryptorNotification, 59 // regular video decoder since in the real world most videos are not
57 base::Unretained(proxy_decryptor))); 60 // encrypted. For now FFmpegVideoDecoder can also do decryption
61 // (decrypt-only), and we perfer DecryptingVideoDecoder (decrypt-and-decode)
62 // to FFmpegVideoDecoder. Fix this order when we move decryption out of
63 // FFmpegVideoDecoder.
64 filter_collection->GetVideoDecoders()->push_back(decrypting_video_decoder);
65 }
58 66
59 scoped_refptr<media::FFmpegVideoDecoder> ffmpeg_video_decoder = 67 scoped_refptr<media::FFmpegVideoDecoder> ffmpeg_video_decoder =
60 new media::FFmpegVideoDecoder( 68 new media::FFmpegVideoDecoder(
61 base::Bind(&media::MessageLoopFactory::GetMessageLoop, 69 base::Bind(&media::MessageLoopFactory::GetMessageLoop,
62 base::Unretained(message_loop_factory), 70 base::Unretained(message_loop_factory),
63 media::MessageLoopFactory::kPipeline), 71 media::MessageLoopFactory::kPipeline),
64 proxy_decryptor); 72 proxy_decryptor);
65 73
66 // TODO(xhwang): Ideally we should have decrypting video decoder after
67 // regular video decoder since in the real world most videos are not
68 // encrypted. For now FFmpegVideoDecoder can also do decryption
69 // (decrypt-only), and we perfer DecryptingVideoDecoder (decrypt-and-decode)
70 // to FFmpegVideoDecoder. Fix this order when we move decryption out of
71 // FFmpegVideoDecoder.
72 filter_collection->GetVideoDecoders()->push_back(decrypting_video_decoder);
73 filter_collection->GetVideoDecoders()->push_back(ffmpeg_video_decoder); 74 filter_collection->GetVideoDecoders()->push_back(ffmpeg_video_decoder);
74 } 75 }
75 76
76 bool BuildMediaStreamCollection(const WebKit::WebURL& url, 77 bool BuildMediaStreamCollection(const WebKit::WebURL& url,
77 MediaStreamClient* client, 78 MediaStreamClient* client,
78 media::MessageLoopFactory* message_loop_factory, 79 media::MessageLoopFactory* message_loop_factory,
79 media::FilterCollection* filter_collection) { 80 media::FilterCollection* filter_collection) {
80 if (!client) 81 if (!client)
81 return false; 82 return false;
82 83
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 filter_collection->SetDemuxer(new media::FFmpegDemuxer( 122 filter_collection->SetDemuxer(new media::FFmpegDemuxer(
122 message_loop_factory->GetMessageLoop( 123 message_loop_factory->GetMessageLoop(
123 media::MessageLoopFactory::kPipeline), 124 media::MessageLoopFactory::kPipeline),
124 data_source)); 125 data_source));
125 126
126 AddDefaultDecodersToCollection(message_loop_factory, filter_collection, 127 AddDefaultDecodersToCollection(message_loop_factory, filter_collection,
127 proxy_decryptor); 128 proxy_decryptor);
128 } 129 }
129 130
130 } // webkit_media 131 } // webkit_media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698