Lines Matching refs:parse

88 static GstFlowReturn vorbis_parse_parse_packet (GstVorbisParse * parse,
110 gst_vorbis_parse_init (GstVorbisParse * parse) in gst_vorbis_parse_init() argument
112 parse->sinkpad = in gst_vorbis_parse_init()
114 gst_pad_set_chain_function (parse->sinkpad, in gst_vorbis_parse_init()
116 gst_pad_set_event_function (parse->sinkpad, in gst_vorbis_parse_init()
118 gst_element_add_pad (GST_ELEMENT (parse), parse->sinkpad); in gst_vorbis_parse_init()
120 parse->srcpad = in gst_vorbis_parse_init()
122 gst_pad_set_query_function (parse->srcpad, in gst_vorbis_parse_init()
124 gst_element_add_pad (GST_ELEMENT (parse), parse->srcpad); in gst_vorbis_parse_init()
128 vorbis_parse_set_header_on_caps (GstVorbisParse * parse, GstCaps * caps) in vorbis_parse_set_header_on_caps() argument
135 g_assert (parse); in vorbis_parse_set_header_on_caps()
136 g_assert (parse->streamheader); in vorbis_parse_set_header_on_caps()
137 g_assert (parse->streamheader->next); in vorbis_parse_set_header_on_caps()
138 g_assert (parse->streamheader->next->next); in vorbis_parse_set_header_on_caps()
139 buf1 = parse->streamheader->data; in vorbis_parse_set_header_on_caps()
141 buf2 = parse->streamheader->next->data; in vorbis_parse_set_header_on_caps()
143 buf3 = parse->streamheader->next->next->data; in vorbis_parse_set_header_on_caps()
171 vorbis_parse_drain_event_queue (GstVorbisParse * parse) in vorbis_parse_drain_event_queue() argument
173 while (parse->event_queue->length) { in vorbis_parse_drain_event_queue()
176 event = GST_EVENT_CAST (g_queue_pop_head (parse->event_queue)); in vorbis_parse_drain_event_queue()
177 gst_pad_event_default (parse->sinkpad, GST_OBJECT_CAST (parse), event); in vorbis_parse_drain_event_queue()
182 vorbis_parse_have_header_packet (GstVorbisParse * parse, guint8 hdr_id) in vorbis_parse_have_header_packet() argument
187 for (l = parse->streamheader; l != NULL; l = l->next) { in vorbis_parse_have_header_packet()
196 vorbis_parse_push_headers (GstVorbisParse * parse) in vorbis_parse_push_headers() argument
207 if (!vorbis_parse_have_header_packet (parse, 1)) in vorbis_parse_push_headers()
211 if (!vorbis_parse_have_header_packet (parse, 3)) in vorbis_parse_push_headers()
215 if (!vorbis_parse_have_header_packet (parse, 5)) in vorbis_parse_push_headers()
218 outbuf = GST_BUFFER_CAST (parse->streamheader->data); in vorbis_parse_push_headers()
226 vorbis_synthesis_headerin (&parse->vi, &parse->vc, &packet); in vorbis_parse_push_headers()
228 parse->sample_rate = parse->vi.rate; in vorbis_parse_push_headers()
229 parse->channels = parse->vi.channels; in vorbis_parse_push_headers()
232 outbuf = GST_BUFFER_CAST (parse->streamheader->next->data); in vorbis_parse_push_headers()
240 vorbis_synthesis_headerin (&parse->vi, &parse->vc, &packet); in vorbis_parse_push_headers()
244 outbuf = GST_BUFFER_CAST (parse->streamheader->next->next->data); in vorbis_parse_push_headers()
252 vorbis_synthesis_headerin (&parse->vi, &parse->vc, &packet); in vorbis_parse_push_headers()
258 "rate", G_TYPE_INT, parse->sample_rate, in vorbis_parse_push_headers()
259 "channels", G_TYPE_INT, parse->channels, NULL); in vorbis_parse_push_headers()
260 vorbis_parse_set_header_on_caps (parse, caps); in vorbis_parse_push_headers()
261 GST_DEBUG_OBJECT (parse, "here are the caps: %" GST_PTR_FORMAT, caps); in vorbis_parse_push_headers()
262 gst_pad_set_caps (parse->srcpad, caps); in vorbis_parse_push_headers()
266 vorbis_parse_drain_event_queue (parse); in vorbis_parse_push_headers()
269 gst_pad_push (parse->srcpad, outbuf1); in vorbis_parse_push_headers()
270 gst_pad_push (parse->srcpad, outbuf2); in vorbis_parse_push_headers()
271 gst_pad_push (parse->srcpad, outbuf3); in vorbis_parse_push_headers()
273 g_list_free (parse->streamheader); in vorbis_parse_push_headers()
274 parse->streamheader = NULL; in vorbis_parse_push_headers()
280 GST_ELEMENT_ERROR (parse, STREAM, DECODE, (NULL), in vorbis_parse_push_headers()
287 vorbis_parse_clear_queue (GstVorbisParse * parse) in vorbis_parse_clear_queue() argument
289 while (parse->buffer_queue->length) { in vorbis_parse_clear_queue()
292 buf = GST_BUFFER_CAST (g_queue_pop_head (parse->buffer_queue)); in vorbis_parse_clear_queue()
295 while (parse->event_queue->length) { in vorbis_parse_clear_queue()
298 event = GST_EVENT_CAST (g_queue_pop_head (parse->event_queue)); in vorbis_parse_clear_queue()
304 vorbis_parse_push_buffer (GstVorbisParse * parse, GstBuffer * buf, in vorbis_parse_push_buffer() argument
313 GST_BUFFER_DURATION (buf) = samples * GST_SECOND / parse->sample_rate; in vorbis_parse_push_buffer()
314 GST_BUFFER_OFFSET (buf) = granulepos * GST_SECOND / parse->sample_rate; in vorbis_parse_push_buffer()
318 return gst_pad_push (parse->srcpad, buf); in vorbis_parse_push_buffer()
322 vorbis_parse_drain_queue_prematurely (GstVorbisParse * parse) in vorbis_parse_drain_queue_prematurely() argument
325 gint64 granulepos = MAX (parse->prev_granulepos, 0); in vorbis_parse_drain_queue_prematurely()
334 vorbis_parse_drain_event_queue (parse); in vorbis_parse_drain_queue_prematurely()
336 while (!g_queue_is_empty (parse->buffer_queue)) { in vorbis_parse_drain_queue_prematurely()
339 buf = GST_BUFFER_CAST (g_queue_pop_head (parse->buffer_queue)); in vorbis_parse_drain_queue_prematurely()
342 ret = vorbis_parse_push_buffer (parse, buf, granulepos); in vorbis_parse_drain_queue_prematurely()
348 parse->prev_granulepos = granulepos; in vorbis_parse_drain_queue_prematurely()
355 vorbis_parse_drain_queue (GstVorbisParse * parse, gint64 granulepos) in vorbis_parse_drain_queue() argument
362 for (walk = parse->buffer_queue->head; walk; walk = walk->next) in vorbis_parse_drain_queue()
365 if (parse->prev_granulepos != -1) in vorbis_parse_drain_queue()
366 cur = MAX (cur, parse->prev_granulepos); in vorbis_parse_drain_queue()
368 while (!g_queue_is_empty (parse->buffer_queue)) { in vorbis_parse_drain_queue()
371 buf = GST_BUFFER_CAST (g_queue_pop_head (parse->buffer_queue)); in vorbis_parse_drain_queue()
376 ret = vorbis_parse_push_buffer (parse, buf, gp); in vorbis_parse_drain_queue()
382 parse->prev_granulepos = granulepos; in vorbis_parse_drain_queue()
389 vorbis_parse_queue_buffer (GstVorbisParse * parse, GstBuffer * buf) in vorbis_parse_queue_buffer() argument
403 packet.packetno = parse->packetno + parse->buffer_queue->length; in vorbis_parse_queue_buffer()
406 blocksize = vorbis_packet_blocksize (&parse->vi, &packet); in vorbis_parse_queue_buffer()
411 if (parse->prev_blocksize < 0) in vorbis_parse_queue_buffer()
414 GST_BUFFER_OFFSET (buf) = (blocksize + parse->prev_blocksize) / 4; in vorbis_parse_queue_buffer()
416 parse->prev_blocksize = blocksize; in vorbis_parse_queue_buffer()
418 g_queue_push_tail (parse->buffer_queue, buf); in vorbis_parse_queue_buffer()
421 ret = vorbis_parse_drain_queue (parse, GST_BUFFER_OFFSET_END (buf)); in vorbis_parse_queue_buffer()
427 vorbis_parse_parse_packet (GstVorbisParse * parse, GstBuffer * buf) in vorbis_parse_parse_packet() argument
433 parse->packetno++; in vorbis_parse_parse_packet()
444 if (!parse->streamheader_sent) { in vorbis_parse_parse_packet()
447 parse->streamheader = g_list_append (parse->streamheader, buf); in vorbis_parse_parse_packet()
452 if (!parse->streamheader_sent) { in vorbis_parse_parse_packet()
453 if (!vorbis_parse_push_headers (parse)) { in vorbis_parse_parse_packet()
457 parse->streamheader_sent = TRUE; in vorbis_parse_parse_packet()
459 ret = vorbis_parse_queue_buffer (parse, buf); in vorbis_parse_parse_packet()
471 GstVorbisParse *parse; in vorbis_parse_chain() local
473 parse = GST_VORBIS_PARSE (parent); in vorbis_parse_chain()
474 klass = GST_VORBIS_PARSE_CLASS (G_OBJECT_GET_CLASS (parse)); in vorbis_parse_chain()
478 return klass->parse_packet (parse, buffer); in vorbis_parse_chain()
482 vorbis_parse_queue_event (GstVorbisParse * parse, GstEvent * event) in vorbis_parse_queue_event() argument
486 g_queue_push_tail (parse->event_queue, event); in vorbis_parse_queue_event()
495 GstVorbisParse *parse; in vorbis_parse_sink_event() local
497 parse = GST_VORBIS_PARSE (parent); in vorbis_parse_sink_event()
501 vorbis_parse_clear_queue (parse); in vorbis_parse_sink_event()
502 parse->prev_granulepos = -1; in vorbis_parse_sink_event()
503 parse->prev_blocksize = -1; in vorbis_parse_sink_event()
507 vorbis_parse_drain_queue_prematurely (parse); in vorbis_parse_sink_event()
511 if (!parse->streamheader_sent && GST_EVENT_IS_SERIALIZED (event) in vorbis_parse_sink_event()
513 ret = vorbis_parse_queue_event (parse, event); in vorbis_parse_sink_event()
528 GstVorbisParse *parse; in vorbis_parse_convert() local
531 parse = GST_VORBIS_PARSE (GST_PAD_PARENT (pad)); in vorbis_parse_convert()
536 if (parse->packetno < 4) in vorbis_parse_convert()
544 if (parse->sinkpad == pad && in vorbis_parse_convert()
552 scale = sizeof (float) * parse->vi.channels; in vorbis_parse_convert()
555 scale * gst_util_uint64_scale_int (src_value, parse->vi.rate, in vorbis_parse_convert()
565 *dest_value = src_value * sizeof (float) * parse->vi.channels; in vorbis_parse_convert()
569 gst_util_uint64_scale_int (src_value, GST_SECOND, parse->vi.rate); in vorbis_parse_convert()
578 *dest_value = src_value / (sizeof (float) * parse->vi.channels); in vorbis_parse_convert()
582 parse->vi.rate * sizeof (float) * parse->vi.channels); in vorbis_parse_convert()
599 GstVorbisParse *parse; in vorbis_parse_src_query() local
602 parse = GST_VORBIS_PARSE (parent); in vorbis_parse_src_query()
610 granulepos = parse->prev_granulepos; in vorbis_parse_src_query()
626 GST_LOG_OBJECT (parse, "query %p: peer returned granulepos: %" in vorbis_parse_src_query()
636 if (!gst_pad_is_linked (parse->sinkpad)) { in vorbis_parse_src_query()
637 GST_WARNING_OBJECT (parse, "sink pad %" GST_PTR_FORMAT " is not linked", in vorbis_parse_src_query()
638 parse->sinkpad); in vorbis_parse_src_query()
641 if (!(res = gst_pad_peer_query (parse->sinkpad, query))) in vorbis_parse_src_query()
666 GST_WARNING_OBJECT (parse, "error handling query"); in vorbis_parse_src_query()
674 GstVorbisParse *parse = GST_VORBIS_PARSE (element); in vorbis_parse_change_state() local
679 vorbis_info_init (&parse->vi); in vorbis_parse_change_state()
680 vorbis_comment_init (&parse->vc); in vorbis_parse_change_state()
681 parse->prev_granulepos = -1; in vorbis_parse_change_state()
682 parse->prev_blocksize = -1; in vorbis_parse_change_state()
683 parse->packetno = 0; in vorbis_parse_change_state()
684 parse->streamheader_sent = FALSE; in vorbis_parse_change_state()
685 parse->buffer_queue = g_queue_new (); in vorbis_parse_change_state()
686 parse->event_queue = g_queue_new (); in vorbis_parse_change_state()
696 vorbis_info_clear (&parse->vi); in vorbis_parse_change_state()
697 vorbis_comment_clear (&parse->vc); in vorbis_parse_change_state()
698 vorbis_parse_clear_queue (parse); in vorbis_parse_change_state()
699 g_queue_free (parse->buffer_queue); in vorbis_parse_change_state()
700 parse->buffer_queue = NULL; in vorbis_parse_change_state()
701 g_queue_free (parse->event_queue); in vorbis_parse_change_state()
702 parse->event_queue = NULL; in vorbis_parse_change_state()