From: Reynaldo H. Verdejo Pinochet Date: Sun, 6 Oct 2013 16:17:00 +0000 (-0700) Subject: matroskamux: Add context flag for WebM X-Git-Tag: 1.19.3~509^2~5221 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1cb31eeacc749801d391bd17d914d804ea1ad928;p=platform%2Fupstream%2Fgstreamer.git matroskamux: Add context flag for WebM WebM has a couple of specific requirements we need to handle. Idea is to set this flag once and just rely on mux->is_webm at run time instead of repeatedly figuring this out from GST_MATROSKA_DOCTYPE_WEBM (which requires a strcmp()). --- diff --git a/gst/matroska/matroska-mux.c b/gst/matroska/matroska-mux.c index 7b846e5..dbcf4c9 100644 --- a/gst/matroska/matroska-mux.c +++ b/gst/matroska/matroska-mux.c @@ -2481,7 +2481,6 @@ gst_matroska_mux_start (GstMatroskaMux * mux) }; const gchar *media_type; gboolean audio_only; - gboolean is_webm = FALSE; guint64 master, child; GSList *collected; int i; @@ -2522,13 +2521,9 @@ 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 (is_webm) { + if (mux->is_webm) { media_type = (audio_only) ? "audio/webm" : "video/webm"; } else { media_type = (audio_only) ? "audio/x-matroska" : "video/x-matroska"; @@ -2588,7 +2583,7 @@ gst_matroska_mux_start (GstMatroskaMux * mux) master = gst_ebml_write_master_start (ebml, GST_MATROSKA_ID_SEGMENTINFO); /* WebM does not support SegmentUID field on SegmentInfo */ - if (!is_webm) { + if (!mux->is_webm) { for (i = 0; i < 4; i++) { segment_uid[i] = g_random_int (); } diff --git a/gst/matroska/matroska-mux.h b/gst/matroska/matroska-mux.h index 7fea78d..47b0271 100644 --- a/gst/matroska/matroska-mux.h +++ b/gst/matroska/matroska-mux.h @@ -129,6 +129,9 @@ typedef struct _GstMatroskaMux { /* GstForceKeyUnit event */ GstEvent *force_key_unit_event; + + /* Flag to ease handling of WebM specifics */ + gboolean is_webm; } GstMatroskaMux; typedef struct _GstMatroskaMuxClass { diff --git a/gst/matroska/webm-mux.c b/gst/matroska/webm-mux.c index 19aa245..2b83b6c 100644 --- a/gst/matroska/webm-mux.c +++ b/gst/matroska/webm-mux.c @@ -97,4 +97,5 @@ static void gst_webm_mux_init (GstWebMMux * mux) { GST_MATROSKA_MUX (mux)->doctype = GST_MATROSKA_DOCTYPE_WEBM; + GST_MATROSKA_MUX (mux)->is_webm = TRUE; }