-gboolean
-gst_ogg_map_add_fisbone (GstOggStream * pad,
- const guint8 * data, guint size, GstClockTime * p_start_time,
- guint32 * p_preroll)
-{
- GstClockTime start_time;
- gint64 start_granule;
- guint32 preroll;
-
- if (size < SKELETON_FISBONE_MIN_SIZE || memcmp (data, "fisbone\0", 8) != 0) {
- GST_WARNING ("invalid fisbone packet, ignoring");
- return FALSE;
- }
-
- if (pad->have_fisbone) {
- GST_DEBUG ("already have fisbone, ignoring second one");
- return FALSE;
- }
-
- /* skip "fisbone\0" + headers offset + serialno + num headers */
- data += 8 + 4 + 4 + 4;
-
- pad->have_fisbone = TRUE;
-
- /* we just overwrite whatever was set before by the format-specific setup */
- pad->granulerate_n = GST_READ_UINT64_LE (data);
- pad->granulerate_d = GST_READ_UINT64_LE (data + 8);
-
- start_granule = GST_READ_UINT64_LE (data + 16);
- preroll = GST_READ_UINT32_LE (data + 24);
- pad->granuleshift = GST_READ_UINT8 (data + 28);
-
- start_time = granulepos_to_granule_default (pad, start_granule);
-
- if (p_start_time)
- *p_start_time = start_time;
-
- if (p_preroll)
- *p_preroll = preroll;
-
- return TRUE;
-}
-