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

Side by Side Diff: media/filters/audio_decoder_unittest.cc

Issue 2378443002: Fix MSE ADTS parsing on Android. (Closed)
Patch Set: Address comments. Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « media/BUILD.gn ('k') | media/formats/mp2t/es_parser_adts.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 20 matching lines...) Expand all
31 #include "media/filters/in_memory_url_protocol.h" 31 #include "media/filters/in_memory_url_protocol.h"
32 #include "media/filters/opus_audio_decoder.h" 32 #include "media/filters/opus_audio_decoder.h"
33 #include "testing/gtest/include/gtest/gtest.h" 33 #include "testing/gtest/include/gtest/gtest.h"
34 34
35 #if defined(OS_ANDROID) 35 #if defined(OS_ANDROID)
36 #include "base/android/build_info.h" 36 #include "base/android/build_info.h"
37 #include "media/base/android/media_codec_util.h" 37 #include "media/base/android/media_codec_util.h"
38 #include "media/filters/android/media_codec_audio_decoder.h" 38 #include "media/filters/android/media_codec_audio_decoder.h"
39 39
40 #if defined(USE_PROPRIETARY_CODECS) 40 #if defined(USE_PROPRIETARY_CODECS)
41 #include "media/formats/mpeg/adts_header_parser.h" 41 #include "media/formats/mpeg/adts_stream_parser.h"
42 #endif 42 #endif
43 43
44 // Helper macro to skip the test if MediaCodec is not available. 44 // Helper macro to skip the test if MediaCodec is not available.
45 #define SKIP_TEST_IF_NO_MEDIA_CODEC() \ 45 #define SKIP_TEST_IF_NO_MEDIA_CODEC() \
46 do { \ 46 do { \
47 if (GetParam().decoder_type == MEDIA_CODEC) { \ 47 if (GetParam().decoder_type == MEDIA_CODEC) { \
48 if (!MediaCodecUtil::IsMediaCodecAvailable()) { \ 48 if (!MediaCodecUtil::IsMediaCodecAvailable()) { \
49 VLOG(0) << "Could not run test - no MediaCodec on device."; \ 49 VLOG(0) << "Could not run test - no MediaCodec on device."; \
50 return; \ 50 return; \
51 } \ 51 } \
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 197
198 AudioDecoderConfig config; 198 AudioDecoderConfig config;
199 ASSERT_TRUE(AVCodecContextToAudioDecoderConfig( 199 ASSERT_TRUE(AVCodecContextToAudioDecoderConfig(
200 reader_->codec_context_for_testing(), Unencrypted(), &config)); 200 reader_->codec_context_for_testing(), Unencrypted(), &config));
201 201
202 #if defined(OS_ANDROID) && defined(USE_PROPRIETARY_CODECS) 202 #if defined(OS_ANDROID) && defined(USE_PROPRIETARY_CODECS)
203 // MEDIA_CODEC type requires config->extra_data() for AAC codec. For ADTS 203 // MEDIA_CODEC type requires config->extra_data() for AAC codec. For ADTS
204 // streams we need to extract it with a separate procedure. 204 // streams we need to extract it with a separate procedure.
205 if (GetParam().decoder_type == MEDIA_CODEC && 205 if (GetParam().decoder_type == MEDIA_CODEC &&
206 GetParam().codec == kCodecAAC && config.extra_data().empty()) { 206 GetParam().codec == kCodecAAC && config.extra_data().empty()) {
207 size_t ignore_orig_sample_rate; 207 int sample_rate;
208 ASSERT_TRUE(ParseAdtsHeader(packet.data, false, &config, 208 ChannelLayout channel_layout;
209 &ignore_orig_sample_rate)); 209 std::vector<uint8_t> extra_data;
210 ASSERT_GT(ADTSStreamParser().ParseFrameHeader(
211 packet.data, packet.size, nullptr, &sample_rate,
212 &channel_layout, nullptr, nullptr, &extra_data),
213 0);
214 config.Initialize(kCodecAAC, kSampleFormatS16, channel_layout,
215 sample_rate, extra_data, Unencrypted(),
216 base::TimeDelta(), 0);
210 ASSERT_FALSE(config.extra_data().empty()); 217 ASSERT_FALSE(config.extra_data().empty());
211 } 218 }
212 #endif 219 #endif
213 220
214 av_packet_unref(&packet); 221 av_packet_unref(&packet);
215 222
216 EXPECT_EQ(GetParam().codec, config.codec()); 223 EXPECT_EQ(GetParam().codec, config.codec());
217 EXPECT_EQ(GetParam().samples_per_second, config.samples_per_second()); 224 EXPECT_EQ(GetParam().samples_per_second, config.samples_per_second());
218 EXPECT_EQ(GetParam().channel_layout, config.channel_layout()); 225 EXPECT_EQ(GetParam().channel_layout, config.channel_layout());
219 226
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 }; 635 };
629 636
630 INSTANTIATE_TEST_CASE_P(FFmpegAudioDecoderTest, 637 INSTANTIATE_TEST_CASE_P(FFmpegAudioDecoderTest,
631 AudioDecoderTest, 638 AudioDecoderTest,
632 testing::ValuesIn(kFFmpegTests)); 639 testing::ValuesIn(kFFmpegTests));
633 INSTANTIATE_TEST_CASE_P(FFmpegAudioDecoderBehavioralTest, 640 INSTANTIATE_TEST_CASE_P(FFmpegAudioDecoderBehavioralTest,
634 FFmpegAudioDecoderBehavioralTest, 641 FFmpegAudioDecoderBehavioralTest,
635 testing::ValuesIn(kFFmpegBehavioralTest)); 642 testing::ValuesIn(kFFmpegBehavioralTest));
636 643
637 } // namespace media 644 } // namespace media
OLDNEW
« no previous file with comments | « media/BUILD.gn ('k') | media/formats/mp2t/es_parser_adts.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698