/usr/include/avifile-0.7/utils.h is in libavifile-0.7-dev 1:0.7.48~20090503.ds-19+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | #ifndef AVIFILE_UTILS_H
#define AVIFILE_UTILS_H
#include "avm_default.h"
#include "formats.h"
/**
* Utility functions.
* plain C functions are here
*/
AVM_BEGIN_EXTERN_C;
/**
* retriew current time in microseconds
* \returns time in microsecond units
*/
AVMEXPORT int64_t avm_get_time_us(void);
/**
* callculate diff between 2 times -
* \returns time difference in seconds
*/
static inline float avm_get_time_diff(int64_t t1, int64_t t2) { return (float)(t1 - t2) * 0.000001f; }
/*
* function to retrieve/store data in machine independent format
* - right now dumb implementation - as we could check functionality
*/
static inline uint16_t avm_get_le16(const void* p) {
#ifdef WORDS_BIGENDIAN
const uint8_t* c = (const uint8_t*) p;
return c[0] | c[1] << 8;
#else
return *(const uint16_t*)p;
#endif
}
static inline uint8_t* avm_set_le16(void* p, uint16_t v) {
uint8_t* b = (uint8_t*) p;
#ifdef WORDS_BIGENDIAN
b[0] = (uint8_t)v;
b[1] = (uint8_t)(v >> 8);
#else
*(uint16_t*)p = v;
#endif
return b;
}
static inline uint32_t avm_get_le32(const void* p) {
#ifdef WORDS_BIGENDIAN
const uint8_t* c = (const uint8_t*) p;
return c[0] | c[1] << 8 | c[2] << 16 | c[3] << 24;
#else
return *(const uint32_t*)p;
#endif
}
static inline uint8_t* avm_set_le32(void* p, uint32_t v) {
uint8_t* b = (uint8_t*) p;
#ifdef WORDS_BIGENDIAN
b[0] = (uint8_t)v;
b[1] = (uint8_t)(v >> 8);
b[2] = (uint8_t)(v >> 16);
b[3] = (uint8_t)(v >> 24);
#else
*(uint32_t*)p = v;
#endif
return b;
}
static inline uint64_t avm_get_le64(const void* p) {
#ifdef WORDS_BIGENDIAN
const uint8_t* c = (const uint8_t*) p;
return avm_get_le32(c) | (((uint64_t)avm_get_le32(c + 4)) << 32);
#else
return *(const uint64_t*)p;
#endif
}
static inline uint16_t avm_get_be16(const void* p) {
#ifdef WORDS_BIGENDIAN
return *(const uint16_t*)p;
#else
const uint8_t* c = (const uint8_t*) p;
return (uint16_t) (c[0] << 8 | c[1]);
#endif
}
static inline uint8_t* avm_set_be16(void* p, uint16_t v) {
#ifdef WORDS_BIGENDIAN
*(uint16_t*)p = v;
#else
uint8_t* b = (uint8_t*) p;
b[0] = (uint8_t)(v >> 8);
b[1] = (uint8_t)v;
return b;
#endif
}
static inline uint32_t avm_get_be32(const void* p) {
#ifdef WORDS_BIGENDIAN
return *(const uint32_t*)p;
#else
const uint8_t* c = (const uint8_t*) p;
return (uint32_t)(c[0] << 24 | c[1] << 16 | c[2] << 8 | c[3]);
#endif
}
static inline uint8_t* avm_set_be32(void* p, uint32_t v) {
#ifdef WORDS_BIGENDIAN
*(uint32_t*)p = v;
#else
uint8_t* b = (uint8_t*) p;
b[0] = (uint8_t)(v >> 24);
b[1] = (uint8_t)(v >> 16);
b[2] = (uint8_t)(v >> 8);
b[3] = (uint8_t)v;
return b;
#endif
}
static inline uint64_t avm_get_be64(const void* p) {
#ifdef WORDS_BIGENDIAN
return *(const uint64_t*)p;
#else
const uint8_t* c = (const uint8_t*) p;
return ((uint64_t) avm_get_be32(c)) << 32 | avm_get_le32(c + 4);
#endif
}
static inline int avm_img_is_rgb(fourcc_t fmt)
{
return ((fmt & 0xffffff00) == IMG_FMT_RGB);
}
static inline int avm_img_is_bgr(fourcc_t fmt)
{
return ((fmt & 0xffffff00) == IMG_FMT_BGR);
}
static inline int avm_img_get_depth(fourcc_t fmt)
{
return fmt & 0xff;
}
AVMEXPORT WAVEFORMATEX* avm_get_leWAVEFORMATEX(void* waveformat);
AVMEXPORT BITMAPINFOHEADER* avm_get_leBITMAPINFOHEADER(void* bitmapinfoheader);
AVMEXPORT GUID* avm_get_leGUID(void* guid);
AVMEXPORT const char* avm_fcc_name(fourcc_t fcc);
AVMEXPORT const char* avm_wave_format_name(short fmt); /* not sure - might be special type */
AVMEXPORT const char* avm_img_format_name(fourcc_t fmt);
AVMEXPORT char* avm_wave_format(char* buf, size_t, const WAVEFORMATEX*);
AVMEXPORT char* avm_mp3wave_format(char* buf, size_t, const MPEGLAYER3WAVEFORMAT*);
/* wrapping functions */
/* A thread-save usec sleep */
AVMEXPORT int avm_usleep(unsigned long);
/* some system doesn't have setenv/unsetenv */
AVMEXPORT int avm_setenv(const char *name, const char *value, int overwrite);
AVMEXPORT void avm_unsetenv(const char *name);
AVM_END_EXTERN_C;
#endif /* AVIFILE_UTILS_H */
|