mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
matroska: Do not write SegmentUID for WebM mux
WebM spec states SegmentUID is Unsupported. Files produced with gstreamer without this change will spit an error like this when passed to mkvalidator: ERR201: Invalid 'SegmentUID' for profile 'webm' in Info at 192
This commit is contained in:
parent
cf12017ef8
commit
edeed575ae
1 changed files with 15 additions and 5 deletions
|
@ -2481,6 +2481,7 @@ gst_matroska_mux_start (GstMatroskaMux * mux)
|
|||
};
|
||||
const gchar *media_type;
|
||||
gboolean audio_only;
|
||||
gboolean is_webm = FALSE;
|
||||
guint64 master, child;
|
||||
GSList *collected;
|
||||
int i;
|
||||
|
@ -2521,9 +2522,13 @@ gst_matroska_mux_start (GstMatroskaMux * mux)
|
|||
g_snprintf (s_id, sizeof (s_id), "matroskamux-%08x", g_random_int ());
|
||||
gst_pad_push_event (mux->srcpad, gst_event_new_stream_start (s_id));
|
||||
|
||||
/* Are we muxing a WebM stream? */
|
||||
if (!strcmp (mux->doctype, GST_MATROSKA_DOCTYPE_WEBM)) {
|
||||
is_webm = TRUE;
|
||||
}
|
||||
/* output caps */
|
||||
audio_only = mux->num_v_streams == 0 && mux->num_a_streams > 0;
|
||||
if (!strcmp (mux->doctype, GST_MATROSKA_DOCTYPE_WEBM)) {
|
||||
if (is_webm) {
|
||||
media_type = (audio_only) ? "audio/webm" : "video/webm";
|
||||
} else {
|
||||
media_type = (audio_only) ? "audio/x-matroska" : "video/x-matroska";
|
||||
|
@ -2581,11 +2586,16 @@ gst_matroska_mux_start (GstMatroskaMux * mux)
|
|||
/* segment info */
|
||||
mux->info_pos = ebml->pos;
|
||||
master = gst_ebml_write_master_start (ebml, GST_MATROSKA_ID_SEGMENTINFO);
|
||||
for (i = 0; i < 4; i++) {
|
||||
segment_uid[i] = g_random_int ();
|
||||
|
||||
/* WebM does not support SegmentUID field on SegmentInfo */
|
||||
if (!is_webm) {
|
||||
for (i = 0; i < 4; i++) {
|
||||
segment_uid[i] = g_random_int ();
|
||||
}
|
||||
gst_ebml_write_binary (ebml, GST_MATROSKA_ID_SEGMENTUID,
|
||||
(guint8 *) segment_uid, 16);
|
||||
}
|
||||
gst_ebml_write_binary (ebml, GST_MATROSKA_ID_SEGMENTUID,
|
||||
(guint8 *) segment_uid, 16);
|
||||
|
||||
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_TIMECODESCALE, mux->time_scale);
|
||||
mux->duration_pos = ebml->pos;
|
||||
/* get duration */
|
||||
|
|
Loading…
Reference in a new issue