diff options
author | xhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-12 23:57:13 +0000 |
---|---|---|
committer | xhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-12 23:57:13 +0000 |
commit | ed44f3cafb0d402a0772159b95d87acb090ac920 (patch) | |
tree | b60ccdf21dd818f024be2ccf6f377b0c47fad23c /webkit/media/crypto | |
parent | 7f6c0ed1f4e27706774e0fbd4150ffb2b80df993 (diff) | |
download | chromium_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.cc | 11 | ||||
-rw-r--r-- | webkit/media/crypto/ppapi_decryptor.h | 5 |
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; |