diff options
author | alexmos <alexmos@chromium.org> | 2016-03-11 13:18:02 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-11 21:18:50 +0000 |
commit | c0fa874e9858c85895a8266ae53c53efa280e85a (patch) | |
tree | 7f26b44cee3b721e885d82ac7c2f03b1e5a27dd9 /chromecast | |
parent | 2ceccae6337cab6b6d5be02413c2b56ebaebca1b (diff) | |
download | chromium_src-c0fa874e9858c85895a8266ae53c53efa280e85a.zip chromium_src-c0fa874e9858c85895a8266ae53c53efa280e85a.tar.gz chromium_src-c0fa874e9858c85895a8266ae53c53efa280e85a.tar.bz2 |
Revert of media config: expand is_encrypted to a struct. (patchset #23 id:440001 of https://codereview.chromium.org/1490613005/ )
Reason for revert:
Appears to be breaking compile on Win x64 GN (dbg): https://build.chromium.org/p/chromium.win/builders/Win%20x64%20GN%20%28dbg%29/builds/19428
Output:
media_type_converters.obj : error LNK2019: unresolved external symbol "public: __cdecl media::EncryptionScheme::Pattern::Pattern(unsigned int,unsigned int)" (??0Pattern@EncryptionScheme@media@@QEAA@II@Z) referenced in function "public: static class media::EncryptionScheme::Pattern __cdecl mojo::TypeConverter<class media::EncryptionScheme::Pattern,class mojo::InlinedStructPtr<class media::interfaces::Pattern> >::Convert(class mojo::InlinedStructPtr<class media::interfaces::Pattern> const &)" (?Convert@?$TypeConverter@VPattern@EncryptionScheme@media@@V?$InlinedStructPtr@VPattern@interfaces@media@@@mojo@@@mojo@@SA?AVPattern@EncryptionScheme@media@@AEBV?$InlinedStructPtr@VPattern@interfaces@media@@@2@@Z)
media_type_converters.obj : error LNK2019: unresolved external symbol "public: __cdecl media::EncryptionScheme::Pattern::~Pattern(void)" (??1Pattern@EncryptionScheme@media@@QEAA@XZ) referenced in function "public: static class media::EncryptionScheme __cdecl mojo::TypeConverter<class media::EncryptionScheme,class mojo::StructPtr<class media::interfaces::EncryptionScheme> >::Convert(class mojo::StructPtr<class media::interfaces::EncryptionScheme> const &)" (?Convert@?$TypeConverter@VEncryptionScheme@media@@V?$StructPtr@VEncryptionScheme@interfaces@media@@@mojo@@@mojo@@SA?AVEncryptionScheme@media@@AEBV?$StructPtr@VEncryptionScheme@interfaces@media@@@2@@Z)
./media_library.dll : fatal error LNK1120: 2 unresolved externals
Original issue's description:
> media config: expand is_encrypted to a struct.
>
> Provide more complete encryption metadata, rather than
> just a bool. EncryptionScheme also allows specification
> of the mode and the pattern, as will be allowed by
> CENC (ISO's Common Encryption standard), 3rd Edition.
>
> BUG=568326
>
> Committed: https://crrev.com/c9d2206c62f65e29b141e08df2b2dcb88f54162f
> Cr-Commit-Position: refs/heads/master@{#380710}
TBR=dalecurtis@chromium.org,ddorwin@chromium.org,halliwell@chromium.org,lcwu@chromium.org,raymes@chromium.org,xhwang@chromium.org,yucliu@chromium.org,dougsteed@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=568326
Review URL: https://codereview.chromium.org/1786733004
Cr-Commit-Position: refs/heads/master@{#380732}
Diffstat (limited to 'chromecast')
18 files changed, 40 insertions, 318 deletions
diff --git a/chromecast/common/media/cma_param_traits.cc b/chromecast/common/media/cma_param_traits.cc index f0ddc49..f27043d 100644 --- a/chromecast/common/media/cma_param_traits.cc +++ b/chromecast/common/media/cma_param_traits.cc @@ -12,7 +12,6 @@ #include "content/public/common/common_param_traits.h" #include "ipc/ipc_message_macros.h" #include "media/base/audio_decoder_config.h" -#include "media/base/encryption_scheme.h" #include "media/base/video_decoder_config.h" #include "ui/gfx/ipc/gfx_param_traits.h" @@ -30,16 +29,6 @@ IPC_ENUM_TRAITS_MAX_VALUE(media::VideoPixelFormat, media::PIXEL_FORMAT_MAX) namespace IPC { -template <> -struct ParamTraits<media::EncryptionScheme::Pattern> { - typedef media::EncryptionScheme::Pattern param_type; - static void Write(base::Pickle* m, const param_type& p); - static bool Read(const base::Pickle* m, base::PickleIterator* iter, - param_type* r); - static void Log(const param_type& p, std::string* l); -}; - - void ParamTraits<media::AudioDecoderConfig>::Write( base::Pickle* m, const media::AudioDecoderConfig& p) { @@ -47,7 +36,7 @@ void ParamTraits<media::AudioDecoderConfig>::Write( WriteParam(m, p.sample_format()); WriteParam(m, p.channel_layout()); WriteParam(m, p.samples_per_second()); - WriteParam(m, p.encryption_scheme()); + WriteParam(m, p.is_encrypted()); WriteParam(m, p.extra_data()); } @@ -59,17 +48,15 @@ bool ParamTraits<media::AudioDecoderConfig>::Read( media::SampleFormat sample_format; media::ChannelLayout channel_layout; int samples_per_second; - media::EncryptionScheme encryption_scheme; + bool is_encrypted; std::vector<uint8_t> extra_data; if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &sample_format) || !ReadParam(m, iter, &channel_layout) || !ReadParam(m, iter, &samples_per_second) || - !ReadParam(m, iter, &encryption_scheme) || - !ReadParam(m, iter, &extra_data)) + !ReadParam(m, iter, &is_encrypted) || !ReadParam(m, iter, &extra_data)) return false; *r = media::AudioDecoderConfig(codec, sample_format, channel_layout, - samples_per_second, extra_data, - encryption_scheme); + samples_per_second, extra_data, is_encrypted); return true; } @@ -88,7 +75,7 @@ void ParamTraits<media::VideoDecoderConfig>::Write( WriteParam(m, p.coded_size()); WriteParam(m, p.visible_rect()); WriteParam(m, p.natural_size()); - WriteParam(m, p.encryption_scheme()); + WriteParam(m, p.is_encrypted()); WriteParam(m, p.extra_data()); } @@ -103,18 +90,17 @@ bool ParamTraits<media::VideoDecoderConfig>::Read( gfx::Size coded_size; gfx::Rect visible_rect; gfx::Size natural_size; - media::EncryptionScheme encryption_scheme; + bool is_encrypted; std::vector<uint8_t> extra_data; if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &profile) || !ReadParam(m, iter, &format) || !ReadParam(m, iter, &color_space) || !ReadParam(m, iter, &coded_size) || !ReadParam(m, iter, &visible_rect) || !ReadParam(m, iter, &natural_size) || - !ReadParam(m, iter, &encryption_scheme) || - !ReadParam(m, iter, &extra_data)) + !ReadParam(m, iter, &is_encrypted) || !ReadParam(m, iter, &extra_data)) return false; *r = media::VideoDecoderConfig(codec, profile, format, color_space, coded_size, visible_rect, natural_size, - extra_data, encryption_scheme); + extra_data, is_encrypted); return true; } @@ -123,45 +109,4 @@ void ParamTraits<media::VideoDecoderConfig>::Log( l->append(base::StringPrintf("<VideoDecoderConfig>")); } -void ParamTraits<media::EncryptionScheme>::Write( - base::Pickle* m, const param_type& p) { - WriteParam(m, p.mode()); - WriteParam(m, p.pattern()); -} - -bool ParamTraits<media::EncryptionScheme>::Read( - const base::Pickle* m, base::PickleIterator* iter, param_type* r) { - media::EncryptionScheme::CipherMode mode; - media::EncryptionScheme::Pattern pattern; - if (!ReadParam(m, iter, &mode) || !ReadParam(m, iter, &pattern)) - return false; - *r = media::EncryptionScheme(mode, pattern); - return true; -} - -void ParamTraits<media::EncryptionScheme>::Log( - const param_type& p, std::string* l) { - l->append(base::StringPrintf("<EncryptionScheme>")); -} - -void ParamTraits<media::EncryptionScheme::Pattern>::Write( - base::Pickle* m, const param_type& p) { - WriteParam(m, p.encrypt_blocks()); - WriteParam(m, p.skip_blocks()); -} - -bool ParamTraits<media::EncryptionScheme::Pattern>::Read( - const base::Pickle* m, base::PickleIterator* iter, param_type* r) { - uint32_t encrypt_blocks, skip_blocks; - if (!ReadParam(m, iter, &encrypt_blocks) || !ReadParam(m, iter, &skip_blocks)) - return false; - *r = media::EncryptionScheme::Pattern(encrypt_blocks, skip_blocks); - return true; -} - -void ParamTraits<media::EncryptionScheme::Pattern>::Log( - const param_type& p, std::string* l) { - l->append(base::StringPrintf("<Pattern>")); -} - } // namespace IPC diff --git a/chromecast/common/media/cma_param_traits.h b/chromecast/common/media/cma_param_traits.h index 879bbf1..c8609a5 100644 --- a/chromecast/common/media/cma_param_traits.h +++ b/chromecast/common/media/cma_param_traits.h @@ -10,7 +10,6 @@ namespace media { class AudioDecoderConfig; class VideoDecoderConfig; -class EncryptionScheme; } namespace IPC { @@ -35,15 +34,6 @@ struct ParamTraits<media::VideoDecoderConfig> { static void Log(const param_type& p, std::string* l); }; -template <> -struct ParamTraits<media::EncryptionScheme> { - typedef media::EncryptionScheme param_type; - static void Write(base::Pickle* m, const param_type& p); - static bool Read(const base::Pickle* m, base::PickleIterator* iter, - param_type* r); - static void Log(const param_type& p, std::string* l); -}; - } // namespace IPC #endif // CHROMECAST_COMMON_MEDIA_CMA_PARAM_TRAITS_H_ diff --git a/chromecast/common/media/cma_param_traits_macros.h b/chromecast/common/media/cma_param_traits_macros.h index 2aae996..a25e53f 100644 --- a/chromecast/common/media/cma_param_traits_macros.h +++ b/chromecast/common/media/cma_param_traits_macros.h @@ -44,8 +44,6 @@ IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::VideoCodec, media::VideoCodec::kUnknownVideoCodec, media::VideoCodec::kVideoCodecMax) IPC_ENUM_TRAITS_MAX_VALUE(media::ColorSpace, media::COLOR_SPACE_MAX) -IPC_ENUM_TRAITS_MAX_VALUE(media::EncryptionScheme::CipherMode, - media::EncryptionScheme::CIPHER_MODE_MAX); IPC_STRUCT_TRAITS_BEGIN(media::PipelineStatistics) IPC_STRUCT_TRAITS_MEMBER(audio_bytes_decoded) diff --git a/chromecast/media/audio/cast_audio_output_stream.cc b/chromecast/media/audio/cast_audio_output_stream.cc index fc91d50..ec415d7 100644 --- a/chromecast/media/audio/cast_audio_output_stream.cc +++ b/chromecast/media/audio/cast_audio_output_stream.cc @@ -47,6 +47,7 @@ MediaPipelineBackend::AudioDecoder* InitializeBackend( audio_config.bytes_per_channel = audio_params.bits_per_sample() / 8; audio_config.channel_number = audio_params.channels(); audio_config.samples_per_second = audio_params.sample_rate(); + audio_config.is_encrypted = false; if (!decoder->SetConfig(audio_config)) return nullptr; diff --git a/chromecast/media/audio/cast_audio_output_stream_unittest.cc b/chromecast/media/audio/cast_audio_output_stream_unittest.cc index 8402a6a..a8ad0f0 100644 --- a/chromecast/media/audio/cast_audio_output_stream_unittest.cc +++ b/chromecast/media/audio/cast_audio_output_stream_unittest.cc @@ -385,7 +385,7 @@ TEST_F(CastAudioOutputStreamTest, Format) { const AudioConfig& audio_config = audio_decoder->config(); EXPECT_EQ(kCodecPCM, audio_config.codec); EXPECT_EQ(kSampleFormatS16, audio_config.sample_format); - EXPECT_FALSE(audio_config.encryption_scheme.is_encrypted()); + EXPECT_FALSE(audio_config.is_encrypted); CloseStream(stream); } diff --git a/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc b/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc index 18de287..7fd2d1d 100644 --- a/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc +++ b/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc @@ -35,7 +35,6 @@ #include "media/base/audio_decoder_config.h" #include "media/base/audio_timestamp_helper.h" #include "media/base/decoder_buffer.h" -#include "media/base/encryption_scheme.h" #include "media/base/video_decoder_config.h" #include "testing/gtest/include/gtest/gtest.h" @@ -69,7 +68,7 @@ VideoConfig DefaultVideoConfig() { default_config.codec = kCodecH264; default_config.profile = kH264Main; default_config.additional_config = nullptr; - default_config.encryption_scheme = Unencrypted(); + default_config.is_encrypted = false; return default_config; } @@ -565,7 +564,7 @@ scoped_ptr<BufferFeeder> BufferFeeder::LoadVideo(MediaPipelineBackend* backend, video_config.codec = kCodecH264; video_config.profile = kH264Main; video_config.additional_config = nullptr; - video_config.encryption_scheme = Unencrypted(); + video_config.is_encrypted = false; } else { base::FilePath file_path = GetTestDataFilePath(filename); DemuxResult demux_result = FFmpegDemuxForTest(file_path, false /* audio */); diff --git a/chromecast/media/cma/base/decoder_config_adapter.cc b/chromecast/media/cma/base/decoder_config_adapter.cc index 24e8b41..3a8ab39 100644 --- a/chromecast/media/cma/base/decoder_config_adapter.cc +++ b/chromecast/media/cma/base/decoder_config_adapter.cc @@ -85,7 +85,7 @@ VideoCodec ToVideoCodec(const ::media::VideoCodec video_codec) { // Converts ::media::VideoCodecProfile to chromecast::media::VideoProfile. VideoProfile ToVideoProfile(const ::media::VideoCodecProfile codec_profile) { - switch (codec_profile) { + switch(codec_profile) { case ::media::H264PROFILE_BASELINE: return kH264Baseline; case ::media::H264PROFILE_MAIN: @@ -183,62 +183,6 @@ VideoProfile ToVideoProfile(const ::media::VideoCodecProfile codec_profile) { } } -::media::EncryptionScheme::CipherMode ToMediaCipherMode( - EncryptionScheme::CipherMode mode) { - switch (mode) { - case EncryptionScheme::CIPHER_MODE_UNENCRYPTED: - return ::media::EncryptionScheme::CIPHER_MODE_UNENCRYPTED; - case EncryptionScheme::CIPHER_MODE_AES_CTR: - return ::media::EncryptionScheme::CIPHER_MODE_AES_CTR; - case EncryptionScheme::CIPHER_MODE_AES_CBC: - return ::media::EncryptionScheme::CIPHER_MODE_AES_CBC; - default: - NOTREACHED(); - return ::media::EncryptionScheme::CIPHER_MODE_UNENCRYPTED; - } -} - -EncryptionScheme::CipherMode ToCipherMode( - ::media::EncryptionScheme::CipherMode mode) { - switch (mode) { - case ::media::EncryptionScheme::CIPHER_MODE_UNENCRYPTED: - return EncryptionScheme::CIPHER_MODE_UNENCRYPTED; - case ::media::EncryptionScheme::CIPHER_MODE_AES_CTR: - return EncryptionScheme::CIPHER_MODE_AES_CTR; - case ::media::EncryptionScheme::CIPHER_MODE_AES_CBC: - return EncryptionScheme::CIPHER_MODE_AES_CBC; - default: - NOTREACHED(); - return EncryptionScheme::CIPHER_MODE_UNENCRYPTED; - } -} - -EncryptionScheme::Pattern ToPatternSpec( - const ::media::EncryptionScheme::Pattern& pattern) { - return EncryptionScheme::Pattern( - pattern.encrypt_blocks(), pattern.skip_blocks()); -} - -::media::EncryptionScheme::Pattern ToMediaPatternSpec( - const EncryptionScheme::Pattern& pattern) { - return ::media::EncryptionScheme::Pattern( - pattern.encrypt_blocks, pattern.skip_blocks); -} - -EncryptionScheme ToEncryptionScheme( - const ::media::EncryptionScheme& scheme) { - return EncryptionScheme( - ToCipherMode(scheme.mode()), - ToPatternSpec(scheme.pattern())); -} - -::media::EncryptionScheme ToMediaEncryptionScheme( - const EncryptionScheme& scheme) { - return ::media::EncryptionScheme( - ToMediaCipherMode(scheme.mode), - ToMediaPatternSpec(scheme.pattern)); -} - } // namespace // static @@ -257,8 +201,7 @@ AudioConfig DecoderConfigAdapter::ToCastAudioConfig( ::media::ChannelLayoutToChannelCount(config.channel_layout()), audio_config.samples_per_second = config.samples_per_second(); audio_config.extra_data = config.extra_data(); - audio_config.encryption_scheme = ToEncryptionScheme( - config.encryption_scheme()); + audio_config.is_encrypted = config.is_encrypted(); return audio_config; } @@ -269,8 +212,7 @@ AudioConfig DecoderConfigAdapter::ToCastAudioConfig( ToMediaAudioCodec(config.codec), ToMediaSampleFormat(config.sample_format), ToMediaChannelLayout(config.channel_number), config.samples_per_second, - config.extra_data, - ToMediaEncryptionScheme(config.encryption_scheme)); + config.extra_data, config.is_encrypted); } // static @@ -286,8 +228,7 @@ VideoConfig DecoderConfigAdapter::ToCastVideoConfig( video_config.codec = ToVideoCodec(config.codec()); video_config.profile = ToVideoProfile(config.profile()); video_config.extra_data = config.extra_data(); - video_config.encryption_scheme = ToEncryptionScheme( - config.encryption_scheme()); + video_config.is_encrypted = config.is_encrypted(); return video_config; } diff --git a/chromecast/media/cma/base/demuxer_stream_for_test.cc b/chromecast/media/cma/base/demuxer_stream_for_test.cc index 32ee27b..9942545 100644 --- a/chromecast/media/cma/base/demuxer_stream_for_test.cc +++ b/chromecast/media/cma/base/demuxer_stream_for_test.cc @@ -63,7 +63,7 @@ void DemuxerStreamForTest::Read(const ReadCB& read_cb) { visible_rect, natural_size, ::media::EmptyExtraData(), - ::media::Unencrypted()); + false); } ::media::DemuxerStream::Type DemuxerStreamForTest::type() const { diff --git a/chromecast/media/cma/ipc_streamer/BUILD.gn b/chromecast/media/cma/ipc_streamer/BUILD.gn index 7d25f45..a3429d6 100644 --- a/chromecast/media/cma/ipc_streamer/BUILD.gn +++ b/chromecast/media/cma/ipc_streamer/BUILD.gn @@ -14,8 +14,6 @@ source_set("ipc_streamer") { "decoder_buffer_base_marshaller.h", "decrypt_config_marshaller.cc", "decrypt_config_marshaller.h", - "encryption_scheme_marshaller.cc", - "encryption_scheme_marshaller.h", "video_decoder_config_marshaller.cc", "video_decoder_config_marshaller.h", ] diff --git a/chromecast/media/cma/ipc_streamer/audio_decoder_config_marshaller.cc b/chromecast/media/cma/ipc_streamer/audio_decoder_config_marshaller.cc index 031571a..2798c6b 100644 --- a/chromecast/media/cma/ipc_streamer/audio_decoder_config_marshaller.cc +++ b/chromecast/media/cma/ipc_streamer/audio_decoder_config_marshaller.cc @@ -11,7 +11,6 @@ #include "base/logging.h" #include "chromecast/media/cma/ipc/media_message.h" -#include "chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h" #include "media/base/audio_decoder_config.h" namespace chromecast { @@ -28,7 +27,7 @@ void AudioDecoderConfigMarshaller::Write( CHECK(msg->WritePod(config.channel_layout())); CHECK(msg->WritePod(config.samples_per_second())); CHECK(msg->WritePod(config.sample_format())); - EncryptionSchemeMarshaller::Write(config.encryption_scheme(), msg); + CHECK(msg->WritePod(config.is_encrypted())); CHECK(msg->WritePod(config.extra_data().size())); if (!config.extra_data().empty()) CHECK(msg->WriteBuffer(&config.extra_data()[0], @@ -42,15 +41,15 @@ void AudioDecoderConfigMarshaller::Write( ::media::SampleFormat sample_format; ::media::ChannelLayout channel_layout; int samples_per_second; + bool is_encrypted; size_t extra_data_size; std::vector<uint8_t> extra_data; - ::media::EncryptionScheme encryption_scheme; CHECK(msg->ReadPod(&codec)); CHECK(msg->ReadPod(&channel_layout)); CHECK(msg->ReadPod(&samples_per_second)); CHECK(msg->ReadPod(&sample_format)); - encryption_scheme = EncryptionSchemeMarshaller::Read(msg); + CHECK(msg->ReadPod(&is_encrypted)); CHECK(msg->ReadPod(&extra_data_size)); CHECK_GE(codec, ::media::kUnknownAudioCodec); @@ -68,7 +67,7 @@ void AudioDecoderConfigMarshaller::Write( return ::media::AudioDecoderConfig( codec, sample_format, channel_layout, samples_per_second, - extra_data, encryption_scheme); + extra_data, is_encrypted); } } // namespace media diff --git a/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.cc b/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.cc deleted file mode 100644 index a88cfc5..0000000 --- a/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.cc +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h" - -#include <stdint.h> - -#include "base/logging.h" -#include "chromecast/media/cma/ipc/media_message.h" - -namespace chromecast { -namespace media { - -namespace { - -class PatternSpecMarshaller { - public: - static void Write(const ::media::EncryptionScheme::Pattern& pattern, - MediaMessage* msg) { - CHECK(msg->WritePod(pattern.encrypt_blocks())); - CHECK(msg->WritePod(pattern.skip_blocks())); - } - - static ::media::EncryptionScheme::Pattern Read(MediaMessage* msg) { - uint32_t encrypt_blocks; - uint32_t skip_blocks; - CHECK(msg->ReadPod(&encrypt_blocks)); - CHECK(msg->ReadPod(&skip_blocks)); - return ::media::EncryptionScheme::Pattern(encrypt_blocks, skip_blocks); - } -}; - -} // namespace - -// static -void EncryptionSchemeMarshaller::Write( - const ::media::EncryptionScheme& encryption_scheme, - MediaMessage* msg) { - CHECK(msg->WritePod(encryption_scheme.mode())); - PatternSpecMarshaller::Write(encryption_scheme.pattern(), msg); -} - -// static -::media::EncryptionScheme EncryptionSchemeMarshaller::Read(MediaMessage* msg) { - ::media::EncryptionScheme::CipherMode mode; - ::media::EncryptionScheme::Pattern pattern; - CHECK(msg->ReadPod(&mode)); - pattern = PatternSpecMarshaller::Read(msg); - return ::media::EncryptionScheme(mode, pattern); -} - -} // namespace media -} // namespace chromecast diff --git a/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h b/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h deleted file mode 100644 index 0b3371b..0000000 --- a/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROMECAST_MEDIA_CMA_IPC_STREAMER_ENCRYPTION_SCHEME_MARSHALLER_H_ -#define CHROMECAST_MEDIA_CMA_IPC_STREAMER_ENCRYPTION_SCHEME_MARSHALLER_H_ - -#include "media/base/encryption_scheme.h" - -namespace chromecast { -namespace media { -class MediaMessage; - -class EncryptionSchemeMarshaller { - public: - // Writes the serialized structure of |encryption_scheme| into |msg|. - static void Write( - const ::media::EncryptionScheme& encryption_scheme, MediaMessage* msg); - - // Returns an EncryptionScheme from its serialized structure. - static ::media::EncryptionScheme Read(MediaMessage* msg); -}; - -} // namespace media -} // namespace chromecast - -#endif // CHROMECAST_MEDIA_CMA_IPC_STREAMER_ENCRYPTION_SCHEME_MARSHALLER_H_ diff --git a/chromecast/media/cma/ipc_streamer/video_decoder_config_marshaller.cc b/chromecast/media/cma/ipc_streamer/video_decoder_config_marshaller.cc index a471eb6..b2e9aaa 100644 --- a/chromecast/media/cma/ipc_streamer/video_decoder_config_marshaller.cc +++ b/chromecast/media/cma/ipc_streamer/video_decoder_config_marshaller.cc @@ -11,7 +11,6 @@ #include "base/logging.h" #include "chromecast/media/cma/ipc/media_message.h" -#include "chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h" #include "media/base/video_decoder_config.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/size.h" @@ -68,7 +67,7 @@ void VideoDecoderConfigMarshaller::Write( SizeMarshaller::Write(config.coded_size(), msg); RectMarshaller::Write(config.visible_rect(), msg); SizeMarshaller::Write(config.natural_size(), msg); - EncryptionSchemeMarshaller::Write(config.encryption_scheme(), msg); + CHECK(msg->WritePod(config.is_encrypted())); CHECK(msg->WritePod(config.extra_data().size())); if (!config.extra_data().empty()) CHECK(msg->WriteBuffer(&config.extra_data()[0], @@ -85,8 +84,8 @@ void VideoDecoderConfigMarshaller::Write( gfx::Size coded_size; gfx::Rect visible_rect; gfx::Size natural_size; + bool is_encrypted; size_t extra_data_size; - ::media::EncryptionScheme encryption_scheme; std::vector<uint8_t> extra_data; CHECK(msg->ReadPod(&codec)); @@ -96,7 +95,7 @@ void VideoDecoderConfigMarshaller::Write( coded_size = SizeMarshaller::Read(msg); visible_rect = RectMarshaller::Read(msg); natural_size = SizeMarshaller::Read(msg); - encryption_scheme = EncryptionSchemeMarshaller::Read(msg); + CHECK(msg->ReadPod(&is_encrypted)); CHECK(msg->ReadPod(&extra_data_size)); CHECK_GE(codec, ::media::kUnknownVideoCodec); @@ -116,7 +115,7 @@ void VideoDecoderConfigMarshaller::Write( return ::media::VideoDecoderConfig( codec, profile, format, color_space, coded_size, visible_rect, natural_size, - extra_data, encryption_scheme); + extra_data, is_encrypted); } } // namespace media diff --git a/chromecast/media/cma/pipeline/audio_decoder_software_wrapper.cc b/chromecast/media/cma/pipeline/audio_decoder_software_wrapper.cc index a1cdf95..4b15bcc 100644 --- a/chromecast/media/cma/pipeline/audio_decoder_software_wrapper.cc +++ b/chromecast/media/cma/pipeline/audio_decoder_software_wrapper.cc @@ -59,7 +59,7 @@ bool AudioDecoderSoftwareWrapper::SetConfig(const AudioConfig& config) { return true; } - if (config.is_encrypted() || !CreateSoftwareDecoder(config)) + if (config.is_encrypted || !CreateSoftwareDecoder(config)) return false; output_config_.codec = media::kCodecPCM; @@ -67,7 +67,7 @@ bool AudioDecoderSoftwareWrapper::SetConfig(const AudioConfig& config) { output_config_.channel_number = 2; output_config_.bytes_per_channel = 2; output_config_.samples_per_second = config.samples_per_second; - output_config_.encryption_scheme = Unencrypted(); + output_config_.is_encrypted = false; return backend_decoder_->SetConfig(output_config_); } diff --git a/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc b/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc index eba1961..bd747dd 100644 --- a/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc +++ b/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc @@ -66,7 +66,7 @@ class AudioVideoPipelineImplTest ::media::AudioDecoderConfig audio_config( ::media::kCodecMP3, ::media::kSampleFormatS16, ::media::CHANNEL_LAYOUT_STEREO, 44100, ::media::EmptyExtraData(), - ::media::Unencrypted()); + false); AvPipelineClient client; client.eos_cb = base::Bind(&AudioVideoPipelineImplTest::OnEos, base::Unretained(this), STREAM_AUDIO); @@ -80,7 +80,7 @@ class AudioVideoPipelineImplTest ::media::kCodecH264, ::media::H264PROFILE_MAIN, ::media::PIXEL_FORMAT_I420, ::media::COLOR_SPACE_UNSPECIFIED, gfx::Size(640, 480), gfx::Rect(0, 0, 640, 480), gfx::Size(640, 480), - ::media::EmptyExtraData(), ::media::Unencrypted())); + ::media::EmptyExtraData(), false)); VideoPipelineClient client; client.av_pipeline_client.eos_cb = base::Bind(&AudioVideoPipelineImplTest::OnEos, base::Unretained(this), diff --git a/chromecast/media/cma/test/mock_frame_provider.cc b/chromecast/media/cma/test/mock_frame_provider.cc index 16d6393..fdab889 100644 --- a/chromecast/media/cma/test/mock_frame_provider.cc +++ b/chromecast/media/cma/test/mock_frame_provider.cc @@ -82,7 +82,7 @@ void MockFrameProvider::DoRead(const ReadCB& read_cb) { ::media::kCodecH264, ::media::VIDEO_CODEC_PROFILE_UNKNOWN, ::media::PIXEL_FORMAT_YV12, ::media::COLOR_SPACE_UNSPECIFIED, coded_size, visible_rect, natural_size, ::media::EmptyExtraData(), - ::media::Unencrypted()); + false); audio_config = ::media::AudioDecoderConfig( ::media::kCodecAAC, @@ -90,7 +90,7 @@ void MockFrameProvider::DoRead(const ReadCB& read_cb) { ::media::CHANNEL_LAYOUT_STEREO, 44100, ::media::EmptyExtraData(), - ::media::Unencrypted()); + false); } read_cb.Run(buffer, audio_config, video_config); diff --git a/chromecast/media/media.gyp b/chromecast/media/media.gyp index 077ea0c..6cabfc7 100644 --- a/chromecast/media/media.gyp +++ b/chromecast/media/media.gyp @@ -229,8 +229,6 @@ 'cma/ipc_streamer/decoder_buffer_base_marshaller.h', 'cma/ipc_streamer/decrypt_config_marshaller.cc', 'cma/ipc_streamer/decrypt_config_marshaller.h', - 'cma/ipc_streamer/encryption_scheme_marshaller.cc', - 'cma/ipc_streamer/encryption_scheme_marshaller.h', 'cma/ipc_streamer/video_decoder_config_marshaller.cc', 'cma/ipc_streamer/video_decoder_config_marshaller.h', ], diff --git a/chromecast/public/media/decoder_config.h b/chromecast/public/media/decoder_config.h index b82c5c1..261b3f1 100644 --- a/chromecast/public/media/decoder_config.h +++ b/chromecast/public/media/decoder_config.h @@ -93,78 +93,13 @@ enum VideoProfile { kVideoProfileMax = kDolbyVisionNonCompatible_BL_EL_MD, }; -// Specification of whether and how the stream is encrypted (in whole or part). -struct EncryptionScheme { - // Algorithm and mode that was used to encrypt the stream. - enum CipherMode { - CIPHER_MODE_UNENCRYPTED, - CIPHER_MODE_AES_CTR, - CIPHER_MODE_AES_CBC - }; - - // CENC 3rd Edition adds pattern encryption, through two new protection - // schemes: 'cens' (with AES-CTR) and 'cbcs' (with AES-CBC). - // The pattern applies independently to each 'encrypted' part of the frame (as - // defined by the relevant subsample entries), and reduces further the - // actual encryption applied through a repeating pattern of (encrypt:skip) - // 16 byte blocks. For example, in a (1:9) pattern, the first block is - // encrypted, and the next nine are skipped. This pattern is applied - // repeatedly until the end of the last 16-byte block in the subsample. - // Any remaining bytes are left clear. - // If either of encrypt_blocks or skip_blocks is 0, pattern encryption is - // disabled. - struct Pattern { - Pattern() {} - Pattern(uint32_t encrypt_blocks, uint32_t skip_blocks); - ~Pattern() {} - bool IsInEffect() const; - - uint32_t encrypt_blocks = 0; - uint32_t skip_blocks = 0; - }; - - EncryptionScheme() {} - EncryptionScheme(CipherMode mode, const Pattern& pattern); - ~EncryptionScheme() {} - bool is_encrypted() const { return mode != CIPHER_MODE_UNENCRYPTED; } - - CipherMode mode = CIPHER_MODE_UNENCRYPTED; - Pattern pattern; -}; - -inline EncryptionScheme::Pattern::Pattern(uint32_t encrypt_blocks, - uint32_t skip_blocks) - : encrypt_blocks(encrypt_blocks), skip_blocks(skip_blocks) { -} - -inline bool EncryptionScheme::Pattern::IsInEffect() const { - return encrypt_blocks != 0 && skip_blocks != 0; -} - -inline EncryptionScheme::EncryptionScheme(CipherMode mode, - const Pattern& pattern) - : mode(mode), pattern(pattern) { -} - -inline EncryptionScheme Unencrypted() { - return EncryptionScheme(); -} - -inline EncryptionScheme AesCtrEncryptionScheme() { - return EncryptionScheme(EncryptionScheme::CIPHER_MODE_AES_CTR, - EncryptionScheme::Pattern()); -} - - -// TODO(erickung): Remove constructor once CMA backend implementation doesn't +// TODO(erickung): Remove constructor once CMA backend implementation does't // create a new object to reset the configuration and use IsValidConfig() to // determine if the configuration is still valid or not. struct AudioConfig { AudioConfig(); ~AudioConfig(); - bool is_encrypted() const { return encryption_scheme.is_encrypted(); } - // Stream id. StreamId id; // Audio codec. @@ -179,8 +114,8 @@ struct AudioConfig { int samples_per_second; // Extra data buffer for certain codec initialization. std::vector<uint8_t> extra_data; - // Encryption scheme (if any) used for the content. - EncryptionScheme encryption_scheme; + // content is encrypted or not. + bool is_encrypted; }; inline AudioConfig::AudioConfig() @@ -189,7 +124,8 @@ inline AudioConfig::AudioConfig() sample_format(kUnknownSampleFormat), bytes_per_channel(0), channel_number(0), - samples_per_second(0) { + samples_per_second(0), + is_encrypted(false) { } inline AudioConfig::~AudioConfig() { @@ -202,8 +138,6 @@ struct VideoConfig { VideoConfig(); ~VideoConfig(); - bool is_encrypted() const { return encryption_scheme.is_encrypted(); } - // Stream Id. StreamId id; // Video codec. @@ -216,15 +150,16 @@ struct VideoConfig { VideoConfig* additional_config; // Extra data buffer for certain codec initialization. std::vector<uint8_t> extra_data; - // Encryption scheme (if any) used for the content. - EncryptionScheme encryption_scheme; + // content is encrypted or not. + bool is_encrypted; }; inline VideoConfig::VideoConfig() : id(kPrimary), codec(kVideoCodecUnknown), profile(kVideoProfileUnknown), - additional_config(nullptr) { + additional_config(nullptr), + is_encrypted(false) { } inline VideoConfig::~VideoConfig() { |