diff options
author | Sebastian Dröge <slomo@circular-chaos.org> | 2008-12-12 10:29:31 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2008-12-12 10:29:31 +0000 |
commit | c94b1bd2de42a4b1bbcdd7877e7c737f81229ebc (patch) | |
tree | b93141eba5180c7c40fc0894fe1b570ed3eca10e | |
parent | 1fe82925f5d7419bd073a33cfa85be2c3e19a397 (diff) | |
download | gst-plugins-bad-c94b1bd2de42a4b1bbcdd7877e7c737f81229ebc.tar.gz gst-plugins-bad-c94b1bd2de42a4b1bbcdd7877e7c737f81229ebc.tar.bz2 gst-plugins-bad-c94b1bd2de42a4b1bbcdd7877e7c737f81229ebc.zip |
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.
-rw-r--r-- | ChangeLog | 11 | ||||
m--------- | common | 0 | ||||
-rw-r--r-- | gst/mxf/mxfaes-bwf.c | 1 | ||||
-rw-r--r-- | gst/mxf/mxfalaw.c | 3 | ||||
-rw-r--r-- | gst/mxf/mxfdemux.c | 40 | ||||
-rw-r--r-- | gst/mxf/mxfdv-dif.c | 11 | ||||
-rw-r--r-- | gst/mxf/mxfjpeg2000.c | 5 | ||||
-rw-r--r-- | gst/mxf/mxfmpeg.c | 3 | ||||
-rw-r--r-- | gst/mxf/mxfup.c | 1 |
9 files changed, 60 insertions, 15 deletions
@@ -1,3 +1,14 @@ +2008-12-12 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * 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-11 Sebastian Dröge <sebastian.droege@collabora.co.uk> * gst/mxf/mxfdemux.c: (gst_mxf_demux_handle_metadata_track), diff --git a/common b/common -Subproject a8728f3f810904c94f0b6678a7633d551514f33 +Subproject 55e579eeead04cfde7c63b3a4f5b3d4f72c2f61 diff --git a/gst/mxf/mxfaes-bwf.c b/gst/mxf/mxfaes-bwf.c index a62d2703..98e0f724 100644 --- a/gst/mxf/mxfaes-bwf.c +++ b/gst/mxf/mxfaes-bwf.c @@ -25,6 +25,7 @@ * - Handle the case were a track only references specific channels * of the essence (ChannelID property) * - Add support for more codecs + * - Handle more of the metadata inside the descriptors */ #ifdef HAVE_CONFIG_H diff --git a/gst/mxf/mxfalaw.c b/gst/mxf/mxfalaw.c index 89faed44..847eb90a 100644 --- a/gst/mxf/mxfalaw.c +++ b/gst/mxf/mxfalaw.c @@ -115,7 +115,8 @@ mxf_alaw_create_caps (MXFMetadataGenericPackage * package, ((gdouble) s->audio_sampling_rate.d) + 0.5), "channels", G_TYPE_INT, s->channel_count, NULL); - /* TODO: Handle channel layout somehow? */ + /* TODO: Handle channel layout somehow? + * Or is alaw limited to two channels? */ if (!*tags) *tags = gst_tag_list_new (); diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c index 93318859..79d58cba 100644 --- a/gst/mxf/mxfdemux.c +++ b/gst/mxf/mxfdemux.c @@ -18,11 +18,36 @@ */ /* TODO: - * - start at correct position of the component, switch components - * - seeking support - * - timecode tracks - * - descriptive metadata - * - generic container system items + * - GObjectify structural metadata to get rid of the current inheritance mess + * - Implement support for DMS-1 and descriptive metadata tracks + * - Differentiate UL and UUIDs, the former can define an object system + * (i.e. mxf_ul_is_a() and friends could be implemented), see SMPTE S336M. + * The latter are just 16 byte unique identifiers + * - Check everything for correctness vs. SMPTE S336M, some things can probably + * be generalized/simplified + * - Correctly timestamp essence streams and start/stop at the correct positions. + * Also switch between different structural components after one has ended. + * - Seeking support: IndexTableSegments and skip-to-position seeks, needs correct + * timestamp calculation, etc. + * - Handle timecode tracks correctly (where is this documented?) + * - Handle Generic container system items + * - Use an "essence element/track handling" registry instead of the large if-then-else + * block when detecting the codec + * - Force synchronization of tracks. Packets that have the timestamp are not required + * to be stored at the same position in the essence stream, especially if tracks + * with different source packages (body sid) are used. + * - Implement correct support for clip-wrapped essence elements. + * - Add a "tracks" property to select the tracks that should be used from the + * selected package. + * - Post structural metadata and descriptive metadata trees as a message on the bus + * and send them downstream as event. + * - Multichannel audio needs channel layouts, define them (SMPTE S320M?). + * - Correctly handle the different rectangles and aspect-ratio for video + * - Add support for non-standard MXF used by Avid (bug #561922). + * + * - Implement SMPTE D11 essence and the digital cinema/MXF specs + * + * - Implement a muxer ;-) */ #ifdef HAVE_CONFIG_H @@ -1316,9 +1341,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; } diff --git a/gst/mxf/mxfdv-dif.c b/gst/mxf/mxfdv-dif.c index f92e71fd..79512f46 100644 --- a/gst/mxf/mxfdv-dif.c +++ b/gst/mxf/mxfdv-dif.c @@ -21,6 +21,12 @@ * Generic Container */ +/* TODO: + * - playbin hangs on a lot of MXF/DV-DIF files (bug #563827) + * - decodebin2 creates loops inside the linking graph (bug #563828) + * - Forwarding of timestamps in dvdemux? + */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -91,8 +97,8 @@ mxf_dv_dif_create_caps (MXFMetadataGenericPackage * package, } for (i = 0; i < track->n_descriptor; i++) { - if (((MXFMetadataGenericDescriptor *) track-> - descriptor[i])->is_file_descriptor + if (((MXFMetadataGenericDescriptor *) track->descriptor[i])-> + is_file_descriptor && ((MXFMetadataGenericDescriptor *) track->descriptor[i])->type != MXF_METADATA_MULTIPLE_DESCRIPTOR) { f = track->descriptor[i]; @@ -109,7 +115,6 @@ mxf_dv_dif_create_caps (MXFMetadataGenericPackage * package, /* TODO: might be video or audio only, use values of the generic sound/picture * descriptor in the caps in that case - * Also dvdemux might not forward timestamps */ if (f->essence_container.u[13] == 0x02) { GST_DEBUG ("Found DV-DIF stream"); diff --git a/gst/mxf/mxfjpeg2000.c b/gst/mxf/mxfjpeg2000.c index c9e78fa9..7ccb4818 100644 --- a/gst/mxf/mxfjpeg2000.c +++ b/gst/mxf/mxfjpeg2000.c @@ -23,6 +23,7 @@ /* TODO: * - parse the jpeg2000 sub-descriptor, see SMPTE 422M 7.2 + * - Add support for XYZ colorspace */ #ifdef HAVE_CONFIG_H @@ -107,8 +108,8 @@ mxf_jpeg2000_create_caps (MXFMetadataGenericPackage * package, p = (MXFMetadataGenericPictureEssenceDescriptor *) track->descriptor[i]; f = track->descriptor[i]; break; - } else if (((MXFMetadataGenericDescriptor *) track-> - descriptor[i])->is_file_descriptor + } else if (((MXFMetadataGenericDescriptor *) track->descriptor[i])-> + is_file_descriptor && ((MXFMetadataGenericDescriptor *) track->descriptor[i])->type != MXF_METADATA_MULTIPLE_DESCRIPTOR) { f = track->descriptor[i]; diff --git a/gst/mxf/mxfmpeg.c b/gst/mxf/mxfmpeg.c index 810474a4..608ecc27 100644 --- a/gst/mxf/mxfmpeg.c +++ b/gst/mxf/mxfmpeg.c @@ -24,7 +24,8 @@ /* TODO: * - Handle PES streams * - Fix TS/PS demuxers to forward timestamps - * - Handle sound/data somehow + * - h264 support (see SMPTE RP2008) + * - AAC support */ #ifdef HAVE_CONFIG_H diff --git a/gst/mxf/mxfup.c b/gst/mxf/mxfup.c index a9e0826a..3b5259e6 100644 --- a/gst/mxf/mxfup.c +++ b/gst/mxf/mxfup.c @@ -23,6 +23,7 @@ /* TODO: * - Handle CDCI essence + * - Handle more formats with RGBA descriptor (4:4:4 / 4:4:4:4 YUV, RGB656, ...) * - Correctly transform for the GStreamer strides * - Handle all the dimensions and other properties in the picture * essence descriptors correctly according to S377M Annex E |