Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_reset),
(gst_mxf_demux_handle_random_index_pack),
(gst_mxf_demux_pull_random_index_pack), (gst_mxf_demux_loop):
* gst/mxf/mxfdemux.h:
* gst/mxf/mxfparse.c: (mxf_random_index_pack_parse):
* gst/mxf/mxfparse.h:
* gst/mxf/mxftypes.h:
Implement parsing of the random index pack, which provides a seek
table (including body sid) to the start of partition packs.
Later this will be used for reading all index table segments of
the complete file efficiently.
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_reset),
(gst_mxf_demux_handle_klv_packet):
* gst/mxf/mxfdemux.h:
Only try to pull the footer metadata once and not on every KLV packet
if it failed before.
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_pad_init),
(gst_mxf_demux_reset_metadata), (gst_mxf_demux_combine_flows),
(gst_mxf_demux_handle_generic_container_essence_element):
Properly combine flow returns of the source pads.
Improve debugging and reset pad fields together with the
metadata to prevent invalid memory references.
* gst/mxf/mxfparse.c: (mxf_metadata_preface_parse):
Fix typo.
Original commit message from CVS:
* gst/mxf/mxfaes-bwf.c:
(mxf_metadata_wave_audio_essence_descriptor_reset):
* gst/mxf/mxfmpeg.c: (mxf_metadata_mpeg_video_descriptor_reset):
* gst/mxf/mxfparse.c: (mxf_metadata_file_descriptor_handle_tag),
(mxf_metadata_file_descriptor_reset),
(mxf_metadata_generic_sound_essence_descriptor_reset),
(mxf_metadata_generic_picture_essence_descriptor_reset),
(mxf_metadata_cdci_picture_essence_descriptor_reset),
(mxf_metadata_rgba_picture_essence_descriptor_reset),
(mxf_metadata_multiple_descriptor_reset):
* gst/mxf/mxfparse.h:
When memset'ing the descriptors to zeroes only touch the part
of this descriptor, not it's parent type.
Set correct default values for all metadata fields.
Original commit message from CVS:
* gst/mxf/mxfmpeg.c: (mxf_mpeg_video_create_caps):
* gst/mxf/mxfparse.c:
(mxf_metadata_generic_picture_essence_descriptor_set_caps):
* gst/mxf/mxfparse.h:
Set video dimensions and pixel aspect ratio on the caps.
Original commit message from CVS:
* gst/mxf/mxfaes-bwf.c:
(mxf_metadata_wave_audio_essence_descriptor_handle_tag):
* gst/mxf/mxfaes-bwf.h:
* gst/mxf/mxfdemux.c:
(gst_mxf_demux_handle_metadata_generic_descriptor),
(gst_mxf_demux_handle_metadata_file_descriptor),
(gst_mxf_demux_handle_metadata_multiple_descriptor),
(gst_mxf_demux_handle_metadata_generic_picture_essence_descriptor),
(gst_mxf_demux_handle_metadata_cdci_picture_essence_descriptor),
(gst_mxf_demux_handle_metadata_mpeg_video_descriptor),
(gst_mxf_demux_handle_metadata_generic_sound_essence_descriptor),
(gst_mxf_demux_handle_metadata_wave_audio_essence_descriptor),
(gst_mxf_demux_handle_header_metadata_resolve_references),
(gst_mxf_demux_handle_metadata):
* gst/mxf/mxfmpeg.c:
(mxf_metadata_mpeg_video_descriptor_handle_tag):
* gst/mxf/mxfmpeg.h:
* gst/mxf/mxfparse.c: (mxf_partition_pack_parse),
(mxf_primer_pack_parse), (mxf_metadata_preface_parse),
(mxf_metadata_identification_parse),
(mxf_metadata_content_storage_parse),
(mxf_metadata_essence_container_data_parse),
(mxf_metadata_generic_package_parse), (mxf_metadata_track_parse),
(mxf_metadata_sequence_parse),
(mxf_metadata_structural_component_parse),
(mxf_metadata_descriptor_parse),
(mxf_metadata_generic_descriptor_handle_tag),
(mxf_metadata_generic_descriptor_reset),
(mxf_metadata_file_descriptor_handle_tag),
(mxf_metadata_generic_sound_essence_descriptor_handle_tag),
(mxf_metadata_generic_picture_essence_descriptor_handle_tag),
(mxf_metadata_cdci_picture_essence_descriptor_handle_tag),
(mxf_metadata_multiple_descriptor_handle_tag),
(mxf_metadata_locator_parse):
* gst/mxf/mxfparse.h:
Rewrite parsing of descriptors to go top-down instead of bottom-up
which makes it possible to have the buffer data non-writable.
Improve debugging a bit.
Original commit message from CVS:
* gst/mxf/mxfdemux.c:
(gst_mxf_demux_handle_generic_container_essence_element):
Make sure to only output generic container essence elements
for a track if the body SID of the surrounding partition is
the same as the body SID of the track's source package.
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_pull_klv_packet),
(gst_mxf_demux_handle_klv_packet), (gst_mxf_demux_chain):
* gst/mxf/mxfparse.c: (mxf_product_version_parse),
(mxf_metadata_identification_parse),
(mxf_metadata_content_storage_parse):
Allow non-MXF KLV packets and just drop them instead of throwing
an error and handle 9 byte product versions as written by Avid.
This doesn't add support for the non-standard Avid MXF files
but at least makes it possible to parse their header metadata.
Fix a copy&paste error in debug output.
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_pull_klv_packet),
(gst_mxf_demux_chain):
Actually we support a length stored inside 8 bytes but it must
be smaller than G_MAXUINT for GstBuffer.
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_push_src_event),
(gst_mxf_demux_handle_header_metadata_update_streams):
* gst/mxf/mxfparse.c: (gst_mxf_ul_hash),
(mxf_partition_pack_parse), (mxf_primer_pack_parse),
(mxf_metadata_preface_parse), (mxf_metadata_content_storage_parse),
(mxf_metadata_generic_package_parse),
(mxf_metadata_sequence_parse),
(mxf_metadata_generic_descriptor_parse),
(mxf_metadata_multiple_descriptor_parse):
Some more format string fixes and usage of guint instead of gint
where negative values don't make sense.
Original commit message from CVS:
* gst/mxf/mxfaes-bwf.c:
(mxf_metadata_wave_audio_essence_descriptor_parse):
* gst/mxf/mxfaes-bwf.h:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_pull_range),
(gst_mxf_demux_pull_klv_packet),
(gst_mxf_demux_parse_footer_metadata),
(gst_mxf_demux_handle_klv_packet),
(gst_mxf_demux_pull_and_handle_klv_packet), (gst_mxf_demux_chain):
* gst/mxf/mxfmpeg.c: (mxf_metadata_mpeg_video_descriptor_parse):
* gst/mxf/mxfmpeg.h:
* gst/mxf/mxfparse.c: (mxf_timestamp_parse), (mxf_fraction_parse),
(mxf_utf16_to_utf8), (mxf_product_version_parse),
(mxf_partition_pack_parse), (mxf_primer_pack_parse),
(mxf_local_tag_parse), (mxf_metadata_preface_parse),
(mxf_metadata_identification_parse),
(mxf_metadata_content_storage_parse),
(mxf_metadata_essence_container_data_parse),
(mxf_metadata_generic_package_parse), (mxf_metadata_track_parse),
(mxf_metadata_sequence_parse),
(mxf_metadata_structural_component_parse),
(mxf_metadata_generic_descriptor_parse),
(mxf_metadata_file_descriptor_parse),
(mxf_metadata_generic_sound_essence_descriptor_parse),
(mxf_metadata_generic_picture_essence_descriptor_parse),
(mxf_metadata_cdci_picture_essence_descriptor_parse),
(mxf_metadata_multiple_descriptor_parse),
(mxf_metadata_locator_parse):
* gst/mxf/mxfparse.h:
Use guint instead of guint64 or gsize for all buffer sizes and
use correct format strings for them. Only local tag set sizes
are still guint16 as they can't be larger.
Only allow KLV packets of sizes below 1<<32 as GStreamer only uses
guint for buffer sizes. The MXF standard allows packet sizes up
to 1<<64.