| Index: media/filters/h264_to_annex_b_bitstream_converter_unittest.cc
|
| diff --git a/media/filters/h264_to_annex_b_bitstream_converter_unittest.cc b/media/filters/h264_to_annex_b_bitstream_converter_unittest.cc
|
| index a921e6ed6a26affc87ead34bf7aaf3247d18f752..54c5c00d53a6621f0c2783dad0645bf3c0a5d2f6 100644
|
| --- a/media/filters/h264_to_annex_b_bitstream_converter_unittest.cc
|
| +++ b/media/filters/h264_to_annex_b_bitstream_converter_unittest.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "base/memory/scoped_ptr.h"
|
| #include "media/filters/h264_to_annex_b_bitstream_converter.h"
|
| +#include "media/formats/mp4/box_definitions.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace media {
|
| @@ -14,6 +15,9 @@ class H264ToAnnexBBitstreamConverterTest : public testing::Test {
|
|
|
| virtual ~H264ToAnnexBBitstreamConverterTest() {}
|
|
|
| + protected:
|
| + mp4::AVCDecoderConfigurationRecord avc_config_;
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(H264ToAnnexBBitstreamConverterTest);
|
| };
|
| @@ -271,17 +275,17 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, Success) {
|
| // Parse the headers.
|
| uint32 config_size = converter.ParseConfigurationAndCalculateSize(
|
| kHeaderDataOkWithFieldLen4,
|
| - sizeof(kHeaderDataOkWithFieldLen4));
|
| + sizeof(kHeaderDataOkWithFieldLen4),
|
| + &avc_config_);
|
| EXPECT_GT(config_size, 0U);
|
|
|
| // Go on with converting the headers.
|
| output.reset(new uint8[config_size]);
|
| EXPECT_TRUE(output.get() != NULL);
|
| EXPECT_TRUE(converter.ConvertAVCDecoderConfigToByteStream(
|
| - kHeaderDataOkWithFieldLen4,
|
| - sizeof(kHeaderDataOkWithFieldLen4),
|
| - output.get(),
|
| - &config_size));
|
| + avc_config_,
|
| + output.get(),
|
| + &config_size));
|
|
|
| // Calculate buffer size for actual NAL unit.
|
| uint32 output_size = converter.CalculateNeededOutputBufferSize(
|
| @@ -299,35 +303,6 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, Success) {
|
| sizeof(kPacketDataOkWithFieldLen4),
|
| output.get() + config_size,
|
| &output_size_left_for_nal_unit));
|
| -
|
| - // Classes allocated in stack are automatically destroyed.
|
| -}
|
| -
|
| -TEST_F(H264ToAnnexBBitstreamConverterTest, FailureNullData) {
|
| - // Initialize converter.
|
| - H264ToAnnexBBitstreamConverter converter;
|
| -
|
| - // Simulate situation where there is no header data.
|
| - uint32 config_size = converter.ParseConfigurationAndCalculateSize(NULL, 0);
|
| - EXPECT_EQ(config_size, 0U);
|
| -
|
| - // Go on with converting the headers with NULL parameters.
|
| - EXPECT_FALSE(converter.ConvertAVCDecoderConfigToByteStream(NULL,
|
| - 0,
|
| - NULL,
|
| - &config_size));
|
| -
|
| - // Simulate NULL parameters for buffer calculation.
|
| - uint32 output_size = converter.CalculateNeededOutputBufferSize(NULL, 0);
|
| - EXPECT_EQ(output_size, 0U);
|
| -
|
| - // Do the conversion for actual NAL unit with NULL paramaters.
|
| - EXPECT_FALSE(converter.ConvertNalUnitStreamToByteStream(NULL,
|
| - 0,
|
| - NULL,
|
| - &output_size));
|
| -
|
| - // Classes allocated in stack are automatically destroyed.
|
| }
|
|
|
| TEST_F(H264ToAnnexBBitstreamConverterTest, FailureHeaderBufferOverflow) {
|
| @@ -345,10 +320,9 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, FailureHeaderBufferOverflow) {
|
| // Parse the headers
|
| uint32 config_size = converter.ParseConfigurationAndCalculateSize(
|
| corrupted_header,
|
| - sizeof(corrupted_header));
|
| + sizeof(corrupted_header),
|
| + &avc_config_);
|
| EXPECT_EQ(config_size, 0U); // Failure as a result of buffer overflows.
|
| -
|
| - // Classes allocated in stack are automatically destroyed.
|
| }
|
|
|
| TEST_F(H264ToAnnexBBitstreamConverterTest, FailureNalUnitBreakage) {
|
| @@ -359,17 +333,17 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, FailureNalUnitBreakage) {
|
| // Parse the headers.
|
| uint32 config_size = converter.ParseConfigurationAndCalculateSize(
|
| kHeaderDataOkWithFieldLen4,
|
| - sizeof(kHeaderDataOkWithFieldLen4));
|
| + sizeof(kHeaderDataOkWithFieldLen4),
|
| + &avc_config_);
|
| EXPECT_GT(config_size, 0U);
|
|
|
| // Go on with converting the headers.
|
| output.reset(new uint8[config_size]);
|
| EXPECT_TRUE(output.get() != NULL);
|
| EXPECT_TRUE(converter.ConvertAVCDecoderConfigToByteStream(
|
| - kHeaderDataOkWithFieldLen4,
|
| - sizeof(kHeaderDataOkWithFieldLen4),
|
| - output.get(),
|
| - &config_size));
|
| + avc_config_,
|
| + output.get(),
|
| + &config_size));
|
|
|
| // Simulate NAL unit broken in middle by writing only some of the data.
|
| uint8 corrupted_nal_unit[sizeof(kPacketDataOkWithFieldLen4) - 100];
|
| @@ -396,8 +370,6 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, FailureNalUnitBreakage) {
|
| output.get() + config_size,
|
| &output_size_left_for_nal_unit));
|
| EXPECT_EQ(output_size_left_for_nal_unit, 0U);
|
| -
|
| - // Classes allocated in stack are automatically destroyed.
|
| }
|
|
|
| TEST_F(H264ToAnnexBBitstreamConverterTest, FailureTooSmallOutputBuffer) {
|
| @@ -408,7 +380,8 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, FailureTooSmallOutputBuffer) {
|
| // Parse the headers.
|
| uint32 config_size = converter.ParseConfigurationAndCalculateSize(
|
| kHeaderDataOkWithFieldLen4,
|
| - sizeof(kHeaderDataOkWithFieldLen4));
|
| + sizeof(kHeaderDataOkWithFieldLen4),
|
| + &avc_config_);
|
| EXPECT_GT(config_size, 0U);
|
| uint32 real_config_size = config_size;
|
|
|
| @@ -417,10 +390,9 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, FailureTooSmallOutputBuffer) {
|
| output.reset(new uint8[config_size]);
|
| EXPECT_TRUE(output.get() != NULL);
|
| EXPECT_FALSE(converter.ConvertAVCDecoderConfigToByteStream(
|
| - kHeaderDataOkWithFieldLen4,
|
| - sizeof(kHeaderDataOkWithFieldLen4),
|
| - output.get(),
|
| - &config_size));
|
| + avc_config_,
|
| + output.get(),
|
| + &config_size));
|
| EXPECT_EQ(config_size, 0U);
|
|
|
| // Still too small (but only 1 byte short).
|
| @@ -428,10 +400,9 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, FailureTooSmallOutputBuffer) {
|
| output.reset(new uint8[config_size]);
|
| EXPECT_TRUE(output.get() != NULL);
|
| EXPECT_FALSE(converter.ConvertAVCDecoderConfigToByteStream(
|
| - kHeaderDataOkWithFieldLen4,
|
| - sizeof(kHeaderDataOkWithFieldLen4),
|
| - output.get(),
|
| - &config_size));
|
| + avc_config_,
|
| + output.get(),
|
| + &config_size));
|
| EXPECT_EQ(config_size, 0U);
|
|
|
| // Finally, retry with valid buffer.
|
| @@ -439,10 +410,9 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, FailureTooSmallOutputBuffer) {
|
| output.reset(new uint8[config_size]);
|
| EXPECT_TRUE(output.get() != NULL);
|
| EXPECT_TRUE(converter.ConvertAVCDecoderConfigToByteStream(
|
| - kHeaderDataOkWithFieldLen4,
|
| - sizeof(kHeaderDataOkWithFieldLen4),
|
| - output.get(),
|
| - &config_size));
|
| + avc_config_,
|
| + output.get(),
|
| + &config_size));
|
|
|
| // Calculate buffer size for actual NAL unit.
|
| uint32 output_size = converter.CalculateNeededOutputBufferSize(
|
| @@ -463,8 +433,6 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, FailureTooSmallOutputBuffer) {
|
| output.get() + config_size,
|
| &output_size_left_for_nal_unit));
|
| EXPECT_EQ(output_size_left_for_nal_unit, 0U);
|
| -
|
| - // Classes allocated in stack are automatically destroyed.
|
| }
|
|
|
| // Generated from crash dump in http://crbug.com/234449 using xxd -i [file].
|
| @@ -489,14 +457,14 @@ TEST_F(H264ToAnnexBBitstreamConverterTest, CorruptedPacket) {
|
| // Parse the headers.
|
| uint32 config_size = converter.ParseConfigurationAndCalculateSize(
|
| kCorruptedPacketConfiguration,
|
| - sizeof(kCorruptedPacketConfiguration));
|
| + sizeof(kCorruptedPacketConfiguration),
|
| + &avc_config_);
|
| EXPECT_GT(config_size, 0U);
|
|
|
| // Go on with converting the headers.
|
| output.reset(new uint8[config_size]);
|
| EXPECT_TRUE(converter.ConvertAVCDecoderConfigToByteStream(
|
| - kCorruptedPacketConfiguration,
|
| - sizeof(kCorruptedPacketConfiguration),
|
| + avc_config_,
|
| output.get(),
|
| &config_size));
|
|
|
|
|