Commit graph

88 commits

Author SHA1 Message Date
Sebastian Dröge
dfa0e43848 Compensate for timestamp/duration rounding errors 2009-01-31 11:02:25 +01:00
Sebastian Dröge
a930b36adc Improve EOS logic to check all pads when pulling a packet returned EOS
This makes sure that we finish all pads that are at EOS now instead of
just finishing one and returning to this point over and over again.
2009-01-31 11:02:25 +01:00
Sebastian Dröge
2dbe706330 Only push buffers for pads that are not more than 500ms before other pads 2009-01-31 11:02:25 +01:00
Sebastian Dröge
91ed2ef166 Improve EOS logic to only go into EOS after all tracks are finished 2009-01-31 11:02:25 +01:00
Sebastian Dröge
b783f38813 Update TODO list 2009-01-31 11:02:25 +01:00
Sebastian Dröge
20c92a4db3 Try to keep the timestamp difference between tracks lower than 500ms 2009-01-31 11:02:25 +01:00
Sebastian Dröge
742fc4e80d Fix playback of atom files 2009-01-31 11:02:25 +01:00
Sebastian Dröge
f404262adf Keep track of current playback position 2009-01-31 11:02:25 +01:00
Sebastian Dröge
556e3c46e4 Set essence track positions to 0 if we're at the start partition 2009-01-31 11:02:24 +01:00
Sebastian Dröge
91b35975b5 Generate an index table for essence streams
Generate an index table for essence streams during playback
and make sure that only the correct essence elements are
used for played tracks.

Make it possible to have one essence stream used in multiple
playback tracks.

Fix some minor bugs.
2009-01-31 11:02:24 +01:00
Sebastian Dröge
dc42074fa9 Don't complain if the preface has no primary package set 2009-01-31 11:02:24 +01:00
Sebastian Dröge
afbec8ab9b Allow index table segments without primer pack
When parsing an index table segment without a valid
primer pack in this partition only parse the static
local tags and ignore all dynamic ones.

This allows us to use index table segments in some
broken files.
2009-01-31 11:02:24 +01:00
Sebastian Dröge
4162c36f17 Add essence track abstraction
Add an abstraction to represent essence tracks and
use this everywhere. This will later be used to keep
track of positions and to generate/handle seek tables.

Some random cleanup and renaming.
2009-01-31 11:02:24 +01:00
Sebastian Dröge
914b108db9 Fix parsing of index table segments
Allocate memory for the pos tables and slice offsets
of the index entries separately to a) fix alignment in
weird cases and b) to actually have something to free()
in the index table segment reset function.
2009-01-31 11:02:24 +01:00
Sebastian Dröge
264e30abb9 Improve detection of the end of the header metadata
Header metadata is finished after partition.header_byte_count
bytes after the first byte of the primer pack are handled.
After this there can only be index table segments, filler packets,
essence or the start of the next partition.

This fixes playback of some files that have non-standard metadata
packets in the header metadata.
2009-01-31 11:02:24 +01:00
Sebastian Dröge
7ce5b5a2d6 Store all partitions & primer packs in memory for faster access
Store all partitions & primer packs in memory for faster access.
This is later needed for fast seeking.

Pre-fill the list of partitions with the content of the random
index pack.

Don't parse metadata of an partition twice.
2009-01-23 10:09:01 +01:00
Sebastian Dröge
054167100d Fix UL for DTS and MPEG2 layer 1 2009-01-22 13:13:00 +01:00
Sebastian Dröge
6b5f04100a Add support for AAC audio 2009-01-22 13:13:00 +01:00
Sebastian Dröge
716ce72e46 Store MXF metadata in a hash table, keyed by UID
Store the MXF metadata in a hash table, keyed by the
instance UID. This simplifies resolval of the metadata
and makes looping over all metadata sets unnecessary
in most cases.

