| Index: source/libvpx/test/video_source.h
|
| ===================================================================
|
| --- source/libvpx/test/video_source.h (revision 240950)
|
| +++ source/libvpx/test/video_source.h (working copy)
|
| @@ -18,16 +18,35 @@
|
|
|
| namespace libvpx_test {
|
|
|
| -static FILE *OpenTestDataFile(const std::string& file_name) {
|
| - std::string path_to_source = file_name;
|
| - const char *kDataPath = getenv("LIBVPX_TEST_DATA_PATH");
|
| +// Helper macros to ensure LIBVPX_TEST_DATA_PATH is a quoted string.
|
| +// These are undefined right below GetDataPath
|
| +// NOTE: LIBVPX_TEST_DATA_PATH MUST NOT be a quoted string before
|
| +// Stringification or the GetDataPath will fail at runtime
|
| +#define TO_STRING(S) #S
|
| +#define STRINGIFY(S) TO_STRING(S)
|
|
|
| - if (kDataPath) {
|
| - path_to_source = kDataPath;
|
| - path_to_source += "/";
|
| - path_to_source += file_name;
|
| +// A simple function to encapsulate cross platform retrieval of test data path
|
| +static std::string GetDataPath() {
|
| + const char *const data_path = getenv("LIBVPX_TEST_DATA_PATH");
|
| + if (data_path == NULL) {
|
| +#ifdef LIBVPX_TEST_DATA_PATH
|
| + // In some environments, we cannot set environment variables
|
| + // Instead, we set the data path by using a preprocessor symbol
|
| + // which can be set from make files
|
| + return STRINGIFY(LIBVPX_TEST_DATA_PATH);
|
| +#else
|
| + return ".";
|
| +#endif
|
| }
|
| + return data_path;
|
| +}
|
|
|
| +// Undefining stringification macros because they are not used elsewhere
|
| +#undef TO_STRING
|
| +#undef STRINGIFY
|
| +
|
| +static FILE *OpenTestDataFile(const std::string& file_name) {
|
| + const std::string path_to_source = GetDataPath() + "/" + file_name;
|
| return fopen(path_to_source.c_str(), "rb");
|
| }
|
|
|
|
|