mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-20 16:51:10 +00:00
gst/mpegstream/: Also flush packetizer cache when we get a buffer that has the
Original commit message from CVS: * gst/mpegstream/gstmpegpacketize.c: (gst_mpeg_packetize_flush_cache), (gst_mpeg_packetize_put): * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_chain): Also flush packetizer cache when we get a buffer that has the DISCONT flag set; update current byte position from buffer offset after a flush.
This commit is contained in:
parent
8daf179ca4
commit
50962bbcb6
3 changed files with 23 additions and 0 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2006-06-23 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
|
* gst/mpegstream/gstmpegpacketize.c:
|
||||||
|
(gst_mpeg_packetize_flush_cache), (gst_mpeg_packetize_put):
|
||||||
|
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_chain):
|
||||||
|
Also flush packetizer cache when we get a buffer that has the
|
||||||
|
DISCONT flag set; update current byte position from buffer
|
||||||
|
offset after a flush.
|
||||||
|
|
||||||
2006-06-23 Tim-Philipp Müller <tim at centricular dot net>
|
2006-06-23 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
* gst/mpegstream/gstmpegpacketize.c: (gst_mpeg_packetize_new),
|
* gst/mpegstream/gstmpegpacketize.c: (gst_mpeg_packetize_new),
|
||||||
|
|
|
@ -57,6 +57,8 @@ gst_mpeg_packetize_flush_cache (GstMPEGPacketize * packetize)
|
||||||
{
|
{
|
||||||
g_return_if_fail (packetize != NULL);
|
g_return_if_fail (packetize != NULL);
|
||||||
|
|
||||||
|
packetize->cache_byte_pos += packetize->cache_tail;
|
||||||
|
|
||||||
packetize->resync = TRUE;
|
packetize->resync = TRUE;
|
||||||
packetize->cache_head = 0;
|
packetize->cache_head = 0;
|
||||||
packetize->cache_tail = 0;
|
packetize->cache_tail = 0;
|
||||||
|
@ -84,6 +86,13 @@ gst_mpeg_packetize_put (GstMPEGPacketize * packetize, GstBuffer * buf)
|
||||||
{
|
{
|
||||||
int cache_len = packetize->cache_tail - packetize->cache_head;
|
int cache_len = packetize->cache_tail - packetize->cache_head;
|
||||||
|
|
||||||
|
if (packetize->cache_head == 0 && cache_len == 0 &&
|
||||||
|
GST_BUFFER_OFFSET_IS_VALID (buf)) {
|
||||||
|
packetize->cache_byte_pos = GST_BUFFER_OFFSET (buf);
|
||||||
|
GST_DEBUG ("cache byte position now %" G_GINT64_FORMAT,
|
||||||
|
packetize->cache_byte_pos);
|
||||||
|
}
|
||||||
|
|
||||||
if (cache_len + GST_BUFFER_SIZE (buf) > packetize->cache_size) {
|
if (cache_len + GST_BUFFER_SIZE (buf) > packetize->cache_size) {
|
||||||
/* the buffer does not fit into the cache so grow the cache */
|
/* the buffer does not fit into the cache so grow the cache */
|
||||||
|
|
||||||
|
|
|
@ -691,6 +691,11 @@ gst_mpeg_parse_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
GstClockTime time;
|
GstClockTime time;
|
||||||
guint64 size;
|
guint64 size;
|
||||||
|
|
||||||
|
if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) {
|
||||||
|
GST_DEBUG_OBJECT (mpeg_parse, "buffer with DISCONT flag set");
|
||||||
|
gst_mpeg_packetize_flush_cache (mpeg_parse->packetize);
|
||||||
|
}
|
||||||
|
|
||||||
gst_mpeg_packetize_put (mpeg_parse->packetize, buffer);
|
gst_mpeg_packetize_put (mpeg_parse->packetize, buffer);
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue