summaryrefslogtreecommitdiffstats
path: root/gst/mxf/mxfmpeg.c
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-11-25 14:49:34 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2008-11-25 14:49:34 +0000
commit15afef86524b53f2c2d5f8f5966418e4ef8368d0 (patch)
tree69679c5d865cd8f759bda17a27d8cb34e5f380fc /gst/mxf/mxfmpeg.c
parent4f365b391e9ab1582c2374889f4255da61f8d330 (diff)
downloadgst-plugins-bad-15afef86524b53f2c2d5f8f5966418e4ef8368d0.tar.gz
gst-plugins-bad-15afef86524b53f2c2d5f8f5966418e4ef8368d0.tar.bz2
gst-plugins-bad-15afef86524b53f2c2d5f8f5966418e4ef8368d0.zip
gst/mxf/: Set video dimensions and pixel aspect ratio on the caps.
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.
Diffstat (limited to 'gst/mxf/mxfmpeg.c')
-rw-r--r--gst/mxf/mxfmpeg.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/gst/mxf/mxfmpeg.c b/gst/mxf/mxfmpeg.c
index ab70780b..18f652ff 100644
--- a/gst/mxf/mxfmpeg.c
+++ b/gst/mxf/mxfmpeg.c
@@ -23,6 +23,7 @@
/* TODO:
* - Handle PES streams
+ * - Fix TS/PS demuxers to forward timestamps
*/
#ifdef HAVE_CONFIG_H
@@ -242,7 +243,9 @@ mxf_mpeg_video_create_caps (MXFMetadataGenericPackage * package,
{
MXFMetadataMPEGVideoDescriptor *d = NULL;
MXFMetadataFileDescriptor *f = NULL;
+ MXFMetadataGenericPictureEssenceDescriptor *p = NULL;
guint i;
+ GstCaps *caps = NULL;
g_return_val_if_fail (package != NULL, NULL);
g_return_val_if_fail (track != NULL, NULL);
@@ -257,12 +260,16 @@ mxf_mpeg_video_create_caps (MXFMetadataGenericPackage * package,
MXF_METADATA_MPEG_VIDEO_DESCRIPTOR) {
d = (MXFMetadataMPEGVideoDescriptor *) track->descriptor[i];
f = track->descriptor[i];
+ p = (MXFMetadataGenericPictureEssenceDescriptor *) track->descriptor[i];
+ break;
+ } else if (((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
+ MXF_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR ||
+ ((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
+ MXF_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR) {
+ f = track->descriptor[i];
+ p = (MXFMetadataGenericPictureEssenceDescriptor *) track->descriptor[i];
break;
} else if (((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
- MXF_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR
- || ((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
- MXF_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR
- || ((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
MXF_METADATA_FILE_DESCRIPTOR) {
f = track->descriptor[i];
}
@@ -278,7 +285,7 @@ mxf_mpeg_video_create_caps (MXFMetadataGenericPackage * package,
if (f->essence_container.u[13] == 0x04) {
/* FIXME: get mpeg version somehow */
GST_DEBUG ("Found MPEG ES stream");
- return gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1,
+ caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1,
"systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
} else if (f->essence_container.u[13] == 0x07) {
GST_ERROR ("MPEG PES streams not supported yet");
@@ -286,11 +293,16 @@ mxf_mpeg_video_create_caps (MXFMetadataGenericPackage * package,
} else if (f->essence_container.u[13] == 0x08) {
/* FIXME: get mpeg version somehow */
GST_DEBUG ("Found MPEG PS stream");
- return gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1,
+ caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1,
"systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
} else if (f->essence_container.u[13] == 0x09) {
GST_DEBUG ("Found MPEG TS stream");
- return gst_caps_new_simple ("video/mpegts", NULL);
+ caps = gst_caps_new_simple ("video/mpegts", NULL);
+
}
- return NULL;
+
+ if (p)
+ mxf_metadata_generic_picture_essence_descriptor_set_caps (p, caps);
+
+ return caps;
}