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