Skip to content

Commit

Permalink
Revert of media config: expand is_encrypted to a struct. (patchset ch…
Browse files Browse the repository at this point in the history
…romium#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}
  • Loading branch information
alexmos authored and Commit bot committed Mar 11, 2016
1 parent 2ceccae commit c0fa874
Show file tree
Hide file tree
Showing 63 changed files with 260 additions and 790 deletions.
71 changes: 8 additions & 63 deletions chromecast/common/media/cma_param_traits.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand All @@ -30,24 +29,14 @@ 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) {
WriteParam(m, p.codec());
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());
}

Expand All @@ -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;
}

Expand All @@ -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());
}

Expand All @@ -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;
}

Expand All @@ -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
10 changes: 0 additions & 10 deletions chromecast/common/media/cma_param_traits.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
namespace media {
class AudioDecoderConfig;
class VideoDecoderConfig;
class EncryptionScheme;
}

namespace IPC {
Expand All @@ -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_
2 changes: 0 additions & 2 deletions chromecast/common/media/cma_param_traits_macros.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions chromecast/media/audio/cast_audio_output_stream.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -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 */);
Expand Down
67 changes: 4 additions & 63 deletions chromecast/media/cma/base/decoder_config_adapter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -183,62 +183,6 @@ ::media::AudioCodec ToMediaAudioCodec(
}
}

::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
Expand All @@ -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;
}

Expand All @@ -269,8 +212,7 @@ ::media::AudioDecoderConfig DecoderConfigAdapter::ToMediaAudioDecoderConfig(
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
Expand All @@ -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;
}

Expand Down
2 changes: 1 addition & 1 deletion chromecast/media/cma/base/demuxer_stream_for_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ ::media::VideoDecoderConfig DemuxerStreamForTest::video_decoder_config() {
visible_rect,
natural_size,
::media::EmptyExtraData(),
::media::Unencrypted());
false);
}

::media::DemuxerStream::Type DemuxerStreamForTest::type() const {
Expand Down
2 changes: 0 additions & 2 deletions chromecast/media/cma/ipc_streamer/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -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",
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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],
Expand All @@ -42,15 +41,15 @@ ::media::AudioDecoderConfig AudioDecoderConfigMarshaller::Read(
::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);
Expand All @@ -68,7 +67,7 @@ ::media::AudioDecoderConfig AudioDecoderConfigMarshaller::Read(
return ::media::AudioDecoderConfig(
codec, sample_format,
channel_layout, samples_per_second,
extra_data, encryption_scheme);
extra_data, is_encrypted);
}

} // namespace media
Expand Down
Loading

0 comments on commit c0fa874

Please sign in to comment.