style: run gst-indent

This commit is contained in:
Joshua M. Doe
2012-06-14 02:34:06 -04:00
parent 0c4ab07572
commit 2296c487ae
13 changed files with 915 additions and 807 deletions

View File

@@ -33,8 +33,10 @@ GST_DEBUG_CATEGORY (freeimageenc_debug);
static gboolean
plugin_init (GstPlugin * plugin)
{
GST_DEBUG_CATEGORY_INIT (freeimagedec_debug, "freeimagedec", 0, "FreeImage image decoder");
GST_DEBUG_CATEGORY_INIT (freeimageenc_debug, "freeimageenc", 0, "FreeImage image encoder");
GST_DEBUG_CATEGORY_INIT (freeimagedec_debug, "freeimagedec", 0,
"FreeImage image decoder");
GST_DEBUG_CATEGORY_INIT (freeimageenc_debug, "freeimageenc", 0,
"FreeImage image encoder");
if (!gst_freeimagedec_register_plugins (plugin))
return FALSE;

View File

@@ -59,9 +59,12 @@ static gboolean gst_freeimagedec_sink_setcaps (GstPad * pad, GstCaps * caps);
static void gst_freeimagedec_task (GstPad * pad);
static gboolean gst_freeimagedec_freeimage_init (GstFreeImageDec * freeimagedec);
static gboolean gst_freeimagedec_freeimage_clear (GstFreeImageDec * freeimagedec);
static GstFlowReturn gst_freeimagedec_caps_create_and_set (GstFreeImageDec * freeimagedec);
static gboolean gst_freeimagedec_freeimage_init (GstFreeImageDec *
freeimagedec);
static gboolean gst_freeimagedec_freeimage_clear (GstFreeImageDec *
freeimagedec);
static GstFlowReturn gst_freeimagedec_caps_create_and_set (GstFreeImageDec *
freeimagedec);
static GstFlowReturn gst_freeimagedec_push_dib (GstFreeImageDec * freeimagedec);
static GstElementClass *parent_class = NULL;
@@ -76,7 +79,7 @@ static int DLL_CALLCONV
gst_freeimagedec_user_seek (fi_handle handle, long offset, int origin)
{
GstFreeImageDec *freeimagedec = GST_FREEIMAGEDEC (handle);
switch (origin) {
case SEEK_SET:
freeimagedec->offset = offset;
@@ -100,7 +103,8 @@ gst_freeimagedec_user_tell (fi_handle handle)
}
unsigned DLL_CALLCONV
gst_freeimagedec_user_read (void *data, unsigned elsize, unsigned elcount, fi_handle handle)
gst_freeimagedec_user_read (void *data, unsigned elsize, unsigned elcount,
fi_handle handle)
{
GstFreeImageDec *freeimagedec;
GstBuffer *buffer;
@@ -113,7 +117,9 @@ gst_freeimagedec_user_read (void *data, unsigned elsize, unsigned elcount, fi_ha
GST_LOG ("reading %" G_GSIZE_FORMAT " bytes of data at offset %d", length,
freeimagedec->offset);
ret = gst_pad_pull_range (freeimagedec->sinkpad, freeimagedec->offset, length, &buffer);
ret =
gst_pad_pull_range (freeimagedec->sinkpad, freeimagedec->offset, length,
&buffer);
if (ret != GST_FLOW_OK)
goto pause;
@@ -160,14 +166,14 @@ gst_freeimagedec_class_init (GstFreeImageDecClass * klass,
GstFreeImageDecClassData * class_data)
{
GstElementClass *gstelement_class;
GstCaps * caps;
GstCaps *caps;
GstPadTemplate *templ;
const gchar * mimetype;
const gchar * format;
const gchar * format_description;
const gchar * extensions;
gchar * description;
gchar * longname;
const gchar *mimetype;
const gchar *format;
const gchar *format_description;
const gchar *extensions;
gchar *description;
gchar *longname;
klass->fif = class_data->fif;
@@ -199,8 +205,7 @@ gst_freeimagedec_class_init (GstFreeImageDecClass * klass,
format_description, extensions);
gst_element_class_set_details_simple (gstelement_class, longname,
"Codec/Decoder/Image",
description,
"Joshua M. Doe <oss@nvl.army.mil>");
description, "Joshua M. Doe <oss@nvl.army.mil>");
g_free (longname);
g_free (description);
@@ -210,23 +215,28 @@ gst_freeimagedec_class_init (GstFreeImageDecClass * klass,
static void
gst_freeimagedec_init (GstFreeImageDec * freeimagedec)
{
GstElementClass * klass = GST_ELEMENT_GET_CLASS (freeimagedec);
GstElementClass *klass = GST_ELEMENT_GET_CLASS (freeimagedec);
freeimagedec->sinkpad = gst_pad_new_from_template (
gst_element_class_get_pad_template (klass, "sink"), "sink");
freeimagedec->sinkpad =
gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
"sink"), "sink");
gst_pad_set_activate_function (freeimagedec->sinkpad, gst_freeimagedec_sink_activate);
gst_pad_set_activate_function (freeimagedec->sinkpad,
gst_freeimagedec_sink_activate);
gst_pad_set_activatepull_function (freeimagedec->sinkpad,
gst_freeimagedec_sink_activate_pull);
gst_pad_set_activatepush_function (freeimagedec->sinkpad,
gst_freeimagedec_sink_activate_push);
gst_pad_set_chain_function (freeimagedec->sinkpad, gst_freeimagedec_chain);
gst_pad_set_event_function (freeimagedec->sinkpad, gst_freeimagedec_sink_event);
gst_pad_set_setcaps_function (freeimagedec->sinkpad, gst_freeimagedec_sink_setcaps);
gst_pad_set_event_function (freeimagedec->sinkpad,
gst_freeimagedec_sink_event);
gst_pad_set_setcaps_function (freeimagedec->sinkpad,
gst_freeimagedec_sink_setcaps);
gst_element_add_pad (GST_ELEMENT (freeimagedec), freeimagedec->sinkpad);
freeimagedec->srcpad = gst_pad_new_from_template (
gst_element_class_get_pad_template (klass, "src"), "src");
freeimagedec->srcpad =
gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
"src"), "src");
gst_pad_use_fixed_caps (freeimagedec->srcpad);
gst_element_add_pad (GST_ELEMENT (freeimagedec), freeimagedec->srcpad);
@@ -261,12 +271,12 @@ gst_freeimagedec_caps_create_and_set (GstFreeImageDec * freeimagedec)
if (caps == NULL) {
/* we have an unsupported type, we'll try converting to RGB/RGBA */
FIBITMAP * dib;
FIBITMAP *dib;
if (FreeImage_IsTransparent (freeimagedec->dib)) {
GST_DEBUG ("Image is non-standard format with transparency, convert to 32-bit RGB");
GST_DEBUG
("Image is non-standard format with transparency, convert to 32-bit RGB");
dib = FreeImage_ConvertTo32Bits (freeimagedec->dib);
}
else {
} else {
GST_DEBUG ("Image is non-standard format, convert to 24-bit RGB");
dib = FreeImage_ConvertTo24Bits (freeimagedec->dib);
}
@@ -330,9 +340,11 @@ gst_freeimagedec_task (GstPad * pad)
format = GST_FORMAT_BYTES;
gst_pad_query_peer_duration (pad, &format, &freeimagedec->length);
imagetype = FreeImage_GetFileTypeFromHandle (&freeimagedec->fiio, freeimagedec, 0);
freeimagedec->dib = FreeImage_LoadFromHandle (imagetype, &freeimagedec->fiio,
freeimagedec, 0);
imagetype =
FreeImage_GetFileTypeFromHandle (&freeimagedec->fiio, freeimagedec, 0);
freeimagedec->dib =
FreeImage_LoadFromHandle (imagetype, &freeimagedec->fiio, freeimagedec,
0);
ret = gst_freeimagedec_push_dib (freeimagedec);
if (ret != GST_FLOW_OK)
@@ -346,12 +358,12 @@ gst_freeimagedec_task (GstPad * pad)
pause:
{
GST_INFO_OBJECT (freeimagedec, "pausing task, reason %s",
gst_flow_get_name (ret));
gst_flow_get_name (ret));
gst_pad_pause_task (freeimagedec->sinkpad);
if (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) {
GST_ELEMENT_ERROR (freeimagedec, STREAM, FAILED,
("Internal data stream error."),
("stream stopped, reason %s", gst_flow_get_name (ret)));
("Internal data stream error."),
("stream stopped, reason %s", gst_flow_get_name (ret)));
gst_pad_push_event (freeimagedec->srcpad, gst_event_new_eos ());
}
}
@@ -362,12 +374,13 @@ gst_freeimagedec_chain (GstPad * pad, GstBuffer * buffer)
{
GstFreeImageDec *freeimagedec;
GstFlowReturn ret = GST_FLOW_OK;
FIMEMORY * fimem;
FIMEMORY *fimem;
FREE_IMAGE_FORMAT format;
freeimagedec = GST_FREEIMAGEDEC (gst_pad_get_parent (pad));
GST_LOG_OBJECT (freeimagedec, "Got buffer, size=%u", GST_BUFFER_SIZE (buffer));
GST_LOG_OBJECT (freeimagedec, "Got buffer, size=%u",
GST_BUFFER_SIZE (buffer));
if (G_UNLIKELY (!freeimagedec->setup))
goto not_configured;
@@ -375,12 +388,14 @@ gst_freeimagedec_chain (GstPad * pad, GstBuffer * buffer)
/* Return if we have bad flow conditions */
ret = freeimagedec->ret;
if (G_UNLIKELY (ret != GST_FLOW_OK)) {
GST_WARNING_OBJECT (freeimagedec, "we have a pending return code of %d", ret);
GST_WARNING_OBJECT (freeimagedec, "we have a pending return code of %d",
ret);
goto beach;
}
/* Decode image to DIB */
fimem = FreeImage_OpenMemory (GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer));
fimem =
FreeImage_OpenMemory (GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer));
format = FreeImage_GetFileTypeFromMemory (fimem, 0);
GST_LOG ("FreeImage format is %d", format);
freeimagedec->dib = FreeImage_LoadFromMemory (format, fimem, 0);
@@ -401,7 +416,8 @@ gst_freeimagedec_chain (GstPad * pad, GstBuffer * buffer)
gst_freeimagedec_freeimage_init (freeimagedec);
} else {
GST_LOG_OBJECT (freeimagedec, "sending EOS");
freeimagedec->ret = gst_pad_push_event (freeimagedec->srcpad, gst_event_new_eos ());
freeimagedec->ret =
gst_pad_push_event (freeimagedec->srcpad, gst_event_new_eos ());
}
/* grab new return code */
@@ -474,10 +490,11 @@ gst_freeimagedec_sink_event (GstPad * pad, GstEvent * event)
gst_event_parse_new_segment_full (event, &update, &rate, &arate, &fmt,
&start, &stop, &position);
gst_segment_set_newsegment_full (&freeimagedec->segment, update, rate, arate,
fmt, start, stop, position);
gst_segment_set_newsegment_full (&freeimagedec->segment, update, rate,
arate, fmt, start, stop, position);
GST_LOG_OBJECT (freeimagedec, "NEWSEGMENT (%s)", gst_format_get_name (fmt));
GST_LOG_OBJECT (freeimagedec, "NEWSEGMENT (%s)",
gst_format_get_name (fmt));
if (fmt == GST_FORMAT_TIME) {
freeimagedec->need_newsegment = FALSE;
@@ -655,28 +672,27 @@ gst_freeimagedec_push_dib (GstFreeImageDec * freeimagedec)
GST_LOG ("Buffer size must be %d", buffer_size);
ret = gst_pad_alloc_buffer_and_set_caps (freeimagedec->srcpad,
GST_BUFFER_OFFSET_NONE, buffer_size,
GST_PAD_CAPS (freeimagedec->srcpad), &buffer);
GST_BUFFER_OFFSET_NONE, buffer_size,
GST_PAD_CAPS (freeimagedec->srcpad), &buffer);
if (ret != GST_FLOW_OK)
return ret;
/* flip image and copy to buffer */
for (i = 0; i < height; i++) {
memcpy (GST_BUFFER_DATA (buffer) + i * pitch,
FreeImage_GetBits (freeimagedec->dib) + (height - i - 1) * pitch, pitch);
FreeImage_GetBits (freeimagedec->dib) + (height - i - 1) * pitch,
pitch);
}
if (GST_BUFFER_TIMESTAMP_IS_VALID (freeimagedec->in_timestamp))
GST_BUFFER_TIMESTAMP (buffer) = freeimagedec->in_timestamp;
else
if (freeimagedec->fps_d != 0)
GST_BUFFER_TIMESTAMP (buffer) =
(freeimagedec->in_offset * freeimagedec->fps_n) / freeimagedec->fps_d;
else if (freeimagedec->fps_d != 0)
GST_BUFFER_TIMESTAMP (buffer) =
(freeimagedec->in_offset * freeimagedec->fps_n) / freeimagedec->fps_d;
if (GST_BUFFER_TIMESTAMP_IS_VALID (freeimagedec->in_duration))
GST_BUFFER_DURATION (buffer) = freeimagedec->in_duration;
else
if (freeimagedec->fps_n != 0)
GST_BUFFER_DURATION (buffer) = freeimagedec->fps_d / freeimagedec->fps_n;
GST_BUFFER_DURATION (buffer) = freeimagedec->in_duration;
else if (freeimagedec->fps_n != 0)
GST_BUFFER_DURATION (buffer) = freeimagedec->fps_d / freeimagedec->fps_n;
GST_BUFFER_OFFSET (buffer) = freeimagedec->in_offset;
GST_BUFFER_OFFSET_END (buffer) = freeimagedec->in_offset;
@@ -743,11 +759,13 @@ gst_freeimagedec_register_plugins (GstPlugin * plugin)
gint i;
gint nloaded = 0;
GST_LOG ("FreeImage indicates there are %d formats supported", FreeImage_GetFIFCount());
GST_LOG ("FreeImage indicates there are %d formats supported",
FreeImage_GetFIFCount ());
for (i = 0; i < FreeImage_GetFIFCount(); i++) {
if (FreeImage_FIFSupportsReading ((FREE_IMAGE_FORMAT)i)) {
if (gst_freeimagedec_register_plugin (plugin, (FREE_IMAGE_FORMAT)i) == TRUE)
for (i = 0; i < FreeImage_GetFIFCount (); i++) {
if (FreeImage_FIFSupportsReading ((FREE_IMAGE_FORMAT) i)) {
if (gst_freeimagedec_register_plugin (plugin,
(FREE_IMAGE_FORMAT) i) == TRUE)
nloaded += 1;
}
}
@@ -756,4 +774,4 @@ gst_freeimagedec_register_plugins (GstPlugin * plugin)
return TRUE;
else
return FALSE;
}
}

