slomo gst-plugins-bad: gst-plugins-bad/ gst-plugins-bad/gst/mxf/
[email protected] Tue, 25 Nov 2008 02:26:25 -0800 (PST)
Newsgroups
gmane.comp.video.gstreamer.cvs
Message-ID
<[email protected] >
CVS Root: /cvs/gstreamer
Module: gst-plugins-bad
Changes by: slomo
Date: Tue Nov 25 2008 10:26:25 UTC
Log message:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_reset_metadata),
(gst_mxf_demux_handle_metadata_generic_descriptor),
(gst_mxf_demux_handle_metadata_file_descriptor),
(gst_mxf_demux_handle_metadata_multiple_descriptor),
(gst_mxf_demux_handle_metadata_generic_picture_essence_descriptor),
(gst_mxf_demux_handle_metadata_cdci_picture_essence_descriptor),
(gst_mxf_demux_handle_metadata_rgba_picture_essence_descriptor),
(gst_mxf_demux_handle_metadata_mpeg_video_descriptor),
(gst_mxf_demux_handle_metadata_generic_sound_essence_descriptor),
(gst_mxf_demux_handle_metadata_wave_audio_essence_descriptor),
(gst_mxf_demux_handle_header_metadata_resolve_references),
(gst_mxf_demux_handle_metadata):
* gst/mxf/mxfdemux.h:
* gst/mxf/mxfparse.c:
(mxf_metadata_rgba_picture_essence_descriptor_handle_tag),
(mxf_metadata_rgba_picture_essence_descriptor_reset):
* gst/mxf/mxfparse.h:
* gst/mxf/mxftypes.h:
Add initial parsing of RGBA descriptors.
Don't initialize descriptor GArray with zeroes.
Modified files:
. : ChangeLog
gst/mxf : mxfdemux.c mxfdemux.h mxfparse.c mxfparse.h
mxftypes.h
Links:
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3739&r2=1.3740
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.c.diff?r1=1.7&r2=1.8
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.h.diff?r1=1.1&r2=1.2
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.c.diff?r1=1.5&r2=1.6
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.h.diff?r1=1.3&r2=1.4
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxftypes.h.diff?r1=1.1&r2=1.2
====Begin Diffs====
Index: ChangeLog
===================================================================
RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v
retrieving revision 1.3739
retrieving revision 1.3740
diff -u -d -r1.3739 -r1.3740
--- ChangeLog 25 Nov 2008 09:38:23 -0000 1.3739
+++ ChangeLog 25 Nov 2008 10:26:09 -0000 1.3740
@@ -1,5 +1,29 @@
2008-11-25 Sebastian Dröge <[email protected] >
+ * gst/mxf/mxfdemux.c: (gst_mxf_demux_reset_metadata),
+ (gst_mxf_demux_handle_metadata_generic_descriptor),
+ (gst_mxf_demux_handle_metadata_file_descriptor),
+ (gst_mxf_demux_handle_metadata_multiple_descriptor),
+ (gst_mxf_demux_handle_metadata_generic_picture_essence_descriptor),
+ (gst_mxf_demux_handle_metadata_cdci_picture_essence_descriptor),
+ (gst_mxf_demux_handle_metadata_rgba_picture_essence_descriptor),
+ (gst_mxf_demux_handle_metadata_mpeg_video_descriptor),
+ (gst_mxf_demux_handle_metadata_generic_sound_essence_descriptor),
+ (gst_mxf_demux_handle_metadata_wave_audio_essence_descriptor),
+ (gst_mxf_demux_handle_header_metadata_resolve_references),
+ (gst_mxf_demux_handle_metadata):
+ * gst/mxf/mxfdemux.h:
+ * gst/mxf/mxfparse.c:
+ (mxf_metadata_rgba_picture_essence_descriptor_handle_tag),
+ (mxf_metadata_rgba_picture_essence_descriptor_reset):
+ * gst/mxf/mxfparse.h:
+ * gst/mxf/mxftypes.h:
+ Add initial parsing of RGBA descriptors.
+
+ Don't initialize descriptor GArray with zeroes.
+2008-11-25 Sebastian Dröge <[email protected] >
* gst/mxf/mxfaes-bwf.c:
(mxf_metadata_wave_audio_essence_descriptor_handle_tag):
* gst/mxf/mxfaes-bwf.h:
Index: mxfdemux.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- mxfdemux.c 25 Nov 2008 09:38:26 -0000 1.7
+++ mxfdemux.c 25 Nov 2008 10:26:11 -0000 1.8
@@ -289,6 +289,15 @@
demux->cdci_picture_essence_descriptor = NULL;
}
+ if (demux->rgba_picture_essence_descriptor) {
+ for (i = 0; i < demux->rgba_picture_essence_descriptor->len; i++)
+ mxf_metadata_rgba_picture_essence_descriptor_reset (&g_array_index
+ (demux->rgba_picture_essence_descriptor,
+ MXFMetadataRGBAPictureEssenceDescriptor, i));
+ g_array_free (demux->rgba_picture_essence_descriptor, TRUE);
+ demux->rgba_picture_essence_descriptor = NULL;
+ }
if (demux->mpeg_video_descriptor) {
for (i = 0; i < demux->mpeg_video_descriptor->len; i++)
mxf_metadata_mpeg_video_descriptor_reset (&g_array_index
@@ -722,7 +731,7 @@
if (!demux->generic_descriptor)
demux->generic_descriptor =
- g_array_new (FALSE, TRUE, sizeof (MXFMetadataGenericDescriptor));
+ g_array_new (FALSE, FALSE, sizeof (MXFMetadataGenericDescriptor));
g_array_append_val (demux->generic_descriptor, descriptor);
@@ -754,7 +763,7 @@
if (!demux->file_descriptor)
demux->file_descriptor =
- g_array_new (FALSE, TRUE, sizeof (MXFMetadataFileDescriptor));
+ g_array_new (FALSE, FALSE, sizeof (MXFMetadataFileDescriptor));
g_array_append_val (demux->file_descriptor, descriptor);
@@ -787,7 +796,7 @@
if (!demux->multiple_descriptor)
demux->multiple_descriptor =
- g_array_new (FALSE, TRUE, sizeof (MXFMetadataMultipleDescriptor));
+ g_array_new (FALSE, FALSE, sizeof (MXFMetadataMultipleDescriptor));
g_array_append_val (demux->multiple_descriptor, descriptor);
@@ -821,7 +830,7 @@
if (!demux->generic_picture_essence_descriptor)
demux->generic_picture_essence_descriptor =
- g_array_new (FALSE, TRUE,
+ g_array_new (FALSE, FALSE,
sizeof (MXFMetadataGenericPictureEssenceDescriptor));
g_array_append_val (demux->generic_picture_essence_descriptor, descriptor);
@@ -856,7 +865,7 @@
if (!demux->cdci_picture_essence_descriptor)
demux->cdci_picture_essence_descriptor =
sizeof (MXFMetadataCDCIPictureEssenceDescriptor));
g_array_append_val (demux->cdci_picture_essence_descriptor, descriptor);
@@ -865,6 +874,41 @@
}
static GstFlowReturn
+gst_mxf_demux_handle_metadata_rgba_picture_essence_descriptor (GstMXFDemux *
+ demux, const MXFUL * key, guint16 type, GstBuffer * buffer)
+{
+ MXFMetadataRGBAPictureEssenceDescriptor descriptor;
+ memset (&descriptor, 0, sizeof (descriptor));
+ GST_DEBUG_OBJECT (demux,
+ "Handling metadata RGBA picture essence descriptor of size %u"
+ " at offset %" G_GUINT64_FORMAT " with type 0x%04d",
+ GST_BUFFER_SIZE (buffer), demux->offset, type);
+ if (!mxf_metadata_descriptor_parse (key,
+ (MXFMetadataGenericDescriptor *) & descriptor, &demux->primer,
+ type, GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer),
+ (MXFMetadataDescriptorHandleTag)
+ mxf_metadata_rgba_picture_essence_descriptor_handle_tag,
+ (MXFMetadataDescriptorReset)
+ mxf_metadata_rgba_picture_essence_descriptor_reset)) {
+ GST_ERROR_OBJECT (demux,
+ "Parsing metadata RGBA picture essence descriptor failed");
+ return GST_FLOW_ERROR;
+ if (!demux->rgba_picture_essence_descriptor)
+ demux->rgba_picture_essence_descriptor =
+ sizeof (MXFMetadataRGBAPictureEssenceDescriptor));
+ g_array_append_val (demux->rgba_picture_essence_descriptor, descriptor);
+ return GST_FLOW_OK;
+}
+static GstFlowReturn
gst_mxf_demux_handle_metadata_mpeg_video_descriptor (GstMXFDemux * demux,
const MXFUL * key, guint16 type, GstBuffer * buffer)
{
@@ -890,7 +934,7 @@
if (!demux->mpeg_video_descriptor)
demux->mpeg_video_descriptor =
- g_array_new (FALSE, TRUE, sizeof (MXFMetadataMPEGVideoDescriptor));
+ g_array_new (FALSE, FALSE, sizeof (MXFMetadataMPEGVideoDescriptor));
g_array_append_val (demux->mpeg_video_descriptor, descriptor);
@@ -924,7 +968,7 @@
if (!demux->generic_sound_essence_descriptor)
demux->generic_sound_essence_descriptor =
sizeof (MXFMetadataGenericSoundEssenceDescriptor));
g_array_append_val (demux->generic_sound_essence_descriptor, descriptor);
@@ -959,7 +1003,7 @@
if (!demux->wave_audio_essence_descriptor)
demux->wave_audio_essence_descriptor =
sizeof (MXFMetadataWaveAudioEssenceDescriptor));
g_array_append_val (demux->wave_audio_essence_descriptor, descriptor);
@@ -1033,6 +1077,13 @@
MXFMetadataCDCIPictureEssenceDescriptor, i));
}
+ for (i = 0; i < demux->rgba_picture_essence_descriptor->len; i++) {
+ g_ptr_array_add (demux->descriptor,
+ &g_array_index (demux->rgba_picture_essence_descriptor,
+ }
for (i = 0; i < demux->mpeg_video_descriptor->len; i++) {
g_ptr_array_add (demux->descriptor,
@@ -1173,8 +1224,9 @@
MXFMetadataEssenceContainerData, i);
for (j = 0; j < demux->content_storage.n_essence_container_data; j++) {
- if (mxf_ul_is_equal (&demux->content_storage.
- essence_container_data_uids[j], &data->instance_uid)) {
+ if (mxf_ul_is_equal (&demux->
+ content_storage.essence_container_data_uids[j],
+ &data->instance_uid)) {
demux->content_storage.essence_container_data[j] = data;
break;
}
@@ -1827,7 +1879,6 @@
gst_mxf_demux_handle_metadata_structural_component (demux,
key, type, buffer);
break;
- case MXF_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR:
case MXF_METADATA_GENERIC_DATA_ESSENCE_DESCRIPTOR:
ret =
gst_mxf_demux_handle_metadata_generic_descriptor (demux,
@@ -1848,6 +1899,11 @@
gst_mxf_demux_handle_metadata_cdci_picture_essence_descriptor (demux,
+ case MXF_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR:
+ ret =
+ gst_mxf_demux_handle_metadata_rgba_picture_essence_descriptor (demux,
+ key, type, buffer);
+ break;
case MXF_METADATA_MPEG_VIDEO_DESCRIPTOR:
gst_mxf_demux_handle_metadata_mpeg_video_descriptor (demux,
Index: mxfdemux.h
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- mxfdemux.h 21 Nov 2008 10:27:14 -0000 1.1
+++ mxfdemux.h 25 Nov 2008 10:26:11 -0000 1.2
@@ -88,6 +88,7 @@
GArray *generic_sound_essence_descriptor;
GArray *generic_picture_essence_descriptor;
GArray *cdci_picture_essence_descriptor;
+ GArray *rgba_picture_essence_descriptor;
GArray *mpeg_video_descriptor;
GArray *wave_audio_essence_descriptor;
GArray *multiple_descriptor;
Index: mxfparse.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- mxfparse.c 25 Nov 2008 09:38:26 -0000 1.5
+++ mxfparse.c 25 Nov 2008 10:26:11 -0000 1.6
@@ -2389,6 +2389,79 @@
gboolean
+ mxf_metadata_rgba_picture_essence_descriptor_handle_tag
+ (MXFMetadataGenericDescriptor * d, const MXFPrimerPack * primer,
+ guint16 tag, const guint8 * tag_data, guint16 tag_size)
+ MXFMetadataRGBAPictureEssenceDescriptor *descriptor =
+ (MXFMetadataRGBAPictureEssenceDescriptor *) d;
+ gboolean ret = FALSE;
+ switch (tag) {
+ case 0x3406:
+ if (tag_size != 4)
+ goto error;
+ descriptor->component_max_ref = GST_READ_UINT32_BE (tag_data);
+ GST_DEBUG (" component max ref = %u", descriptor->component_max_ref);
+ case 0x3407:
+ descriptor->component_min_ref = GST_READ_UINT32_BE (tag_data);
+ GST_DEBUG (" component min ref = %u", descriptor->component_min_ref);
+ case 0x3408:
+ descriptor->alpha_max_ref = GST_READ_UINT32_BE (tag_data);
+ GST_DEBUG (" alpha max ref = %u", descriptor->alpha_max_ref);
+ case 0x3409:
+ descriptor->alpha_min_ref = GST_READ_UINT32_BE (tag_data);
+ GST_DEBUG (" alpha min ref = %u", descriptor->alpha_min_ref);
+ case 0x3405:
+ if (tag_size != 1)
+ descriptor->scanning_direction = GST_READ_UINT8 (tag_data);
+ GST_DEBUG (" scanning direction = %u", descriptor->scanning_direction);
+ case 0x3401:
+ case 0x3403:
+ case 0x3404:
+ /* TODO: handle this */
+ GST_WARNING (" tag 0x%04x not implemented yet", tag);
+ default:
+ mxf_metadata_generic_picture_essence_descriptor_handle_tag (d, primer,
+ tag, tag_data, tag_size);
+ return ret;
+error:
+ GST_ERROR ("Invalid RGBA picture essence descriptor tag 0x%04x of size %u",
+ tag, tag_size);
+ return TRUE;
+void mxf_metadata_rgba_picture_essence_descriptor_reset
+ (MXFMetadataRGBAPictureEssenceDescriptor * descriptor)
+ g_return_if_fail (descriptor != NULL);
+ mxf_metadata_generic_picture_essence_descriptor_reset (
+ (MXFMetadataGenericPictureEssenceDescriptor *) descriptor);
+ memset (descriptor, 0, sizeof (MXFMetadataRGBAPictureEssenceDescriptor));
+gboolean
mxf_metadata_multiple_descriptor_handle_tag (MXFMetadataGenericDescriptor * d,
const MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
guint16 tag_size)
Index: mxfparse.h
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- mxfparse.h 25 Nov 2008 09:38:26 -0000 1.3
+++ mxfparse.h 25 Nov 2008 10:26:11 -0000 1.4
@@ -131,6 +131,10 @@
const MXFPrimerPack *primer, guint16 tag, const guint8 *tag_data, guint16 tag_size);
void mxf_metadata_cdci_picture_essence_descriptor_reset (MXFMetadataCDCIPictureEssenceDescriptor *descriptor);
+gboolean mxf_metadata_rgba_picture_essence_descriptor_handle_tag (MXFMetadataGenericDescriptor *descriptor,
+ const MXFPrimerPack *primer, guint16 tag, const guint8 *tag_data, guint16 tag_size);
+void mxf_metadata_rgba_picture_essence_descriptor_reset (MXFMetadataRGBAPictureEssenceDescriptor *descriptor);
gboolean mxf_metadata_multiple_descriptor_handle_tag (MXFMetadataGenericDescriptor *descriptor,
void mxf_metadata_multiple_descriptor_reset (MXFMetadataMultipleDescriptor *descriptor);
Index: mxftypes.h
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxftypes.h,v
--- mxftypes.h 21 Nov 2008 10:27:15 -0000 1.1
+++ mxftypes.h 25 Nov 2008 10:26:11 -0000 1.2
@@ -149,6 +149,7 @@
typedef struct _MXFMetadataFileDescriptor MXFMetadataFileDescriptor;
typedef struct _MXFMetadataGenericPictureEssenceDescriptor MXFMetadataGenericPictureEssenceDescriptor;
typedef struct _MXFMetadataCDCIPictureEssenceDescriptor MXFMetadataCDCIPictureEssenceDescriptor;
+typedef struct _MXFMetadataRGBAPictureEssenceDescriptor MXFMetadataRGBAPictureEssenceDescriptor;
typedef struct _MXFMetadataGenericSoundEssenceDescriptor MXFMetadataGenericSoundEssenceDescriptor;
typedef struct _MXFMetadataMultipleDescriptor MXFMetadataMultipleDescriptor;
typedef struct _MXFMetadataLocator MXFMetadataLocator;
@@ -422,6 +423,18 @@
guint32 color_range;
};
+struct _MXFMetadataRGBAPictureEssenceDescriptor {
+ MXFMetadataGenericPictureEssenceDescriptor parent;
+ guint32 component_max_ref;
+ guint32 component_min_ref;
+ guint32 alpha_max_ref;
+ guint32 alpha_min_ref;
+ guint8 scanning_direction;
+ /* TODO: pixel layout, palette & palette layout */
+};
struct _MXFMetadataGenericSoundEssenceDescriptor {
MXFMetadataFileDescriptor parent;
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-cvs-verbose mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gstreamer-cvs-verbose