From: Wim Taymans Date: Fri, 8 Jun 2012 10:26:08 +0000 (+0200) Subject: audio: add flag to mark possible unpack formats X-Git-Tag: 1.19.3~511^2~6341 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8e393d898a80b36edbd8a9a341b1b2e8bc271d5a;p=platform%2Fupstream%2Fgstreamer.git audio: add flag to mark possible unpack formats Make a new flag to mark formats that can be used in pack and unpack functions. Mark S32NE and F64NE as those unpack formats --- diff --git a/gst-libs/gst/audio/audio-format.c b/gst-libs/gst/audio/audio-format.c index d6ba4f6..7a59816 100644 --- a/gst-libs/gst/audio/audio-format.c +++ b/gst-libs/gst/audio/audio-format.c @@ -26,7 +26,10 @@ #include "audio-format.h" #define SINT (GST_AUDIO_FORMAT_FLAG_INTEGER | GST_AUDIO_FORMAT_FLAG_SIGNED) +#define SINT_PACK (SINT | GST_AUDIO_FORMAT_FLAG_UNPACK) #define UINT (GST_AUDIO_FORMAT_FLAG_INTEGER) +#define FLOAT (GST_AUDIO_FORMAT_FLAG_FLOAT) +#define FLOAT_PACK (FLOAT | GST_AUDIO_FORMAT_FLAG_UNPACK) #define MAKE_FORMAT(str,desc,flags,end,width,depth,silent) \ { GST_AUDIO_FORMAT_ ##str, G_STRINGIFY(str), desc, flags, end, width, depth, silent } @@ -72,10 +75,19 @@ static GstAudioFormatInfo formats[] = { MAKE_FORMAT (U24_32BE, "24-bit unsigned PCM audio", UINT, G_BIG_ENDIAN, 32, 24, SILENT_U24_32BE), /* 32 bit */ - MAKE_FORMAT (S32LE, "32-bit signed PCM audio", SINT, G_LITTLE_ENDIAN, 32, 32, +#if G_BYTE_ORDER == G_LITTLE_ENDIAN + MAKE_FORMAT (S32LE, "32-bit signed PCM audio", SINT_PACK, G_LITTLE_ENDIAN, 32, + 32, SILENT_0), MAKE_FORMAT (S32BE, "32-bit signed PCM audio", SINT, G_BIG_ENDIAN, 32, 32, SILENT_0), +#else + MAKE_FORMAT (S32LE, "32-bit signed PCM audio", SINT, G_LITTLE_ENDIAN, 32, 32, + SILENT_0), + MAKE_FORMAT (S32BE, "32-bit signed PCM audio", SINT_PACK, G_BIG_ENDIAN, 32, + 32, + SILENT_0), +#endif MAKE_FORMAT (U32LE, "32-bit unsigned PCM audio", UINT, G_LITTLE_ENDIAN, 32, 32, SILENT_U32LE), MAKE_FORMAT (U32BE, "32-bit unsigned PCM audio", UINT, G_BIG_ENDIAN, 32, 32, @@ -109,17 +121,20 @@ static GstAudioFormatInfo formats[] = { SILENT_U18BE), /* float */ MAKE_FORMAT (F32LE, "32-bit floating-point audio", - GST_AUDIO_FORMAT_FLAG_FLOAT, G_LITTLE_ENDIAN, 32, 32, - SILENT_0), + GST_AUDIO_FORMAT_FLAG_FLOAT, G_LITTLE_ENDIAN, 32, 32, SILENT_0), MAKE_FORMAT (F32BE, "32-bit floating-point audio", - GST_AUDIO_FORMAT_FLAG_FLOAT, G_BIG_ENDIAN, 32, 32, - SILENT_0), + GST_AUDIO_FORMAT_FLAG_FLOAT, G_BIG_ENDIAN, 32, 32, SILENT_0), +#if G_BYTE_ORDER == G_LITTLE_ENDIAN MAKE_FORMAT (F64LE, "64-bit floating-point audio", - GST_AUDIO_FORMAT_FLAG_FLOAT, G_LITTLE_ENDIAN, 64, 64, - SILENT_0), + FLOAT_PACK, G_LITTLE_ENDIAN, 64, 64, SILENT_0), MAKE_FORMAT (F64BE, "64-bit floating-point audio", - GST_AUDIO_FORMAT_FLAG_FLOAT, G_BIG_ENDIAN, 64, 64, - SILENT_0) + FLOAT, G_BIG_ENDIAN, 64, 64, SILENT_0) +#else + MAKE_FORMAT (F64LE, "64-bit floating-point audio", + FLOAT, G_LITTLE_ENDIAN, 64, 64, SILENT_0), + MAKE_FORMAT (F64BE, "64-bit floating-point audio", + FLOAT_PACK, G_BIG_ENDIAN, 64, 64, SILENT_0) +#endif }; G_DEFINE_POINTER_TYPE (GstAudioFormatInfo, gst_audio_format_info); diff --git a/gst-libs/gst/audio/audio-format.h b/gst-libs/gst/audio/audio-format.h index 1228e92..d47cb79 100644 --- a/gst-libs/gst/audio/audio-format.h +++ b/gst-libs/gst/audio/audio-format.h @@ -30,8 +30,10 @@ G_BEGIN_DECLS #if G_BYTE_ORDER == G_BIG_ENDIAN #define _GST_AUDIO_FORMAT_NE(fmt) GST_AUDIO_FORMAT_ ## fmt ## BE +#define _GST_AUDIO_FORMAT_OE(fmt) GST_AUDIO_FORMAT_ ## fmt ## LE #elif G_BYTE_ORDER == G_LITTLE_ENDIAN #define _GST_AUDIO_FORMAT_NE(fmt) GST_AUDIO_FORMAT_ ## fmt ## LE +#define _GST_AUDIO_FORMAT_OE(fmt) GST_AUDIO_FORMAT_ ## fmt ## BE #endif /** @@ -152,6 +154,8 @@ typedef struct _GstAudioFormatInfo GstAudioFormatInfo; * @GST_AUDIO_FORMAT_FLAG_FLOAT: float samples * @GST_AUDIO_FORMAT_FLAG_SIGNED: signed samples * @GST_AUDIO_FORMAT_FLAG_COMPLEX: complex layout + * @GST_AUDIO_FORMAT_FLAG_UNPACK: the format can be used in + * #GstAudioFormatUnpack and #GstAudioFormatPack functions * * The different audio flags that a format info can have. */ @@ -160,7 +164,8 @@ typedef enum GST_AUDIO_FORMAT_FLAG_INTEGER = (1 << 0), GST_AUDIO_FORMAT_FLAG_FLOAT = (1 << 1), GST_AUDIO_FORMAT_FLAG_SIGNED = (1 << 2), - GST_AUDIO_FORMAT_FLAG_COMPLEX = (1 << 4) + GST_AUDIO_FORMAT_FLAG_COMPLEX = (1 << 4), + GST_AUDIO_FORMAT_FLAG_UNPACK = (1 << 5) } GstAudioFormatFlags; /**