mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-31 03:29:50 +00:00
Revert "utils: remove some macros now in glib"
This reverts commit de29ae7b92
.
Re-adds GFLOAT_TO_LE, GFLOAT_TO_BE, GDOUBLE_TO_LE, and GDOUBLE_TO_BE.
Turns out these aren't in GLib yet afer all (since we didn't
actually open a bug to get them added..)
This commit is contained in:
parent
c4f35cb2e0
commit
9eee73dcc6
1 changed files with 167 additions and 0 deletions
167
gst/gstutils.h
167
gst/gstutils.h
|
@ -359,6 +359,173 @@ GType gst_type_register_static_full (GType parent_type,
|
||||||
_GST_PUT (data, 0, 8, 0, num); \
|
_GST_PUT (data, 0, 8, 0, num); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
/* Float endianess conversion macros */
|
||||||
|
|
||||||
|
/* FIXME: Remove this once we depend on a GLib version with this */
|
||||||
|
#ifndef GFLOAT_FROM_LE
|
||||||
|
/**
|
||||||
|
* GFLOAT_SWAP_LE_BE:
|
||||||
|
* @in: input value
|
||||||
|
*
|
||||||
|
* Swap byte order of a 32-bit floating point value (float).
|
||||||
|
*
|
||||||
|
* Returns: @in byte-swapped.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifdef _FOOL_GTK_DOC_
|
||||||
|
G_INLINE_FUNC gfloat GFLOAT_SWAP_LE_BE (gfloat in);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
inline static gfloat
|
||||||
|
GFLOAT_SWAP_LE_BE(gfloat in)
|
||||||
|
{
|
||||||
|
union
|
||||||
|
{
|
||||||
|
guint32 i;
|
||||||
|
gfloat f;
|
||||||
|
} u;
|
||||||
|
|
||||||
|
u.f = in;
|
||||||
|
u.i = GUINT32_SWAP_LE_BE (u.i);
|
||||||
|
return u.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GDOUBLE_SWAP_LE_BE:
|
||||||
|
* @in: input value
|
||||||
|
*
|
||||||
|
* Swap byte order of a 64-bit floating point value (double).
|
||||||
|
*
|
||||||
|
* Returns: @in byte-swapped.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifdef _FOOL_GTK_DOC_
|
||||||
|
G_INLINE_FUNC gdouble GDOUBLE_SWAP_LE_BE (gdouble in);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
inline static gdouble
|
||||||
|
GDOUBLE_SWAP_LE_BE(gdouble in)
|
||||||
|
{
|
||||||
|
union
|
||||||
|
{
|
||||||
|
guint64 i;
|
||||||
|
gdouble d;
|
||||||
|
} u;
|
||||||
|
|
||||||
|
u.d = in;
|
||||||
|
u.i = GUINT64_SWAP_LE_BE (u.i);
|
||||||
|
return u.d;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GDOUBLE_TO_LE:
|
||||||
|
* @val: value
|
||||||
|
*
|
||||||
|
* Convert 64-bit floating point value (double) from native byte order into
|
||||||
|
* little endian byte order.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* GDOUBLE_TO_BE:
|
||||||
|
* @val: value
|
||||||
|
*
|
||||||
|
* Convert 64-bit floating point value (double) from native byte order into
|
||||||
|
* big endian byte order.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* GDOUBLE_FROM_LE:
|
||||||
|
* @val: value
|
||||||
|
*
|
||||||
|
* Convert 64-bit floating point value (double) from little endian byte order
|
||||||
|
* into native byte order.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* GDOUBLE_FROM_BE:
|
||||||
|
* @val: value
|
||||||
|
*
|
||||||
|
* Convert 64-bit floating point value (double) from big endian byte order
|
||||||
|
* into native byte order.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GFLOAT_TO_LE:
|
||||||
|
* @val: value
|
||||||
|
*
|
||||||
|
* Convert 32-bit floating point value (float) from native byte order into
|
||||||
|
* little endian byte order.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* GFLOAT_TO_BE:
|
||||||
|
* @val: value
|
||||||
|
*
|
||||||
|
* Convert 32-bit floating point value (float) from native byte order into
|
||||||
|
* big endian byte order.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* GFLOAT_FROM_LE:
|
||||||
|
* @val: value
|
||||||
|
*
|
||||||
|
* Convert 32-bit floating point value (float) from little endian byte order
|
||||||
|
* into native byte order.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* GFLOAT_FROM_BE:
|
||||||
|
* @val: value
|
||||||
|
*
|
||||||
|
* Convert 32-bit floating point value (float) from big endian byte order
|
||||||
|
* into native byte order.
|
||||||
|
*
|
||||||
|
* Since: 0.10.22
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
|
||||||
|
#define GFLOAT_TO_LE(val) ((gfloat) (val))
|
||||||
|
#define GFLOAT_TO_BE(val) (GFLOAT_SWAP_LE_BE (val))
|
||||||
|
#define GDOUBLE_TO_LE(val) ((gdouble) (val))
|
||||||
|
#define GDOUBLE_TO_BE(val) (GDOUBLE_SWAP_LE_BE (val))
|
||||||
|
|
||||||
|
#elif G_BYTE_ORDER == G_BIG_ENDIAN
|
||||||
|
#define GFLOAT_TO_LE(val) (GFLOAT_SWAP_LE_BE (val))
|
||||||
|
#define GFLOAT_TO_BE(val) ((gfloat) (val))
|
||||||
|
#define GDOUBLE_TO_LE(val) (GDOUBLE_SWAP_LE_BE (val))
|
||||||
|
#define GDOUBLE_TO_BE(val) ((gdouble) (val))
|
||||||
|
|
||||||
|
#else /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */
|
||||||
|
#error unknown ENDIAN type
|
||||||
|
#endif /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */
|
||||||
|
|
||||||
|
#define GFLOAT_FROM_LE(val) (GFLOAT_TO_LE (val))
|
||||||
|
#define GFLOAT_FROM_BE(val) (GFLOAT_TO_BE (val))
|
||||||
|
#define GDOUBLE_FROM_LE(val) (GDOUBLE_TO_LE (val))
|
||||||
|
#define GDOUBLE_FROM_BE(val) (GDOUBLE_TO_BE (val))
|
||||||
|
|
||||||
|
#endif /* !defined(GFLOAT_FROM_LE) */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GST_READ_FLOAT_LE:
|
* GST_READ_FLOAT_LE:
|
||||||
* @data: memory location
|
* @data: memory location
|
||||||
|
|
Loading…
Reference in a new issue