bafe2ce593
disable the package notes info as workaround for linking issue on f36 f36 has old libaom, enable bundle libaom on f36
295 lines
15 KiB
Diff
295 lines
15 KiB
Diff
diff -up chromium-108.0.5359.124/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc.revert-new-channel-layout-api chromium-108.0.5359.124/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
|
|
--- chromium-108.0.5359.124/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc.revert-new-channel-layout-api 2022-12-14 01:39:52.000000000 +0100
|
|
+++ chromium-108.0.5359.124/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc 2023-01-04 21:44:23.098276796 +0100
|
|
@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecConte
|
|
codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
|
|
}
|
|
|
|
- codec_context->ch_layout.nb_channels = config.channel_count;
|
|
+ codec_context->channels = config.channel_count;
|
|
codec_context->sample_rate = config.samples_per_second;
|
|
|
|
if (config.extra_data) {
|
|
@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_fo
|
|
case cdm::kAudioFormatPlanarS16:
|
|
case cdm::kAudioFormatPlanarF32: {
|
|
const int decoded_size_per_channel =
|
|
- decoded_audio_size / av_frame.ch_layout.nb_channels;
|
|
- for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
|
|
+ decoded_audio_size / av_frame.channels;
|
|
+ for (int i = 0; i < av_frame.channels; ++i) {
|
|
memcpy(output_buffer, av_frame.extended_data[i],
|
|
decoded_size_per_channel);
|
|
output_buffer += decoded_size_per_channel;
|
|
@@ -185,14 +185,13 @@ bool FFmpegCdmAudioDecoder::Initialize(
|
|
// Success!
|
|
decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
|
|
samples_per_second_ = config.samples_per_second;
|
|
- bytes_per_frame_ =
|
|
- codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
|
|
+ bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
|
|
output_timestamp_helper_ =
|
|
std::make_unique<AudioTimestampHelper>(config.samples_per_second);
|
|
is_initialized_ = true;
|
|
|
|
// Store initial values to guard against midstream configuration changes.
|
|
- channels_ = codec_context_->ch_layout.nb_channels;
|
|
+ channels_ = codec_context_->channels;
|
|
av_sample_format_ = codec_context_->sample_fmt;
|
|
|
|
return true;
|
|
@@ -292,19 +291,17 @@ cdm::Status FFmpegCdmAudioDecoder::Decod
|
|
for (auto& frame : audio_frames) {
|
|
int decoded_audio_size = 0;
|
|
if (frame->sample_rate != samples_per_second_ ||
|
|
- frame->ch_layout.nb_channels != channels_ ||
|
|
- frame->format != av_sample_format_) {
|
|
+ frame->channels != channels_ || frame->format != av_sample_format_) {
|
|
DLOG(ERROR) << "Unsupported midstream configuration change!"
|
|
<< " Sample Rate: " << frame->sample_rate << " vs "
|
|
- << samples_per_second_
|
|
- << ", Channels: " << frame->ch_layout.nb_channels << " vs "
|
|
- << channels_ << ", Sample Format: " << frame->format << " vs "
|
|
- << av_sample_format_;
|
|
+ << samples_per_second_ << ", Channels: " << frame->channels
|
|
+ << " vs " << channels_ << ", Sample Format: " << frame->format
|
|
+ << " vs " << av_sample_format_;
|
|
return cdm::kDecodeError;
|
|
}
|
|
|
|
decoded_audio_size = av_samples_get_buffer_size(
|
|
- nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
|
|
+ nullptr, codec_context_->channels, frame->nb_samples,
|
|
codec_context_->sample_fmt, 1);
|
|
if (!decoded_audio_size)
|
|
continue;
|
|
@@ -323,9 +320,9 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
|
|
size_t* total_size,
|
|
std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
|
|
AVFrame* frame) {
|
|
- *total_size += av_samples_get_buffer_size(
|
|
- nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
|
|
- codec_context_->sample_fmt, 1);
|
|
+ *total_size += av_samples_get_buffer_size(nullptr, codec_context_->channels,
|
|
+ frame->nb_samples,
|
|
+ codec_context_->sample_fmt, 1);
|
|
audio_frames->emplace_back(av_frame_clone(frame));
|
|
return true;
|
|
}
|
|
diff -up chromium-108.0.5359.124/media/ffmpeg/ffmpeg_common.cc.revert-new-channel-layout-api chromium-108.0.5359.124/media/ffmpeg/ffmpeg_common.cc
|
|
--- chromium-108.0.5359.124/media/ffmpeg/ffmpeg_common.cc.revert-new-channel-layout-api 2022-12-14 01:39:52.000000000 +0100
|
|
+++ chromium-108.0.5359.124/media/ffmpeg/ffmpeg_common.cc 2023-01-04 21:52:59.674165082 +0100
|
|
@@ -353,11 +353,9 @@ bool AVCodecContextToAudioDecoderConfig(
|
|
codec_context->sample_fmt, codec_context->codec_id);
|
|
|
|
ChannelLayout channel_layout =
|
|
- codec_context->ch_layout.nb_channels > 8
|
|
+ codec_context->channels > 8
|
|
? CHANNEL_LAYOUT_DISCRETE
|
|
- : ChannelLayoutToChromeChannelLayout(
|
|
- codec_context->ch_layout.u.mask,
|
|
- codec_context->ch_layout.nb_channels);
|
|
+ : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout, codec_context->channels);
|
|
|
|
switch (codec) {
|
|
// For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does
|
|
@@ -409,7 +407,7 @@ bool AVCodecContextToAudioDecoderConfig(
|
|
extra_data, encryption_scheme, seek_preroll,
|
|
codec_context->delay);
|
|
if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
|
|
- config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
|
|
+ config->SetChannelsForDiscrete(codec_context->channels);
|
|
|
|
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
|
|
// These are bitstream formats unknown to ffmpeg, so they don't have
|
|
@@ -478,7 +476,7 @@ void AudioDecoderConfigToAVCodecContext(
|
|
|
|
// TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
|
|
// said information to decode.
|
|
- codec_context->ch_layout.nb_channels = config.channels();
|
|
+ codec_context->channels = config.channels();
|
|
codec_context->sample_rate = config.samples_per_second();
|
|
|
|
if (config.extra_data().empty()) {
|
|
diff -up chromium-108.0.5359.124/media/filters/audio_file_reader.cc.revert-new-channel-layout-api chromium-108.0.5359.124/media/filters/audio_file_reader.cc
|
|
--- chromium-108.0.5359.124/media/filters/audio_file_reader.cc.revert-new-channel-layout-api 2023-01-04 21:44:23.095276762 +0100
|
|
+++ chromium-108.0.5359.124/media/filters/audio_file_reader.cc 2023-01-04 21:44:23.098276796 +0100
|
|
@@ -113,15 +113,14 @@ bool AudioFileReader::OpenDecoder() {
|
|
|
|
// Verify the channel layout is supported by Chrome. Acts as a sanity check
|
|
// against invalid files. See http://crbug.com/171962
|
|
- if (ChannelLayoutToChromeChannelLayout(
|
|
- codec_context_->ch_layout.u.mask,
|
|
- codec_context_->ch_layout.nb_channels) ==
|
|
+ if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
|
|
+ codec_context_->channels) ==
|
|
CHANNEL_LAYOUT_UNSUPPORTED) {
|
|
return false;
|
|
}
|
|
|
|
// Store initial values to guard against midstream configuration changes.
|
|
- channels_ = codec_context_->ch_layout.nb_channels;
|
|
+ channels_ = codec_context_->channels;
|
|
audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
|
|
sample_rate_ = codec_context_->sample_rate;
|
|
av_sample_format_ = codec_context_->sample_fmt;
|
|
@@ -224,7 +223,7 @@ bool AudioFileReader::OnNewFrame(
|
|
if (frames_read < 0)
|
|
return false;
|
|
|
|
- const int channels = frame->ch_layout.nb_channels;
|
|
+ const int channels = frame->channels;
|
|
if (frame->sample_rate != sample_rate_ || channels != channels_ ||
|
|
frame->format != av_sample_format_) {
|
|
DLOG(ERROR) << "Unsupported midstream configuration change!"
|
|
diff -up chromium-108.0.5359.124/media/filters/audio_file_reader_unittest.cc.revert-new-channel-layout-api chromium-108.0.5359.124/media/filters/audio_file_reader_unittest.cc
|
|
--- chromium-108.0.5359.124/media/filters/audio_file_reader_unittest.cc.revert-new-channel-layout-api 2022-12-14 01:39:52.000000000 +0100
|
|
+++ chromium-108.0.5359.124/media/filters/audio_file_reader_unittest.cc 2023-01-04 21:44:23.098276796 +0100
|
|
@@ -121,11 +121,11 @@ class AudioFileReaderTest : public testi
|
|
EXPECT_FALSE(reader_->Open());
|
|
}
|
|
|
|
- void RunTestFailingDecode(const char* fn, int expect_read = 0) {
|
|
+ void RunTestFailingDecode(const char* fn) {
|
|
Initialize(fn);
|
|
EXPECT_TRUE(reader_->Open());
|
|
std::vector<std::unique_ptr<AudioBus>> decoded_audio_packets;
|
|
- EXPECT_EQ(reader_->Read(&decoded_audio_packets), expect_read);
|
|
+ EXPECT_EQ(reader_->Read(&decoded_audio_packets), 0);
|
|
}
|
|
|
|
void RunTestPartialDecode(const char* fn) {
|
|
@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) {
|
|
}
|
|
|
|
TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) {
|
|
- RunTestFailingDecode("midstream_config_change.mp3", 42624);
|
|
+ RunTestFailingDecode("midstream_config_change.mp3");
|
|
}
|
|
#endif
|
|
|
|
diff -up chromium-108.0.5359.124/media/filters/audio_video_metadata_extractor.cc.revert-new-channel-layout-api chromium-108.0.5359.124/media/filters/audio_video_metadata_extractor.cc
|
|
--- chromium-108.0.5359.124/media/filters/audio_video_metadata_extractor.cc.revert-new-channel-layout-api 2022-12-14 01:39:52.000000000 +0100
|
|
+++ chromium-108.0.5359.124/media/filters/audio_video_metadata_extractor.cc 2023-01-04 21:44:23.098276796 +0100
|
|
@@ -113,15 +113,6 @@ bool AudioVideoMetadataExtractor::Extrac
|
|
if (!stream)
|
|
continue;
|
|
|
|
- void* display_matrix =
|
|
- av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
|
|
- if (display_matrix) {
|
|
- rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
|
|
- static_cast<int32_t*>(display_matrix))
|
|
- .rotation;
|
|
- info.tags["rotate"] = base::NumberToString(rotation_);
|
|
- }
|
|
-
|
|
// Extract dictionary from streams also. Needed for containers that attach
|
|
// metadata to contained streams instead the container itself, like OGG.
|
|
ExtractDictionary(stream->metadata, &info.tags);
|
|
@@ -264,6 +255,8 @@ void AudioVideoMetadataExtractor::Extrac
|
|
if (raw_tags->find(tag->key) == raw_tags->end())
|
|
(*raw_tags)[tag->key] = tag->value;
|
|
|
|
+ if (ExtractInt(tag, "rotate", &rotation_))
|
|
+ continue;
|
|
if (ExtractString(tag, "album", &album_))
|
|
continue;
|
|
if (ExtractString(tag, "artist", &artist_))
|
|
diff -up chromium-108.0.5359.124/media/filters/ffmpeg_aac_bitstream_converter.cc.revert-new-channel-layout-api chromium-108.0.5359.124/media/filters/ffmpeg_aac_bitstream_converter.cc
|
|
--- chromium-108.0.5359.124/media/filters/ffmpeg_aac_bitstream_converter.cc.revert-new-channel-layout-api 2022-12-14 01:39:52.000000000 +0100
|
|
+++ chromium-108.0.5359.124/media/filters/ffmpeg_aac_bitstream_converter.cc 2023-01-04 21:44:23.099276807 +0100
|
|
@@ -195,15 +195,14 @@ bool FFmpegAACBitstreamConverter::Conver
|
|
if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
|
|
audio_profile_ != stream_codec_parameters_->profile ||
|
|
sample_rate_index_ != sample_rate_index ||
|
|
- channel_configuration_ !=
|
|
- stream_codec_parameters_->ch_layout.nb_channels ||
|
|
+ channel_configuration_ != stream_codec_parameters_->channels ||
|
|
frame_length_ != header_plus_packet_size) {
|
|
header_generated_ =
|
|
GenerateAdtsHeader(stream_codec_parameters_->codec_id,
|
|
0, // layer
|
|
stream_codec_parameters_->profile, sample_rate_index,
|
|
0, // private stream
|
|
- stream_codec_parameters_->ch_layout.nb_channels,
|
|
+ stream_codec_parameters_->channels,
|
|
0, // originality
|
|
0, // home
|
|
0, // copyrighted_stream
|
|
@@ -215,7 +214,7 @@ bool FFmpegAACBitstreamConverter::Conver
|
|
codec_ = stream_codec_parameters_->codec_id;
|
|
audio_profile_ = stream_codec_parameters_->profile;
|
|
sample_rate_index_ = sample_rate_index;
|
|
- channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
|
|
+ channel_configuration_ = stream_codec_parameters_->channels;
|
|
frame_length_ = header_plus_packet_size;
|
|
}
|
|
|
|
diff -up chromium-108.0.5359.124/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc.revert-new-channel-layout-api chromium-108.0.5359.124/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
|
|
--- chromium-108.0.5359.124/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc.revert-new-channel-layout-api 2022-12-14 01:39:52.000000000 +0100
|
|
+++ chromium-108.0.5359.124/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc 2023-01-04 21:44:23.099276807 +0100
|
|
@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest :
|
|
memset(&test_parameters_, 0, sizeof(AVCodecParameters));
|
|
test_parameters_.codec_id = AV_CODEC_ID_AAC;
|
|
test_parameters_.profile = FF_PROFILE_AAC_MAIN;
|
|
- test_parameters_.ch_layout.nb_channels = 2;
|
|
+ test_parameters_.channels = 2;
|
|
test_parameters_.extradata = extradata_header_;
|
|
test_parameters_.extradata_size = sizeof(extradata_header_);
|
|
}
|
|
diff -up chromium-108.0.5359.124/media/filters/ffmpeg_audio_decoder.cc.revert-new-channel-layout-api chromium-108.0.5359.124/media/filters/ffmpeg_audio_decoder.cc
|
|
--- chromium-108.0.5359.124/media/filters/ffmpeg_audio_decoder.cc.revert-new-channel-layout-api 2022-12-14 01:39:52.000000000 +0100
|
|
+++ chromium-108.0.5359.124/media/filters/ffmpeg_audio_decoder.cc 2023-01-04 21:44:23.099276807 +0100
|
|
@@ -28,7 +28,7 @@ namespace media {
|
|
|
|
// Return the number of channels from the data in |frame|.
|
|
static inline int DetermineChannels(AVFrame* frame) {
|
|
- return frame->ch_layout.nb_channels;
|
|
+ return frame->channels;
|
|
}
|
|
|
|
// Called by FFmpeg's allocation routine to allocate a buffer. Uses
|
|
@@ -233,7 +233,7 @@ bool FFmpegAudioDecoder::OnNewFrame(cons
|
|
// Translate unsupported into discrete layouts for discrete configurations;
|
|
// ffmpeg does not have a labeled discrete configuration internally.
|
|
ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
|
|
- codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
|
|
+ codec_context_->channel_layout, codec_context_->channels);
|
|
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
|
|
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
|
|
channel_layout = CHANNEL_LAYOUT_DISCRETE;
|
|
@@ -350,11 +350,11 @@ bool FFmpegAudioDecoder::ConfigureDecode
|
|
// Success!
|
|
av_sample_format_ = codec_context_->sample_fmt;
|
|
|
|
- if (codec_context_->ch_layout.nb_channels != config.channels()) {
|
|
+ if (codec_context_->channels != config.channels()) {
|
|
MEDIA_LOG(ERROR, media_log_)
|
|
<< "Audio configuration specified " << config.channels()
|
|
<< " channels, but FFmpeg thinks the file contains "
|
|
- << codec_context_->ch_layout.nb_channels << " channels";
|
|
+ << codec_context_->channels << " channels";
|
|
ReleaseFFmpegResources();
|
|
state_ = DecoderState::kUninitialized;
|
|
return false;
|
|
@@ -405,7 +405,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(s
|
|
if (frame->nb_samples <= 0)
|
|
return AVERROR(EINVAL);
|
|
|
|
- if (s->ch_layout.nb_channels != channels) {
|
|
+ if (s->channels != channels) {
|
|
DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
|
|
return AVERROR(EINVAL);
|
|
}
|
|
@@ -438,8 +438,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(s
|
|
ChannelLayout channel_layout =
|
|
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
|
|
? CHANNEL_LAYOUT_DISCRETE
|
|
- : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
|
|
- s->ch_layout.nb_channels);
|
|
+ : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
|
|
|
|
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
|
|
DLOG(ERROR) << "Unsupported channel layout.";
|