summaryrefslogtreecommitdiffstats
path: root/gst/mxf/mxfmpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/mxf/mxfmpeg.c')
-rw-r--r--gst/mxf/mxfmpeg.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/gst/mxf/mxfmpeg.c b/gst/mxf/mxfmpeg.c
index 10d0373f..1e6d0369 100644
--- a/gst/mxf/mxfmpeg.c
+++ b/gst/mxf/mxfmpeg.c
@@ -254,6 +254,7 @@ mxf_mpeg_es_create_caps (MXFMetadataGenericPackage * package,
MXFMetadataMPEGVideoDescriptor * d)
{
GstCaps *caps = NULL;
+ const gchar *codec_name = NULL;
/* SMPTE RP224 */
if (!p || mxf_ul_is_zero (&p->picture_essence_coding)) {
@@ -262,6 +263,7 @@ mxf_mpeg_es_create_caps (MXFMetadataGenericPackage * package,
caps =
gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 2,
"systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
+ codec_name = "MPEG-2 Video";
} else if (p->picture_essence_coding.u[0] != 0x06
|| p->picture_essence_coding.u[1] != 0x0e
|| p->picture_essence_coding.u[2] != 0x2b
@@ -280,9 +282,11 @@ mxf_mpeg_es_create_caps (MXFMetadataGenericPackage * package,
p->picture_essence_coding.u[13] <= 0x08) {
caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 2,
"systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
+ codec_name = "MPEG-2 Video";
} else if (p->picture_essence_coding.u[13] == 0x10) {
caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1,
"systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
+ codec_name = "MPEG-1 Video";
} else if (p->picture_essence_coding.u[13] == 0x20) {
MXFLocalTag *local_tag =
(((MXFMetadataGenericDescriptor *) f)->other_tags) ?
@@ -300,15 +304,21 @@ mxf_mpeg_es_create_caps (MXFMetadataGenericPackage * package,
NULL);
gst_buffer_unref (codec_data);
}
-
+ codec_name = "MPEG-4 Video";
} else {
GST_ERROR ("Unsupported MPEG picture essence coding 0x%02x",
p->picture_essence_coding.u[13]);
caps = NULL;
}
- if (caps)
+ if (caps) {
*handler = mxf_mpeg_video_handle_essence_element;
+ if (!*tags)
+ *tags = gst_tag_list_new ();
+ if (codec_name)
+ gst_tag_list_add (*tags, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
+ codec_name, NULL);
+ }
return caps;
}
@@ -378,9 +388,19 @@ mxf_mpeg_create_caps (MXFMetadataGenericPackage * package,
GST_DEBUG ("Found MPEG PS stream");
caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1,
"systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
+
+ if (!*tags)
+ *tags = gst_tag_list_new ();
+ gst_tag_list_add (*tags, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
+ "MPEG PS", NULL);
} else if (f->essence_container.u[13] == 0x09) {
GST_DEBUG ("Found MPEG TS stream");
caps = gst_caps_new_simple ("video/mpegts", NULL);
+
+ if (!*tags)
+ *tags = gst_tag_list_new ();
+ gst_tag_list_add (*tags, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
+ "MPEG TS", NULL);
}
if (p)