History

[UT] Allow for different output depending on downsample average order

Avoid X86_ASM ifdef. Ideally, we may want to update all routines to average vertically first, which would make this unnecessary. In the interim, this enables the tests to run successfully on x86 without SSSE3 support again.

Sindre Aamås committed 10 years ago

Commit f14fb2c1 parent 2e6c9f73 files · +49 −48Browse files

Unified · Split

3 files
  1. test/api/decode_api_test.cpp +7 −13
  2. test/api/encoder_test.cpp +22 −30
  3. test/utils/HashFunctions.h +20 −5
test/api/decode_api_test.cpp+7−13
@@ -758,18 +758,12 @@ const uint32_t kiWidth = 160; //DO NOT CHANGE! · 757 unmodified lines
758758 const uint32_t kiHeight = 96; //DO NOT CHANGE!
759759 const uint32_t kiFrameRate = 12; //DO NOT CHANGE!
760760 const uint32_t kiFrameNum = 100; //DO NOT CHANGE!
761−const char* pHashStr[] = { //DO NOT CHANGE!
762−// X86_ASM downsampling routines average vertically first, as opposed to
763−// horizontally first, which results in different output.
764−#ifdef X86_ASM
765− "244eebcb51f4c2a56e83fc5da3373cad9ec0e1e5",
766− "bbad99ef99e37b34bcb4f09a7ec4d144375f6be7",
767− "809f97e836650624d92f0b8e200a6ab25f810d6f"
768−#else
769− "9c4e6146b29bac5d5d4be3c5bbab9c072dcb3f3f",
770− "f350001c333902029800bd291fbed915a4bdf19a",
771− "eb9d853b7daec03052c4850027ac94adc84c3a7e"
772−#endif
761+const char* const pHashStr[][2] = { //DO NOT CHANGE!
762+ // Allow for different output depending on whether averaging is done
763+ // vertically or horizontally first when downsampling.
764+ { "244eebcb51f4c2a56e83fc5da3373cad9ec0e1e5", "9c4e6146b29bac5d5d4be3c5bbab9c072dcb3f3f" },
765+ { "bbad99ef99e37b34bcb4f09a7ec4d144375f6be7", "f350001c333902029800bd291fbed915a4bdf19a" },
766+ { "809f97e836650624d92f0b8e200a6ab25f810d6f", "eb9d853b7daec03052c4850027ac94adc84c3a7e" }
773767 };
774768
775769 class DecodeParseAPI : public ::testing::TestWithParam<EncodeDecodeFileParamBase>, public EncodeDecodeTestBase {
@@ -905,7 +899,7 @@ TEST_F (DecodeParseAPI, ParseOnly_General) { · 129 unmodified lines
905899 unsigned char digest[SHA_DIGEST_LENGTH];
906900 SHA1Result (&ctx_, digest);
907901 if (!HasFatalFailure()) {
908− CompareHash (digest, pHashStr[uiTargetLayerId]);
902+ CompareHashAnyOf (digest, pHashStr[uiTargetLayerId], sizeof *pHashStr / sizeof **pHashStr);
909903 }
910904 } //while
911905 #ifdef DEBUG_FILE_SAVE
test/api/encoder_test.cpp+22−30
@@ -28,7 +28,7 @@ TEST_F (EncoderInitTest, JustInit) {} · 27 unmodified lines
2828
2929 struct EncodeFileParam {
3030 const char* pkcFileName;
31− const char* pkcHashStr;
31+ const char* pkcHashStr[2];
3232 EUsageType eUsageType;
3333 int iWidth;
3434 int iHeight;
@@ -97,89 +97,81 @@ TEST_P (EncoderOutputTest, CompareOutput) { · 62 unmodified lines
9797 unsigned char digest[SHA_DIGEST_LENGTH];
9898 SHA1Result (&ctx_, digest);
9999 if (!HasFatalFailure()) {
100− CompareHash (digest, p.pkcHashStr);
100+ CompareHashAnyOf (digest, p.pkcHashStr, sizeof p.pkcHashStr / sizeof *p.pkcHashStr);
101101 }
102102 }
103103 static const EncodeFileParam kFileParamArray[] = {
104104 {
105105 "res/CiscoVT2people_320x192_12fps.yuv",
106− "ee97bab09041362fbe8aed16f69a55f16b106f92", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false
106+ {"ee97bab09041362fbe8aed16f69a55f16b106f92"}, CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false
107107 },
108108 {
109109 "res/CiscoVT2people_160x96_6fps.yuv",
110− "37b4f5b7b77b362dee9a74ac4b2bc043537f2dd0", CAMERA_VIDEO_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
110+ {"37b4f5b7b77b362dee9a74ac4b2bc043537f2dd0"}, CAMERA_VIDEO_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
111111 },
112112 {
113113 "res/Static_152_100.yuv",
114− "b220be0163974e36fbd6662236d4e05566a21546", CAMERA_VIDEO_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
114+ {"b220be0163974e36fbd6662236d4e05566a21546"}, CAMERA_VIDEO_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
115115 },
116116 {
117117 "res/CiscoVT2people_320x192_12fps.yuv",
118− "21dbfaaf4f09af735298434c1f97cf95a464165b", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_RASTER_SLICE, false, 1, false, false, false // One slice per MB row
118+ {"21dbfaaf4f09af735298434c1f97cf95a464165b"}, CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_RASTER_SLICE, false, 1, false, false, false // One slice per MB row
119119 },
120120 {
121121 "res/CiscoVT2people_320x192_12fps.yuv",
122− "409ced068a5a313cad7c654d27ab7a2edaed4630", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, true, 1, false, false, false
122+ {"409ced068a5a313cad7c654d27ab7a2edaed4630"}, CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, true, 1, false, false, false
123123 },
124124 {
125125 "res/CiscoVT2people_320x192_12fps.yuv",
126−// X86_ASM downsampling routines average vertically first, as opposed to
127−// horizontally first, which results in different output.
128−#ifdef X86_ASM
129− "a5341d588b769809c1f1d983e5a0fcef7362f3ad",
130−#else
131− "73156dfc1dc45924349b5b79f8debcac13d7231d",
132−#endif
126+ // Allow for different output depending on whether averaging is done
127+ // vertically or horizontally first when downsampling.
128+ { "a5341d588b769809c1f1d983e5a0fcef7362f3ad", "73156dfc1dc45924349b5b79f8debcac13d7231d" },
133129 CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 2, false, false, false
134130 },
135131 {
136132 "res/Cisco_Absolute_Power_1280x720_30fps.yuv",
137− "8bc8813ee262b356e53eec6dbdc3c88d7d2b7b5c", CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, false
133+ {"8bc8813ee262b356e53eec6dbdc3c88d7d2b7b5c"}, CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, false
138134 },
139135 {
140136 "res/Cisco_Absolute_Power_1280x720_30fps.yuv",
141−// X86_ASM downsampling routines average vertically first, as opposed to
142−// horizontally first, which results in different output.
143−#ifdef X86_ASM
144− "ec9d776a7d92cf0f6640065aee8af2450af0e993",
145−#else
146− "3943145545a2bd27a642b2045d4e3dbae55c6870",
147−#endif
137+ // Allow for different output depending on whether averaging is done
138+ // vertically or horizontally first when downsampling.
139+ { "ec9d776a7d92cf0f6640065aee8af2450af0e993", "3943145545a2bd27a642b2045d4e3dbae55c6870" },
148140 CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SINGLE_SLICE, false, 4, false, false, false
149141 },
150142 // the following values may be adjusted for times since we start tuning the strategy
151143 {
152144 "res/CiscoVT2people_320x192_12fps.yuv",
153− "c384a0dafc46573d02a38d8323304c5e1309d9d0", SCREEN_CONTENT_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false
145+ {"c384a0dafc46573d02a38d8323304c5e1309d9d0"}, SCREEN_CONTENT_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false
154146 },
155147 {
156148 "res/CiscoVT2people_160x96_6fps.yuv",
157− "637d50652f9bb8750359c4b418f30a039908d56d", SCREEN_CONTENT_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
149+ {"637d50652f9bb8750359c4b418f30a039908d56d"}, SCREEN_CONTENT_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
158150 },
159151 {
160152 "res/Static_152_100.yuv",
161− "77a140c6bd80a6479ee13aecd2a8dac0a17cf03d", SCREEN_CONTENT_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
153+ {"77a140c6bd80a6479ee13aecd2a8dac0a17cf03d"}, SCREEN_CONTENT_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
162154 },
163155 {
164156 "res/Cisco_Absolute_Power_1280x720_30fps.yuv",
165− "9e35aac6ee12b4516fbee114bc532faae23df76d", SCREEN_CONTENT_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, false
157+ {"9e35aac6ee12b4516fbee114bc532faae23df76d"}, SCREEN_CONTENT_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, false
166158 },
167159 //for different strategy
168160 {
169161 "res/Cisco_Absolute_Power_1280x720_30fps.yuv",
170− "1a6dc4f84cada651c4c8b24f879c858e35c2e813", SCREEN_CONTENT_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, true, true, false
162+ {"1a6dc4f84cada651c4c8b24f879c858e35c2e813"}, SCREEN_CONTENT_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, true, true, false
171163 },
172164 {
173165 "res/CiscoVT2people_320x192_12fps.yuv",
174− "04ad01bb3872f7dae055c1ec661218f41a020dac", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, true //turn on cabac
166+ {"04ad01bb3872f7dae055c1ec661218f41a020dac"}, CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, true //turn on cabac
175167 },
176168 {
177169 "res/Cisco_Absolute_Power_1280x720_30fps.yuv",
178− "f5a92b7a0c00691e04bf1306c8251a74f989e4e2", CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, true
170+ {"f5a92b7a0c00691e04bf1306c8251a74f989e4e2"}, CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, true
179171 },
180172 {
181173 "res/Cisco_Absolute_Power_1280x720_30fps.yuv",
182− "a27539982433279faa9975c96eaec28df770223e", CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_FIXEDSLCNUM_SLICE, false, 1, false, false, true
174+ {"a27539982433279faa9975c96eaec28df770223e"}, CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_FIXEDSLCNUM_SLICE, false, 1, false, false, true
183175 },
184176 };
185177
test/utils/HashFunctions.h+20−5
@@ -6,13 +6,28 @@ · 5 unmodified lines
66 #include <gtest/gtest.h>
77 #include "../sha1.h"
88
9−static void CompareHash (const unsigned char* digest, const char* hashStr) {
10− char hashStrCmp[SHA_DIGEST_LENGTH * 2 + 1];
11− for (int i = 0; i < SHA_DIGEST_LENGTH; ++i) {
12− sprintf (&hashStrCmp[i * 2], "%.2x", digest[i]);
9+static void ToHashStr (char* dst, const unsigned char* src, size_t src_len) {
10+ for (size_t i = 0; i < src_len; ++i) {
11+ sprintf (&dst[i * 2], "%.2x", src[i]);
1312 }
14− hashStrCmp[SHA_DIGEST_LENGTH * 2] = '\0';
13+ dst[src_len * 2] = '\0';
14+}
15+
16+inline void CompareHash (const unsigned char* digest, const char* hashStr) {
17+ char hashStrCmp[SHA_DIGEST_LENGTH * 2 + 1];
18+ ToHashStr (hashStrCmp, digest, SHA_DIGEST_LENGTH);
1519 EXPECT_STREQ (hashStr, hashStrCmp);
1620 }
1721
22+inline void CompareHashAnyOf (const unsigned char* digest, const char* const hashStr[], size_t nHashStr) {
23+ char hashStrCmp[SHA_DIGEST_LENGTH * 2 + 1];
24+ ToHashStr (hashStrCmp, digest, SHA_DIGEST_LENGTH);
25+ for (size_t i = 0; i < nHashStr && hashStr[i]; ++i) {
26+ if (0 == strcmp (hashStr[i], hashStrCmp))
27+ return;
28+ }
29+ // No match found. Compare to first hash so as to produce a grepable failure.
30+ EXPECT_STREQ (hashStr[0], hashStrCmp);
31+}
32+
1833 #endif //__HASHFUNCTIONS_H__

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t