mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 20:42:30 +00:00
Revert "ogg: Fix handling of unset granuleshift for the skeleton parser"
This reverts commit 7418ddd753
.
This breaks the unit test and messes up preroll/seeking.
This commit is contained in:
parent
f6d742fef2
commit
1dd86b9c66
4 changed files with 33 additions and 52 deletions
|
@ -194,8 +194,12 @@ gst_ogg_pad_init (GstOggPad * pad)
|
||||||
|
|
||||||
pad->have_type = FALSE;
|
pad->have_type = FALSE;
|
||||||
pad->continued = NULL;
|
pad->continued = NULL;
|
||||||
|
pad->map.headers = NULL;
|
||||||
|
pad->map.queued = NULL;
|
||||||
|
|
||||||
gst_ogg_stream_clear (&pad->map);
|
pad->map.granulerate_n = 0;
|
||||||
|
pad->map.granulerate_d = 0;
|
||||||
|
pad->map.granuleshift = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -206,12 +210,32 @@ gst_ogg_pad_dispose (GObject * object)
|
||||||
pad->chain = NULL;
|
pad->chain = NULL;
|
||||||
pad->ogg = NULL;
|
pad->ogg = NULL;
|
||||||
|
|
||||||
|
g_list_foreach (pad->map.headers, (GFunc) _ogg_packet_free, NULL);
|
||||||
|
g_list_free (pad->map.headers);
|
||||||
|
pad->map.headers = NULL;
|
||||||
|
g_list_foreach (pad->map.queued, (GFunc) _ogg_packet_free, NULL);
|
||||||
|
g_list_free (pad->map.queued);
|
||||||
|
pad->map.queued = NULL;
|
||||||
|
|
||||||
|
g_free (pad->map.index);
|
||||||
|
pad->map.index = NULL;
|
||||||
|
|
||||||
/* clear continued pages */
|
/* clear continued pages */
|
||||||
g_list_foreach (pad->continued, (GFunc) gst_ogg_page_free, NULL);
|
g_list_foreach (pad->continued, (GFunc) gst_ogg_page_free, NULL);
|
||||||
g_list_free (pad->continued);
|
g_list_free (pad->continued);
|
||||||
pad->continued = NULL;
|
pad->continued = NULL;
|
||||||
|
|
||||||
gst_ogg_stream_clear (&pad->map);
|
if (pad->map.caps) {
|
||||||
|
gst_caps_unref (pad->map.caps);
|
||||||
|
pad->map.caps = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pad->map.taglist) {
|
||||||
|
gst_tag_list_free (pad->map.taglist);
|
||||||
|
pad->map.taglist = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ogg_stream_reset (&pad->map.stream);
|
||||||
|
|
||||||
G_OBJECT_CLASS (gst_ogg_pad_parent_class)->dispose (object);
|
G_OBJECT_CLASS (gst_ogg_pad_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
|
@ -296,7 +296,8 @@ gst_ogg_mux_ogg_pad_destroy_notify (GstCollectData2 * data)
|
||||||
GstOggPadData *oggpad = (GstOggPadData *) data;
|
GstOggPadData *oggpad = (GstOggPadData *) data;
|
||||||
GstBuffer *buf;
|
GstBuffer *buf;
|
||||||
|
|
||||||
gst_ogg_stream_clear (&oggpad->map);
|
ogg_stream_clear (&oggpad->map.stream);
|
||||||
|
gst_caps_replace (&oggpad->map.caps, NULL);
|
||||||
|
|
||||||
if (oggpad->pagebuffers) {
|
if (oggpad->pagebuffers) {
|
||||||
while ((buf = g_queue_pop_head (oggpad->pagebuffers)) != NULL) {
|
while ((buf = g_queue_pop_head (oggpad->pagebuffers)) != NULL) {
|
||||||
|
@ -465,7 +466,6 @@ gst_ogg_mux_request_new_pad (GstElement * element,
|
||||||
sizeof (GstOggPadData), gst_ogg_mux_ogg_pad_destroy_notify, FALSE);
|
sizeof (GstOggPadData), gst_ogg_mux_ogg_pad_destroy_notify, FALSE);
|
||||||
ogg_mux->active_pads++;
|
ogg_mux->active_pads++;
|
||||||
|
|
||||||
gst_ogg_stream_clear (&oggpad->map);
|
|
||||||
oggpad->map.serialno = serial;
|
oggpad->map.serialno = serial;
|
||||||
oggpad->packetno = 0;
|
oggpad->packetno = 0;
|
||||||
oggpad->pageno = 0;
|
oggpad->pageno = 0;
|
||||||
|
@ -476,6 +476,8 @@ gst_ogg_mux_request_new_pad (GstElement * element,
|
||||||
oggpad->first_delta = FALSE;
|
oggpad->first_delta = FALSE;
|
||||||
oggpad->prev_delta = FALSE;
|
oggpad->prev_delta = FALSE;
|
||||||
oggpad->data_pushed = FALSE;
|
oggpad->data_pushed = FALSE;
|
||||||
|
oggpad->map.headers = NULL;
|
||||||
|
oggpad->map.queued = NULL;
|
||||||
oggpad->next_granule = 0;
|
oggpad->next_granule = 0;
|
||||||
oggpad->keyframe_granule = -1;
|
oggpad->keyframe_granule = -1;
|
||||||
|
|
||||||
|
|
|
@ -643,7 +643,6 @@ setup_vp8_mapper (GstOggStream * pad, ogg_packet * packet)
|
||||||
pad->granulerate_d = fps_d;
|
pad->granulerate_d = fps_d;
|
||||||
pad->n_header_packets = 2;
|
pad->n_header_packets = 2;
|
||||||
pad->frame_size = 1;
|
pad->frame_size = 1;
|
||||||
pad->granuleshift = 0;
|
|
||||||
|
|
||||||
pad->caps = gst_caps_new_simple ("video/x-vp8",
|
pad->caps = gst_caps_new_simple ("video/x-vp8",
|
||||||
"width", G_TYPE_INT, width,
|
"width", G_TYPE_INT, width,
|
||||||
|
@ -1208,7 +1207,7 @@ gst_ogg_map_add_fisbone (GstOggStream * pad, GstOggStream * skel_pad,
|
||||||
pad->granulerate_n = GST_READ_UINT64_LE (data);
|
pad->granulerate_n = GST_READ_UINT64_LE (data);
|
||||||
pad->granulerate_d = GST_READ_UINT64_LE (data + 8);
|
pad->granulerate_d = GST_READ_UINT64_LE (data + 8);
|
||||||
}
|
}
|
||||||
if (pad->granuleshift == -1) {
|
if (pad->granuleshift < 0) {
|
||||||
pad->granuleshift = GST_READ_UINT8 (data + 28);
|
pad->granuleshift = GST_READ_UINT8 (data + 28);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1480,7 +1479,6 @@ setup_ogmaudio_mapper (GstOggStream * pad, ogg_packet * packet)
|
||||||
|
|
||||||
pad->granulerate_n = GST_READ_UINT64_LE (data + 25);
|
pad->granulerate_n = GST_READ_UINT64_LE (data + 25);
|
||||||
pad->granulerate_d = 1;
|
pad->granulerate_d = 1;
|
||||||
pad->granuleshift = 0;
|
|
||||||
|
|
||||||
fourcc = GST_READ_UINT32_LE (data + 9);
|
fourcc = GST_READ_UINT32_LE (data + 9);
|
||||||
GST_DEBUG ("fourcc: %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc));
|
GST_DEBUG ("fourcc: %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc));
|
||||||
|
@ -1524,7 +1522,6 @@ setup_ogmvideo_mapper (GstOggStream * pad, ogg_packet * packet)
|
||||||
GST_WARNING ("timeunit is out of range");
|
GST_WARNING ("timeunit is out of range");
|
||||||
}
|
}
|
||||||
pad->granulerate_d = (gint) CLAMP (time_unit, G_MININT, G_MAXINT);
|
pad->granulerate_d = (gint) CLAMP (time_unit, G_MININT, G_MAXINT);
|
||||||
pad->granuleshift = 0;
|
|
||||||
|
|
||||||
GST_LOG ("fps = %d/%d = %.3f",
|
GST_LOG ("fps = %d/%d = %.3f",
|
||||||
pad->granulerate_n, pad->granulerate_d,
|
pad->granulerate_n, pad->granulerate_d,
|
||||||
|
@ -1569,7 +1566,6 @@ setup_ogmtext_mapper (GstOggStream * pad, ogg_packet * packet)
|
||||||
GST_WARNING ("timeunit is out of range");
|
GST_WARNING ("timeunit is out of range");
|
||||||
}
|
}
|
||||||
pad->granulerate_d = (gint) CLAMP (time_unit, G_MININT, G_MAXINT);
|
pad->granulerate_d = (gint) CLAMP (time_unit, G_MININT, G_MAXINT);
|
||||||
pad->granuleshift = 0;
|
|
||||||
|
|
||||||
GST_LOG ("fps = %d/%d = %.3f",
|
GST_LOG ("fps = %d/%d = %.3f",
|
||||||
pad->granulerate_n, pad->granulerate_d,
|
pad->granulerate_n, pad->granulerate_d,
|
||||||
|
@ -1618,7 +1614,6 @@ setup_pcm_mapper (GstOggStream * pad, ogg_packet * packet)
|
||||||
|
|
||||||
pad->granulerate_n = GST_READ_UINT32_LE (data + 16);
|
pad->granulerate_n = GST_READ_UINT32_LE (data + 16);
|
||||||
pad->granulerate_d = 1;
|
pad->granulerate_d = 1;
|
||||||
pad->granuleshift = 0;
|
|
||||||
GST_LOG ("sample rate: %d", pad->granulerate_n);
|
GST_LOG ("sample rate: %d", pad->granulerate_n);
|
||||||
|
|
||||||
format = GST_READ_UINT32_LE (data + 12);
|
format = GST_READ_UINT32_LE (data + 12);
|
||||||
|
@ -2237,12 +2232,10 @@ gst_ogg_stream_setup_map (GstOggStream * pad, ogg_packet * packet)
|
||||||
|
|
||||||
GST_DEBUG ("found mapper for '%s'", mappers[i].id);
|
GST_DEBUG ("found mapper for '%s'", mappers[i].id);
|
||||||
|
|
||||||
if (mappers[i].setup_func) {
|
if (mappers[i].setup_func)
|
||||||
gst_ogg_stream_clear (pad);
|
|
||||||
ret = mappers[i].setup_func (pad, packet);
|
ret = mappers[i].setup_func (pad, packet);
|
||||||
} else {
|
else
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
GST_DEBUG ("got stream type %" GST_PTR_FORMAT, pad->caps);
|
GST_DEBUG ("got stream type %" GST_PTR_FORMAT, pad->caps);
|
||||||
|
@ -2312,39 +2305,3 @@ gst_ogg_stream_setup_map_from_caps_headers (GstOggStream * pad,
|
||||||
GST_INFO ("Found headers on caps, using those to determine type");
|
GST_INFO ("Found headers on caps, using those to determine type");
|
||||||
return gst_ogg_stream_setup_map (pad, &packet);
|
return gst_ogg_stream_setup_map (pad, &packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_ogg_packet_free (ogg_packet * packet)
|
|
||||||
{
|
|
||||||
g_free (packet->packet);
|
|
||||||
g_slice_free (ogg_packet, packet);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
gst_ogg_stream_clear (GstOggStream * pad)
|
|
||||||
{
|
|
||||||
g_list_foreach (pad->headers, (GFunc) _ogg_packet_free, NULL);
|
|
||||||
g_list_free (pad->headers);
|
|
||||||
pad->headers = NULL;
|
|
||||||
g_list_foreach (pad->queued, (GFunc) _ogg_packet_free, NULL);
|
|
||||||
g_list_free (pad->queued);
|
|
||||||
pad->queued = NULL;
|
|
||||||
|
|
||||||
g_free (pad->index);
|
|
||||||
pad->index = NULL;
|
|
||||||
|
|
||||||
if (pad->caps) {
|
|
||||||
gst_caps_unref (pad->caps);
|
|
||||||
pad->caps = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pad->taglist) {
|
|
||||||
gst_tag_list_free (pad->taglist);
|
|
||||||
pad->taglist = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ogg_stream_reset (&pad->stream);
|
|
||||||
|
|
||||||
memset (pad, 0, sizeof (GstOggStream));
|
|
||||||
pad->granuleshift = -1;
|
|
||||||
}
|
|
||||||
|
|
|
@ -108,8 +108,6 @@ struct _GstOggStream
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void gst_ogg_stream_clear (GstOggStream *pad);
|
|
||||||
|
|
||||||
gboolean gst_ogg_stream_setup_map (GstOggStream * pad, ogg_packet *packet);
|
gboolean gst_ogg_stream_setup_map (GstOggStream * pad, ogg_packet *packet);
|
||||||
gboolean gst_ogg_stream_setup_map_from_caps_headers (GstOggStream * pad,
|
gboolean gst_ogg_stream_setup_map_from_caps_headers (GstOggStream * pad,
|
||||||
const GstCaps * caps);
|
const GstCaps * caps);
|
||||||
|
|
Loading…
Reference in a new issue