mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 04:45:36 +00:00
Implement parsing of DMS1 (SMPTE S380M)
This commit is contained in:
parent
1b49a094fe
commit
cd80f534f5
12 changed files with 7261 additions and 187 deletions
|
@ -31,6 +31,7 @@
|
|||
#include "mxfd10.h"
|
||||
#include "mxfup.h"
|
||||
#include "mxfvc3.h"
|
||||
#include "mxfdms1.h"
|
||||
|
||||
GST_DEBUG_CATEGORY (mxf_debug);
|
||||
#define GST_CAT_DEFAULT mxf_debug
|
||||
|
@ -47,6 +48,7 @@ plugin_init (GstPlugin * plugin)
|
|||
mxf_d10_init ();
|
||||
mxf_up_init ();
|
||||
mxf_vc3_init ();
|
||||
mxf_dms1_initialize ();
|
||||
|
||||
if (!gst_element_register (plugin, "mxfdemux", GST_RANK_PRIMARY,
|
||||
GST_TYPE_MXF_DEMUX))
|
||||
|
|
|
@ -100,10 +100,10 @@ mxf_alaw_create_caps (MXFMetadataTimelineTrack * track, GstTagList ** tags,
|
|||
if (!track->parent.descriptor[i])
|
||||
continue;
|
||||
|
||||
if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent.
|
||||
descriptor[i])) {
|
||||
s = (MXFMetadataGenericSoundEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->
|
||||
parent.descriptor[i])) {
|
||||
s = (MXFMetadataGenericSoundEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -173,15 +173,15 @@ mxf_d10_create_caps (MXFMetadataTimelineTrack * track, GstTagList ** tags,
|
|||
if (!track->parent.descriptor[i])
|
||||
continue;
|
||||
|
||||
if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->parent.
|
||||
descriptor[i])) {
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->
|
||||
parent.descriptor[i])) {
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
break;
|
||||
} else if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent.
|
||||
descriptor[i])) {
|
||||
s = (MXFMetadataGenericSoundEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
} else if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->
|
||||
parent.descriptor[i])) {
|
||||
s = (MXFMetadataGenericSoundEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -558,11 +558,11 @@ gst_mxf_demux_choose_package (GstMXFDemux * demux)
|
|||
|
||||
for (i = 0; i < demux->preface->content_storage->n_packages; i++) {
|
||||
if (demux->preface->content_storage->packages[i] &&
|
||||
MXF_IS_METADATA_MATERIAL_PACKAGE (demux->preface->content_storage->
|
||||
packages[i])) {
|
||||
MXF_IS_METADATA_MATERIAL_PACKAGE (demux->preface->
|
||||
content_storage->packages[i])) {
|
||||
ret =
|
||||
MXF_METADATA_GENERIC_PACKAGE (demux->preface->content_storage->
|
||||
packages[i]);
|
||||
MXF_METADATA_GENERIC_PACKAGE (demux->preface->
|
||||
content_storage->packages[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -908,6 +908,7 @@ gst_mxf_demux_handle_descriptive_metadata (GstMXFDemux * demux,
|
|||
guint32 type;
|
||||
guint8 scheme;
|
||||
GstFlowReturn ret = GST_FLOW_OK;
|
||||
MXFDescriptiveMetadata *m = NULL;
|
||||
|
||||
scheme = GST_READ_UINT8 (key->u + 12);
|
||||
type = GST_READ_UINT24_BE (key->u + 13);
|
||||
|
@ -933,14 +934,23 @@ gst_mxf_demux_handle_descriptive_metadata (GstMXFDemux * demux,
|
|||
return GST_FLOW_OK;
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
default:
|
||||
GST_WARNING_OBJECT (demux,
|
||||
"Unknown or unhandled descriptive metadata of scheme 0x%02x and type 0x%06x",
|
||||
scheme, type);
|
||||
break;
|
||||
|
||||
m = mxf_descriptive_metadata_new (scheme, type, &demux->primer,
|
||||
GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer));
|
||||
|
||||
if (!m) {
|
||||
GST_WARNING_OBJECT (demux,
|
||||
"Unknown or unhandled descriptive metadata of scheme 0x%02x and type 0x%06x",
|
||||
scheme, type);
|
||||
return GST_FLOW_OK;
|
||||
}
|
||||
|
||||
if (!demux->metadata)
|
||||
demux->metadata = g_ptr_array_new ();
|
||||
|
||||
g_ptr_array_add (demux->metadata, m);
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -975,8 +985,8 @@ gst_mxf_demux_pad_next_component (GstMXFDemux * demux, GstMXFDemuxPad * pad)
|
|||
GST_DEBUG_OBJECT (demux, "Switching to component %u", pad->current_component);
|
||||
|
||||
pad->component =
|
||||
MXF_METADATA_SOURCE_CLIP (sequence->structural_components[pad->
|
||||
current_component]);
|
||||
MXF_METADATA_SOURCE_CLIP (sequence->
|
||||
structural_components[pad->current_component]);
|
||||
if (pad->component == NULL) {
|
||||
GST_ERROR_OBJECT (demux, "No such structural component");
|
||||
return GST_FLOW_ERROR;
|
||||
|
@ -984,8 +994,8 @@ gst_mxf_demux_pad_next_component (GstMXFDemux * demux, GstMXFDemuxPad * pad)
|
|||
|
||||
if (!pad->component->source_package
|
||||
|| !pad->component->source_package->top_level
|
||||
|| !MXF_METADATA_GENERIC_PACKAGE (pad->component->
|
||||
source_package)->tracks) {
|
||||
|| !MXF_METADATA_GENERIC_PACKAGE (pad->component->source_package)->
|
||||
tracks) {
|
||||
GST_ERROR_OBJECT (demux, "Invalid component");
|
||||
return GST_FLOW_ERROR;
|
||||
}
|
||||
|
|
6088
gst/mxf/mxfdms1.c
6088
gst/mxf/mxfdms1.c
File diff suppressed because it is too large
Load diff
|
@ -17,11 +17,917 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* Implementation of SMPTE S380M - Descriptive Metadata Scheme-1 */
|
||||
/* Implementation of SMPTE S380M - Descriptive Scheme-1 */
|
||||
|
||||
#ifndef __MXF_DMS1_H__
|
||||
#define __MXF_DMS1_H__
|
||||
#ifndef _MXF_DMS1_H_
|
||||
#define _MXF_DMS1_H_
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include "mxfmetadata.h"
|
||||
|
||||
#define MXF_TYPE_DMS1 \
|
||||
(mxf_dms1_get_type())
|
||||
#define MXF_DMS1(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1, MXFDMS1))
|
||||
#define MXF_IS_DMS1(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1))
|
||||
typedef struct _MXFDMS1 MXFDMS1;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1Class;
|
||||
GType mxf_dms1_get_type (void);
|
||||
|
||||
#endif /* __MXF_DMS1_H__ */
|
||||
#define MXF_TYPE_DMS1_TEXT_LANGUAGE \
|
||||
(mxf_dms1_text_language_get_type())
|
||||
#define MXF_DMS1_TEXT_LANGUAGE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_TEXT_LANGUAGE, MXFDMS1TextLanguage))
|
||||
#define MXF_IS_DMS1_TEXT_LANGUAGE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_TEXT_LANGUAGE))
|
||||
typedef struct _MXFDMS1TextLanguage MXFDMS1TextLanguage;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1TextLanguageClass;
|
||||
GType mxf_dms1_text_language_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_THESAURUS \
|
||||
(mxf_dms1_thesaurus_get_type())
|
||||
#define MXF_DMS1_THESAURUS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_THESAURUS, MXFDMS1Thesaurus))
|
||||
#define MXF_IS_DMS1_THESAURUS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_THESAURUS))
|
||||
typedef struct _MXFDMS1Thesaurus MXFDMS1Thesaurus;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ThesaurusClass;
|
||||
GType mxf_dms1_thesaurus_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_FRAMEWORK \
|
||||
(mxf_dms1_framework_get_type())
|
||||
#define MXF_DMS1_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_FRAMEWORK, MXFDMS1Framework))
|
||||
#define MXF_IS_DMS1_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_FRAMEWORK))
|
||||
typedef struct _MXFDMS1Framework MXFDMS1Framework;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1FrameworkClass;
|
||||
GType mxf_dms1_framework_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_PRODUCTION_CLIP_FRAMEWORK \
|
||||
(mxf_dms1_production_clip_framework_get_type())
|
||||
#define MXF_DMS1_PRODUCTION_CLIP_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PRODUCTION_CLIP_FRAMEWORK, MXFDMS1ProductionClipFramework))
|
||||
#define MXF_IS_DMS1_PRODUCTION_CLIP_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PRODUCTION_CLIP_FRAMEWORK))
|
||||
typedef struct _MXFDMS1ProductionClipFramework MXFDMS1ProductionClipFramework;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ProductionClipFrameworkClass;
|
||||
GType mxf_dms1_production_clip_framework_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_PRODUCTION_FRAMEWORK \
|
||||
(mxf_dms1_production_framework_get_type())
|
||||
#define MXF_DMS1_PRODUCTION_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PRODUCTION_FRAMEWORK, MXFDMS1ProductionFramework))
|
||||
#define MXF_IS_DMS1_PRODUCTION_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PRODUCTION_FRAMEWORK))
|
||||
typedef struct _MXFDMS1ProductionFramework MXFDMS1ProductionFramework;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ProductionFrameworkClass;
|
||||
GType mxf_dms1_production_framework_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_CLIP_FRAMEWORK \
|
||||
(mxf_dms1_clip_framework_get_type())
|
||||
#define MXF_DMS1_CLIP_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CLIP_FRAMEWORK, MXFDMS1ClipFramework))
|
||||
#define MXF_IS_DMS1_CLIP_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CLIP_FRAMEWORK))
|
||||
typedef struct _MXFDMS1ClipFramework MXFDMS1ClipFramework;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ClipFrameworkClass;
|
||||
GType mxf_dms1_clip_framework_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_SCENE_FRAMEWORK \
|
||||
(mxf_dms1_scene_framework_get_type())
|
||||
#define MXF_DMS1_SCENE_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_SCENE_FRAMEWORK, MXFDMS1SceneFramework))
|
||||
#define MXF_IS_DMS1_SCENE_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_SCENE_FRAMEWORK))
|
||||
typedef struct _MXFDMS1SceneFramework MXFDMS1SceneFramework;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1SceneFrameworkClass;
|
||||
GType mxf_dms1_scene_framework_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_TITLES \
|
||||
(mxf_dms1_titles_get_type())
|
||||
#define MXF_DMS1_TITLES(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_TITLES, MXFDMS1Titles))
|
||||
#define MXF_IS_DMS1_TITLES(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_TITLES))
|
||||
typedef struct _MXFDMS1Titles MXFDMS1Titles;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1TitlesClass;
|
||||
GType mxf_dms1_titles_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_IDENTIFICATION \
|
||||
(mxf_dms1_identification_get_type())
|
||||
#define MXF_DMS1_IDENTIFICATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_IDENTIFICATION, MXFDMS1Identification))
|
||||
#define MXF_IS_DMS1_IDENTIFICATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_IDENTIFICATION))
|
||||
typedef struct _MXFDMS1Identification MXFDMS1Identification;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1IdentificationClass;
|
||||
GType mxf_dms1_identification_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_GROUP_RELATIONSHIP \
|
||||
(mxf_dms1_group_relationship_get_type())
|
||||
#define MXF_DMS1_GROUP_RELATIONSHIP(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_GROUP_RELATIONSHIP, MXFDMS1GroupRelationship))
|
||||
#define MXF_IS_DMS1_GROUP_RELATIONSHIP(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_GROUP_RELATIONSHIP))
|
||||
typedef struct _MXFDMS1GroupRelationship MXFDMS1GroupRelationship;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1GroupRelationshipClass;
|
||||
GType mxf_dms1_group_relationship_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_BRANDING \
|
||||
(mxf_dms1_branding_get_type())
|
||||
#define MXF_DMS1_BRANDING(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_BRANDING, MXFDMS1Branding))
|
||||
#define MXF_IS_DMS1_BRANDING(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_BRANDING))
|
||||
typedef struct _MXFDMS1Branding MXFDMS1Branding;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1BrandingClass;
|
||||
GType mxf_dms1_branding_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_EVENT \
|
||||
(mxf_dms1_event_get_type())
|
||||
#define MXF_DMS1_EVENT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_EVENT, MXFDMS1Event))
|
||||
#define MXF_IS_DMS1_EVENT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_EVENT))
|
||||
typedef struct _MXFDMS1Event MXFDMS1Event;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1EventClass;
|
||||
GType mxf_dms1_event_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_PUBLICATION \
|
||||
(mxf_dms1_publication_get_type())
|
||||
#define MXF_DMS1_PUBLICATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PUBLICATION, MXFDMS1Publication))
|
||||
#define MXF_IS_DMS1_PUBLICATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PUBLICATION))
|
||||
typedef struct _MXFDMS1Publication MXFDMS1Publication;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1PublicationClass;
|
||||
GType mxf_dms1_publication_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_AWARD \
|
||||
(mxf_dms1_award_get_type())
|
||||
#define MXF_DMS1_AWARD(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_AWARD, MXFDMS1Award))
|
||||
#define MXF_IS_DMS1_AWARD(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_AWARD))
|
||||
typedef struct _MXFDMS1Award MXFDMS1Award;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1AwardClass;
|
||||
GType mxf_dms1_award_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_CAPTIONS_DESCRIPTION \
|
||||
(mxf_dms1_captions_description_get_type())
|
||||
#define MXF_DMS1_CAPTIONS_DESCRIPTION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CAPTIONS_DESCRIPTION, MXFDMS1CaptionsDescription))
|
||||
#define MXF_IS_DMS1_CAPTIONS_DESCRIPTION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CAPTIONS_DESCRIPTION))
|
||||
typedef struct _MXFDMS1CaptionsDescription MXFDMS1CaptionsDescription;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1CaptionsDescriptionClass;
|
||||
GType mxf_dms1_captions_description_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_ANNOTATION \
|
||||
(mxf_dms1_annotation_get_type())
|
||||
#define MXF_DMS1_ANNOTATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_ANNOTATION, MXFDMS1Annotation))
|
||||
#define MXF_IS_DMS1_ANNOTATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_ANNOTATION))
|
||||
typedef struct _MXFDMS1Annotation MXFDMS1Annotation;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1AnnotationClass;
|
||||
GType mxf_dms1_annotation_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_SETTING_PERIOD \
|
||||
(mxf_dms1_setting_period_get_type())
|
||||
#define MXF_DMS1_SETTING_PERIOD(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_SETTING_PERIOD, MXFDMS1SettingPeriod))
|
||||
#define MXF_IS_DMS1_SETTING_PERIOD(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_SETTING_PERIOD))
|
||||
typedef struct _MXFDMS1SettingPeriod MXFDMS1SettingPeriod;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1SettingPeriodClass;
|
||||
GType mxf_dms1_setting_period_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_SCRIPTING \
|
||||
(mxf_dms1_scripting_get_type())
|
||||
#define MXF_DMS1_SCRIPTING(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_SCRIPTING, MXFDMS1Scripting))
|
||||
#define MXF_IS_DMS1_SCRIPTING(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_SCRIPTING))
|
||||
typedef struct _MXFDMS1Scripting MXFDMS1Scripting;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ScriptingClass;
|
||||
GType mxf_dms1_scripting_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_CLASSIFICATION \
|
||||
(mxf_dms1_classification_get_type())
|
||||
#define MXF_DMS1_CLASSIFICATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CLASSIFICATION, MXFDMS1Classification))
|
||||
#define MXF_IS_DMS1_CLASSIFICATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CLASSIFICATION))
|
||||
typedef struct _MXFDMS1Classification MXFDMS1Classification;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ClassificationClass;
|
||||
GType mxf_dms1_classification_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_SHOT \
|
||||
(mxf_dms1_shot_get_type())
|
||||
#define MXF_DMS1_SHOT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_SHOT, MXFDMS1Shot))
|
||||
#define MXF_IS_DMS1_SHOT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_SHOT))
|
||||
typedef struct _MXFDMS1Shot MXFDMS1Shot;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ShotClass;
|
||||
GType mxf_dms1_shot_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_KEY_POINT \
|
||||
(mxf_dms1_key_point_get_type())
|
||||
#define MXF_DMS1_KEY_POINT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_KEY_POINT, MXFDMS1KeyPoint))
|
||||
#define MXF_IS_DMS1_KEY_POINT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_KEY_POINT))
|
||||
typedef struct _MXFDMS1KeyPoint MXFDMS1KeyPoint;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1KeyPointClass;
|
||||
GType mxf_dms1_key_point_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_PARTICIPANT \
|
||||
(mxf_dms1_participant_get_type())
|
||||
#define MXF_DMS1_PARTICIPANT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PARTICIPANT, MXFDMS1Participant))
|
||||
#define MXF_IS_DMS1_PARTICIPANT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PARTICIPANT))
|
||||
typedef struct _MXFDMS1Participant MXFDMS1Participant;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ParticipantClass;
|
||||
GType mxf_dms1_participant_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_CONTACT \
|
||||
(mxf_dms1_contact_get_type())
|
||||
#define MXF_DMS1_CONTACT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CONTACT, MXFDMS1Contact))
|
||||
#define MXF_IS_DMS1_CONTACT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CONTACT))
|
||||
typedef struct _MXFDMS1Contact MXFDMS1Contact;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ContactClass;
|
||||
GType mxf_dms1_contact_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_PERSON \
|
||||
(mxf_dms1_person_get_type())
|
||||
#define MXF_DMS1_PERSON(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PERSON, MXFDMS1Person))
|
||||
#define MXF_IS_DMS1_PERSON(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PERSON))
|
||||
typedef struct _MXFDMS1Person MXFDMS1Person;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1PersonClass;
|
||||
GType mxf_dms1_person_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_ORGANISATION \
|
||||
(mxf_dms1_organisation_get_type())
|
||||
#define MXF_DMS1_ORGANISATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_ORGANISATION, MXFDMS1Organisation))
|
||||
#define MXF_IS_DMS1_ORGANISATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_ORGANISATION))
|
||||
typedef struct _MXFDMS1Organisation MXFDMS1Organisation;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1OrganisationClass;
|
||||
GType mxf_dms1_organisation_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_LOCATION \
|
||||
(mxf_dms1_location_get_type())
|
||||
#define MXF_DMS1_LOCATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_LOCATION, MXFDMS1Location))
|
||||
#define MXF_IS_DMS1_LOCATION(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_LOCATION))
|
||||
typedef struct _MXFDMS1Location MXFDMS1Location;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1LocationClass;
|
||||
GType mxf_dms1_location_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_ADDRESS \
|
||||
(mxf_dms1_address_get_type())
|
||||
#define MXF_DMS1_ADDRESS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_ADDRESS, MXFDMS1Address))
|
||||
#define MXF_IS_DMS1_ADDRESS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_ADDRESS))
|
||||
typedef struct _MXFDMS1Address MXFDMS1Address;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1AddressClass;
|
||||
GType mxf_dms1_address_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_COMMUNICATIONS \
|
||||
(mxf_dms1_communications_get_type())
|
||||
#define MXF_DMS1_COMMUNICATIONS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_COMMUNICATIONS, MXFDMS1Communications))
|
||||
#define MXF_IS_DMS1_COMMUNICATIONS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_COMMUNICATIONS))
|
||||
typedef struct _MXFDMS1Communications MXFDMS1Communications;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1CommunicationsClass;
|
||||
GType mxf_dms1_communications_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_CONTRACT \
|
||||
(mxf_dms1_contract_get_type())
|
||||
#define MXF_DMS1_CONTRACT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CONTRACT, MXFDMS1Contract))
|
||||
#define MXF_IS_DMS1_CONTRACT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CONTRACT))
|
||||
typedef struct _MXFDMS1Contract MXFDMS1Contract;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ContractClass;
|
||||
GType mxf_dms1_contract_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_RIGHTS \
|
||||
(mxf_dms1_rights_get_type())
|
||||
#define MXF_DMS1_RIGHTS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_RIGHTS, MXFDMS1Rights))
|
||||
#define MXF_IS_DMS1_RIGHTS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_RIGHTS))
|
||||
typedef struct _MXFDMS1Rights MXFDMS1Rights;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1RightsClass;
|
||||
GType mxf_dms1_rights_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_PICTURE_FORMAT \
|
||||
(mxf_dms1_picture_format_get_type())
|
||||
#define MXF_DMS1_PICTURE_FORMAT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PICTURE_FORMAT, MXFDMS1PictureFormat))
|
||||
#define MXF_IS_DMS1_PICTURE_FORMAT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PICTURE_FORMAT))
|
||||
typedef struct _MXFDMS1PictureFormat MXFDMS1PictureFormat;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1PictureFormatClass;
|
||||
GType mxf_dms1_picture_format_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_DEVICE_PARAMETERS \
|
||||
(mxf_dms1_device_parameters_get_type())
|
||||
#define MXF_DMS1_DEVICE_PARAMETERS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_DEVICE_PARAMETERS, MXFDMS1DeviceParameters))
|
||||
#define MXF_IS_DMS1_DEVICE_PARAMETERS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_DEVICE_PARAMETERS))
|
||||
typedef struct _MXFDMS1DeviceParameters MXFDMS1DeviceParameters;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1DeviceParametersClass;
|
||||
GType mxf_dms1_device_parameters_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_NAME_VALUE \
|
||||
(mxf_dms1_name_value_get_type())
|
||||
#define MXF_DMS1_NAME_VALUE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_NAME_VALUE, MXFDMS1NameValue))
|
||||
#define MXF_IS_DMS1_NAME_VALUE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_NAME_VALUE))
|
||||
typedef struct _MXFDMS1NameValue MXFDMS1NameValue;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1NameValueClass;
|
||||
GType mxf_dms1_name_value_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_PROCESSING \
|
||||
(mxf_dms1_processing_get_type())
|
||||
#define MXF_DMS1_PROCESSING(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PROCESSING, MXFDMS1Processing))
|
||||
#define MXF_IS_DMS1_PROCESSING(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PROCESSING))
|
||||
typedef struct _MXFDMS1Processing MXFDMS1Processing;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ProcessingClass;
|
||||
GType mxf_dms1_processing_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_PROJECT \
|
||||
(mxf_dms1_project_get_type())
|
||||
#define MXF_DMS1_PROJECT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PROJECT, MXFDMS1Project))
|
||||
#define MXF_IS_DMS1_PROJECT(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PROJECT))
|
||||
typedef struct _MXFDMS1Project MXFDMS1Project;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ProjectClass;
|
||||
GType mxf_dms1_project_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_CONTACTS_LIST \
|
||||
(mxf_dms1_contacts_list_get_type())
|
||||
#define MXF_DMS1_CONTACTS_LIST(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CONTACTS_LIST, MXFDMS1ContactsList))
|
||||
#define MXF_IS_DMS1_CONTACTS_LIST(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CONTACTS_LIST))
|
||||
typedef struct _MXFDMS1ContactsList MXFDMS1ContactsList;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1ContactsListClass;
|
||||
GType mxf_dms1_contacts_list_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DMS1_CUE_WORDS \
|
||||
(mxf_dms1_cue_words_get_type())
|
||||
#define MXF_DMS1_CUE_WORDS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CUE_WORDS, MXFDMS1CueWords))
|
||||
#define MXF_IS_DMS1_CUE_WORDS(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CUE_WORDS))
|
||||
typedef struct _MXFDMS1CueWords MXFDMS1CueWords;
|
||||
typedef MXFDescriptiveMetadataClass MXFDMS1CueWordsClass;
|
||||
GType mxf_dms1_cue_words_get_type (void);
|
||||
|
||||
struct _MXFDMS1 {
|
||||
MXFDescriptiveMetadata parent;
|
||||
};
|
||||
|
||||
struct _MXFDMS1TextLanguage {
|
||||
MXFDMS1 parent;
|
||||
|
||||
gchar extended_text_language_code[13];
|
||||
};
|
||||
|
||||
struct _MXFDMS1Thesaurus {
|
||||
MXFDMS1TextLanguage parent;
|
||||
|
||||
gchar *thesaurus_name;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Framework {
|
||||
MXFDMS1 parent;
|
||||
|
||||
gchar framework_extended_text_language_code[13];
|
||||
gchar *framework_thesaurus_name;
|
||||
gchar *framework_title;
|
||||
gchar primary_extended_spoken_language_code[13];
|
||||
gchar secondary_extended_spoken_language_code[13];
|
||||
gchar original_extended_spoken_language_code[13];
|
||||
|
||||
guint32 n_metadata_server_locators;
|
||||
MXFUL *metadata_server_locators_uids;
|
||||
/* TODO */
|
||||
|
||||
guint32 n_titles_sets;
|
||||
MXFUL *titles_sets_uids;
|
||||
MXFDMS1Titles **titles_sets;
|
||||
|
||||
guint32 n_annotations_sets;
|
||||
MXFUL *annotations_sets_uids;
|
||||
MXFDMS1Annotation **annotations_sets;
|
||||
|
||||
guint32 n_participant_sets;
|
||||
MXFUL *participant_sets_uids;
|
||||
MXFDMS1Participant **participant_sets;
|
||||
|
||||
MXFUL contacts_list_set_uid;
|
||||
MXFDMS1ContactsList *contacts_list_set;
|
||||
|
||||
guint32 n_location_sets;
|
||||
MXFUL *location_sets_uids;
|
||||
MXFDMS1Location **location_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1ProductionClipFramework {
|
||||
MXFDMS1Framework parent;
|
||||
|
||||
MXFUL picture_format_set_uid;
|
||||
MXFDMS1PictureFormat *picture_format;
|
||||
|
||||
guint32 n_captions_description_sets;
|
||||
MXFUL *captions_description_sets_uids;
|
||||
MXFDMS1CaptionsDescription **captions_description_sets;
|
||||
|
||||
guint32 n_contract_sets;
|
||||
MXFUL *contract_sets_uids;
|
||||
MXFDMS1Contract **contract_sets;
|
||||
|
||||
MXFUL project_set_uid;
|
||||
MXFDMS1Project *project_set;
|
||||
};
|
||||
|
||||
struct _MXFDMS1ProductionFramework {
|
||||
MXFDMS1ProductionClipFramework parent;
|
||||
|
||||
gchar *integration_indication;
|
||||
|
||||
guint32 n_identification_sets;
|
||||
MXFUL *identification_sets_uids;
|
||||
MXFDMS1Identification **identification_sets;
|
||||
|
||||
guint32 n_group_relationship_sets;
|
||||
MXFUL *group_relationship_sets_uids;
|
||||
MXFDMS1GroupRelationship **group_relationship_sets;
|
||||
|
||||
guint32 n_branding_sets;
|
||||
MXFUL *branding_sets_uids;
|
||||
MXFDMS1Branding **branding_sets;
|
||||
|
||||
guint32 n_event_sets;
|
||||
MXFUL *event_sets_uids;
|
||||
MXFDMS1Event **event_sets;
|
||||
|
||||
guint32 n_award_sets;
|
||||
MXFUL *award_sets_uids;
|
||||
MXFDMS1Award **award_sets;
|
||||
|
||||
guint32 n_setting_period_sets;
|
||||
MXFUL *setting_period_sets_uids;
|
||||
MXFDMS1SettingPeriod **setting_period_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1ClipFramework {
|
||||
MXFDMS1ProductionClipFramework parent;
|
||||
|
||||
gchar *clip_kind;
|
||||
gchar clip_number[33];
|
||||
|
||||
guint8 extended_clip_id[64];
|
||||
gboolean extended_clip_id_full;
|
||||
|
||||
MXFTimestamp clip_creation_date_and_time;
|
||||
|
||||
guint16 take_number;
|
||||
|
||||
gchar *slate_information;
|
||||
|
||||
guint32 n_scripting_sets;
|
||||
MXFUL *scripting_sets_uids;
|
||||
MXFDMS1Scripting **scripting_sets;
|
||||
|
||||
guint32 n_shot_sets;
|
||||
MXFUL *shot_sets_uids;
|
||||
MXFDMS1Shot **shot_sets;
|
||||
|
||||
guint32 n_device_parameters_sets;
|
||||
MXFUL *device_parameters_sets_uids;
|
||||
MXFDMS1DeviceParameters **device_parameters_sets;
|
||||
|
||||
MXFUL processing_set_uid;
|
||||
MXFDMS1Processing *processing_set;
|
||||
};
|
||||
|
||||
struct _MXFDMS1SceneFramework {
|
||||
MXFDMS1Framework parent;
|
||||
|
||||
gchar scene_number[33];
|
||||
|
||||
guint32 n_setting_period_sets;
|
||||
MXFUL *setting_period_sets_uids;
|
||||
MXFDMS1SettingPeriod **setting_period_sets;
|
||||
|
||||
guint32 n_shot_scene_sets;
|
||||
MXFUL *shot_scene_sets_uids;
|
||||
MXFDMS1Shot **shot_scene_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Titles {
|
||||
MXFDMS1TextLanguage parent;
|
||||
|
||||
gchar *main_title;
|
||||
gchar *secondary_title;
|
||||
gchar *working_title;
|
||||
gchar *original_title;
|
||||
gchar *version_title;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Identification {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar identifier_kind[33];
|
||||
guint8 *identifier_value;
|
||||
guint16 identifier_value_length;
|
||||
MXFUL identification_locator;
|
||||
gchar *identification_issuing_authority;
|
||||
};
|
||||
|
||||
struct _MXFDMS1GroupRelationship {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar *programming_group_kind;
|
||||
gchar* programming_group_title;
|
||||
gchar *group_synopsis;
|
||||
guint32 numerical_position_in_sequence;
|
||||
guint32 total_number_in_the_sequence;
|
||||
guint16 episodic_start_number;
|
||||
guint16 episodic_end_number;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Branding {
|
||||
MXFDMS1TextLanguage parent;
|
||||
|
||||
gchar *brand_main_title;
|
||||
gchar *brand_original_title;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Event {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar *event_indication;
|
||||
gchar event_start_date_and_time[33];
|
||||
gchar event_end_date_and_time[33];
|
||||
|
||||
guint32 n_publication_sets;
|
||||
MXFUL *publication_sets_uids;
|
||||
MXFDMS1Publication **publication_sets;
|
||||
|
||||
guint32 n_annotation_sets;
|
||||
MXFUL *annotation_sets_uids;
|
||||
MXFDMS1Annotation **annotation_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Publication {
|
||||
MXFDMS1 parent;
|
||||
|
||||
gchar *publication_organisation_name;
|
||||
gchar *publication_service_name;
|
||||
gchar *publication_medium;
|
||||
gchar *publication_region;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Award {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar *festival;
|
||||
gchar festival_date_and_time[33];
|
||||
gchar *award_name;
|
||||
gchar *award_classification;
|
||||
gchar *nomination_category;
|
||||
|
||||
guint32 n_participant_sets;
|
||||
MXFUL *participant_sets_uids;
|
||||
MXFDMS1Participant **participant_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1CaptionsDescription {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar extended_captions_language_code[13];
|
||||
gchar *caption_kind;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Annotation {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar *annotation_kind;
|
||||
gchar *annotation_synopsis;
|
||||
gchar *annotation_description;
|
||||
gchar *related_material_description;
|
||||
|
||||
guint32 n_classification_sets;
|
||||
MXFUL *classification_sets_uids;
|
||||
MXFDMS1Classification **classification_sets;
|
||||
|
||||
MXFUL cue_words_set_uid;
|
||||
MXFDMS1CueWords *cue_words_set;
|
||||
|
||||
guint32 n_related_material_locators;
|
||||
MXFUL *related_material_locators;
|
||||
/* TODO */
|
||||
|
||||
guint32 n_participant_sets;
|
||||
MXFUL *participant_sets_uids;
|
||||
MXFDMS1Participant **participant_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1SettingPeriod {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
MXFTimestamp setting_date_and_time;
|
||||
gchar *time_period_keyword;
|
||||
gchar *setting_period_description;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Scripting {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar *scripting_kind;
|
||||
gchar *scripting_text;
|
||||
|
||||
guint32 n_scripting_locators;
|
||||
MXFUL *scripting_locators;
|
||||
/* TODO */
|
||||
};
|
||||
|
||||
struct _MXFDMS1Classification {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar content_classification[128];
|
||||
|
||||
guint32 n_name_value_sets;
|
||||
MXFUL *name_value_sets_uids;
|
||||
MXFDMS1NameValue **name_value_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Shot {
|
||||
MXFDMS1TextLanguage parent;
|
||||
|
||||
gint64 shot_start_position;
|
||||
gint64 shot_duration;
|
||||
|
||||
guint32 n_shot_track_ids;
|
||||
guint32 *shot_track_ids;
|
||||
|
||||
gchar *shot_description;
|
||||
gchar *shot_comment_kind;
|
||||
gchar *shot_comment;
|
||||
|
||||
MXFUL cue_words_set_uid;
|
||||
MXFDMS1CueWords *cue_words_set;
|
||||
|
||||
guint32 n_key_point_sets;
|
||||
MXFUL *key_point_sets_uids;
|
||||
MXFDMS1KeyPoint **key_point_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1KeyPoint {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar *keypoint_kind;
|
||||
gchar *keypoint_value;
|
||||
gint64 keypoint_position;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Participant {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
MXFUL participant_uid;
|
||||
|
||||
gchar *contribution_status;
|
||||
gchar *job_function;
|
||||
gchar job_function_code[33];
|
||||
gchar *role_or_identity_name;
|
||||
|
||||
guint32 n_person_sets;
|
||||
MXFUL *person_sets_uids;
|
||||
MXFDMS1Person **person_sets;
|
||||
|
||||
guint32 n_organisation_sets;
|
||||
MXFUL *organisation_sets_uids;
|
||||
MXFDMS1Organisation **organisation_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Contact {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
MXFUL contact_uid;
|
||||
|
||||
guint32 n_name_value_sets;
|
||||
MXFUL *name_value_sets_uids;
|
||||
MXFDMS1NameValue **name_value_sets;
|
||||
|
||||
guint32 n_address_sets;
|
||||
MXFUL *address_sets_uids;
|
||||
MXFDMS1Address **address_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Person {
|
||||
MXFDMS1Contact parent;
|
||||
|
||||
gchar *family_name;
|
||||
gchar *first_given_name;
|
||||
gchar *other_given_names;
|
||||
gchar *linking_name;
|
||||
gchar *salutation;
|
||||
gchar *name_suffix;
|
||||
gchar *honours_qualifications;
|
||||
gchar *former_family_name;
|
||||
gchar *person_description;
|
||||
gchar *alternate_name;
|
||||
gchar *nationality;
|
||||
gchar *citizenship;
|
||||
|
||||
guint32 n_organisation_sets;
|
||||
MXFUL *organisation_sets_uids;
|
||||
MXFDMS1Organisation **organisation_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Organisation {
|
||||
MXFDMS1Contact parent;
|
||||
|
||||
gchar *nature_of_organisation;
|
||||
gchar *organisation_main_name;
|
||||
gchar *organisation_code;
|
||||
gchar *contact_department;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Location {
|
||||
MXFDMS1Contact parent;
|
||||
|
||||
gchar *location_kind;
|
||||
gchar *location_description;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Address {
|
||||
MXFDMS1 parent;
|
||||
|
||||
gchar *room_or_suite_number;
|
||||
gchar *room_or_suite_name;
|
||||
gchar *building_name;
|
||||
gchar *place_name;
|
||||
gchar *street_number;
|
||||
gchar *street_name;
|
||||
gchar *postal_town;
|
||||
gchar *city;
|
||||
gchar *state_or_province_or_country;
|
||||
gchar *postal_code;
|
||||
gchar *country;
|
||||
guint8 geographical_coordinate[12];
|
||||
gchar *astronomical_body_name;
|
||||
|
||||
guint32 n_communications_sets;
|
||||
MXFUL *communications_sets_uids;
|
||||
MXFDMS1Communications **communications_sets;
|
||||
|
||||
guint32 n_name_value_sets;
|
||||
MXFUL *name_value_sets_uids;
|
||||
MXFDMS1NameValue **name_value_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Communications {
|
||||
MXFDMS1 parent;
|
||||
|
||||
gchar central_telephone_number[33];
|
||||
gchar telephone_number[33];
|
||||
gchar mobile_telephone_number[33];
|
||||
gchar fax_number[33];
|
||||
gchar *email_address;
|
||||
gchar *web_page;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Contract {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar supply_contract_number[33];
|
||||
|
||||
guint32 n_rights_sets;
|
||||
MXFUL *rights_sets_uids;
|
||||
MXFDMS1Rights **rights_sets;
|
||||
|
||||
guint32 n_participant_sets;
|
||||
MXFUL *participant_sets_uids;
|
||||
MXFDMS1Participant **participant_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Rights {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar *copyright_owner;
|
||||
gchar *rights_holder;
|
||||
gchar *rights_managment_authority;
|
||||
gchar *region_or_area_of_ip_license;
|
||||
gchar *intellectual_property_type;
|
||||
gchar *right_condition;
|
||||
gchar *right_remarks;
|
||||
gchar *intellectual_property_right;
|
||||
MXFTimestamp rights_start_date_and_time;
|
||||
MXFTimestamp rights_stop_date_and_time;
|
||||
guint16 maximum_number_of_usages;
|
||||
};
|
||||
|
||||
struct _MXFDMS1PictureFormat {
|
||||
MXFDMS1 parent;
|
||||
|
||||
MXFFraction viewport_aspect_ratio;
|
||||
gchar perceived_display_format[33];
|
||||
gchar *colour_descriptor;
|
||||
};
|
||||
|
||||
struct _MXFDMS1DeviceParameters {
|
||||
MXFDMS1Thesaurus parent;
|
||||
|
||||
gchar *device_type;
|
||||
gchar device_designation[33];
|
||||
gchar device_asset_number[33];
|
||||
guint8 ieee_device_identifier[6];
|
||||
gchar *manufacturer;
|
||||
gchar *device_model;
|
||||
gchar *device_serial_number;
|
||||
gchar *device_usage_description;
|
||||
|
||||
guint32 n_name_value_sets;
|
||||
MXFUL *name_value_sets_uids;
|
||||
MXFDMS1NameValue **name_value_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1NameValue {
|
||||
MXFDMS1 parent;
|
||||
|
||||
gchar *item_name;
|
||||
gchar *item_value;
|
||||
|
||||
MXFUL smpte_universal_label_locator;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Processing {
|
||||
MXFDMS1 parent;
|
||||
|
||||
gboolean quality_flag;
|
||||
gchar *descriptive_comment;
|
||||
gboolean logo_flag;
|
||||
gchar *graphic_usage_type;
|
||||
guint16 process_steps;
|
||||
guint16 generation_copy_number;
|
||||
guint16 generation_clone_number;
|
||||
};
|
||||
|
||||
struct _MXFDMS1Project {
|
||||
MXFDMS1 parent;
|
||||
|
||||
gchar project_number[33];
|
||||
gchar *project_name_or_title;
|
||||
};
|
||||
|
||||
struct _MXFDMS1ContactsList {
|
||||
MXFDMS1 parent;
|
||||
|
||||
guint32 n_person_sets;
|
||||
MXFUL *person_sets_uids;
|
||||
MXFDMS1Person **person_sets;
|
||||
|
||||
guint32 n_organisation_sets;
|
||||
MXFUL *organisation_sets_uids;
|
||||
MXFDMS1Organisation **organisation_sets;
|
||||
|
||||
guint32 n_location_sets;
|
||||
MXFUL *location_sets_uids;
|
||||
MXFDMS1Location **location_sets;
|
||||
};
|
||||
|
||||
struct _MXFDMS1CueWords {
|
||||
MXFDMS1TextLanguage parent;
|
||||
|
||||
gchar *in_cue_words;
|
||||
gchar *out_cue_words;
|
||||
};
|
||||
|
||||
void mxf_dms1_initialize (void);
|
||||
|
||||
#endif /* _MXF_DMS1_H_ */
|
||||
|
|
|
@ -106,10 +106,10 @@ mxf_jpeg2000_create_caps (MXFMetadataTimelineTrack * track, GstTagList ** tags,
|
|||
if (!track->parent.descriptor[i])
|
||||
continue;
|
||||
|
||||
if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->parent.
|
||||
descriptor[i])) {
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->
|
||||
parent.descriptor[i])) {
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
f = track->parent.descriptor[i];
|
||||
break;
|
||||
} else if (MXF_IS_METADATA_FILE_DESCRIPTOR (track->parent.descriptor[i]) &&
|
||||
|
|
|
@ -114,10 +114,10 @@ mxf_metadata_base_resolve (MXFMetadataBase * self, MXFMetadataBase ** metadata)
|
|||
|
||||
if (self->resolved == MXF_METADATA_BASE_RESOLVE_STATE_SUCCESS)
|
||||
return TRUE;
|
||||
else if (self->resolved == MXF_METADATA_BASE_RESOLVE_STATE_FAILURE)
|
||||
else if (self->resolved != MXF_METADATA_BASE_RESOLVE_STATE_NONE)
|
||||
return FALSE;
|
||||
|
||||
self->resolved = TRUE;
|
||||
self->resolved = MXF_METADATA_BASE_RESOLVE_STATE_RUNNING;;
|
||||
|
||||
klass = MXF_METADATA_BASE_GET_CLASS (self);
|
||||
|
||||
|
@ -151,6 +151,13 @@ mxf_metadata_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
|
|||
GST_DEBUG (" instance uid = %s",
|
||||
mxf_ul_to_string (&self->parent.instance_uid, str));
|
||||
break;
|
||||
case 0x0102:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
memcpy (&self->parent.generation_uid, tag_data, 16);
|
||||
GST_DEBUG (" generation uid = %s",
|
||||
mxf_ul_to_string (&self->parent.generation_uid, str));
|
||||
break;
|
||||
default:
|
||||
ret =
|
||||
MXF_METADATA_BASE_CLASS (mxf_metadata_parent_class)->handle_tag
|
||||
|
@ -327,13 +334,6 @@ mxf_metadata_preface_handle_tag (MXFMetadataBase * metadata,
|
|||
gboolean ret = TRUE;
|
||||
|
||||
switch (tag) {
|
||||
case 0x0102:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
memcpy (&self->generation_uid, tag_data, 16);
|
||||
GST_DEBUG (" generation uid = %s",
|
||||
mxf_ul_to_string (&self->generation_uid, str));
|
||||
break;
|
||||
case 0x3b02:
|
||||
if (!mxf_timestamp_parse (&self->last_modified_date, tag_data, tag_size))
|
||||
goto error;
|
||||
|
@ -701,13 +701,6 @@ mxf_metadata_content_storage_handle_tag (MXFMetadataBase * metadata,
|
|||
#endif
|
||||
|
||||
switch (tag) {
|
||||
case 0x0102:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
memcpy (&self->generation_uid, tag_data, 16);
|
||||
GST_DEBUG (" generation uid = %s",
|
||||
mxf_ul_to_string (&self->generation_uid, str));
|
||||
break;
|
||||
case 0x1901:{
|
||||
guint32 len;
|
||||
guint i;
|
||||
|
@ -867,13 +860,6 @@ mxf_metadata_essence_container_data_handle_tag (MXFMetadataBase * metadata,
|
|||
#endif
|
||||
|
||||
switch (tag) {
|
||||
case 0x0102:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
memcpy (&self->generation_uid, tag_data, 16);
|
||||
GST_DEBUG (" generation uid = %s",
|
||||
mxf_ul_to_string (&self->generation_uid, str));
|
||||
break;
|
||||
case 0x2701:
|
||||
if (tag_size != 32)
|
||||
goto error;
|
||||
|
@ -996,13 +982,6 @@ mxf_metadata_generic_package_handle_tag (MXFMetadataBase * metadata,
|
|||
#endif
|
||||
|
||||
switch (tag) {
|
||||
case 0x0102:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
memcpy (&self->generation_uid, tag_data, 16);
|
||||
GST_DEBUG (" generation uid = %s",
|
||||
mxf_ul_to_string (&self->generation_uid, str));
|
||||
break;
|
||||
case 0x4401:
|
||||
if (tag_size != 32)
|
||||
goto error;
|
||||
|
@ -1401,13 +1380,6 @@ mxf_metadata_track_handle_tag (MXFMetadataBase * metadata,
|
|||
#endif
|
||||
|
||||
switch (tag) {
|
||||
case 0x0102:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
memcpy (&self->generation_uid, tag_data, 16);
|
||||
GST_DEBUG (" generation uid = %s",
|
||||
mxf_ul_to_string (&self->generation_uid, str));
|
||||
break;
|
||||
case 0x4801:
|
||||
if (tag_size != 4)
|
||||
goto error;
|
||||
|
@ -1702,13 +1674,6 @@ mxf_metadata_sequence_handle_tag (MXFMetadataBase * metadata,
|
|||
#endif
|
||||
|
||||
switch (tag) {
|
||||
case 0x0102:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
memcpy (&self->generation_uid, tag_data, 16);
|
||||
GST_DEBUG (" generation uid = %s",
|
||||
mxf_ul_to_string (&self->generation_uid, str));
|
||||
break;
|
||||
case 0x0201:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
|
@ -1837,13 +1802,6 @@ mxf_metadata_structural_component_handle_tag (MXFMetadataBase * metadata,
|
|||
#endif
|
||||
|
||||
switch (tag) {
|
||||
case 0x0102:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
memcpy (&self->generation_uid, tag_data, 16);
|
||||
GST_DEBUG (" generation uid = %s",
|
||||
mxf_ul_to_string (&self->generation_uid, str));
|
||||
break;
|
||||
case 0x0201:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
|
@ -2249,10 +2207,10 @@ mxf_metadata_dm_segment_resolve (MXFMetadataBase * m,
|
|||
while (*p) {
|
||||
current = *p;
|
||||
|
||||
/* TODO: if (MXF_IS_DM_FRAMEWORK (current) && */
|
||||
if (mxf_ul_is_equal (¤t->instance_uid, &self->dm_framework_uid)) {
|
||||
if (MXF_IS_DESCRIPTIVE_METADATA_FRAMEWORK (current)
|
||||
&& mxf_ul_is_equal (¤t->instance_uid, &self->dm_framework_uid)) {
|
||||
if (mxf_metadata_base_resolve (current, metadata)) {
|
||||
self->dm_framework = current;
|
||||
self->dm_framework = MXF_DESCRIPTIVE_METADATA_FRAMEWORK (current);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -2318,13 +2276,6 @@ mxf_metadata_generic_descriptor_handle_tag (MXFMetadataBase * metadata,
|
|||
#endif
|
||||
|
||||
switch (tag) {
|
||||
case 0x0102:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
memcpy (&self->generation_uid, tag_data, 16);
|
||||
GST_DEBUG (" generation uid = %s",
|
||||
mxf_ul_to_string (&self->generation_uid, str));
|
||||
break;
|
||||
case 0x2f01:{
|
||||
guint32 len;
|
||||
guint i;
|
||||
|
@ -2681,8 +2632,8 @@ mxf_metadata_generic_picture_essence_descriptor_handle_tag (MXFMetadataBase *
|
|||
default:
|
||||
ret =
|
||||
MXF_METADATA_BASE_CLASS
|
||||
(mxf_metadata_generic_picture_essence_descriptor_parent_class)->
|
||||
handle_tag (metadata, primer, tag, tag_data, tag_size);
|
||||
(mxf_metadata_generic_picture_essence_descriptor_parent_class)->handle_tag
|
||||
(metadata, primer, tag, tag_data, tag_size);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2835,8 +2786,8 @@ mxf_metadata_generic_sound_essence_descriptor_handle_tag (MXFMetadataBase *
|
|||
default:
|
||||
ret =
|
||||
MXF_METADATA_BASE_CLASS
|
||||
(mxf_metadata_generic_sound_essence_descriptor_parent_class)->
|
||||
handle_tag (metadata, primer, tag, tag_data, tag_size);
|
||||
(mxf_metadata_generic_sound_essence_descriptor_parent_class)->handle_tag
|
||||
(metadata, primer, tag, tag_data, tag_size);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2970,8 +2921,8 @@ mxf_metadata_cdci_picture_essence_descriptor_handle_tag (MXFMetadataBase *
|
|||
default:
|
||||
ret =
|
||||
MXF_METADATA_BASE_CLASS
|
||||
(mxf_metadata_cdci_picture_essence_descriptor_parent_class)->
|
||||
handle_tag (metadata, primer, tag, tag_data, tag_size);
|
||||
(mxf_metadata_cdci_picture_essence_descriptor_parent_class)->handle_tag
|
||||
(metadata, primer, tag, tag_data, tag_size);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3096,8 +3047,8 @@ mxf_metadata_rgba_picture_essence_descriptor_handle_tag (MXFMetadataBase *
|
|||
default:
|
||||
ret =
|
||||
MXF_METADATA_BASE_CLASS
|
||||
(mxf_metadata_rgba_picture_essence_descriptor_parent_class)->
|
||||
handle_tag (metadata, primer, tag, tag_data, tag_size);
|
||||
(mxf_metadata_rgba_picture_essence_descriptor_parent_class)->handle_tag
|
||||
(metadata, primer, tag, tag_data, tag_size);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3160,8 +3111,8 @@ mxf_metadata_generic_data_essence_descriptor_handle_tag (MXFMetadataBase *
|
|||
default:
|
||||
ret =
|
||||
MXF_METADATA_BASE_CLASS
|
||||
(mxf_metadata_generic_data_essence_descriptor_parent_class)->
|
||||
handle_tag (metadata, primer, tag, tag_data, tag_size);
|
||||
(mxf_metadata_generic_data_essence_descriptor_parent_class)->handle_tag
|
||||
(metadata, primer, tag, tag_data, tag_size);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3331,41 +3282,6 @@ mxf_metadata_multiple_descriptor_class_init (MXFMetadataMultipleDescriptorClass
|
|||
G_DEFINE_ABSTRACT_TYPE (MXFMetadataLocator, mxf_metadata_locator,
|
||||
MXF_TYPE_METADATA);
|
||||
|
||||
static gboolean
|
||||
mxf_metadata_locator_handle_tag (MXFMetadataBase * metadata,
|
||||
MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
|
||||
guint tag_size)
|
||||
{
|
||||
MXFMetadataLocator *self = MXF_METADATA_LOCATOR (metadata);
|
||||
gboolean ret = TRUE;
|
||||
#ifndef GST_DISABLE_GST_DEBUG
|
||||
gchar str[48];
|
||||
#endif
|
||||
|
||||
switch (tag) {
|
||||
case 0x0102:
|
||||
if (tag_size != 16)
|
||||
goto error;
|
||||
memcpy (&self->generation_uid, tag_data, 16);
|
||||
GST_DEBUG (" generation uid = %s",
|
||||
mxf_ul_to_string (&self->generation_uid, str));
|
||||
break;
|
||||
default:
|
||||
ret =
|
||||
MXF_METADATA_BASE_CLASS
|
||||
(mxf_metadata_locator_parent_class)->handle_tag (metadata,
|
||||
primer, tag, tag_data, tag_size);
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
error:
|
||||
GST_ERROR ("Invalid locator local tag 0x%04x of size %u", tag, tag_size);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
mxf_metadata_locator_init (MXFMetadataLocator * self)
|
||||
{
|
||||
|
@ -3374,9 +3290,6 @@ mxf_metadata_locator_init (MXFMetadataLocator * self)
|
|||
static void
|
||||
mxf_metadata_locator_class_init (MXFMetadataLocatorClass * klass)
|
||||
{
|
||||
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
|
||||
|
||||
metadata_base_class->handle_tag = mxf_metadata_locator_handle_tag;
|
||||
}
|
||||
|
||||
G_DEFINE_TYPE (MXFMetadataTextLocator, mxf_metadata_text_locator,
|
||||
|
@ -3487,3 +3400,125 @@ mxf_metadata_network_locator_class_init (MXFMetadataNetworkLocatorClass * klass)
|
|||
miniobject_class->finalize = mxf_metadata_network_locator_finalize;
|
||||
metadata_base_class->handle_tag = mxf_metadata_network_locator_handle_tag;
|
||||
}
|
||||
|
||||
G_DEFINE_ABSTRACT_TYPE (MXFDescriptiveMetadata, mxf_descriptive_metadata,
|
||||
MXF_TYPE_METADATA_BASE);
|
||||
|
||||
static void
|
||||
mxf_descriptive_metadata_init (MXFDescriptiveMetadata * self)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
mxf_descriptive_metadata_class_init (MXFDescriptiveMetadataClass * klass)
|
||||
{
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
guint8 scheme;
|
||||
GSList *sets;
|
||||
} _MXFDescriptiveMetadataScheme;
|
||||
|
||||
static GSList *_dm_schemes = NULL;
|
||||
|
||||
void
|
||||
mxf_descriptive_metadata_register (guint8 scheme, GSList * sets)
|
||||
{
|
||||
_MXFDescriptiveMetadataScheme *s =
|
||||
g_slice_new (_MXFDescriptiveMetadataScheme);
|
||||
|
||||
s->scheme = scheme;
|
||||
s->sets = sets;
|
||||
_dm_schemes = g_slist_prepend (_dm_schemes, s);
|
||||
}
|
||||
|
||||
MXFDescriptiveMetadata *
|
||||
mxf_descriptive_metadata_new (guint8 scheme, guint32 type,
|
||||
MXFPrimerPack * primer, const guint8 * data, guint size)
|
||||
{
|
||||
GSList *l;
|
||||
GType t = G_TYPE_INVALID;
|
||||
_MXFDescriptiveMetadataScheme *s = NULL;
|
||||
MXFDescriptiveMetadata *ret = NULL;
|
||||
|
||||
g_return_val_if_fail (type != 0, NULL);
|
||||
g_return_val_if_fail (primer != NULL, NULL);
|
||||
|
||||
for (l = _dm_schemes; l; l = l->next) {
|
||||
_MXFDescriptiveMetadataScheme *data = l->data;
|
||||
|
||||
if (data->scheme == scheme) {
|
||||
s = data;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (s == NULL) {
|
||||
GST_WARNING ("Descriptive metadata scheme 0x%02x not supported", scheme);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (l = s->sets; l; l = l->next) {
|
||||
MXFDescriptiveMetadataSet *set = l->data;
|
||||
|
||||
if (set->id == type) {
|
||||
t = set->type;
|
||||
break;
|
||||
} else if (set->id == 0x000000) {
|
||||
t = set->type;
|
||||
}
|
||||
}
|
||||
|
||||
if (t == G_TYPE_INVALID) {
|
||||
GST_WARNING
|
||||
("No handler for type 0x%06x of descriptive metadata scheme 0x%02x found",
|
||||
type, scheme);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ret = (MXFDescriptiveMetadata *) g_type_create_instance (t);
|
||||
if (!mxf_metadata_base_parse (MXF_METADATA_BASE (ret), primer, data, size)) {
|
||||
GST_ERROR ("Parsing metadata failed");
|
||||
gst_mini_object_unref ((GstMiniObject *) ret);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ret->type = type;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* TODO: Remove this once we depend on GLib 2.14 */
|
||||
#if GLIB_CHECK_VERSION (2, 14, 0)
|
||||
#define __gst_once_init_enter(val) (g_once_init_enter (val))
|
||||
#define __gst_once_init_leave(val,newval) (g_once_init_leave (val, newval))
|
||||
#endif
|
||||
|
||||
GType
|
||||
mxf_descriptive_metadata_framework_get_type (void)
|
||||
{
|
||||
static volatile gsize type = 0;
|
||||
if (__gst_once_init_enter (&type)) {
|
||||
GType _type = 0;
|
||||
static const GTypeInfo info = {
|
||||
sizeof (MXFDescriptiveMetadataFrameworkInterface),
|
||||
NULL, /* base_init */
|
||||
NULL, /* base_finalize */
|
||||
NULL, /* class_init */
|
||||
NULL, /* class_finalize */
|
||||
NULL, /* class_data */
|
||||
0, /* instance_size */
|
||||
0, /* n_preallocs */
|
||||
NULL /* instance_init */
|
||||
};
|
||||
_type = g_type_register_static (G_TYPE_INTERFACE,
|
||||
"MXFDescriptiveMetadataFrameworkInterface", &info, 0);
|
||||
|
||||
g_type_interface_add_prerequisite (_type, MXF_TYPE_DESCRIPTIVE_METADATA);
|
||||
|
||||
__gst_once_init_leave (&type, (gsize) _type);
|
||||
}
|
||||
|
||||
return (GType) type;
|
||||
}
|
||||
|
|
|
@ -333,16 +333,45 @@ typedef struct _MXFMetadataTextLocator MXFMetadataTextLocator;
|
|||
typedef MXFMetadataBaseClass MXFMetadataTextLocatorClass;
|
||||
GType mxf_metadata_text_locator_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DESCRIPTIVE_METADATA \
|
||||
(mxf_descriptive_metadata_get_type())
|
||||
#define MXF_DESCRIPTIVE_METADATA(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DESCRIPTIVE_METADATA,MXFDescriptiveMetadata))
|
||||
#define MXF_IS_DESCRIPTIVE_METADATA(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DESCRIPTIVE_METADATA))
|
||||
#define MXF_DESCRIPTIVE_METADATA_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), MXF_TYPE_DESCRIPTIVE_METADATA, MXFDescriptiveMetadataClass))
|
||||
#define MXF_DESCRIPTIVE_METADATA_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),MXF_TYPE_DESCRIPTIVE_METADATA,MXFDescriptiveMetadataClass))
|
||||
typedef struct _MXFDescriptiveMetadata MXFDescriptiveMetadata;
|
||||
typedef struct _MXFDescriptiveMetadataClass MXFDescriptiveMetadataClass;
|
||||
GType mxf_descriptive_metadata_get_type (void);
|
||||
|
||||
#define MXF_TYPE_DESCRIPTIVE_METADATA_FRAMEWORK \
|
||||
(mxf_descriptive_metadata_framework_get_type ())
|
||||
#define MXF_DESCRIPTIVE_METADATA_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), MXF_TYPE_DESCRIPTIVE_METADATA_FRAMEWORK, MXFDescriptiveMetadataFramework))
|
||||
#define MXF_IS_DESCRIPTIVE_METADATA_FRAMEWORK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), MXF_TYPE_DESCRIPTIVE_METADATA_FRAMEWORK))
|
||||
#define MXF_DESCRIPTIVE_METADATA_FRAMEWORK_GET_INTERFACE(inst) \
|
||||
(G_TYPE_INSTANCE_GET_INTERFACE ((inst), MXF_TYPE_DESCRIPTIVE_METADATA_FRAMEWORK, MXFDescriptiveMetadataFrameworkInterface))
|
||||
|
||||
typedef struct _MXFDescriptiveMetadataFramework MXFDescriptiveMetadataFramework; /* dummy object */
|
||||
typedef struct _MXFDescriptiveMetadataFrameworkInterface MXFDescriptiveMetadataFrameworkInterface;
|
||||
GType mxf_descriptive_metadata_framework_get_type (void);
|
||||
|
||||
typedef enum {
|
||||
MXF_METADATA_BASE_RESOLVE_STATE_NONE = 0,
|
||||
MXF_METADATA_BASE_RESOLVE_STATE_SUCCESS,
|
||||
MXF_METADATA_BASE_RESOLVE_STATE_FAILURE
|
||||
MXF_METADATA_BASE_RESOLVE_STATE_FAILURE,
|
||||
MXF_METADATA_BASE_RESOLVE_STATE_RUNNING
|
||||
} MXFMetadataBaseResolveState;
|
||||
|
||||
struct _MXFMetadataBase {
|
||||
GstMiniObject parent;
|
||||
|
||||
MXFUL instance_uid;
|
||||
MXFUL generation_uid;
|
||||
|
||||
MXFMetadataBaseResolveState resolved;
|
||||
|
||||
|
@ -365,8 +394,6 @@ struct _MXFMetadata {
|
|||
struct _MXFMetadataPreface {
|
||||
MXFMetadata parent;
|
||||
|
||||
MXFUL generation_uid;
|
||||
|
||||
MXFTimestamp last_modified_date;
|
||||
guint16 version;
|
||||
|
||||
|
@ -415,8 +442,6 @@ struct _MXFMetadataIdentification {
|
|||
struct _MXFMetadataContentStorage {
|
||||
MXFMetadata parent;
|
||||
|
||||
MXFUL generation_uid;
|
||||
|
||||
guint32 n_packages;
|
||||
MXFUL *packages_uids;
|
||||
MXFMetadataGenericPackage **packages;
|
||||
|
@ -429,8 +454,6 @@ struct _MXFMetadataContentStorage {
|
|||
struct _MXFMetadataEssenceContainerData {
|
||||
MXFMetadata parent;
|
||||
|
||||
MXFUL generation_uid;
|
||||
|
||||
MXFUMID linked_package_uid;
|
||||
MXFMetadataSourcePackage *linked_package;
|
||||
|
||||
|
@ -441,8 +464,6 @@ struct _MXFMetadataEssenceContainerData {
|
|||
struct _MXFMetadataGenericPackage {
|
||||
MXFMetadata parent;
|
||||
|
||||
MXFUL generation_uid;
|
||||
|
||||
MXFUMID package_uid;
|
||||
|
||||
gchar *name;
|
||||
|
@ -486,8 +507,6 @@ typedef enum {
|
|||
struct _MXFMetadataTrack {
|
||||
MXFMetadata parent;
|
||||
|
||||
MXFUL generation_uid;
|
||||
|
||||
guint32 track_id;
|
||||
guint32 track_number;
|
||||
|
||||
|
@ -519,8 +538,6 @@ struct _MXFMetadataEventTrack {
|
|||
struct _MXFMetadataSequence {
|
||||
MXFMetadata parent;
|
||||
|
||||
MXFUL generation_uid;
|
||||
|
||||
MXFUL data_definition;
|
||||
|
||||
gint64 duration;
|
||||
|
@ -533,8 +550,6 @@ struct _MXFMetadataSequence {
|
|||
struct _MXFMetadataStructuralComponent {
|
||||
MXFMetadata parent;
|
||||
|
||||
MXFUL generation_uid;
|
||||
|
||||
MXFUL data_definition;
|
||||
gint64 duration;
|
||||
};
|
||||
|
@ -574,14 +589,12 @@ struct _MXFMetadataDMSegment {
|
|||
guint32 *track_ids;
|
||||
|
||||
MXFUL dm_framework_uid;
|
||||
MXFMetadataBase *dm_framework;
|
||||
MXFDescriptiveMetadataFramework *dm_framework;
|
||||
};
|
||||
|
||||
struct _MXFMetadataGenericDescriptor {
|
||||
MXFMetadata parent;
|
||||
|
||||
MXFUL generation_uid;
|
||||
|
||||
guint32 n_locators;
|
||||
MXFUL *locators_uids;
|
||||
MXFMetadataLocator **locators;
|
||||
|
@ -698,8 +711,6 @@ struct _MXFMetadataMultipleDescriptor {
|
|||
|
||||
struct _MXFMetadataLocator {
|
||||
MXFMetadata parent;
|
||||
|
||||
MXFUL generation_uid;
|
||||
};
|
||||
|
||||
struct _MXFMetadataNetworkLocator {
|
||||
|
@ -714,6 +725,25 @@ struct _MXFMetadataTextLocator {
|
|||
gchar *locator_name;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
guint32 id;
|
||||
GType type;
|
||||
} MXFDescriptiveMetadataSet;
|
||||
|
||||
struct _MXFDescriptiveMetadata {
|
||||
MXFMetadataBase parent;
|
||||
|
||||
guint32 type;
|
||||
};
|
||||
|
||||
struct _MXFDescriptiveMetadataClass {
|
||||
MXFMetadataBase parent;
|
||||
};
|
||||
|
||||
struct _MXFDescriptiveMetadataFrameworkInterface {
|
||||
GTypeInterface parent;
|
||||
};
|
||||
|
||||
gboolean mxf_metadata_base_parse (MXFMetadataBase *self, MXFPrimerPack *primer, const guint8 *data, guint size);
|
||||
gboolean mxf_metadata_base_resolve (MXFMetadataBase *self, MXFMetadataBase **metadata);
|
||||
|
||||
|
@ -726,4 +756,7 @@ MXFMetadataTrackType mxf_metadata_track_identifier_parse (const MXFUL * track_id
|
|||
void mxf_metadata_generic_picture_essence_descriptor_set_caps (MXFMetadataGenericPictureEssenceDescriptor * self, GstCaps * caps);
|
||||
void mxf_metadata_generic_sound_essence_descriptor_set_caps (MXFMetadataGenericSoundEssenceDescriptor * self, GstCaps * caps);
|
||||
|
||||
void mxf_descriptive_metadata_register (guint8 scheme, GSList *sets);
|
||||
MXFDescriptiveMetadata * mxf_descriptive_metadata_new (guint8 scheme, guint32 type, MXFPrimerPack * primer, const guint8 * data, guint size);
|
||||
|
||||
#endif /* __MXF_METADATA_H__ */
|
||||
|
|
|
@ -478,17 +478,17 @@ mxf_mpeg_create_caps (MXFMetadataTimelineTrack * track, GstTagList ** tags,
|
|||
if (!track->parent.descriptor[i])
|
||||
continue;
|
||||
|
||||
if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->parent.
|
||||
descriptor[i])) {
|
||||
if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->
|
||||
parent.descriptor[i])) {
|
||||
f = track->parent.descriptor[i];
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
break;
|
||||
} else if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent.
|
||||
descriptor[i])) {
|
||||
} else if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->
|
||||
parent.descriptor[i])) {
|
||||
f = track->parent.descriptor[i];
|
||||
s = (MXFMetadataGenericSoundEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
s = (MXFMetadataGenericSoundEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -222,19 +222,19 @@ mxf_up_create_caps (MXFMetadataTimelineTrack * track, GstTagList ** tags,
|
|||
if (!track->parent.descriptor[i])
|
||||
continue;
|
||||
|
||||
if (MXF_IS_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR (track->
|
||||
parent.descriptor[i])) {
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
r = (MXFMetadataRGBAPictureEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
break;
|
||||
} else if (MXF_IS_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR (track->parent.
|
||||
if (MXF_IS_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR (track->parent.
|
||||
descriptor[i])) {
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
c = (MXFMetadataCDCIPictureEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
r = (MXFMetadataRGBAPictureEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
break;
|
||||
} else if (MXF_IS_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR (track->
|
||||
parent.descriptor[i])) {
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
c = (MXFMetadataCDCIPictureEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -100,10 +100,10 @@ mxf_vc3_create_caps (MXFMetadataTimelineTrack * track, GstTagList ** tags,
|
|||
if (!track->parent.descriptor[i])
|
||||
continue;
|
||||
|
||||
if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->
|
||||
parent.descriptor[i])) {
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->parent.
|
||||
descriptor[i];
|
||||
if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->parent.
|
||||
descriptor[i])) {
|
||||
p = (MXFMetadataGenericPictureEssenceDescriptor *) track->
|
||||
parent.descriptor[i];
|
||||
f = track->parent.descriptor[i];
|
||||
break;
|
||||
} else if (MXF_IS_METADATA_FILE_DESCRIPTOR (track->parent.descriptor[i]) &&
|
||||
|
|
Loading…
Reference in a new issue