Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(518)

Unified Diff: media/formats/mp4/aac.cc

Issue 1316273002: Updated AAC:Parse() to emit better error logs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | media/formats/mp4/aac_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/formats/mp4/aac.cc
diff --git a/media/formats/mp4/aac.cc b/media/formats/mp4/aac.cc
index 9aa749ca310cffe9eb0520c8c2c6395da439c4f0..853271f32505df382ae9591344367612e457e7ab 100644
--- a/media/formats/mp4/aac.cc
+++ b/media/formats/mp4/aac.cc
@@ -38,6 +38,11 @@ bool AAC::Parse(const std::vector<uint8>& data,
frequency_ = 0;
extension_frequency_ = 0;
+ // TODO(msu.koo): Need to update comments after checking which version of
+ // ISO 14496-3 this implementation is according to. Also need to reflect
+ // ISO 14496-3:2009 if ISO 14496-3:2005 was reflected here.
+ // https://crbug.com/532281
+
// The following code is written according to ISO 14496 Part 3 Table 1.13 -
// Syntax of AudioSpecificConfig.
@@ -58,9 +63,6 @@ bool AAC::Parse(const std::vector<uint8>& data,
RCHECK(reader.ReadBits(5, &profile_));
}
- MEDIA_LOG(INFO, media_log) << "Audio codec: mp4a.40." << std::hex
- << static_cast<int>(profile_);
-
RCHECK(SkipDecoderGASpecificConfig(&reader));
RCHECK(SkipErrorSpecificConfig());
@@ -96,12 +98,26 @@ bool AAC::Parse(const std::vector<uint8>& data,
}
if (frequency_ == 0) {
- RCHECK(frequency_index_ < kADTSFrequencyTableSize);
+ if (frequency_index_ >= kADTSFrequencyTableSize) {
+ MEDIA_LOG(ERROR, media_log)
+ << "Sampling Frequency Index(0x"
+ << std::hex << static_cast<int>(frequency_index_)
+ << ") is not supported. Please see ISO 14496-3:2005 Table 1.16 "
+ << "for supported Sampling Frequencies.";
+ return false;
+ }
frequency_ = kADTSFrequencyTable[frequency_index_];
}
if (extension_frequency_ == 0 && extension_frequency_index != 0xff) {
- RCHECK(extension_frequency_index < kADTSFrequencyTableSize);
+ if (extension_frequency_index >= kADTSFrequencyTableSize) {
+ MEDIA_LOG(ERROR, media_log)
+ << "Extension Sampling Frequency Index(0x"
+ << std::hex << static_cast<int>(extension_frequency_index)
+ << ") is not supported. Please see ISO 14496-3:2005 Table 1.16 "
+ << "for supported Sampling Frequencies.";
+ return false;
+ }
extension_frequency_ = kADTSFrequencyTable[extension_frequency_index];
}
@@ -109,12 +125,33 @@ bool AAC::Parse(const std::vector<uint8>& data,
if (ps_present && channel_config_ == 1) {
channel_layout_ = CHANNEL_LAYOUT_STEREO;
} else {
- RCHECK(channel_config_ < kADTSChannelLayoutTableSize);
+ if (channel_config_ >= kADTSChannelLayoutTableSize) {
+ MEDIA_LOG(ERROR, media_log)
+ << "Channel Configuration("
+ << static_cast<int>(channel_config_)
+ << ") is not supported. Please see ISO 14496-3:2005 Table 1.17 "
+ << "for supported Channel Configurations.";
+ return false;
+ }
channel_layout_ = kADTSChannelLayoutTable[channel_config_];
}
+ DCHECK(channel_layout_ != CHANNEL_LAYOUT_NONE);
+
+ if (profile_ < 1 || profile_ > 4) {
+ MEDIA_LOG(ERROR, media_log)
+ << "Audio codec(mp4a.40." << static_cast<int>(profile_)
+ << ") is not supported. Please see ISO 14496-3:2005 Table 1.3 "
+ << "for Audio Profile Definitions.";
+ return false;
+ }
+
+ MEDIA_LOG(INFO, media_log)
+ << "Audio codec: mp4a.40." << static_cast<int>(profile_)
+ << ". Sampling frequency: " << frequency_ << "Hz"
+ << ". Sampling frequency(Extension): " << extension_frequency_ << "Hz"
+ << ". Channel layout: " << channel_layout_ << ".";
- return frequency_ != 0 && channel_layout_ != CHANNEL_LAYOUT_NONE &&
- profile_ >= 1 && profile_ <= 4;
+ return true;
}
int AAC::GetOutputSamplesPerSecond(bool sbr_in_mimetype) const {
« no previous file with comments | « no previous file | media/formats/mp4/aac_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698