ad_libav: flush decoder output after last input packet
[mplayer.git] / mpcommon.h
blob2ff66fed401870fe19d2ca01acf22d47b4b4120e
1 /*
2 * This file is part of MPlayer.
4 * MPlayer is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * MPlayer is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #ifndef MPLAYER_MPCOMMON_H
20 #define MPLAYER_MPCOMMON_H
22 // both int64_t and double should be able to represent this exactly
23 #define MP_NOPTS_VALUE (-1LL<<63)
25 #define ROUND(x) ((int)((x) < 0 ? (x) - 0.5 : (x) + 0.5))
27 #define MP_TALLOC_ELEMS(p) (talloc_get_size(p) / sizeof((p)[0]))
28 #define MP_GROW_ARRAY(p, nextidx) do { \
29 if ((nextidx) == MP_TALLOC_ELEMS(p)) \
30 p = talloc_realloc_size(NULL, p, talloc_get_size(p) * 2); } while (0)
31 #define MP_RESIZE_ARRAY(ctx, p, count) do { \
32 p = talloc_realloc_size((ctx), p, (count) * sizeof(p[0])); } while (0)
34 #ifdef __GNUC__
36 /** Use gcc attribute to check printf fns. a1 is the 1-based index of
37 * the parameter containing the format, and a2 the index of the first
38 * argument. **/
39 #ifdef __MINGW32__
40 // MinGW maps "printf" to the non-standard MSVCRT functions, even if
41 // __USE_MINGW_ANSI_STDIO is defined and set to 1. We need to use "gnu_printf",
42 // which isn't necessarily available on other GCC compatible compilers.
43 #define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (gnu_printf, a1, a2)))
44 #else
45 #define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (printf, a1, a2)))
46 #endif
48 #else
50 #define PRINTF_ATTRIBUTE(a1, a2)
52 #endif
54 extern const char *mplayer_version;
56 #endif /* MPLAYER_MPCOMMON_H */