static GstFlowReturn vorbis_parse_parse_packet (GstVorbisParse * parse, GstBuffer * buf) { GstFlowReturn ret; GstMapInfo map; gboolean have_header; parse->packetno++; have_header = FALSE; gst_buffer_map (buf, &map, GST_MAP_READ); if (map.size >= 1) { if (map.data[0] & 1) have_header = TRUE; } gst_buffer_unmap (buf, &map); if (have_header) { if (!parse->streamheader_sent) { /* we need to collect the headers still */ /* so put it on the streamheader list and return */ parse->streamheader = g_list_append (parse->streamheader, buf); } ret = GST_FLOW_OK; } else { /* data packet, push the headers we collected before */ if (!parse->streamheader_sent) { vorbis_parse_push_headers (parse); parse->streamheader_sent = TRUE; } ret = vorbis_parse_queue_buffer (parse, buf); } return ret; }
static GstFlowReturn vorbis_parse_parse_packet (GstVorbisParse * parse, GstBuffer * buf) { GstFlowReturn ret; parse->packetno++; if (parse->packetno <= 3) { /* if 1 <= packetno <= 3, it's streamheader, * so put it on the streamheader list and return */ parse->streamheader = g_list_append (parse->streamheader, buf); ret = GST_FLOW_OK; } else { if (!parse->streamheader_sent) vorbis_parse_push_headers (parse); ret = vorbis_parse_queue_buffer (parse, buf); } return ret; }
static GstFlowReturn vorbis_parse_parse_packet (GstVorbisParse * parse, GstBuffer * buf) { GstFlowReturn ret; guint8 *data; guint size; gboolean have_header; data = GST_BUFFER_DATA (buf); size = GST_BUFFER_SIZE (buf); parse->packetno++; have_header = FALSE; if (size >= 1) { if (data[0] >= 0x01 && data[0] <= 0x05) have_header = TRUE; } if (have_header) { if (!parse->streamheader_sent) { /* we need to collect the headers still */ /* so put it on the streamheader list and return */ parse->streamheader = g_list_append (parse->streamheader, buf); } ret = GST_FLOW_OK; } else { /* data packet, push the headers we collected before */ if (!parse->streamheader_sent) { vorbis_parse_push_headers (parse); parse->streamheader_sent = TRUE; } ret = vorbis_parse_queue_buffer (parse, buf); } return ret; }