OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/formats/mpeg/mpeg1_audio_stream_parser.h" | 5 #include "media/formats/mpeg/mpeg1_audio_stream_parser.h" |
6 | 6 |
7 namespace media { | 7 namespace media { |
8 | 8 |
9 static const uint32 kMPEG1StartCodeMask = 0xffe00000; | 9 static const uint32_t kMPEG1StartCodeMask = 0xffe00000; |
10 | 10 |
11 // Map that determines which bitrate_index & channel_mode combinations | 11 // Map that determines which bitrate_index & channel_mode combinations |
12 // are allowed. | 12 // are allowed. |
13 // Derived from: http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html | 13 // Derived from: http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html |
14 static const bool kIsAllowed[17][4] = { | 14 static const bool kIsAllowed[17][4] = { |
15 { true, true, true, true }, // free | 15 { true, true, true, true }, // free |
16 { true, false, false, false }, // 32 | 16 { true, false, false, false }, // 32 |
17 { true, false, false, false }, // 48 | 17 { true, false, false, false }, // 48 |
18 { true, false, false, false }, // 56 | 18 { true, false, false, false }, // 56 |
19 { true, true, true, true }, // 64 | 19 { true, true, true, true }, // 64 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 | 81 |
82 // Frame header field constants. | 82 // Frame header field constants. |
83 static const int kBitrateFree = 0; | 83 static const int kBitrateFree = 0; |
84 static const int kBitrateBad = 0xf; | 84 static const int kBitrateBad = 0xf; |
85 static const int kSampleRateReserved = 3; | 85 static const int kSampleRateReserved = 3; |
86 static const int kCodecDelay = 529; | 86 static const int kCodecDelay = 529; |
87 | 87 |
88 // static | 88 // static |
89 bool MPEG1AudioStreamParser::ParseHeader( | 89 bool MPEG1AudioStreamParser::ParseHeader( |
90 const scoped_refptr<MediaLog>& media_log, | 90 const scoped_refptr<MediaLog>& media_log, |
91 const uint8* data, | 91 const uint8_t* data, |
92 Header* header) { | 92 Header* header) { |
93 BitReader reader(data, kHeaderSize); | 93 BitReader reader(data, kHeaderSize); |
94 int sync; | 94 int sync; |
95 int version; | 95 int version; |
96 int layer; | 96 int layer; |
97 int is_protected; | 97 int is_protected; |
98 int bitrate_index; | 98 int bitrate_index; |
99 int sample_rate_index; | 99 int sample_rate_index; |
100 int has_padding; | 100 int has_padding; |
101 int is_private; | 101 int is_private; |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 header->channel_mode = channel_mode; | 214 header->channel_mode = channel_mode; |
215 return true; | 215 return true; |
216 } | 216 } |
217 | 217 |
218 | 218 |
219 MPEG1AudioStreamParser::MPEG1AudioStreamParser() | 219 MPEG1AudioStreamParser::MPEG1AudioStreamParser() |
220 : MPEGAudioStreamParserBase(kMPEG1StartCodeMask, kCodecMP3, kCodecDelay) {} | 220 : MPEGAudioStreamParserBase(kMPEG1StartCodeMask, kCodecMP3, kCodecDelay) {} |
221 | 221 |
222 MPEG1AudioStreamParser::~MPEG1AudioStreamParser() {} | 222 MPEG1AudioStreamParser::~MPEG1AudioStreamParser() {} |
223 | 223 |
224 int MPEG1AudioStreamParser::ParseFrameHeader(const uint8* data, | 224 int MPEG1AudioStreamParser::ParseFrameHeader(const uint8_t* data, |
225 int size, | 225 int size, |
226 int* frame_size, | 226 int* frame_size, |
227 int* sample_rate, | 227 int* sample_rate, |
228 ChannelLayout* channel_layout, | 228 ChannelLayout* channel_layout, |
229 int* sample_count, | 229 int* sample_count, |
230 bool* metadata_frame) const { | 230 bool* metadata_frame) const { |
231 DCHECK(data); | 231 DCHECK(data); |
232 DCHECK_GE(size, 0); | 232 DCHECK_GE(size, 0); |
233 DCHECK(frame_size); | 233 DCHECK(frame_size); |
234 | 234 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 if (metadata_frame) | 279 if (metadata_frame) |
280 *metadata_frame = true; | 280 *metadata_frame = true; |
281 return header_bytes_read + reader.bits_read() / 8; | 281 return header_bytes_read + reader.bits_read() / 8; |
282 } | 282 } |
283 | 283 |
284 // If it wasn't a XING frame, just return the number consumed bytes. | 284 // If it wasn't a XING frame, just return the number consumed bytes. |
285 return header_bytes_read; | 285 return header_bytes_read; |
286 } | 286 } |
287 | 287 |
288 } // namespace media | 288 } // namespace media |
OLD | NEW |