mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-28 20:51:13 +00:00
oggdemux: move is_sparse into stream map
This commit is contained in:
parent
3e99c06ad0
commit
5ae2f04856
4 changed files with 10 additions and 8 deletions
|
@ -576,7 +576,7 @@ gst_ogg_demux_chain_peer (GstOggPad * pad, ogg_packet * packet,
|
||||||
pad->current_granule);
|
pad->current_granule);
|
||||||
out_duration = gst_util_uint64_scale (duration,
|
out_duration = gst_util_uint64_scale (duration,
|
||||||
GST_SECOND * pad->map.granulerate_d, pad->map.granulerate_n);
|
GST_SECOND * pad->map.granulerate_d, pad->map.granulerate_n);
|
||||||
} else if (pad->is_sparse) {
|
} else if (pad->map.is_sparse) {
|
||||||
out_timestamp = gst_ogg_stream_granule_to_time (&pad->map,
|
out_timestamp = gst_ogg_stream_granule_to_time (&pad->map,
|
||||||
pad->current_granule);
|
pad->current_granule);
|
||||||
out_duration = GST_CLOCK_TIME_NONE;
|
out_duration = GST_CLOCK_TIME_NONE;
|
||||||
|
@ -1792,11 +1792,6 @@ gst_ogg_demux_activate_chain (GstOggDemux * ogg, GstOggChain * chain,
|
||||||
GST_DEBUG_OBJECT (ogg, "adding pad %" GST_PTR_FORMAT, pad);
|
GST_DEBUG_OBJECT (ogg, "adding pad %" GST_PTR_FORMAT, pad);
|
||||||
|
|
||||||
structure = gst_caps_get_structure (GST_PAD_CAPS (pad), 0);
|
structure = gst_caps_get_structure (GST_PAD_CAPS (pad), 0);
|
||||||
pad->is_sparse =
|
|
||||||
gst_structure_has_name (structure, "application/x-ogm-text") ||
|
|
||||||
gst_structure_has_name (structure, "text/x-cmml") ||
|
|
||||||
gst_structure_has_name (structure, "subtitle/x-kate") ||
|
|
||||||
gst_structure_has_name (structure, "application/x-kate");
|
|
||||||
|
|
||||||
/* activate first */
|
/* activate first */
|
||||||
gst_pad_set_active (GST_PAD_CAST (pad), TRUE);
|
gst_pad_set_active (GST_PAD_CAST (pad), TRUE);
|
||||||
|
@ -3367,7 +3362,7 @@ gst_ogg_demux_sync_streams (GstOggDemux * ogg)
|
||||||
/* Theoretically, we should be doing this for all streams, but we're only
|
/* Theoretically, we should be doing this for all streams, but we're only
|
||||||
* doing it for known-to-be-sparse streams at the moment in order not to
|
* doing it for known-to-be-sparse streams at the moment in order not to
|
||||||
* break things for wrongly-muxed streams (like we used to produce once) */
|
* break things for wrongly-muxed streams (like we used to produce once) */
|
||||||
if (stream->is_sparse && stream->last_stop != GST_CLOCK_TIME_NONE) {
|
if (stream->map.is_sparse && stream->last_stop != GST_CLOCK_TIME_NONE) {
|
||||||
|
|
||||||
/* Does this stream lag? Random threshold of 2 seconds */
|
/* Does this stream lag? Random threshold of 2 seconds */
|
||||||
if (GST_CLOCK_DIFF (stream->last_stop, cur) > (2 * GST_SECOND)) {
|
if (GST_CLOCK_DIFF (stream->last_stop, cur) > (2 * GST_SECOND)) {
|
||||||
|
|
|
@ -103,7 +103,6 @@ struct _GstOggPad
|
||||||
gint64 first_granule; /* the granulepos of first page == first sample in next page */
|
gint64 first_granule; /* the granulepos of first page == first sample in next page */
|
||||||
GstClockTime first_time; /* the timestamp of the second page or granuletime of first page */
|
GstClockTime first_time; /* the timestamp of the second page or granuletime of first page */
|
||||||
|
|
||||||
gboolean is_sparse; /* TRUE if this is a subtitle pad or some other sparse stream */
|
|
||||||
GstClockTime last_stop; /* last_stop when last push occured; used to detect when we
|
GstClockTime last_stop; /* last_stop when last push occured; used to detect when we
|
||||||
* need to send a newsegment update event for sparse streams */
|
* need to send a newsegment update event for sparse streams */
|
||||||
|
|
||||||
|
|
|
@ -918,6 +918,9 @@ setup_fishead_mapper (GstOggStream * pad, ogg_packet * packet)
|
||||||
GST_TIME_ARGS (pad->prestime));
|
GST_TIME_ARGS (pad->prestime));
|
||||||
|
|
||||||
pad->is_skeleton = TRUE;
|
pad->is_skeleton = TRUE;
|
||||||
|
pad->is_sparse = TRUE;
|
||||||
|
|
||||||
|
pad->caps = gst_caps_new_simple ("none/none", NULL);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1336,6 +1339,7 @@ setup_ogmtext_mapper (GstOggStream * pad, ogg_packet * packet)
|
||||||
pad->n_header_packets = 1;
|
pad->n_header_packets = 1;
|
||||||
pad->is_ogm = TRUE;
|
pad->is_ogm = TRUE;
|
||||||
pad->is_ogm_text = TRUE;
|
pad->is_ogm_text = TRUE;
|
||||||
|
pad->is_sparse = TRUE;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1493,6 +1497,7 @@ setup_cmml_mapper (GstOggStream * pad, ogg_packet * packet)
|
||||||
GST_DEBUG ("blocksize1: %u", 1 << (data[0] & 0x0F));
|
GST_DEBUG ("blocksize1: %u", 1 << (data[0] & 0x0F));
|
||||||
|
|
||||||
pad->caps = gst_caps_new_simple ("text/x-cmml", NULL);
|
pad->caps = gst_caps_new_simple ("text/x-cmml", NULL);
|
||||||
|
pad->is_sparse = TRUE;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1551,6 +1556,8 @@ setup_kate_mapper (GstOggStream * pad, ogg_packet * packet)
|
||||||
pad->caps = gst_caps_new_simple ("application/x-kate", NULL);
|
pad->caps = gst_caps_new_simple ("application/x-kate", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pad->is_sparse = TRUE;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,7 @@ struct _GstOggStream
|
||||||
gint frame_size;
|
gint frame_size;
|
||||||
gint bitrate;
|
gint bitrate;
|
||||||
guint64 total_time;
|
guint64 total_time;
|
||||||
|
gboolean is_sparse;
|
||||||
|
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue