Index: source/libvpx/test/svc_test.cc |
=================================================================== |
--- source/libvpx/test/svc_test.cc (revision 292608) |
+++ source/libvpx/test/svc_test.cc (working copy) |
@@ -225,10 +225,9 @@ |
EXPECT_EQ(received_frames, n); |
} |
- void DropLayersAndMakeItVP9Comaptible(struct vpx_fixed_buf *const inputs, |
- const int num_super_frames, |
- const int remained_spatial_layers, |
- const bool is_multiple_frame_contexts) { |
+ void DropEnhancementLayers(struct vpx_fixed_buf *const inputs, |
+ const int num_super_frames, |
+ const int remained_spatial_layers) { |
ASSERT_TRUE(inputs != NULL); |
ASSERT_GT(num_super_frames, 0); |
ASSERT_GT(remained_spatial_layers, 0); |
@@ -250,45 +249,6 @@ |
if (frame_count == 0) { |
// There's no super frame but only a single frame. |
ASSERT_EQ(1, remained_spatial_layers); |
- if (is_multiple_frame_contexts) { |
- // Make a new super frame. |
- uint8_t marker = 0xc1; |
- unsigned int mask; |
- int mag; |
- |
- // Choose the magnitude. |
- for (mag = 0, mask = 0xff; mag < 4; ++mag) { |
- if (inputs[i].sz < mask) |
- break; |
- mask <<= 8; |
- mask |= 0xff; |
- } |
- marker |= mag << 3; |
- int index_sz = 2 + (mag + 1) * 2; |
- |
- inputs[i].buf = realloc(inputs[i].buf, inputs[i].sz + index_sz + 16); |
- ASSERT_TRUE(inputs[i].buf != NULL); |
- uint8_t *frame_data = static_cast<uint8_t*>(inputs[i].buf); |
- frame_data[0] &= ~2; // Set the show_frame flag to 0. |
- frame_data += inputs[i].sz; |
- // Add an one byte frame with show_existing_frame. |
- *frame_data++ = 0x88; |
- |
- // Write the super frame index. |
- *frame_data++ = marker; |
- |
- frame_sizes[0] = inputs[i].sz; |
- frame_sizes[1] = 1; |
- for (int j = 0; j < 2; ++j) { |
- unsigned int this_sz = frame_sizes[j]; |
- for (int k = 0; k <= mag; k++) { |
- *frame_data++ = this_sz & 0xff; |
- this_sz >>= 8; |
- } |
- } |
- *frame_data++ = marker; |
- inputs[i].sz += index_sz + 1; |
- } |
} else { |
// Found a super frame. |
uint8_t *frame_data = static_cast<uint8_t*>(inputs[i].buf); |
@@ -304,16 +264,13 @@ |
} |
ASSERT_LT(frame, frame_count) << "Couldn't find a visible frame. " |
<< "remained_spatial_layers: " << remained_spatial_layers |
- << " super_frame: " << i |
- << " is_multiple_frame_context: " << is_multiple_frame_contexts; |
- if (frame == frame_count - 1 && !is_multiple_frame_contexts) |
+ << " super_frame: " << i; |
+ if (frame == frame_count - 1) |
continue; |
frame_data += frame_sizes[frame]; |
// We need to add one more frame for multiple frame contexts. |
- if (is_multiple_frame_contexts) |
- ++frame; |
uint8_t marker = |
static_cast<const uint8_t*>(inputs[i].buf)[inputs[i].sz - 1]; |
const uint32_t mag = ((marker >> 3) & 0x3) + 1; |
@@ -323,35 +280,14 @@ |
marker |= frame; |
// Copy existing frame sizes. |
- memmove(frame_data + (is_multiple_frame_contexts ? 2 : 1), |
- frame_start + inputs[i].sz - index_sz + 1, new_index_sz - 2); |
- if (is_multiple_frame_contexts) { |
- // Add a one byte frame with flag show_existing_frame. |
- *frame_data++ = 0x88 | (remained_spatial_layers - 1); |
- } |
+ memmove(frame_data + 1, frame_start + inputs[i].sz - index_sz + 1, |
+ new_index_sz - 2); |
// New marker. |
frame_data[0] = marker; |
frame_data += (mag * (frame + 1) + 1); |
- if (is_multiple_frame_contexts) { |
- // Write the frame size for the one byte frame. |
- frame_data -= mag; |
- *frame_data++ = 1; |
- for (uint32_t j = 1; j < mag; ++j) { |
- *frame_data++ = 0; |
- } |
- } |
- |
*frame_data++ = marker; |
inputs[i].sz = frame_data - frame_start; |
- |
- if (is_multiple_frame_contexts) { |
- // Change the show frame flag to 0 for all frames. |
- for (int j = 0; j < frame; ++j) { |
- frame_start[0] &= ~2; |
- frame_start += frame_sizes[j]; |
- } |
- } |
} |
} |
} |
@@ -555,7 +491,7 @@ |
vpx_fixed_buf outputs[10]; |
memset(&outputs[0], 0, sizeof(outputs)); |
Pass2EncodeNFrames(&stats_buf, 10, 2, &outputs[0]); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 10, 1, false); |
+ DropEnhancementLayers(&outputs[0], 10, 1); |
DecodeNFrames(&outputs[0], 10); |
FreeBitstreamBuffers(&outputs[0], 10); |
} |
@@ -573,13 +509,13 @@ |
Pass2EncodeNFrames(&stats_buf, 10, 5, &outputs[0]); |
DecodeNFrames(&outputs[0], 10); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 10, 4, false); |
+ DropEnhancementLayers(&outputs[0], 10, 4); |
DecodeNFrames(&outputs[0], 10); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 10, 3, false); |
+ DropEnhancementLayers(&outputs[0], 10, 3); |
DecodeNFrames(&outputs[0], 10); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 10, 2, false); |
+ DropEnhancementLayers(&outputs[0], 10, 2); |
DecodeNFrames(&outputs[0], 10); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 10, 1, false); |
+ DropEnhancementLayers(&outputs[0], 10, 1); |
DecodeNFrames(&outputs[0], 10); |
FreeBitstreamBuffers(&outputs[0], 10); |
@@ -616,9 +552,9 @@ |
memset(&outputs[0], 0, sizeof(outputs)); |
Pass2EncodeNFrames(&stats_buf, 20, 3, &outputs[0]); |
DecodeNFrames(&outputs[0], 20); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 20, 2, false); |
+ DropEnhancementLayers(&outputs[0], 20, 2); |
DecodeNFrames(&outputs[0], 20); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 20, 1, false); |
+ DropEnhancementLayers(&outputs[0], 20, 1); |
DecodeNFrames(&outputs[0], 20); |
FreeBitstreamBuffers(&outputs[0], 20); |
@@ -649,7 +585,6 @@ |
vpx_fixed_buf outputs[10]; |
memset(&outputs[0], 0, sizeof(outputs)); |
Pass2EncodeNFrames(&stats_buf, 10, 2, &outputs[0]); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 10, 2, true); |
DecodeNFrames(&outputs[0], 10); |
FreeBitstreamBuffers(&outputs[0], 10); |
} |
@@ -667,7 +602,7 @@ |
vpx_fixed_buf outputs[10]; |
memset(&outputs[0], 0, sizeof(outputs)); |
Pass2EncodeNFrames(&stats_buf, 10, 2, &outputs[0]); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 10, 1, true); |
+ DropEnhancementLayers(&outputs[0], 10, 1); |
DecodeNFrames(&outputs[0], 10); |
FreeBitstreamBuffers(&outputs[0], 10); |
} |
@@ -686,7 +621,6 @@ |
vpx_fixed_buf outputs[10]; |
memset(&outputs[0], 0, sizeof(outputs)); |
Pass2EncodeNFrames(&stats_buf, 10, 2, &outputs[0]); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 10, 2, true); |
DecodeNFrames(&outputs[0], 10); |
FreeBitstreamBuffers(&outputs[0], 10); |
} |
@@ -707,32 +641,13 @@ |
memset(&outputs[0], 0, sizeof(outputs)); |
Pass2EncodeNFrames(&stats_buf, 10, 3, &outputs[0]); |
- vpx_fixed_buf outputs_new[10]; |
- for (int i = 0; i < 10; ++i) { |
- outputs_new[i].buf = malloc(outputs[i].sz + 16); |
- ASSERT_TRUE(outputs_new[i].buf != NULL); |
- memcpy(outputs_new[i].buf, outputs[i].buf, outputs[i].sz); |
- outputs_new[i].sz = outputs[i].sz; |
- } |
- DropLayersAndMakeItVP9Comaptible(&outputs_new[0], 10, 3, true); |
- DecodeNFrames(&outputs_new[0], 10); |
+ DecodeNFrames(&outputs[0], 10); |
+ DropEnhancementLayers(&outputs[0], 10, 2); |
+ DecodeNFrames(&outputs[0], 10); |
+ DropEnhancementLayers(&outputs[0], 10, 1); |
+ DecodeNFrames(&outputs[0], 10); |
- for (int i = 0; i < 10; ++i) { |
- memcpy(outputs_new[i].buf, outputs[i].buf, outputs[i].sz); |
- outputs_new[i].sz = outputs[i].sz; |
- } |
- DropLayersAndMakeItVP9Comaptible(&outputs_new[0], 10, 2, true); |
- DecodeNFrames(&outputs_new[0], 10); |
- |
- for (int i = 0; i < 10; ++i) { |
- memcpy(outputs_new[i].buf, outputs[i].buf, outputs[i].sz); |
- outputs_new[i].sz = outputs[i].sz; |
- } |
- DropLayersAndMakeItVP9Comaptible(&outputs_new[0], 10, 1, true); |
- DecodeNFrames(&outputs_new[0], 10); |
- |
FreeBitstreamBuffers(&outputs[0], 10); |
- FreeBitstreamBuffers(&outputs_new[0], 10); |
} |
TEST_F(SvcTest, TwoPassEncode2TemporalLayers) { |
@@ -769,7 +684,6 @@ |
vpx_fixed_buf outputs[10]; |
memset(&outputs[0], 0, sizeof(outputs)); |
Pass2EncodeNFrames(&stats_buf, 10, 1, &outputs[0]); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 10, 1, true); |
DecodeNFrames(&outputs[0], 10); |
FreeBitstreamBuffers(&outputs[0], 10); |
} |
@@ -814,7 +728,6 @@ |
vpx_fixed_buf outputs[10]; |
memset(&outputs[0], 0, sizeof(outputs)); |
Pass2EncodeNFrames(&stats_buf, 10, 1, &outputs[0]); |
- DropLayersAndMakeItVP9Comaptible(&outputs[0], 10, 1, true); |
vpx_fixed_buf base_layer[5]; |
for (int i = 0; i < 5; ++i) |