summaryrefslogtreecommitdiffstats
path: root/gst/mxf/mxfparse.c
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-11-30 17:26:55 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2008-11-30 17:26:55 +0000
commitc6d653d945ff9527c0e9933f8fd92e0a965459d7 (patch)
treea590a16d8a88f8f69b125bb9ee77977bc5def0b9 /gst/mxf/mxfparse.c
parent2657c730248da06e67c3974aec46de893e622f08 (diff)
downloadgst-plugins-bad-c6d653d945ff9527c0e9933f8fd92e0a965459d7.tar.gz
gst-plugins-bad-c6d653d945ff9527c0e9933f8fd92e0a965459d7.tar.bz2
gst-plugins-bad-c6d653d945ff9527c0e9933f8fd92e0a965459d7.zip
gst/mxf/: Add property to select the top-level source package or material package that should be used for playback.
Original commit message from CVS: * gst/mxf/mxfdemux.c: (gst_mxf_demux_remove_pads), (gst_mxf_demux_reset), (gst_mxf_demux_find_package), (gst_mxf_demux_choose_package), (gst_mxf_demux_handle_header_metadata_update_streams), (gst_mxf_demux_handle_klv_packet), (gst_mxf_demux_set_property), (gst_mxf_demux_get_property), (gst_mxf_demux_finalize), (gst_mxf_demux_class_init): * gst/mxf/mxfdemux.h: * gst/mxf/mxfparse.c: (mxf_umid_from_string): * gst/mxf/mxfparse.h: Add property to select the top-level source package or material package that should be used for playback.
Diffstat (limited to 'gst/mxf/mxfparse.c')
-rw-r--r--gst/mxf/mxfparse.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/gst/mxf/mxfparse.c b/gst/mxf/mxfparse.c
index 22efb333..32f5e336 100644
--- a/gst/mxf/mxfparse.c
+++ b/gst/mxf/mxfparse.c
@@ -271,6 +271,37 @@ mxf_umid_to_string (const MXFUMID * key, gchar str[96])
return str;
}
+MXFUMID *
+mxf_umid_from_string (const gchar * str, MXFUMID * umid)
+{
+ gint len;
+ guint i, j;
+
+ g_return_val_if_fail (str != NULL, NULL);
+ len = strlen (str);
+
+ memset (umid, 0, 32);
+
+ if (len != 95) {
+ GST_ERROR ("Invalid UMID string length %d", len);
+ return NULL;
+ }
+
+ for (i = 0, j = 0; i < 32; i++) {
+ if (!g_ascii_isxdigit (str[j]) ||
+ !g_ascii_isxdigit (str[j + 1]) ||
+ (str[j + 2] != '.' && str[j + 2] != '\0')) {
+ GST_ERROR ("Invalid UMID string '%s'", str);
+ return NULL;
+ }
+
+ umid->u[i] =
+ (g_ascii_xdigit_value (str[j]) << 4) | (g_ascii_xdigit_value (str[j +
+ 1]));
+ j += 3;
+ }
+ return umid;
+}
static guint
gst_mxf_ul_hash (const MXFUL * key)