Index: media/ffmpeg/ffmpeg_common_unittest.cc |
diff --git a/media/ffmpeg/ffmpeg_common_unittest.cc b/media/ffmpeg/ffmpeg_common_unittest.cc |
index 098417ad9a07f70e4ede34cbb9ea542f56952013..bb5c94a8d0c008997fee73500ab6dafbc605a172 100644 |
--- a/media/ffmpeg/ffmpeg_common_unittest.cc |
+++ b/media/ffmpeg/ffmpeg_common_unittest.cc |
@@ -42,40 +42,43 @@ void TestConfigConvertExtraData( |
EXPECT_TRUE(converter_fn.Run(stream, decoder_config)); |
// Store orig to let FFmpeg free whatever it allocated. |
- AVCodecContext* codec_context = stream->codec; |
- uint8_t* orig_extradata = codec_context->extradata; |
- int orig_extradata_size = codec_context->extradata_size; |
+ AVCodecParameters* codec_parameters = stream->codecpar; |
+ uint8_t* orig_extradata = codec_parameters->extradata; |
+ int orig_extradata_size = codec_parameters->extradata_size; |
// Valid combination: extra_data = NULL && size = 0. |
- codec_context->extradata = NULL; |
- codec_context->extradata_size = 0; |
+ codec_parameters->extradata = NULL; |
+ codec_parameters->extradata_size = 0; |
EXPECT_TRUE(converter_fn.Run(stream, decoder_config)); |
- EXPECT_EQ(static_cast<size_t>(codec_context->extradata_size), |
+ EXPECT_EQ(static_cast<size_t>(codec_parameters->extradata_size), |
decoder_config->extra_data().size()); |
// Valid combination: extra_data = non-NULL && size > 0. |
- codec_context->extradata = &kExtraData[0]; |
- codec_context->extradata_size = arraysize(kExtraData); |
+ codec_parameters->extradata = &kExtraData[0]; |
+ codec_parameters->extradata_size = arraysize(kExtraData); |
EXPECT_TRUE(converter_fn.Run(stream, decoder_config)); |
- EXPECT_EQ(static_cast<size_t>(codec_context->extradata_size), |
+ EXPECT_EQ(static_cast<size_t>(codec_parameters->extradata_size), |
decoder_config->extra_data().size()); |
- EXPECT_EQ(0, memcmp(codec_context->extradata, |
- &decoder_config->extra_data()[0], |
- decoder_config->extra_data().size())); |
- |
- // Invalid combination: extra_data = NULL && size != 0. |
- codec_context->extradata = NULL; |
- codec_context->extradata_size = 10; |
- EXPECT_FALSE(converter_fn.Run(stream, decoder_config)); |
+ EXPECT_EQ( |
+ 0, memcmp(codec_parameters->extradata, &decoder_config->extra_data()[0], |
+ decoder_config->extra_data().size())); |
+ |
+ // Possible combination: extra_data = NULL && size != 0, but the converter |
+ // function considers this valid and having no extra_data, due to behavior of |
+ // avcodec_parameters_to_context(). |
+ codec_parameters->extradata = NULL; |
+ codec_parameters->extradata_size = 10; |
+ EXPECT_TRUE(converter_fn.Run(stream, decoder_config)); |
+ EXPECT_EQ(0UL, decoder_config->extra_data().size()); |
// Invalid combination: extra_data = non-NULL && size = 0. |
- codec_context->extradata = &kExtraData[0]; |
- codec_context->extradata_size = 0; |
+ codec_parameters->extradata = &kExtraData[0]; |
+ codec_parameters->extradata_size = 0; |
EXPECT_FALSE(converter_fn.Run(stream, decoder_config)); |
// Restore orig values for sane cleanup. |
- codec_context->extradata = orig_extradata; |
- codec_context->extradata_size = orig_extradata_size; |
+ codec_parameters->extradata = orig_extradata; |
+ codec_parameters->extradata_size = orig_extradata_size; |
} |
TEST_F(FFmpegCommonTest, AVStreamToDecoderConfig) { |
@@ -95,8 +98,8 @@ TEST_F(FFmpegCommonTest, AVStreamToDecoderConfig) { |
i < format_context->nb_streams && (!found_audio || !found_video); |
++i) { |
AVStream* stream = format_context->streams[i]; |
- AVCodecContext* codec_context = stream->codec; |
- AVMediaType codec_type = codec_context->codec_type; |
+ AVCodecParameters* codec_parameters = stream->codecpar; |
+ AVMediaType codec_type = codec_parameters->codec_type; |
if (codec_type == AVMEDIA_TYPE_AUDIO) { |
if (found_audio) |
@@ -186,7 +189,7 @@ TEST_F(FFmpegCommonTest, VerifyFormatSizes) { |
TEST_F(FFmpegCommonTest, UTCDateToTime_Valid) { |
base::Time result; |
- EXPECT_TRUE(FFmpegUTCDateToTime("2012-11-10 12:34:56", &result)); |
+ EXPECT_TRUE(FFmpegUTCDateToTime("2012-11-10T12:34:56.987654Z", &result)); |
base::Time::Exploded exploded; |
result.UTCExplode(&exploded); |
@@ -198,34 +201,49 @@ TEST_F(FFmpegCommonTest, UTCDateToTime_Valid) { |
EXPECT_EQ(12, exploded.hour); |
EXPECT_EQ(34, exploded.minute); |
EXPECT_EQ(56, exploded.second); |
- EXPECT_EQ(0, exploded.millisecond); |
+ EXPECT_EQ(987, exploded.millisecond); |
+ |
+ // base::Time exploding operations round fractional milliseconds down, so |
+ // verify fractional milliseconds using a base::TimeDelta. |
+ base::Time without_fractional_ms; |
+ EXPECT_TRUE(base::Time::FromUTCExploded(exploded, &without_fractional_ms)); |
+ base::TimeDelta delta = result - without_fractional_ms; |
+ EXPECT_EQ(654, delta.InMicroseconds()); |
} |
TEST_F(FFmpegCommonTest, UTCDateToTime_Invalid) { |
const char* invalid_date_strings[] = { |
- "", |
- "2012-11-10", |
- "12:34:56", |
- "-- ::", |
- "2012-11-10 12:34:", |
- "2012-11-10 12::56", |
- "2012-11-10 :34:56", |
- "2012-11- 12:34:56", |
- "2012--10 12:34:56", |
- "-11-10 12:34:56", |
- "2012-11 12:34:56", |
- "2012-11-10-12 12:34:56", |
- "2012-11-10 12:34", |
- "2012-11-10 12:34:56:78", |
- "ABCD-11-10 12:34:56", |
- "2012-EF-10 12:34:56", |
- "2012-11-GH 12:34:56", |
- "2012-11-10 IJ:34:56", |
- "2012-11-10 12:JL:56", |
- "2012-11-10 12:34:MN", |
- "2012-11-10 12:34:56.123", |
- "2012-11-1012:34:56", |
- "2012-11-10 12:34:56 UTC", |
+ "", |
+ "2012-11-10 12:34:56", |
+ "2012-11-10 12:34:56.987654Z", |
+ "2012-11-10T12:34:56", |
+ "2012-11-10T12:34:56.98765Z", |
+ "2012-11-10T12:34:56.98765JZ", |
+ "2012-11-10T12:34:56.987654Z3", |
+ "2012-11-10T12:34:56.987654ZZ", |
+ "2012-11-10T12:34:56.987654Z.987654Z", |
+ "2012-11-10", |
+ "12:34:56", |
+ "-- ::", |
+ "2012-11-10 12:34:", |
+ "2012-11-10 12::56", |
+ "2012-11-10 :34:56", |
+ "2012-11- 12:34:56", |
+ "2012--10 12:34:56", |
+ "-11-10 12:34:56", |
+ "2012-11 12:34:56", |
+ "2012-11-10-12 12:34:56", |
+ "2012-11-10 12:34", |
+ "2012-11-10 12:34:56:78", |
+ "ABCD-11-10 12:34:56", |
+ "2012-EF-10 12:34:56", |
+ "2012-11-GH 12:34:56", |
+ "2012-11-10 IJ:34:56", |
+ "2012-11-10 12:JL:56", |
+ "2012-11-10 12:34:MN", |
+ "2012-11-10 12:34:56.123", |
+ "2012-11-1012:34:56", |
+ "2012-11-10 12:34:56 UTC", |
}; |
for (size_t i = 0; i < arraysize(invalid_date_strings); ++i) { |