tools_common.h revision 9b35249446b07f40ac5fcc3205f2c048616efacc
1538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber/* 2538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber * 4538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber * Use of this source code is governed by a BSD-style license 5538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber * that can be found in the LICENSE file in the root of the source 6538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber * tree. An additional intellectual property rights grant can be found 7538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber * in the file PATENTS. All contributing project authors may 8538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber * be found in the AUTHORS file in the root of the source tree. 9538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber */ 105ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#ifndef TOOLS_COMMON_H_ 115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#define TOOLS_COMMON_H_ 125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#include <stdio.h> 145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 159b35249446b07f40ac5fcc3205f2c048616efacchkuang#include "./vpx_config.h" 169b35249446b07f40ac5fcc3205f2c048616efacchkuang 179b35249446b07f40ac5fcc3205f2c048616efacchkuang#if defined(_MSC_VER) 189b35249446b07f40ac5fcc3205f2c048616efacchkuang/* MSVS doesn't define off_t, and uses _f{seek,tell}i64. */ 199b35249446b07f40ac5fcc3205f2c048616efacchkuangtypedef __int64 off_t; 209b35249446b07f40ac5fcc3205f2c048616efacchkuang#define fseeko _fseeki64 219b35249446b07f40ac5fcc3205f2c048616efacchkuang#define ftello _ftelli64 229b35249446b07f40ac5fcc3205f2c048616efacchkuang#elif defined(_WIN32) 239b35249446b07f40ac5fcc3205f2c048616efacchkuang/* MinGW defines off_t as long and uses f{seek,tell}o64/off64_t for large 249b35249446b07f40ac5fcc3205f2c048616efacchkuang * files. */ 259b35249446b07f40ac5fcc3205f2c048616efacchkuang#define fseeko fseeko64 269b35249446b07f40ac5fcc3205f2c048616efacchkuang#define ftello ftello64 279b35249446b07f40ac5fcc3205f2c048616efacchkuang#define off_t off64_t 289b35249446b07f40ac5fcc3205f2c048616efacchkuang#endif /* _WIN32 */ 299b35249446b07f40ac5fcc3205f2c048616efacchkuang 309b35249446b07f40ac5fcc3205f2c048616efacchkuang#if CONFIG_OS_SUPPORT 319b35249446b07f40ac5fcc3205f2c048616efacchkuang#if defined(_MSC_VER) 329b35249446b07f40ac5fcc3205f2c048616efacchkuang#include <io.h> /* NOLINT */ 339b35249446b07f40ac5fcc3205f2c048616efacchkuang#define snprintf _snprintf 349b35249446b07f40ac5fcc3205f2c048616efacchkuang#define isatty _isatty 359b35249446b07f40ac5fcc3205f2c048616efacchkuang#define fileno _fileno 369b35249446b07f40ac5fcc3205f2c048616efacchkuang#else 379b35249446b07f40ac5fcc3205f2c048616efacchkuang#include <unistd.h> /* NOLINT */ 389b35249446b07f40ac5fcc3205f2c048616efacchkuang#endif /* _MSC_VER */ 399b35249446b07f40ac5fcc3205f2c048616efacchkuang#endif /* CONFIG_OS_SUPPORT */ 409b35249446b07f40ac5fcc3205f2c048616efacchkuang 419b35249446b07f40ac5fcc3205f2c048616efacchkuang/* Use 32-bit file operations in WebM file format when building ARM 429b35249446b07f40ac5fcc3205f2c048616efacchkuang * executables (.axf) with RVCT. */ 439b35249446b07f40ac5fcc3205f2c048616efacchkuang#if !CONFIG_OS_SUPPORT 449b35249446b07f40ac5fcc3205f2c048616efacchkuangtypedef long off_t; /* NOLINT */ 459b35249446b07f40ac5fcc3205f2c048616efacchkuang#define fseeko fseek 469b35249446b07f40ac5fcc3205f2c048616efacchkuang#define ftello ftell 479b35249446b07f40ac5fcc3205f2c048616efacchkuang#endif /* CONFIG_OS_SUPPORT */ 489b35249446b07f40ac5fcc3205f2c048616efacchkuang 499b35249446b07f40ac5fcc3205f2c048616efacchkuang#define LITERALU64(hi, lo) ((((uint64_t)hi) << 32) | lo) 509b35249446b07f40ac5fcc3205f2c048616efacchkuang 519b35249446b07f40ac5fcc3205f2c048616efacchkuang#ifndef PATH_MAX 529b35249446b07f40ac5fcc3205f2c048616efacchkuang#define PATH_MAX 512 539b35249446b07f40ac5fcc3205f2c048616efacchkuang#endif 549b35249446b07f40ac5fcc3205f2c048616efacchkuang 555ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#define VP8_FOURCC (0x30385056) 565ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#define VP9_FOURCC (0x30395056) 575ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#define VP8_FOURCC_MASK (0x00385056) 585ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#define VP9_FOURCC_MASK (0x00395056) 59538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber 60538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber/* Sets a stdio stream into binary mode */ 61ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangFILE *set_binary_mode(FILE *stream); 62538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber 635ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangvoid die(const char *fmt, ...); 645ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangvoid fatal(const char *fmt, ...); 655ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangvoid warn(const char *fmt, ...); 665ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 675ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang/* The tool including this file must define usage_exit() */ 685ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangvoid usage_exit(); 695ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 705ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#endif // TOOLS_COMMON_H_ 71