summaryrefslogtreecommitdiffstats
path: root/gst/mxf/mxfparse.c
AgeCommit message (Collapse)AuthorFilesLines
2008-11-29gst/mxf/: Add initial support for JPEG2000 encoded video essence.Sebastian Dröge1-0/+4
Original commit message from CVS: * gst/mxf/Makefile.am: * gst/mxf/mxfdemux.c: (gst_mxf_demux_handle_header_metadata_update_streams): * gst/mxf/mxfjpeg2000.c: (mxf_is_jpeg2000_video_essence_track), (mxf_jpeg2000_handle_essence_element), (mxf_jpeg2000_create_caps): * gst/mxf/mxfjpeg2000.h: Add initial support for JPEG2000 encoded video essence. * gst/mxf/mxfparse.c: (mxf_metadata_generic_picture_essence_descriptor_set_caps): Set the framerate in the video caps.
2008-11-28gst/mxf/: Implement parsing of index table segments, which will later be ↵Sebastian Dröge1-0/+240
used for seeking. Original commit message from CVS: * gst/mxf/mxfdemux.c: (gst_mxf_demux_reset), (gst_mxf_demux_handle_index_table_segment): * gst/mxf/mxfdemux.h: * gst/mxf/mxfparse.c: (mxf_index_table_segment_parse), (mxf_index_table_segment_reset): * gst/mxf/mxfparse.h: * gst/mxf/mxftypes.h: Implement parsing of index table segments, which will later be used for seeking.
2008-11-27gst/mxf/: Implement parsing of the random index pack, which provides a seek ↵Sebastian Dröge1-0/+40
table (including body sid) to the start o... 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.
2008-11-27gst/mxf/: Add fundamental support for DV-DIF essence streams.Sebastian Dröge1-0/+12
Original commit message from CVS: * gst/mxf/Makefile.am: * gst/mxf/mxfdemux.c: (gst_mxf_demux_handle_header_metadata_update_streams), (gst_mxf_demux_handle_klv_packet): * gst/mxf/mxfdv-dif.c: (mxf_is_dv_dif_essence_track), (mxf_dv_dif_handle_essence_element), (mxf_dv_dif_create_caps): * gst/mxf/mxfdv-dif.h: * gst/mxf/mxfparse.c: (mxf_is_descriptive_metadata): * gst/mxf/mxfparse.h: Add fundamental support for DV-DIF essence streams. Handle descriptive metadata packets as metadata packets.
2008-11-26gst/mxf/mxfdemux.c: Properly combine flow returns of the source pads.Sebastian Dröge1-2/+1
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.
2008-11-26gst/mxf/: When memset'ing the descriptors to zeroes only touch the part of ↵Sebastian Dröge1-8/+24
this descriptor, not it's parent type. 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.
2008-11-25gst/mxf/: Set video dimensions and pixel aspect ratio on the caps.Sebastian Dröge1-2/+29
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.
2008-11-25gst/mxf/: Add initial parsing of RGBA descriptors.Sebastian Dröge1-0/+73
Original commit message from CVS: * gst/mxf/mxfdemux.c: (gst_mxf_demux_reset_metadata), (gst_mxf_demux_handle_metadata_generic_descriptor), (gst_mxf_demux_handle_metadata_file_descriptor), (gst_mxf_demux_handle_metadata_multiple_descriptor), (gst_mxf_demux_handle_metadata_generic_picture_essence_descriptor), (gst_mxf_demux_handle_metadata_cdci_picture_essence_descriptor), (gst_mxf_demux_handle_metadata_rgba_picture_essence_descriptor), (gst_mxf_demux_handle_metadata_mpeg_video_descriptor), (gst_mxf_demux_handle_metadata_generic_sound_essence_descriptor), (gst_mxf_demux_handle_metadata_wave_audio_essence_descriptor), (gst_mxf_demux_handle_header_metadata_resolve_references), (gst_mxf_demux_handle_metadata): * gst/mxf/mxfdemux.h: * gst/mxf/mxfparse.c: (mxf_metadata_rgba_picture_essence_descriptor_handle_tag), (mxf_metadata_rgba_picture_essence_descriptor_reset): * gst/mxf/mxfparse.h: * gst/mxf/mxftypes.h: Add initial parsing of RGBA descriptors. Don't initialize descriptor GArray with zeroes.
2008-11-25gst/mxf/: Rewrite parsing of descriptors to go top-down instead of bottom-up ↵Sebastian Dröge1-923/+765
which makes it possible to have the buff... 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.
2008-11-24gst/mxf/: Allow non-MXF KLV packets and just drop them instead of throwing ↵Sebastian Dröge1-9/+8
an error and handle 9 byte product version... 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.
2008-11-22gst/mxf/: Some more format string fixes and usage of guint instead of gint ↵Sebastian Dröge1-19/+19
where negative values don't make sense. 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.
2008-11-22gst/mxf/: Use guint instead of guint64 or gsize for all buffer sizes and use ↵Sebastian Dröge1-22/+22
correct format strings for them. Only lo... 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.
2008-11-21Add first version of an MXF demuxer. Currently it supportsSebastian Dröge1-0/+2692
Original commit message from CVS: * configure.ac: * gst/mxf/Makefile.am: * gst/mxf/mxf.c: (plugin_init): * gst/mxf/mxfaes-bwf.c: (mxf_metadata_wave_audio_essence_descriptor_parse), (mxf_metadata_wave_audio_essence_descriptor_reset), (mxf_is_aes_bwf_essence_track), (mxf_bwf_handle_essence_element), (mxf_bwf_create_caps), (mxf_aes_bwf_create_caps): * gst/mxf/mxfaes-bwf.h: * gst/mxf/mxfdemux.c: (gst_mxf_pad_finalize), (gst_mxf_pad_class_init), (gst_mxf_pad_init), (gst_mxf_demux_flush), (gst_mxf_demux_remove_pad), (gst_mxf_demux_reset_mxf_state), (gst_mxf_demux_reset_metadata), (gst_mxf_demux_reset), (gst_mxf_demux_pull_range), (gst_mxf_demux_push_src_event), (gst_mxf_demux_handle_partition_pack), (gst_mxf_demux_handle_primer_pack), (gst_mxf_demux_handle_metadata_preface), (gst_mxf_demux_handle_metadata_identification), (gst_mxf_demux_handle_metadata_content_storage), (gst_mxf_demux_handle_metadata_essence_container_data), (gst_mxf_demux_handle_metadata_material_package), (gst_mxf_demux_handle_metadata_source_package), (gst_mxf_demux_handle_metadata_track), (gst_mxf_demux_handle_metadata_sequence), (gst_mxf_demux_handle_metadata_structural_component), (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_metadata_locator), (gst_mxf_demux_handle_header_metadata_resolve_references), (gst_mxf_demux_handle_header_metadata_update_streams), (gst_mxf_demux_handle_metadata), (gst_mxf_demux_handle_generic_container_system_item), (gst_mxf_demux_handle_generic_container_essence_element), (gst_mxf_demux_handle_random_index_pack), (gst_mxf_demux_handle_index_table_segment), (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_loop), (gst_mxf_demux_chain), (gst_mxf_demux_src_event), (gst_mxf_demux_src_query_type), (gst_mxf_demux_src_query), (gst_mxf_demux_sink_activate), (gst_mxf_demux_sink_activate_push), (gst_mxf_demux_sink_activate_pull), (gst_mxf_demux_sink_event), (gst_mxf_demux_change_state), (gst_mxf_demux_finalize), (gst_mxf_demux_base_init), (gst_mxf_demux_class_init), (gst_mxf_demux_init): * gst/mxf/mxfdemux.h: * gst/mxf/mxfmpeg.c: (mxf_metadata_mpeg_video_descriptor_parse), (mxf_metadata_mpeg_video_descriptor_reset), (mxf_is_mpeg_video_essence_track), (mxf_mpeg_video_handle_essence_element), (mxf_mpeg_video_create_caps): * gst/mxf/mxfmpeg.h: * gst/mxf/mxfparse.c: (mxf_is_mxf_packet), (mxf_is_partition_pack), (mxf_is_header_partition_pack), (mxf_is_body_partition_pack), (mxf_is_footer_partition_pack), (mxf_is_fill), (mxf_is_primer_pack), (mxf_is_metadata), (mxf_is_random_index_pack), (mxf_is_index_table_segment), (mxf_is_generic_container_system_item), (mxf_is_generic_container_essence_element), (mxf_is_generic_container_essence_container_label), (mxf_ul_is_equal), (mxf_ul_is_zero), (mxf_ul_to_string), (mxf_umid_is_equal), (mxf_umid_is_zero), (mxf_umid_to_string), (gst_mxf_ul_hash), (gst_mxf_ul_equal), (mxf_timestamp_parse), (mxf_timestamp_is_unknown), (mxf_timestamp_compare), (mxf_fraction_parse), (mxf_utf16_to_utf8), (mxf_product_version_parse), (mxf_partition_pack_parse), (mxf_partition_pack_reset), (_mxf_mapping_ul_free), (mxf_primer_pack_parse), (mxf_primer_pack_reset), (mxf_local_tag_parse), (gst_mxf_local_tag_free), (gst_metadata_add_custom_tag), (mxf_metadata_preface_parse), (mxf_metadata_preface_reset), (mxf_metadata_identification_parse), (mxf_metadata_identification_reset), (mxf_metadata_content_storage_parse), (mxf_metadata_content_storage_reset), (mxf_metadata_essence_container_data_parse), (mxf_metadata_essence_container_data_reset), (mxf_metadata_generic_package_parse), (mxf_metadata_generic_package_reset), (mxf_metadata_track_parse), (mxf_metadata_track_reset), (mxf_metadata_track_identifier_parse), (mxf_metadata_sequence_parse), (mxf_metadata_sequence_reset), (mxf_metadata_structural_component_parse), (mxf_metadata_structural_component_reset), (mxf_metadata_generic_descriptor_parse), (mxf_metadata_generic_descriptor_reset), (mxf_metadata_file_descriptor_parse), (mxf_metadata_file_descriptor_reset), (mxf_metadata_generic_sound_essence_descriptor_parse), (mxf_metadata_generic_sound_essence_descriptor_reset), (mxf_metadata_generic_picture_essence_descriptor_parse), (mxf_metadata_generic_picture_essence_descriptor_reset), (mxf_metadata_cdci_picture_essence_descriptor_parse), (mxf_metadata_cdci_picture_essence_descriptor_reset), (mxf_metadata_multiple_descriptor_parse), (mxf_metadata_multiple_descriptor_reset), (mxf_metadata_locator_parse), (mxf_metadata_locator_reset): * gst/mxf/mxfparse.h: * gst/mxf/mxftypes.h: Add first version of an MXF demuxer. Currently it supports MPEG video and raw audio and OP 1a/b/c.