Additionally parse metadata always. If we already have
a metadata set with the same UID replace it only if
the new metadata set is from a later offset. This
fixes metadata parsing of files where following partitions
don't have a complete copy of the previous metadata.
2009-01-22 13:13:00 +01:00
Sebastian Dröge
52028f2e11 Build the random index pack while parsing
If the file contains no random index pack or just
an invalid one build the random index pack while
parsing.
2009-01-22 13:13:00 +01:00
Sebastian Dröge
fc4be0acca Update copyrights for 2009 2009-01-22 13:13:00 +01:00
Sebastian Dröge
100dfc34d6 Simplify parsing of UL/UUID arrays
Simplify parsing of UL/UUID arrays by abstracting it
into a separate function.
2009-01-22 13:13:00 +01:00
Sebastian Dröge
cd80f534f5 Implement parsing of DMS1 (SMPTE S380M) 2009-01-22 13:12:59 +01:00
Sebastian Dröge
7dad262671 gst/mxf/: "Generation UID" and "This Generation UID" are different so handle them different. Also both are not part o...
Original commit message from CVS:
* gst/mxf/Makefile.am:
* gst/mxf/mxfdemux.c:
* gst/mxf/mxfmetadata.c: (mxf_metadata_handle_tag),
(mxf_metadata_preface_handle_tag),
(mxf_metadata_identification_handle_tag),
(mxf_metadata_content_storage_handle_tag),
(mxf_metadata_essence_container_data_handle_tag),
(mxf_metadata_generic_package_handle_tag),
(mxf_metadata_track_handle_tag),
(mxf_metadata_sequence_handle_tag),
(mxf_metadata_structural_component_handle_tag),
(mxf_metadata_generic_descriptor_handle_tag),
(mxf_metadata_locator_handle_tag),
(mxf_metadata_locator_class_init):
* gst/mxf/mxfmetadata.h:
"Generation UID" and "This Generation UID" are different so handle
them different. Also both are not part of every metadata type.
2009-01-05 13:41:07 +00:00
Sebastian Dröge
caa8349067 gst/mxf/mxfdemux.c: Don't allow negative or zero edit rates to prevent division by zero and we support negative edit ...
Original commit message from CVS:
* gst/mxf/mxfdemux.c:
(gst_mxf_demux_handle_header_metadata_update_streams),
(gst_mxf_demux_pad_next_component):
Don't allow negative or zero edit rates to prevent division
by zero and we support negative edit rates anyway.
2009-01-05 10:34:03 +00:00
Sebastian Dröge
8fcdca999a gst/mxf/: Fix compilation with debugging disabled.
Original commit message from CVS:
* gst/mxf/mxfaes-bwf.c:
(mxf_metadata_wave_audio_essence_descriptor_handle_tag),
(mxf_bwf_create_caps):
* gst/mxf/mxfdemux.c: (gst_mxf_demux_handle_klv_packet):
* gst/mxf/mxfmetadata.c: (mxf_metadata_handle_tag),
(mxf_metadata_preface_handle_tag),
(mxf_metadata_identification_handle_tag),
(mxf_metadata_content_storage_handle_tag),
(mxf_metadata_essence_container_data_handle_tag),
(mxf_metadata_generic_package_handle_tag),
(mxf_metadata_source_package_handle_tag),
(mxf_metadata_track_handle_tag),
(mxf_metadata_sequence_handle_tag),
(mxf_metadata_structural_component_handle_tag),
(mxf_metadata_source_clip_handle_tag),
(mxf_metadata_dm_segment_handle_tag),
(mxf_metadata_generic_descriptor_handle_tag),
(mxf_metadata_file_descriptor_handle_tag),
(mxf_metadata_generic_picture_essence_descriptor_handle_tag),
(mxf_metadata_generic_sound_essence_descriptor_handle_tag),
(mxf_metadata_generic_data_essence_descriptor_handle_tag),
(mxf_metadata_multiple_descriptor_handle_tag):
* gst/mxf/mxfparse.c: (mxf_partition_pack_parse),
(mxf_index_table_segment_parse), (mxf_primer_pack_parse),
(mxf_local_tag_add_to_hash_table):
Fix compilation with debugging disabled.
2009-01-05 10:22:29 +00:00
Sebastian Dröge
71fc2ce3b4 Implement support for OP2a/b/c and OP3a/b/c, i.e. tracks with more than a single component. This currently only works...
Original commit message from CVS:
* gst/mxf/mxfaes-bwf.c: (mxf_bwf_handle_essence_element),
(mxf_aes3_handle_essence_element):
* gst/mxf/mxfalaw.c: (mxf_alaw_handle_essence_element):
* gst/mxf/mxfd10.c: (mxf_d10_picture_handle_essence_element),
(mxf_d10_sound_handle_essence_element):
* gst/mxf/mxfdemux.c: (gst_mxf_demux_pad_init),
(gst_mxf_demux_choose_package),
(gst_mxf_demux_handle_header_metadata_update_streams),
(gst_mxf_demux_pad_next_component),
(gst_mxf_demux_handle_generic_container_essence_element),
(gst_mxf_demux_parse_footer_metadata),
(gst_mxf_demux_handle_klv_packet), (gst_mxf_demux_src_query):
* gst/mxf/mxfdv-dif.c: (mxf_dv_dif_handle_essence_element):
* gst/mxf/mxfjpeg2000.c: (mxf_jpeg2000_handle_essence_element):
* gst/mxf/mxfmetadata.c: (mxf_metadata_sequence_init),
(mxf_metadata_structural_component_init),
(mxf_metadata_generic_picture_essence_descriptor_init):
* gst/mxf/mxfmpeg.c: (mxf_mpeg_video_handle_essence_element),
(mxf_mpeg_audio_handle_essence_element):
* gst/mxf/mxfparse.h:
* gst/mxf/mxfup.c: (mxf_up_handle_essence_element):
* gst/mxf/mxfvc3.c: (mxf_vc3_handle_essence_element):
* tests/check/elements/mxfdemux.c: (_sink_chain):
Implement support for OP2a/b/c and OP3a/b/c, i.e. tracks with
more than a single component. This currently only works for
the case where the components are stored in playback order
in the file.
Set some more default/distinguished values for the structural
metadata.
Make some types more strict by choosing the correct subclasses.
Set DISCONT flag on buffers after a component switch.
Take the last partition from the random index pack for the footer
partition of the header partition doesn't reference the footer
partition. This gives us the final structural metadata for
some more files in the beginning.
2008-12-31 08:53:02 +00:00
Sebastian Dröge
9488ef3764 gst/mxf/mxfmpeg.c: Add initial support for h.264 video (SMPTE RP2008).
Original commit message from CVS:
* gst/mxf/mxfmpeg.c: (mxf_mpeg_es_create_caps),
(mxf_mpeg_create_caps):
Add initial support for h.264 video (SMPTE RP2008).
2008-12-22 20:56:10 +00:00
Sebastian Dröge
2169215a12 gst/mxf/mxfmetadata.*: If resolving a metadata object failed the first time return
Original commit message from CVS:
* gst/mxf/mxfmetadata.c: (mxf_metadata_base_resolve):
* gst/mxf/mxfmetadata.h:
If resolving a metadata object failed the first time return
FALSE for a second mxf_metadata_base_resolve() call instead
of TRUE.
2008-12-22 20:37:24 +00:00
Sebastian Dröge
ed7bd1a9a3 gst/mxf/: Cleanup of the includes.
Original commit message from CVS:
* gst/mxf/mxf.c:
* gst/mxf/mxfaes-bwf.h:
* gst/mxf/mxfd10.c:
* gst/mxf/mxfdms1.c:
* gst/mxf/mxfdms1.h:
* gst/mxf/mxfmpeg.h:
* gst/mxf/mxftypes.h:
Cleanup of the includes.
2008-12-22 10:14:35 +00:00
Sebastian Dröge
083d8c7018 gst/mxf/: Add mxf_metadata_generic_sound_essence_descriptor_set_caps() to set rate and channels and use this for all ...
Original commit message from CVS:
* gst/mxf/mxfaes-bwf.c: (mxf_bwf_create_caps),
(mxf_aes3_create_caps):
* gst/mxf/mxfalaw.c: (mxf_alaw_create_caps):
* gst/mxf/mxfd10.c: (mxf_d10_create_caps):
* gst/mxf/mxfdemux.c:
* gst/mxf/mxfmetadata.c: (mxf_metadata_source_package_resolve),
(mxf_metadata_generic_picture_essence_descriptor_set_caps),
(mxf_metadata_generic_sound_essence_descriptor_set_caps):
* gst/mxf/mxfmetadata.h:
* gst/mxf/mxfmpeg.c: (mxf_mpeg_es_create_caps):
Add mxf_metadata_generic_sound_essence_descriptor_set_caps() to
set rate and channels and use this for all sound essence.
Give some debug output when setting picture essence caps with
invalid descriptor values.
Fix height calculation from the frame layout a bit more and
add a TODO to check if it's really correct now or if it needs
more fixing (especially, does the framerate need adjustments?).
2008-12-19 10:06:24 +00:00
Sebastian Dröge
ecc0e9221f gst/mxf/: Add support for VC-3 (aka DNxHD essence, see SMPTE 2019-4).
Original commit message from CVS:
* gst/mxf/Makefile.am:
* gst/mxf/mxf.c: (plugin_init):
* gst/mxf/mxfvc3.c: (mxf_is_vc3_essence_track),
(mxf_vc3_handle_essence_element), (mxf_vc3_create_caps),
(mxf_vc3_init):
* gst/mxf/mxfvc3.h:
Add support for VC-3 (aka DNxHD essence, see SMPTE 2019-4).
This is untested because of lack of sample files but should
work fine.
2008-12-18 17:49:08 +00:00
Sebastian Dröge
b050e06170 gst/mxf/mxfdemux.c: In push mode skip the run in again if we get buffers with an offset before the run in. This can h...
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_chain):
In push mode skip the run in again if we get buffers with
an offset before the run in. This can happen on seeks for example.
2008-12-17 12:06:43 +00:00
Sebastian Dröge
5587f91210 gst/mxf/: Implement an essence element handling registry and use this instead of an hardcoded, large if-then-else block.
Original commit message from CVS:
* gst/mxf/mxfaes-bwf.c: (mxf_is_aes_bwf_essence_track),
(mxf_bwf_handle_essence_element),
(mxf_aes3_handle_essence_element), (mxf_bwf_create_caps),
(mxf_aes3_create_caps), (mxf_aes_bwf_create_caps),
(mxf_aes_bwf_init):
* gst/mxf/mxfaes-bwf.h:
* gst/mxf/mxfalaw.c: (mxf_is_alaw_essence_track),
(mxf_alaw_handle_essence_element), (mxf_alaw_create_caps),
(mxf_alaw_init):
* gst/mxf/mxfalaw.h:
* gst/mxf/mxfd10.c: (mxf_is_d10_essence_track),
(mxf_d10_picture_handle_essence_element),
(mxf_d10_sound_handle_essence_element), (mxf_d10_create_caps),
(mxf_d10_init):
* gst/mxf/mxfd10.h:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_reset_metadata),
(gst_mxf_demux_handle_header_metadata_update_streams),
(gst_mxf_demux_handle_generic_container_essence_element):
* gst/mxf/mxfdv-dif.c: (mxf_is_dv_dif_essence_track),
(mxf_dv_dif_handle_essence_element), (mxf_dv_dif_create_caps),
(mxf_dv_dif_init):
* gst/mxf/mxfdv-dif.h:
* gst/mxf/mxfjpeg2000.c: (mxf_is_jpeg2000_essence_track),
(mxf_jpeg2000_handle_essence_element), (mxf_jpeg2000_create_caps),
(mxf_jpeg2000_init):
* gst/mxf/mxfjpeg2000.h:
* gst/mxf/mxfmpeg.c: (mxf_is_mpeg_essence_track),
(mxf_mpeg_video_handle_essence_element),
(mxf_mpeg_audio_handle_essence_element), (mxf_mpeg_es_create_caps),
(mxf_mpeg_create_caps), (mxf_mpeg_init):
* gst/mxf/mxfmpeg.h:
* gst/mxf/mxfparse.c: (mxf_essence_element_handler_register),
(mxf_essence_element_handler_find):
* gst/mxf/mxfparse.h:
* gst/mxf/mxfup.c: (mxf_is_up_essence_track),
(mxf_up_handle_essence_element), (mxf_up_rgba_create_caps),
(mxf_up_create_caps), (mxf_up_init):
* gst/mxf/mxfup.h:
Implement an essence element handling registry and use this instead
of an hardcoded, large if-then-else block.
2008-12-16 12:30:34 +00:00
Sebastian Dröge
1eeb0a3a10 Add initial documentation for the MXF plugin and mxfdemux.
Original commit message from CVS:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
* docs/plugins/gst-plugins-bad-plugins-sections.txt:
* docs/plugins/gst-plugins-bad-plugins.args:
* docs/plugins/gst-plugins-bad-plugins.hierarchy:
* docs/plugins/gst-plugins-bad-plugins.interfaces:
* docs/plugins/gst-plugins-bad-plugins.prerequisites:
* docs/plugins/inspect/plugin-ladspa.xml:
* docs/plugins/inspect/plugin-musepack.xml:
* docs/plugins/inspect/plugin-mxf.xml:
* gst/mxf/mxfdemux.c:
* gst/mxf/mxfdemux.h:
Add initial documentation for the MXF plugin and mxfdemux.
2008-12-16 08:35:05 +00:00
Sebastian Dröge
10b91ac098 gst/mxf/: Rename MXFMetadataBase methods to reflect that they belong to
Original commit message from CVS:
* gst/mxf/mxfdemux.c:
(gst_mxf_demux_handle_header_metadata_resolve_references):
* gst/mxf/mxfmetadata.c: (mxf_metadata_base_resolve_default),
(mxf_metadata_base_class_init), (mxf_metadata_base_parse),
(mxf_metadata_base_resolve), (mxf_metadata_new),
(mxf_metadata_preface_resolve),
(mxf_metadata_content_storage_resolve),
(mxf_metadata_essence_container_data_resolve),
(mxf_metadata_generic_package_resolve),
(mxf_metadata_source_package_resolve),
(mxf_metadata_track_resolve), (mxf_metadata_sequence_resolve),
(mxf_metadata_dm_segment_resolve),
(mxf_metadata_generic_descriptor_resolve),
(mxf_metadata_multiple_descriptor_resolve):
* gst/mxf/mxfmetadata.h:
Rename MXFMetadataBase methods to reflect that they belong to
MXFMetadataBase and not MXFMetadata.
2008-12-16 08:21:29 +00:00
Sebastian Dröge
425fdc1664 gst/mxf/: Return FALSE when parsing a metadata tag failed.
Original commit message from CVS:
* gst/mxf/mxfaes-bwf.c:
(mxf_metadata_wave_audio_essence_descriptor_handle_tag),
(mxf_metadata_aes3_audio_essence_descriptor_handle_tag):
* gst/mxf/mxfmetadata.c:
(mxf_metadata_multiple_descriptor_handle_tag):
Return FALSE when parsing a metadata tag failed.
Remove some useless return value assignments.
2008-12-15 18:12:26 +00:00
Sebastian Dröge
bc93b81dd5 gst/mxf/: Convert the structural metadata to GstMiniObjects to make a lot of code easier and to make everything bette...
Original commit message from CVS:
* gst/mxf/Makefile.am:
* gst/mxf/mxf.c: (plugin_init):
* gst/mxf/mxfaes-bwf.c:
(mxf_metadata_wave_audio_essence_descriptor_handle_tag),
(mxf_metadata_wave_audio_essence_descriptor_init),
(mxf_metadata_wave_audio_essence_descriptor_class_init),
(mxf_metadata_aes3_audio_essence_descriptor_finalize),
(mxf_metadata_aes3_audio_essence_descriptor_handle_tag),
(mxf_metadata_aes3_audio_essence_descriptor_init),
(mxf_metadata_aes3_audio_essence_descriptor_class_init),
(mxf_is_aes_bwf_essence_track), (mxf_bwf_create_caps),
(mxf_aes3_create_caps), (mxf_aes_bwf_create_caps),
(mxf_aes_bwf_init):
* gst/mxf/mxfaes-bwf.h:
* gst/mxf/mxfalaw.c: (mxf_is_alaw_essence_track),
(mxf_alaw_create_caps), (mxf_alaw_init):
* gst/mxf/mxfalaw.h:
* gst/mxf/mxfd10.c: (mxf_is_d10_essence_track),
(mxf_d10_create_caps), (mxf_d10_init):
* gst/mxf/mxfd10.h:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_reset_metadata),
(gst_mxf_demux_handle_header_metadata_resolve_references),
(gst_mxf_demux_find_package), (gst_mxf_demux_choose_package),
(gst_mxf_demux_handle_header_metadata_update_streams),
(gst_mxf_demux_handle_metadata),
(gst_mxf_demux_handle_generic_container_essence_element),
(gst_mxf_demux_handle_klv_packet), (gst_mxf_demux_src_query):
* gst/mxf/mxfdemux.h:
* gst/mxf/mxfdv-dif.c: (mxf_is_dv_dif_essence_track),
(mxf_dv_dif_create_caps), (mxf_dv_dif_init):
* gst/mxf/mxfdv-dif.h:
* gst/mxf/mxfjpeg2000.c: (mxf_is_jpeg2000_essence_track),
(mxf_jpeg2000_create_caps), (mxf_jpeg2000_init):
* gst/mxf/mxfjpeg2000.h:
* gst/mxf/mxfmetadata.c: (mxf_metadata_base_finalize),
(mxf_metadata_base_handle_tag), (mxf_metadata_base_resolve),
(mxf_metadata_base_init), (mxf_metadata_base_class_init),
(mxf_metadata_parse), (mxf_metadata_resolve),
(mxf_metadata_handle_tag), (mxf_metadata_class_init),
(mxf_metadata_init), (mxf_metadata_init_types),
(mxf_metadata_register), (mxf_metadata_new),
(mxf_metadata_preface_finalize), (mxf_metadata_preface_handle_tag),
(mxf_metadata_preface_resolve), (mxf_metadata_preface_init),
(mxf_metadata_preface_class_init),
(mxf_metadata_identification_finalize),
(mxf_metadata_identification_handle_tag),
(mxf_metadata_identification_init),
(mxf_metadata_identification_class_init),
(mxf_metadata_content_storage_finalize),
(mxf_metadata_content_storage_handle_tag),
(mxf_metadata_content_storage_resolve),
(mxf_metadata_content_storage_init),
(mxf_metadata_content_storage_class_init),
(mxf_metadata_essence_container_data_handle_tag),
(mxf_metadata_essence_container_data_resolve),
(mxf_metadata_essence_container_data_init),
(mxf_metadata_essence_container_data_class_init),
(mxf_metadata_generic_package_finalize),
(mxf_metadata_generic_package_handle_tag),
(mxf_metadata_generic_package_resolve),
(mxf_metadata_generic_package_init),
(mxf_metadata_generic_package_class_init),
(mxf_metadata_material_package_resolve),
(mxf_metadata_material_package_init),
(mxf_metadata_material_package_class_init),
(mxf_metadata_source_package_finalize),
(mxf_metadata_source_package_handle_tag),
(mxf_metadata_source_package_resolve),
(mxf_metadata_source_package_init),
(mxf_metadata_source_package_class_init),
(mxf_metadata_track_finalize), (mxf_metadata_track_handle_tag),
(mxf_metadata_track_resolve), (mxf_metadata_track_init),
(mxf_metadata_track_class_init),
(mxf_metadata_track_identifier_parse),
(mxf_metadata_timeline_track_handle_tag),
(mxf_metadata_timeline_track_init),
(mxf_metadata_timeline_track_class_init),
(mxf_metadata_event_track_handle_tag),
(mxf_metadata_event_track_init),
(mxf_metadata_event_track_class_init),
(mxf_metadata_static_track_init),
(mxf_metadata_static_track_class_init),
(mxf_metadata_sequence_finalize),
(mxf_metadata_sequence_handle_tag),
(mxf_metadata_sequence_resolve), (mxf_metadata_sequence_init),
(mxf_metadata_sequence_class_init),
(mxf_metadata_structural_component_handle_tag),
(mxf_metadata_structural_component_init),
(mxf_metadata_structural_component_class_init),
(mxf_metadata_timecode_component_handle_tag),
(mxf_metadata_timecode_component_init),
(mxf_metadata_timecode_component_class_init),
(mxf_metadata_source_clip_handle_tag),
(mxf_metadata_source_clip_resolve),
(mxf_metadata_source_clip_init),
(mxf_metadata_source_clip_class_init),
(mxf_metadata_dm_source_clip_finalize),
(mxf_metadata_dm_source_clip_handle_tag),
(mxf_metadata_dm_source_clip_init),
(mxf_metadata_dm_source_clip_class_init),
(mxf_metadata_dm_segment_finalize),
(mxf_metadata_dm_segment_handle_tag),
(mxf_metadata_dm_segment_resolve), (mxf_metadata_dm_segment_init),
(mxf_metadata_dm_segment_class_init),
(mxf_metadata_generic_descriptor_finalize),
(mxf_metadata_generic_descriptor_handle_tag),
(mxf_metadata_generic_descriptor_resolve),
(mxf_metadata_generic_descriptor_init),
(mxf_metadata_generic_descriptor_class_init),
(mxf_metadata_file_descriptor_handle_tag),
(mxf_metadata_file_descriptor_init),
(mxf_metadata_file_descriptor_class_init),
(mxf_metadata_generic_picture_essence_descriptor_handle_tag),
(mxf_metadata_generic_picture_essence_descriptor_init),
(mxf_metadata_generic_picture_essence_descriptor_class_init),
(mxf_metadata_generic_picture_essence_descriptor_set_caps),
(mxf_metadata_generic_sound_essence_descriptor_handle_tag),
(mxf_metadata_generic_sound_essence_descriptor_init),
(mxf_metadata_generic_sound_essence_descriptor_class_init),
(mxf_metadata_cdci_picture_essence_descriptor_handle_tag),
(mxf_metadata_cdci_picture_essence_descriptor_init),
(mxf_metadata_cdci_picture_essence_descriptor_class_init),
(mxf_metadata_rgba_picture_essence_descriptor_finalize),
(mxf_metadata_rgba_picture_essence_descriptor_handle_tag),
(mxf_metadata_rgba_picture_essence_descriptor_init),
(mxf_metadata_rgba_picture_essence_descriptor_class_init),
(mxf_metadata_generic_data_essence_descriptor_handle_tag),
(mxf_metadata_generic_data_essence_descriptor_init),
(mxf_metadata_generic_data_essence_descriptor_class_init),
(mxf_metadata_multiple_descriptor_finalize),
(mxf_metadata_multiple_descriptor_handle_tag),
(mxf_metadata_multiple_descriptor_resolve),
(mxf_metadata_multiple_descriptor_init),
(mxf_metadata_multiple_descriptor_class_init),
(mxf_metadata_locator_init), (mxf_metadata_locator_class_init),
(mxf_metadata_text_locator_finalize),
(mxf_metadata_text_locator_handle_tag),
(mxf_metadata_text_locator_init),
(mxf_metadata_text_locator_class_init),
(mxf_metadata_network_locator_finalize),
(mxf_metadata_network_locator_handle_tag),
(mxf_metadata_network_locator_init),
(mxf_metadata_network_locator_class_init):
* gst/mxf/mxfmetadata.h:
* gst/mxf/mxfmpeg.c:
(mxf_metadata_mpeg_video_descriptor_handle_tag),
(mxf_metadata_mpeg_video_descriptor_init),
(mxf_metadata_mpeg_video_descriptor_class_init),
(mxf_is_mpeg_essence_track), (mxf_mpeg_es_create_caps),
(mxf_mpeg_create_caps), (mxf_mpeg_init):
* gst/mxf/mxfmpeg.h:
* gst/mxf/mxfparse.c: (mxf_index_table_segment_parse),
(mxf_local_tag_add_to_hash_table):
* gst/mxf/mxfparse.h:
* gst/mxf/mxftypes.h:
* gst/mxf/mxfup.c: (mxf_is_up_essence_track), (mxf_up_create_caps),
(mxf_up_init):
* gst/mxf/mxfup.h:
Convert the structural metadata to GstMiniObjects to make a lot of
code easier and to make everything better extensible.
Add a "registry" for metadata handlers to improve extensibility even
more and to remove metadata type specifics from mxfdemux.
Clean up a lot of parts and add some more NULL checks.
2008-12-15 17:27:00 +00:00
Sebastian Dröge
a8ffb0e71d gst/mxf/mxfdemux.c: Add a generic handler for descriptive metadata so we can get some debug output and let users file...
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_handle_descriptive_metadata),
(gst_mxf_demux_handle_klv_packet):
Add a generic handler for descriptive metadata so we can get some
debug output and let users file bugs for unsupport descriptive
metadata schemes.
2008-12-13 08:06:33 +00:00
Sebastian Dröge
c94b1bd2de gst/mxf/: Major update of the TODO lists. There's still much to do.
Original commit message from CVS:
* gst/mxf/mxfaes-bwf.c:
* gst/mxf/mxfalaw.c: (mxf_alaw_create_caps):
* gst/mxf/mxfdemux.c:
* gst/mxf/mxfdv-dif.c: (mxf_dv_dif_create_caps):
* gst/mxf/mxfjpeg2000.c:
* gst/mxf/mxfmpeg.c:
* gst/mxf/mxfup.c:
Major update of the TODO lists. There's still much to do.
2008-12-12 10:29:31 +00:00
Sebastian Dröge
1fe82925f5 gst/mxf/: Implement parsing of Event Tracks, Static Tracks, DM Segments and DM Source Clips as a preparation for desc...
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_handle_metadata_track),
(gst_mxf_demux_handle_header_metadata_resolve_references),
(gst_mxf_demux_handle_metadata):
* gst/mxf/mxfparse.c: (mxf_metadata_track_parse),
(mxf_metadata_structural_component_parse),
(mxf_metadata_structural_component_reset):
* gst/mxf/mxfparse.h:
* gst/mxf/mxftypes.h:
Implement parsing of Event Tracks, Static Tracks, DM Segments
and DM Source Clips as a preparation for descriptive metadata
support. Next step is to implement SMPTE S380M, "Descriptive
Metadata Scheme-1".
2008-12-11 14:35:08 +00:00
Sebastian Dröge
db08161b6d gst/mxf/mxfjpeg2000.c: Implement detection of the colorspace used by the
Original commit message from CVS:
* gst/mxf/mxfjpeg2000.c: (mxf_jpeg2000_create_caps):
Implement detection of the colorspace used by the
JPEG2000 codestream. XYZ colorspace isn't supported by
our decoders yet unfortunately.
2008-12-09 13:44:45 +00:00
Sebastian Dröge
d23484c483 gst/mxf/mxfparse.c: All frame layout values except 0 are for interlaced video, not only 1 and 2.
Original commit message from CVS:
* gst/mxf/mxfparse.c:
(mxf_metadata_generic_picture_essence_descriptor_set_caps):
All frame layout values except 0 are for interlaced video,
not only 1 and 2.
2008-12-08 15:46:13 +00:00
Sebastian Dröge
204cd06fbe gst/mxf/: Remove the concept of "final" metadata, broken files have updated metadata in following partitions even if ...
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_reset_metadata),
(gst_mxf_demux_handle_primer_pack),
(gst_mxf_demux_handle_metadata_preface),
(gst_mxf_demux_handle_header_metadata_resolve_references),
(gst_mxf_demux_choose_package),
(gst_mxf_demux_handle_header_metadata_update_streams),
(gst_mxf_demux_parse_footer_metadata),
(gst_mxf_demux_handle_klv_packet):
* gst/mxf/mxfdemux.h:
* gst/mxf/mxftypes.h:
Remove the concept of "final" metadata, broken files have updated
metadata in following partitions even if the current partition
is closed and complete.
If there's a second primer pack inside a partition ignore the second
one instead of throwing an error.
Store the type of a track (audio, video, timestamp, ...) inside the
track struct.
Post no-more-pads only once for a stream and not a second time
when switching the currently playing package.
When updating all streams make sure that we could select and find
a package instead of dereferencing NULL.
Allow descriptive metadata inside metadata parts of a file when
pulling the footer metadata too.
Only switch the currently playing package if a new one was chosen
and the metadata is in a resolved state. If the latter isn't true
postpone the switch until the metadata is resolved.
Pull the footer metadata directly after parsing the header partition
pack if it's not closed or not complete instead of waiting until
the next KLV packet.
2008-12-08 15:28:58 +00:00
Sebastian Dröge
d7a23866d2 gst/mxf/mxfup.c: Don't create a subbuffer, instead just change the buffer metadata of the input buffer.
Original commit message from CVS:
* gst/mxf/mxfup.c: (mxf_up_handle_essence_element):
Don't create a subbuffer, instead just change the buffer metadata
of the input buffer.
2008-12-08 13:48:46 +00:00
Sebastian Dröge
332e5ec000 gst/mxf/mxfdemux.c: Rename GstMXFPad to GstMXFDemuxPad to prevent name clashes with the GstMXFMuxPad in the muxer (la...
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_pad_finalize),
(gst_mxf_demux_pad_class_init), (gst_mxf_demux_pad_init),
(gst_mxf_demux_remove_pad), (gst_mxf_demux_reset_metadata),
(gst_mxf_demux_combine_flows),
(gst_mxf_demux_handle_header_metadata_resolve_references),
(gst_mxf_demux_handle_header_metadata_update_streams),
(gst_mxf_demux_handle_generic_container_essence_element),
(gst_mxf_demux_pull_random_index_pack), (gst_mxf_demux_loop),
(gst_mxf_demux_src_query):
Rename GstMXFPad to GstMXFDemuxPad to prevent name clashes
with the GstMXFMuxPad in the muxer (later).
Pull the random index pack only directly after skipping the run
in and don't allocate an array for it if parsing it failed.
2008-12-07 20:12:33 +00:00
Sebastian Dröge
3580384530 gst/mxf/mxfd10.c: Use the mapping data for storing the channel count and the width instead of parsing caps for every ...
Original commit message from CVS:
* gst/mxf/mxfd10.c: (mxf_d10_sound_handle_essence_element),
(mxf_d10_create_caps):
Use the mapping data for storing the channel count and the
width instead of parsing caps for every buffer.
2008-12-07 18:52:54 +00:00
Sebastian Dröge
f6e81c84e9 gst/mxf/mxfup.c: Handle the image start and end offsets, otherwise we output too large image buffers.
Original commit message from CVS:
* gst/mxf/mxfup.c: (mxf_up_handle_essence_element),
(mxf_up_rgba_create_caps):
Handle the image start and end offsets, otherwise we output
too large image buffers.
2008-12-07 18:39:41 +00:00
Sebastian Dröge
8932df4eef gst/mxf/mxfmpeg.c: Set codec name tags for the MPEG audio essence.
Original commit message from CVS:
* gst/mxf/mxfmpeg.c: (mxf_mpeg_es_create_caps):
Set codec name tags for the MPEG audio essence.
2008-12-07 17:57:13 +00:00
Sebastian Dröge
abcc855497 gst/mxf/: Add initial support for uncompressed video essence (SMPTE S384M).
Original commit message from CVS:
* gst/mxf/Makefile.am:
* gst/mxf/mxfdemux.c:
(gst_mxf_demux_handle_header_metadata_update_streams):
* gst/mxf/mxftypes.h:
* gst/mxf/mxfup.c: (mxf_is_up_essence_track),
(mxf_up_handle_essence_element), (mxf_up_rgba_create_caps),
(mxf_up_create_caps):
* gst/mxf/mxfup.h:
Add initial support for uncompressed video essence (SMPTE S384M).
* gst/mxf/mxfparse.c:
(mxf_metadata_rgba_picture_essence_descriptor_handle_tag),
(mxf_metadata_rgba_picture_essence_descriptor_reset):
Fix parsing of the RGBA descriptor and add support for parsing
the pixel layout.
2008-12-07 17:16:29 +00:00