| 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) {
|
|
|