View File

@@ -52,8 +52,10 @@ static gboolean gst_freeimageenc_sink_setcaps (GstPad * pad, GstCaps * caps);
static void gst_freeimageenc_task (GstPad * pad);
static gboolean gst_freeimageenc_freeimage_init (GstFreeImageEnc * freeimageenc);
static gboolean gst_freeimageenc_freeimage_clear (GstFreeImageEnc * freeimageenc);
static gboolean gst_freeimageenc_freeimage_init (GstFreeImageEnc *
freeimageenc);
static gboolean gst_freeimageenc_freeimage_clear (GstFreeImageEnc *
freeimageenc);
static GstFlowReturn gst_freeimageenc_push_dib (GstFreeImageEnc * freeimageenc);
static GstElementClass *parent_class = NULL;
@@ -68,7 +70,7 @@ static int DLL_CALLCONV
gst_freeimageenc_user_seek (fi_handle handle, long offset, int origin)
{
GstFreeImageEnc *freeimageenc = GST_FREEIMAGEENC (handle);
switch (origin) {
case SEEK_SET:
freeimageenc->offset = offset;
@@ -96,14 +98,14 @@ gst_freeimageenc_class_init (GstFreeImageEncClass * klass,
GstFreeImageEncClassData * class_data)
{
GstElementClass *gstelement_class;
GstCaps * caps;
GstCaps *caps;
GstPadTemplate *templ;
const gchar * mimetype;
const gchar * format;
const gchar * format_description;
const gchar * extensions;
gchar * description;
gchar * longname;
const gchar *mimetype;
const gchar *format;
const gchar *format_description;
const gchar *extensions;
gchar *description;
gchar *longname;
klass->fif = class_data->fif;
@@ -135,8 +137,7 @@ gst_freeimageenc_class_init (GstFreeImageEncClass * klass,
format_description, extensions);
gst_element_class_set_details_simple (gstelement_class, longname,
"Codec/Encoder/Image",
description,
"Joshua M. Doe <oss@nvl.army.mil>");
description, "Joshua M. Doe <oss@nvl.army.mil>");
g_free (longname);
g_free (description);
}
@@ -144,16 +145,19 @@ gst_freeimageenc_class_init (GstFreeImageEncClass * klass,
static void
gst_freeimageenc_init (GstFreeImageEnc * freeimageenc)
{
GstElementClass * klass = GST_ELEMENT_GET_CLASS (freeimageenc);
GstElementClass *klass = GST_ELEMENT_GET_CLASS (freeimageenc);
freeimageenc->sinkpad = gst_pad_new_from_template (
gst_element_class_get_pad_template (klass, "sink"), "sink");
freeimageenc->sinkpad =
gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
"sink"), "sink");
gst_pad_set_chain_function (freeimageenc->sinkpad, gst_freeimageenc_chain);
gst_pad_set_setcaps_function (freeimageenc->sinkpad, gst_freeimageenc_sink_setcaps);
gst_pad_set_setcaps_function (freeimageenc->sinkpad,
gst_freeimageenc_sink_setcaps);
gst_element_add_pad (GST_ELEMENT (freeimageenc), freeimageenc->sinkpad);
freeimageenc->srcpad = gst_pad_new_from_template (
gst_element_class_get_pad_template (klass, "src"), "src");
freeimageenc->srcpad =
gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
"src"), "src");
gst_pad_use_fixed_caps (freeimageenc->srcpad);
gst_element_add_pad (GST_ELEMENT (freeimageenc), freeimageenc->srcpad);
@@ -174,37 +178,38 @@ gst_freeimageenc_init (GstFreeImageEnc * freeimageenc)
static GstFlowReturn
gst_freeimageenc_chain (GstPad * pad, GstBuffer * buffer)
{
{
GstFreeImageEnc *freeimageenc;
GstFreeImageEncClass *klass;
GstFlowReturn ret = GST_FLOW_OK;
GstBuffer * buffer_out;
GstBuffer *buffer_out;
FIMEMORY *hmem = NULL;
gint srcPitch, dstPitch;
guint8 * pSrc, * pDst;
guint8 *pSrc, *pDst;
gint width, height, bpp;
size_t y;
BYTE * mem_buffer;
BYTE *mem_buffer;
DWORD size_in_bytes;
freeimageenc = GST_FREEIMAGEENC (gst_pad_get_parent (pad));
klass = GST_FREEIMAGEENC_GET_CLASS (freeimageenc);
GST_LOG_OBJECT (freeimageenc, "Got buffer, size=%u", GST_BUFFER_SIZE (buffer));
GST_LOG_OBJECT (freeimageenc, "Got buffer, size=%u",
GST_BUFFER_SIZE (buffer));
/* convert raw buffer to FIBITMAP */
width = FreeImage_GetWidth (freeimageenc->dib);
height = FreeImage_GetHeight (freeimageenc->dib);
bpp = FreeImage_GetBPP (freeimageenc->dib);
dstPitch = FreeImage_GetPitch (freeimageenc->dib);
srcPitch = GST_ROUND_UP_4 (width * bpp / 8);
/* Copy data, invert scanlines and respect FreeImage pitch */
pDst = FreeImage_GetBits(freeimageenc->dib);
pDst = FreeImage_GetBits (freeimageenc->dib);
for (y = 0; y < height; ++y) {
pSrc = GST_BUFFER_DATA (buffer) + (height - y - 1) * srcPitch;
memcpy(pDst, pSrc, srcPitch);
memcpy (pDst, pSrc, srcPitch);
pDst += dstPitch;
}
@@ -219,7 +224,7 @@ gst_freeimageenc_chain (GstPad * pad, GstBuffer * buffer)
return GST_FLOW_ERROR;
}
if (!FreeImage_AcquireMemory(hmem, &mem_buffer, &size_in_bytes)) {
if (!FreeImage_AcquireMemory (hmem, &mem_buffer, &size_in_bytes)) {
GST_ERROR ("Failed to acquire encoded image");
FreeImage_CloseMemory (hmem);
gst_buffer_unref (buffer);
@@ -274,7 +279,7 @@ gst_freeimageenc_sink_setcaps (GstPad * pad, GstCaps * caps)
freeimageenc = GST_FREEIMAGEENC (gst_pad_get_parent (pad));
if (gst_freeimageutils_parse_caps (caps, &type, &width, &height, &bpp,
&red_mask, &green_mask, &blue_mask) == FALSE) {
&red_mask, &green_mask, &blue_mask) == FALSE) {
GST_DEBUG ("Failed to parse caps");
return FALSE;
}
@@ -382,11 +387,13 @@ gst_freeimageenc_register_plugins (GstPlugin * plugin)
gint i;
gint nloaded = 0;
GST_LOG ("FreeImage indicates there are %d formats supported", FreeImage_GetFIFCount());
GST_LOG ("FreeImage indicates there are %d formats supported",
FreeImage_GetFIFCount ());
for (i = 0; i < FreeImage_GetFIFCount(); i++) {
if (FreeImage_FIFSupportsWriting ((FREE_IMAGE_FORMAT)i)) {
if (gst_freeimageenc_register_plugin (plugin, (FREE_IMAGE_FORMAT)i) == TRUE)
for (i = 0; i < FreeImage_GetFIFCount (); i++) {
if (FreeImage_FIFSupportsWriting ((FREE_IMAGE_FORMAT) i)) {
if (gst_freeimageenc_register_plugin (plugin,
(FREE_IMAGE_FORMAT) i) == TRUE)
nloaded += 1;
}
}
@@ -395,4 +402,4 @@ gst_freeimageenc_register_plugins (GstPlugin * plugin)
return TRUE;
else
return FALSE;
}
}

View File

@@ -8,7 +8,7 @@ gst_freeimageutils_caps_from_dib (FIBITMAP * dib, gint fps_n, gint fps_d)
FREE_IMAGE_TYPE image_type;
guint width, height, bpp;
gint video_format = -1;
GstCaps * caps = NULL;
GstCaps *caps = NULL;
gint endianness;
if (dib == NULL)
@@ -30,71 +30,62 @@ gst_freeimageutils_caps_from_dib (FIBITMAP * dib, gint fps_n, gint fps_d)
case FIT_BITMAP:
if (bpp == 24) {
if (FreeImage_GetRedMask (dib) == GST_VIDEO_BYTE1_MASK_24_INT &&
FreeImage_GetGreenMask (dib) == GST_VIDEO_BYTE2_MASK_24_INT &&
FreeImage_GetBlueMask (dib) == GST_VIDEO_BYTE3_MASK_24_INT) {
video_format = GST_VIDEO_FORMAT_RGB;
}
else if (FreeImage_GetRedMask (dib) == GST_VIDEO_BYTE3_MASK_24_INT &&
FreeImage_GetGreenMask (dib) == GST_VIDEO_BYTE2_MASK_24_INT &&
FreeImage_GetBlueMask (dib) == GST_VIDEO_BYTE1_MASK_24_INT) {
video_format = GST_VIDEO_FORMAT_BGR;
}
else {
FreeImage_GetGreenMask (dib) == GST_VIDEO_BYTE2_MASK_24_INT &&
FreeImage_GetBlueMask (dib) == GST_VIDEO_BYTE3_MASK_24_INT) {
video_format = GST_VIDEO_FORMAT_RGB;
} else if (FreeImage_GetRedMask (dib) == GST_VIDEO_BYTE3_MASK_24_INT &&
FreeImage_GetGreenMask (dib) == GST_VIDEO_BYTE2_MASK_24_INT &&
FreeImage_GetBlueMask (dib) == GST_VIDEO_BYTE1_MASK_24_INT) {
video_format = GST_VIDEO_FORMAT_BGR;
} else {
return NULL;
}
}
else if (bpp == 32) {
} else if (bpp == 32) {
if (FreeImage_GetRedMask (dib) == GST_VIDEO_BYTE1_MASK_32_INT &&
FreeImage_GetGreenMask (dib) == GST_VIDEO_BYTE2_MASK_32_INT &&
FreeImage_GetBlueMask (dib) == GST_VIDEO_BYTE3_MASK_32_INT) {
video_format = GST_VIDEO_FORMAT_RGBA;
}
else if (FreeImage_GetRedMask (dib) == GST_VIDEO_BYTE3_MASK_32_INT &&
FreeImage_GetGreenMask (dib) == GST_VIDEO_BYTE2_MASK_32_INT &&
FreeImage_GetBlueMask (dib) == GST_VIDEO_BYTE1_MASK_32_INT) {
video_format = GST_VIDEO_FORMAT_BGRA;
}
else {
FreeImage_GetGreenMask (dib) == GST_VIDEO_BYTE2_MASK_32_INT &&
FreeImage_GetBlueMask (dib) == GST_VIDEO_BYTE3_MASK_32_INT) {
video_format = GST_VIDEO_FORMAT_RGBA;
} else if (FreeImage_GetRedMask (dib) == GST_VIDEO_BYTE3_MASK_32_INT &&
FreeImage_GetGreenMask (dib) == GST_VIDEO_BYTE2_MASK_32_INT &&
FreeImage_GetBlueMask (dib) == GST_VIDEO_BYTE1_MASK_32_INT) {
video_format = GST_VIDEO_FORMAT_BGRA;
} else {
return NULL;
}
}
else {
} else {
return NULL;
}
/* We could not find a supported format */
if (video_format == -1) {
caps = NULL;
}
else {
} else {
caps = gst_video_format_new_caps (video_format, width, height,
fps_n, fps_d, 1, 1);
fps_n, fps_d, 1, 1);
}
break;
case FIT_UINT16:
endianness = G_BYTE_ORDER;
caps = gst_caps_new_simple ("video/x-raw-gray",
"width", G_TYPE_INT, width,
"height", G_TYPE_INT, height,
"bpp", G_TYPE_INT, 16,
"depth", G_TYPE_INT, 16,
"endianness", G_TYPE_INT, endianness,
"framerate", GST_TYPE_FRACTION, fps_n, fps_d,
NULL);
"width", G_TYPE_INT, width,
"height", G_TYPE_INT, height,
"bpp", G_TYPE_INT, 16,
"depth", G_TYPE_INT, 16,
"endianness", G_TYPE_INT, endianness,
"framerate", GST_TYPE_FRACTION, fps_n, fps_d, NULL);
break;
case FIT_INT16:
endianness = G_BYTE_ORDER;
caps = gst_caps_new_simple ("video/x-raw-gray",
"width", G_TYPE_INT, width,
"height", G_TYPE_INT, height,
"bpp", G_TYPE_INT, 16,
"depth", G_TYPE_INT, 16,
"endianness", G_TYPE_INT, endianness,
"framerate", GST_TYPE_FRACTION, fps_n, fps_d,
"signed", G_TYPE_BOOLEAN, TRUE,
NULL);
"width", G_TYPE_INT, width,
"height", G_TYPE_INT, height,
"bpp", G_TYPE_INT, 16,
"depth", G_TYPE_INT, 16,
"endianness", G_TYPE_INT, endianness,
"framerate", GST_TYPE_FRACTION, fps_n, fps_d,
"signed", G_TYPE_BOOLEAN, TRUE, NULL);
break;
default:
caps = NULL;
@@ -105,20 +96,19 @@ gst_freeimageutils_caps_from_dib (FIBITMAP * dib, gint fps_n, gint fps_d)
GstCaps *
gst_freeimageutils_caps_from_freeimage_format (FREE_IMAGE_FORMAT fif)
{
GstCaps * caps = gst_caps_new_empty ();
GstCaps *caps = gst_caps_new_empty ();
if (FreeImage_FIFSupportsExportType (fif, FIT_BITMAP)) {
if (FreeImage_FIFSupportsExportBPP (fif, 1) ||
FreeImage_FIFSupportsExportBPP (fif, 4) ||
FreeImage_FIFSupportsExportBPP (fif, 8) ||
FreeImage_FIFSupportsExportBPP (fif, 24)) {
if (G_BYTE_ORDER == G_LITTLE_ENDIAN) {
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_BGR));
}
else {
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_RGB));
}
FreeImage_FIFSupportsExportBPP (fif, 4) ||
FreeImage_FIFSupportsExportBPP (fif, 8) ||
FreeImage_FIFSupportsExportBPP (fif, 24)) {
if (G_BYTE_ORDER == G_LITTLE_ENDIAN) {
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_BGR));
} else {
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_RGB));
}
}
if (FreeImage_FIFSupportsExportBPP (fif, 16)) {
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_RGB_15));
@@ -127,20 +117,19 @@ gst_freeimageutils_caps_from_freeimage_format (FREE_IMAGE_FORMAT fif)
if (FreeImage_FIFSupportsExportBPP (fif, 32)) {
if (G_BYTE_ORDER == G_LITTLE_ENDIAN) {
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_BGRA));
}
else {
} else {
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_RGBA));
}
}
}
if (FreeImage_FIFSupportsExportType (fif, FIT_UINT16)) {
if (G_BYTE_ORDER == G_BIG_ENDIAN)
gst_caps_append (caps, gst_caps_from_string (
GST_VIDEO_CAPS_GRAY16 ("BIG_ENDIAN")));
gst_caps_append (caps,
gst_caps_from_string (GST_VIDEO_CAPS_GRAY16 ("BIG_ENDIAN")));
else
gst_caps_append (caps, gst_caps_from_string (
GST_VIDEO_CAPS_GRAY16 ("LITTLE_ENDIAN")));
gst_caps_append (caps,
gst_caps_from_string (GST_VIDEO_CAPS_GRAY16 ("LITTLE_ENDIAN")));
}
if (FreeImage_FIFSupportsExportType (fif, FIT_INT16)) {
}
@@ -168,8 +157,7 @@ gst_freeimageutils_caps_from_freeimage_format (FREE_IMAGE_FORMAT fif)
if (G_BYTE_ORDER == G_LITTLE_ENDIAN) {
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_BGR));
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_BGRA));
}
else {
} else {
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_RGB));
gst_caps_append (caps, gst_caps_from_string (GST_VIDEO_CAPS_RGBA));
}
@@ -183,7 +171,7 @@ gst_freeimageutils_parse_caps (const GstCaps * caps, FREE_IMAGE_TYPE * type,
gint * width, gint * height, gint * bpp, guint32 * red_mask,
guint32 * green_mask, guint32 * blue_mask)
{
GstStructure * s;
GstStructure *s;
s = gst_caps_get_structure (caps, 0);
@@ -196,14 +184,13 @@ gst_freeimageutils_parse_caps (const GstCaps * caps, FREE_IMAGE_TYPE * type,
gst_structure_get_int (s, "red_mask", red_mask);
gst_structure_get_int (s, "green_mask", green_mask);
gst_structure_get_int (s, "blue_mask", blue_mask);
}
else if (g_strcmp0 (gst_structure_get_name (s), "video/x-raw-gray") == 0) {
} else if (g_strcmp0 (gst_structure_get_name (s), "video/x-raw-gray") == 0) {
gboolean is_signed;
if (!gst_structure_get_boolean (s, "signed", &is_signed))
is_signed = FALSE;
if (*bpp == 8)
*type = FIT_BITMAP; /* need to create palette for this later */
*type = FIT_BITMAP; /* need to create palette for this later */
else if (*bpp == 16 && is_signed == FALSE)
*type = FIT_UINT16;
else if (*bpp == 16 && is_signed == TRUE)
@@ -213,4 +200,4 @@ gst_freeimageutils_parse_caps (const GstCaps * caps, FREE_IMAGE_TYPE * type,
}
return TRUE;
}
}