[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.
This commit is contained in:
parent
2e6c9f7cd3
commit
f14fb2cfbc
@ -758,18 +758,12 @@ const uint32_t kiWidth = 160; //DO NOT CHANGE!
|
|||||||
const uint32_t kiHeight = 96; //DO NOT CHANGE!
|
const uint32_t kiHeight = 96; //DO NOT CHANGE!
|
||||||
const uint32_t kiFrameRate = 12; //DO NOT CHANGE!
|
const uint32_t kiFrameRate = 12; //DO NOT CHANGE!
|
||||||
const uint32_t kiFrameNum = 100; //DO NOT CHANGE!
|
const uint32_t kiFrameNum = 100; //DO NOT CHANGE!
|
||||||
const char* pHashStr[] = { //DO NOT CHANGE!
|
const char* const pHashStr[][2] = { //DO NOT CHANGE!
|
||||||
// X86_ASM downsampling routines average vertically first, as opposed to
|
// Allow for different output depending on whether averaging is done
|
||||||
// horizontally first, which results in different output.
|
// vertically or horizontally first when downsampling.
|
||||||
#ifdef X86_ASM
|
{ "244eebcb51f4c2a56e83fc5da3373cad9ec0e1e5", "9c4e6146b29bac5d5d4be3c5bbab9c072dcb3f3f" },
|
||||||
"244eebcb51f4c2a56e83fc5da3373cad9ec0e1e5",
|
{ "bbad99ef99e37b34bcb4f09a7ec4d144375f6be7", "f350001c333902029800bd291fbed915a4bdf19a" },
|
||||||
"bbad99ef99e37b34bcb4f09a7ec4d144375f6be7",
|
{ "809f97e836650624d92f0b8e200a6ab25f810d6f", "eb9d853b7daec03052c4850027ac94adc84c3a7e" }
|
||||||
"809f97e836650624d92f0b8e200a6ab25f810d6f"
|
|
||||||
#else
|
|
||||||
"9c4e6146b29bac5d5d4be3c5bbab9c072dcb3f3f",
|
|
||||||
"f350001c333902029800bd291fbed915a4bdf19a",
|
|
||||||
"eb9d853b7daec03052c4850027ac94adc84c3a7e"
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class DecodeParseAPI : public ::testing::TestWithParam<EncodeDecodeFileParamBase>, public EncodeDecodeTestBase {
|
class DecodeParseAPI : public ::testing::TestWithParam<EncodeDecodeFileParamBase>, public EncodeDecodeTestBase {
|
||||||
@ -905,7 +899,7 @@ TEST_F (DecodeParseAPI, ParseOnly_General) {
|
|||||||
unsigned char digest[SHA_DIGEST_LENGTH];
|
unsigned char digest[SHA_DIGEST_LENGTH];
|
||||||
SHA1Result (&ctx_, digest);
|
SHA1Result (&ctx_, digest);
|
||||||
if (!HasFatalFailure()) {
|
if (!HasFatalFailure()) {
|
||||||
CompareHash (digest, pHashStr[uiTargetLayerId]);
|
CompareHashAnyOf (digest, pHashStr[uiTargetLayerId], sizeof *pHashStr / sizeof **pHashStr);
|
||||||
}
|
}
|
||||||
} //while
|
} //while
|
||||||
#ifdef DEBUG_FILE_SAVE
|
#ifdef DEBUG_FILE_SAVE
|
||||||
|
@ -28,7 +28,7 @@ TEST_F (EncoderInitTest, JustInit) {}
|
|||||||
|
|
||||||
struct EncodeFileParam {
|
struct EncodeFileParam {
|
||||||
const char* pkcFileName;
|
const char* pkcFileName;
|
||||||
const char* pkcHashStr;
|
const char* pkcHashStr[2];
|
||||||
EUsageType eUsageType;
|
EUsageType eUsageType;
|
||||||
int iWidth;
|
int iWidth;
|
||||||
int iHeight;
|
int iHeight;
|
||||||
@ -97,89 +97,81 @@ TEST_P (EncoderOutputTest, CompareOutput) {
|
|||||||
unsigned char digest[SHA_DIGEST_LENGTH];
|
unsigned char digest[SHA_DIGEST_LENGTH];
|
||||||
SHA1Result (&ctx_, digest);
|
SHA1Result (&ctx_, digest);
|
||||||
if (!HasFatalFailure()) {
|
if (!HasFatalFailure()) {
|
||||||
CompareHash (digest, p.pkcHashStr);
|
CompareHashAnyOf (digest, p.pkcHashStr, sizeof p.pkcHashStr / sizeof *p.pkcHashStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static const EncodeFileParam kFileParamArray[] = {
|
static const EncodeFileParam kFileParamArray[] = {
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_320x192_12fps.yuv",
|
"res/CiscoVT2people_320x192_12fps.yuv",
|
||||||
"ee97bab09041362fbe8aed16f69a55f16b106f92", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
{"ee97bab09041362fbe8aed16f69a55f16b106f92"}, CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_160x96_6fps.yuv",
|
"res/CiscoVT2people_160x96_6fps.yuv",
|
||||||
"37b4f5b7b77b362dee9a74ac4b2bc043537f2dd0", CAMERA_VIDEO_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
{"37b4f5b7b77b362dee9a74ac4b2bc043537f2dd0"}, CAMERA_VIDEO_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/Static_152_100.yuv",
|
"res/Static_152_100.yuv",
|
||||||
"b220be0163974e36fbd6662236d4e05566a21546", CAMERA_VIDEO_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
{"b220be0163974e36fbd6662236d4e05566a21546"}, CAMERA_VIDEO_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_320x192_12fps.yuv",
|
"res/CiscoVT2people_320x192_12fps.yuv",
|
||||||
"21dbfaaf4f09af735298434c1f97cf95a464165b", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_RASTER_SLICE, false, 1, false, false, false // One slice per MB row
|
{"21dbfaaf4f09af735298434c1f97cf95a464165b"}, CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_RASTER_SLICE, false, 1, false, false, false // One slice per MB row
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_320x192_12fps.yuv",
|
"res/CiscoVT2people_320x192_12fps.yuv",
|
||||||
"409ced068a5a313cad7c654d27ab7a2edaed4630", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, true, 1, false, false, false
|
{"409ced068a5a313cad7c654d27ab7a2edaed4630"}, CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, true, 1, false, false, false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_320x192_12fps.yuv",
|
"res/CiscoVT2people_320x192_12fps.yuv",
|
||||||
// X86_ASM downsampling routines average vertically first, as opposed to
|
// Allow for different output depending on whether averaging is done
|
||||||
// horizontally first, which results in different output.
|
// vertically or horizontally first when downsampling.
|
||||||
#ifdef X86_ASM
|
{ "a5341d588b769809c1f1d983e5a0fcef7362f3ad", "73156dfc1dc45924349b5b79f8debcac13d7231d" },
|
||||||
"a5341d588b769809c1f1d983e5a0fcef7362f3ad",
|
|
||||||
#else
|
|
||||||
"73156dfc1dc45924349b5b79f8debcac13d7231d",
|
|
||||||
#endif
|
|
||||||
CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 2, false, false, false
|
CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 2, false, false, false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
||||||
"8bc8813ee262b356e53eec6dbdc3c88d7d2b7b5c", CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, false
|
{"8bc8813ee262b356e53eec6dbdc3c88d7d2b7b5c"}, CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
||||||
// X86_ASM downsampling routines average vertically first, as opposed to
|
// Allow for different output depending on whether averaging is done
|
||||||
// horizontally first, which results in different output.
|
// vertically or horizontally first when downsampling.
|
||||||
#ifdef X86_ASM
|
{ "ec9d776a7d92cf0f6640065aee8af2450af0e993", "3943145545a2bd27a642b2045d4e3dbae55c6870" },
|
||||||
"ec9d776a7d92cf0f6640065aee8af2450af0e993",
|
|
||||||
#else
|
|
||||||
"3943145545a2bd27a642b2045d4e3dbae55c6870",
|
|
||||||
#endif
|
|
||||||
CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SINGLE_SLICE, false, 4, false, false, false
|
CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SINGLE_SLICE, false, 4, false, false, false
|
||||||
},
|
},
|
||||||
// the following values may be adjusted for times since we start tuning the strategy
|
// the following values may be adjusted for times since we start tuning the strategy
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_320x192_12fps.yuv",
|
"res/CiscoVT2people_320x192_12fps.yuv",
|
||||||
"c384a0dafc46573d02a38d8323304c5e1309d9d0", SCREEN_CONTENT_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
{"c384a0dafc46573d02a38d8323304c5e1309d9d0"}, SCREEN_CONTENT_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_160x96_6fps.yuv",
|
"res/CiscoVT2people_160x96_6fps.yuv",
|
||||||
"637d50652f9bb8750359c4b418f30a039908d56d", SCREEN_CONTENT_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
{"637d50652f9bb8750359c4b418f30a039908d56d"}, SCREEN_CONTENT_REAL_TIME, 160, 96, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/Static_152_100.yuv",
|
"res/Static_152_100.yuv",
|
||||||
"77a140c6bd80a6479ee13aecd2a8dac0a17cf03d", SCREEN_CONTENT_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
{"77a140c6bd80a6479ee13aecd2a8dac0a17cf03d"}, SCREEN_CONTENT_REAL_TIME, 152, 100, 6.0f, SM_SINGLE_SLICE, false, 1, false, false, false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
||||||
"9e35aac6ee12b4516fbee114bc532faae23df76d", SCREEN_CONTENT_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, false
|
{"9e35aac6ee12b4516fbee114bc532faae23df76d"}, SCREEN_CONTENT_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, false
|
||||||
},
|
},
|
||||||
//for different strategy
|
//for different strategy
|
||||||
{
|
{
|
||||||
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
||||||
"1a6dc4f84cada651c4c8b24f879c858e35c2e813", SCREEN_CONTENT_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, true, true, false
|
{"1a6dc4f84cada651c4c8b24f879c858e35c2e813"}, SCREEN_CONTENT_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, true, true, false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/CiscoVT2people_320x192_12fps.yuv",
|
"res/CiscoVT2people_320x192_12fps.yuv",
|
||||||
"04ad01bb3872f7dae055c1ec661218f41a020dac", CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, true //turn on cabac
|
{"04ad01bb3872f7dae055c1ec661218f41a020dac"}, CAMERA_VIDEO_REAL_TIME, 320, 192, 12.0f, SM_SINGLE_SLICE, false, 1, false, false, true //turn on cabac
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
||||||
"f5a92b7a0c00691e04bf1306c8251a74f989e4e2", CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, true
|
{"f5a92b7a0c00691e04bf1306c8251a74f989e4e2"}, CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_SIZELIMITED_SLICE, false, 1, false, false, true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
"res/Cisco_Absolute_Power_1280x720_30fps.yuv",
|
||||||
"a27539982433279faa9975c96eaec28df770223e", CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_FIXEDSLCNUM_SLICE, false, 1, false, false, true
|
{"a27539982433279faa9975c96eaec28df770223e"}, CAMERA_VIDEO_REAL_TIME, 1280, 720, 30.0f, SM_FIXEDSLCNUM_SLICE, false, 1, false, false, true
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6,13 +6,28 @@
|
|||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
#include "../sha1.h"
|
#include "../sha1.h"
|
||||||
|
|
||||||
static void CompareHash (const unsigned char* digest, const char* hashStr) {
|
static void ToHashStr (char* dst, const unsigned char* src, size_t src_len) {
|
||||||
char hashStrCmp[SHA_DIGEST_LENGTH * 2 + 1];
|
for (size_t i = 0; i < src_len; ++i) {
|
||||||
for (int i = 0; i < SHA_DIGEST_LENGTH; ++i) {
|
sprintf (&dst[i * 2], "%.2x", src[i]);
|
||||||
sprintf (&hashStrCmp[i * 2], "%.2x", digest[i]);
|
|
||||||
}
|
}
|
||||||
hashStrCmp[SHA_DIGEST_LENGTH * 2] = '\0';
|
dst[src_len * 2] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void CompareHash (const unsigned char* digest, const char* hashStr) {
|
||||||
|
char hashStrCmp[SHA_DIGEST_LENGTH * 2 + 1];
|
||||||
|
ToHashStr (hashStrCmp, digest, SHA_DIGEST_LENGTH);
|
||||||
EXPECT_STREQ (hashStr, hashStrCmp);
|
EXPECT_STREQ (hashStr, hashStrCmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void CompareHashAnyOf (const unsigned char* digest, const char* const hashStr[], size_t nHashStr) {
|
||||||
|
char hashStrCmp[SHA_DIGEST_LENGTH * 2 + 1];
|
||||||
|
ToHashStr (hashStrCmp, digest, SHA_DIGEST_LENGTH);
|
||||||
|
for (size_t i = 0; i < nHashStr && hashStr[i]; ++i) {
|
||||||
|
if (0 == strcmp (hashStr[i], hashStrCmp))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// No match found. Compare to first hash so as to produce a grepable failure.
|
||||||
|
EXPECT_STREQ (hashStr[0], hashStrCmp);
|
||||||
|
}
|
||||||
|
|
||||||
#endif //__HASHFUNCTIONS_H__
|
#endif //__HASHFUNCTIONS_H__
|
||||||
|
Loading…
Reference in New Issue
Block a user