summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-12-12 10:29:31 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2008-12-12 10:29:31 +0000
commitc94b1bd2de42a4b1bbcdd7877e7c737f81229ebc (patch)
treeb93141eba5180c7c40fc0894fe1b570ed3eca10e /gst
parent1fe82925f5d7419bd073a33cfa85be2c3e19a397 (diff)
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.
Diffstat (limited to 'gst')
-rw-r--r--gst/mxf/mxfaes-bwf.c1
-rw-r--r--gst/mxf/mxfalaw.c3
-rw-r--r--gst/mxf/mxfdemux.c40
-rw-r--r--gst/mxf/mxfdv-dif.c11
-rw-r--r--gst/mxf/mxfjpeg2000.c5
-rw-r--r--gst/mxf/mxfmpeg.c3
-rw-r--r--gst/mxf/mxfup.c1
7 files changed, 49 insertions, 15 deletions
diff --git a/gst/mxf/mxfaes-bwf.c b/gst/mxf/mxfaes-bwf.c
index a62d27031..98e0f7247 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 89faed44a..847eb90a0 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 933188590..79d58cbaa 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 f92e71fdf..79512f46c 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 c9e78fa91..7ccb48185 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 810474a4f..608ecc277 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 a9e0826a2..3b5259e6e 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