pad->have_type = FALSE;
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
pad->chain = 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 */
g_list_foreach (pad->continued, (GFunc) gst_ogg_page_free, NULL);
g_list_free (pad->continued);
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);
}
GstOggPadData *oggpad = (GstOggPadData *) data;
GstBuffer *buf;
- gst_ogg_stream_clear (&oggpad->map);
+ ogg_stream_clear (&oggpad->map.stream);
+ gst_caps_replace (&oggpad->map.caps, NULL);
if (oggpad->pagebuffers) {
while ((buf = g_queue_pop_head (oggpad->pagebuffers)) != NULL) {
sizeof (GstOggPadData), gst_ogg_mux_ogg_pad_destroy_notify, FALSE);
ogg_mux->active_pads++;
- gst_ogg_stream_clear (&oggpad->map);
oggpad->map.serialno = serial;
oggpad->packetno = 0;
oggpad->pageno = 0;
oggpad->first_delta = FALSE;
oggpad->prev_delta = FALSE;
oggpad->data_pushed = FALSE;
+ oggpad->map.headers = NULL;
+ oggpad->map.queued = NULL;
oggpad->next_granule = 0;
oggpad->keyframe_granule = -1;
pad->granulerate_d = fps_d;
pad->n_header_packets = 2;
pad->frame_size = 1;
- pad->granuleshift = 0;
pad->caps = gst_caps_new_simple ("video/x-vp8",
"width", G_TYPE_INT, width,
pad->granulerate_n = GST_READ_UINT64_LE (data);
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->granulerate_n = GST_READ_UINT64_LE (data + 25);
pad->granulerate_d = 1;
- pad->granuleshift = 0;
fourcc = GST_READ_UINT32_LE (data + 9);
GST_DEBUG ("fourcc: %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc));
GST_WARNING ("timeunit is out of range");
}
pad->granulerate_d = (gint) CLAMP (time_unit, G_MININT, G_MAXINT);
- pad->granuleshift = 0;
GST_LOG ("fps = %d/%d = %.3f",
pad->granulerate_n, pad->granulerate_d,
GST_WARNING ("timeunit is out of range");
}
pad->granulerate_d = (gint) CLAMP (time_unit, G_MININT, G_MAXINT);
- pad->granuleshift = 0;
GST_LOG ("fps = %d/%d = %.3f",
pad->granulerate_n, pad->granulerate_d,
pad->granulerate_n = GST_READ_UINT32_LE (data + 16);
pad->granulerate_d = 1;
- pad->granuleshift = 0;
GST_LOG ("sample rate: %d", pad->granulerate_n);
format = GST_READ_UINT32_LE (data + 12);
GST_DEBUG ("found mapper for '%s'", mappers[i].id);
- if (mappers[i].setup_func) {
- gst_ogg_stream_clear (pad);
+ if (mappers[i].setup_func)
ret = mappers[i].setup_func (pad, packet);
- } else {
+ else
continue;
- }
if (ret) {
GST_DEBUG ("got stream type %" GST_PTR_FORMAT, pad->caps);
GST_INFO ("Found headers on caps, using those to determine type");
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;
-}