diff options
author | Sebastian Dröge <slomo@circular-chaos.org> | 2008-12-04 08:37:18 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2008-12-04 08:37:18 +0000 |
commit | 8201937c549034dc26dc289295a4ca0dfdceeb32 (patch) | |
tree | 5925f36690e4072dcf1d9f66ee244b0be00311aa /gst/mxf/mxfdemux.c | |
parent | 7f61ced7e61ffe636e3a9a38ee2919a7ac9a43df (diff) | |
download | gst-plugins-bad-8201937c549034dc26dc289295a4ca0dfdceeb32.tar.gz gst-plugins-bad-8201937c549034dc26dc289295a4ca0dfdceeb32.tar.bz2 gst-plugins-bad-8201937c549034dc26dc289295a4ca0dfdceeb32.zip |
gst/mxf/: Add support for SMPTE D10 essence (SMPTE 386M).
Original commit message from CVS:
* gst/mxf/Makefile.am:
* 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):
* gst/mxf/mxfd10.h:
* gst/mxf/mxfdemux.c:
(gst_mxf_demux_handle_header_metadata_update_streams):
Add support for SMPTE D10 essence (SMPTE 386M).
* gst/mxf/mxfparse.c:
(mxf_metadata_generic_picture_essence_descriptor_set_caps):
Don't set width/height and PAR on the caps as those values are
wrong for most files (height is sometimes the height of a field
and aspect ratio is some random value).
* gst/mxf/mxfaes-bwf.c: (mxf_bwf_create_caps),
(mxf_aes3_create_caps):
Fix calculation of block align if it isn't set in the descriptor.
Diffstat (limited to 'gst/mxf/mxfdemux.c')
-rw-r--r-- | gst/mxf/mxfdemux.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c index 4b803148..e20ddf7b 100644 --- a/gst/mxf/mxfdemux.c +++ b/gst/mxf/mxfdemux.c @@ -36,6 +36,7 @@ #include "mxfdv-dif.h" #include "mxfalaw.h" #include "mxfjpeg2000.h" +#include "mxfd10.h" #include <string.h> @@ -1346,9 +1347,8 @@ gst_mxf_demux_handle_header_metadata_resolve_references (GstMXFDemux * demux) MXFMetadataEssenceContainerData, i); for (j = 0; j < demux->content_storage.n_essence_container_data; j++) { - if (mxf_ul_is_equal (&demux-> - content_storage.essence_container_data_uids[j], - &data->instance_uid)) { + if (mxf_ul_is_equal (&demux->content_storage. + essence_container_data_uids[j], &data->instance_uid)) { demux->content_storage.essence_container_data[j] = data; break; } @@ -1907,6 +1907,10 @@ gst_mxf_demux_handle_header_metadata_update_streams (GstMXFDemux * demux) caps = mxf_jpeg2000_create_caps (source_package, source_track, &pad->tags, &pad->handle_essence_element, &pad->mapping_data); + else if (mxf_is_d10_essence_track (source_track)) + caps = + mxf_d10_create_caps (source_package, source_track, + &pad->tags, &pad->handle_essence_element, &pad->mapping_data); break; case MXF_METADATA_TRACK_SOUND_ESSENCE: if (mxf_is_aes_bwf_essence_track (source_track)) @@ -1925,12 +1929,24 @@ gst_mxf_demux_handle_header_metadata_update_streams (GstMXFDemux * demux) caps = mxf_mpeg_create_caps (source_package, source_track, &pad->tags, &pad->handle_essence_element, &pad->mapping_data); + else if (mxf_is_d10_essence_track (source_track)) + caps = + mxf_d10_create_caps (source_package, source_track, + &pad->tags, &pad->handle_essence_element, &pad->mapping_data); break; case MXF_METADATA_TRACK_DATA_ESSENCE: if (mxf_is_dv_dif_essence_track (source_track)) caps = mxf_dv_dif_create_caps (source_package, source_track, &pad->tags, &pad->handle_essence_element, &pad->mapping_data); + else if (mxf_is_mpeg_essence_track (source_track)) + caps = + mxf_mpeg_create_caps (source_package, source_track, + &pad->tags, &pad->handle_essence_element, &pad->mapping_data); + else if (mxf_is_d10_essence_track (source_track)) + caps = + mxf_d10_create_caps (source_package, source_track, + &pad->tags, &pad->handle_essence_element, &pad->mapping_data); break; default: g_assert_not_reached (); |