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