summaryrefslogtreecommitdiffstats
path: root/webkit/media/crypto
diff options
context:
space:
mode:
authorxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-12 23:57:13 +0000
committerxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-12 23:57:13 +0000
commited44f3cafb0d402a0772159b95d87acb090ac920 (patch)
treeb60ccdf21dd818f024be2ccf6f377b0c47fad23c /webkit/media/crypto
parent7f6c0ed1f4e27706774e0fbd4150ffb2b80df993 (diff)
downloadchromium_src-ed44f3cafb0d402a0772159b95d87acb090ac920.zip
chromium_src-ed44f3cafb0d402a0772159b95d87acb090ac920.tar.gz
chromium_src-ed44f3cafb0d402a0772159b95d87acb090ac920.tar.bz2
Make VideoDecoderConfig copyable.
I guess the reasons we didn't make VideoDecoderConfig copyable is: 1) VideoDecoderConfig contains extra data, which needs deep copy. 2) We don't have a lot of use cases that needs to copy VideoDecoderConfig. If we do, we can use CopyFrom(). For (1), the extra data is typically small (< 100 bytes). Copying extra data should not have any performance impact. For (2), we do have legitimate cases where we need to copy VideoDecoderConfig implicitly: - Put VideoDecoderConfig in STL container, e.g. in SourceBufferStream. - Bind VideoDecoderCongfig in a callback, e.g. in DecryptingVideoDecoder. This CL uses std::vector<uint8> for the extra data and solves the deep copy issue. Then it makes VideoDecoderConfig copyable and makes several use cases of VideoDecoderConfig simpler. BUG=177543 TEST=All tests pass. Review URL: https://chromiumcodereview.appspot.com/12637017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@187702 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/media/crypto')
-rw-r--r--webkit/media/crypto/ppapi_decryptor.cc11
-rw-r--r--webkit/media/crypto/ppapi_decryptor.h5
2 files changed, 7 insertions, 9 deletions
diff --git a/webkit/media/crypto/ppapi_decryptor.cc b/webkit/media/crypto/ppapi_decryptor.cc
index 8013cef..8e066dc 100644
--- a/webkit/media/crypto/ppapi_decryptor.cc
+++ b/webkit/media/crypto/ppapi_decryptor.cc
@@ -163,21 +163,20 @@ void PpapiDecryptor::InitializeAudioDecoder(
}
void PpapiDecryptor::InitializeVideoDecoder(
- scoped_ptr<media::VideoDecoderConfig> config,
+ const media::VideoDecoderConfig& config,
const DecoderInitCB& init_cb) {
if (!render_loop_proxy_->BelongsToCurrentThread()) {
render_loop_proxy_->PostTask(FROM_HERE, base::Bind(
- &PpapiDecryptor::InitializeVideoDecoder, weak_this_,
- base::Passed(&config), init_cb));
+ &PpapiDecryptor::InitializeVideoDecoder, weak_this_, config, init_cb));
return;
}
DVLOG(2) << "InitializeVideoDecoder()";
- DCHECK(config->is_encrypted());
- DCHECK(config->IsValidConfig());
+ DCHECK(config.is_encrypted());
+ DCHECK(config.IsValidConfig());
video_decoder_init_cb_ = init_cb;
- if (!plugin_cdm_delegate_->InitializeVideoDecoder(*config, base::Bind(
+ if (!plugin_cdm_delegate_->InitializeVideoDecoder(config, base::Bind(
&PpapiDecryptor::OnDecoderInitialized, weak_this_, kVideo))) {
base::ResetAndReturn(&video_decoder_init_cb_).Run(false);
return;
diff --git a/webkit/media/crypto/ppapi_decryptor.h b/webkit/media/crypto/ppapi_decryptor.h
index 1fddb3d..75e270c 100644
--- a/webkit/media/crypto/ppapi_decryptor.h
+++ b/webkit/media/crypto/ppapi_decryptor.h
@@ -60,9 +60,8 @@ class PpapiDecryptor : public media::Decryptor {
virtual void InitializeAudioDecoder(
scoped_ptr<media::AudioDecoderConfig> config,
const DecoderInitCB& init_cb) OVERRIDE;
- virtual void InitializeVideoDecoder(
- scoped_ptr<media::VideoDecoderConfig> config,
- const DecoderInitCB& init_cb) OVERRIDE;
+ virtual void InitializeVideoDecoder(const media::VideoDecoderConfig& config,
+ const DecoderInitCB& init_cb) OVERRIDE;
virtual void DecryptAndDecodeAudio(
const scoped_refptr<media::DecoderBuffer>& encrypted,
const AudioDecodeCB& audio_decode_cb) OVERRIDE;