+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),
-Subproject commit a8728f3f810904c94f0b6678a7633d551514f335
+Subproject commit 55e579eeead04cfde7c63b3a4f5b3d4f72c2f61d
* - 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
((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 ();
*/
/* 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
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;
}
* 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
}
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];
/* 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");
/* TODO:
* - parse the jpeg2000 sub-descriptor, see SMPTE 422M 7.2
+ * - Add support for XYZ colorspace
*/
#ifdef HAVE_CONFIG_H
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];
/* 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
/* 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