flvmux: Allow requesting streamable pads after header is written

Allows us to request pads after writing header for streamable flv's.

For non-streamable it doesn't make sense to request a new pad after
writing the header, because the headers have been written already and we
can't add the new stream. But for streamable, any clients that connect
after the new pad has been added will be able to see both streams.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/572>
This commit is contained in:
Vivia Nikolaidou 2020-03-31 14:10:35 +03:00
parent 7f6fb07f85
commit b0855113c6

View file

@ -54,7 +54,7 @@ enum
PROP_0,
PROP_STREAMABLE,
PROP_METADATACREATOR,
PROP_ENCODER
PROP_ENCODER,
};
#define DEFAULT_STREAMABLE FALSE
@ -677,8 +677,10 @@ gst_flv_mux_create_new_pad (GstAggregator * agg,
const gchar *name = NULL;
gboolean video;
if (mux->state != GST_FLV_MUX_STATE_HEADER) {
GST_WARNING_OBJECT (mux, "Can't request pads after writing header");
if (mux->state != GST_FLV_MUX_STATE_HEADER && !mux->streamable) {
GST_ELEMENT_WARNING (mux, STREAM, MUX,
("Requested a late stream in a non-streamable file"),
("Stream added after file started and therefore won't be playable"));
return NULL;
}