• Home
  • Raw
  • Download

Lines Matching refs:base

80 static void mpegts_base_deactivate_program (MpegTSBase * base,
91 static gboolean mpegts_base_default_sink_query (MpegTSBase * base,
95 static gboolean mpegts_base_get_tags_from_eit (MpegTSBase * base,
97 static gboolean mpegts_base_parse_atsc_mgt (MpegTSBase * base,
100 MpegTSBase * base);
122 mpegts_base_can_remove_program (MpegTSBase * base, MpegTSBaseProgram * program) in mpegts_base_can_remove_program() argument
174 MpegTSBase *base = GST_MPEGTS_BASE (object); in mpegts_base_set_property() local
178 base->parse_private_sections = g_value_get_boolean (value); in mpegts_base_set_property()
181 base->ignore_pcr = g_value_get_boolean (value); in mpegts_base_set_property()
192 MpegTSBase *base = GST_MPEGTS_BASE (object); in mpegts_base_get_property() local
196 g_value_set_boolean (value, base->parse_private_sections); in mpegts_base_get_property()
199 g_value_set_boolean (value, base->ignore_pcr); in mpegts_base_get_property()
208 mpegts_base_reset (MpegTSBase * base) in mpegts_base_reset() argument
210 MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_reset()
212 mpegts_packetizer_clear (base->packetizer); in mpegts_base_reset()
213 memset (base->is_pes, 0, 1024); in mpegts_base_reset()
214 memset (base->known_psi, 0, 1024); in mpegts_base_reset()
220 MPEGTS_BIT_SET (base->known_psi, 0); in mpegts_base_reset()
221 MPEGTS_BIT_SET (base->known_psi, 2); in mpegts_base_reset()
222 MPEGTS_BIT_SET (base->known_psi, 3); in mpegts_base_reset()
224 MPEGTS_BIT_SET (base->known_psi, 0x14); in mpegts_base_reset()
226 MPEGTS_BIT_SET (base->known_psi, 0x15); in mpegts_base_reset()
229 MPEGTS_BIT_SET (base->known_psi, 0x1ffb); in mpegts_base_reset()
231 if (base->pat) { in mpegts_base_reset()
232 g_ptr_array_unref (base->pat); in mpegts_base_reset()
233 base->pat = NULL; in mpegts_base_reset()
236 gst_segment_init (&base->segment, GST_FORMAT_UNDEFINED); in mpegts_base_reset()
237 gst_segment_init (&base->out_segment, GST_FORMAT_UNDEFINED); in mpegts_base_reset()
238 base->last_seek_seqnum = GST_SEQNUM_INVALID; in mpegts_base_reset()
240 base->mode = BASE_MODE_STREAMING; in mpegts_base_reset()
241 base->seen_pat = FALSE; in mpegts_base_reset()
242 base->seek_offset = -1; in mpegts_base_reset()
244 g_ptr_array_foreach (base->programs, (GFunc) remove_each_program, base); in mpegts_base_reset()
245 g_ptr_array_remove_range (base->programs, 0, base->programs->len); in mpegts_base_reset()
247 base->streams_aware = GST_OBJECT_PARENT (base) in mpegts_base_reset()
248 && GST_OBJECT_FLAG_IS_SET (GST_OBJECT_PARENT (base), in mpegts_base_reset()
250 GST_DEBUG_OBJECT (base, "Streams aware : %d", base->streams_aware); in mpegts_base_reset()
252 gst_event_replace (&base->seek_event, NULL); in mpegts_base_reset()
255 klass->reset (base); in mpegts_base_reset()
259 mpegts_base_init (MpegTSBase * base) in mpegts_base_init() argument
261 base->sinkpad = gst_pad_new_from_static_template (&sink_template, "sink"); in mpegts_base_init()
262 gst_pad_set_activate_function (base->sinkpad, mpegts_base_sink_activate); in mpegts_base_init()
263 gst_pad_set_activatemode_function (base->sinkpad, in mpegts_base_init()
265 gst_pad_set_chain_function (base->sinkpad, mpegts_base_chain); in mpegts_base_init()
266 gst_pad_set_event_function (base->sinkpad, mpegts_base_sink_event); in mpegts_base_init()
267 gst_pad_set_query_function (base->sinkpad, mpegts_base_sink_query); in mpegts_base_init()
268 gst_element_add_pad (GST_ELEMENT (base), base->sinkpad); in mpegts_base_init()
270 base->disposed = FALSE; in mpegts_base_init()
271 base->packetizer = mpegts_packetizer_new (); in mpegts_base_init()
272 base->programs = in mpegts_base_init()
275 base->parse_private_sections = FALSE; in mpegts_base_init()
276 base->is_pes = g_new0 (guint8, 1024); in mpegts_base_init()
277 base->known_psi = g_new0 (guint8, 1024); in mpegts_base_init()
278 base->program_size = sizeof (MpegTSBaseProgram); in mpegts_base_init()
279 base->stream_size = sizeof (MpegTSBaseStream); in mpegts_base_init()
281 base->push_data = TRUE; in mpegts_base_init()
282 base->push_section = TRUE; in mpegts_base_init()
283 base->ignore_pcr = DEFAULT_IGNORE_PCR; in mpegts_base_init()
285 mpegts_base_reset (base); in mpegts_base_init()
291 MpegTSBase *base = GST_MPEGTS_BASE (object); in mpegts_base_dispose() local
293 if (!base->disposed) { in mpegts_base_dispose()
294 g_object_unref (base->packetizer); in mpegts_base_dispose()
295 base->disposed = TRUE; in mpegts_base_dispose()
296 g_free (base->known_psi); in mpegts_base_dispose()
297 g_free (base->is_pes); in mpegts_base_dispose()
307 MpegTSBase *base = GST_MPEGTS_BASE (object); in mpegts_base_finalize() local
309 if (base->pat) { in mpegts_base_finalize()
310 g_ptr_array_unref (base->pat); in mpegts_base_finalize()
311 base->pat = NULL; in mpegts_base_finalize()
313 g_ptr_array_free (base->programs, TRUE); in mpegts_base_finalize()
315 gst_event_replace (&base->seek_event, NULL); in mpegts_base_finalize()
366 mpegts_pid_in_active_programs (MpegTSBase * base, guint16 pid) in mpegts_pid_in_active_programs() argument
372 g_ptr_array_foreach (base->programs, (GFunc) foreach_pid_in_program, &lookup); in mpegts_pid_in_active_programs()
429 mpegts_base_new_program (MpegTSBase * base, in mpegts_base_new_program() argument
435 GST_DEBUG_OBJECT (base, "program_number : %d, pmt_pid : 0x%04x", in mpegts_base_new_program()
438 program = g_malloc0 (base->program_size); in mpegts_base_new_program()
445 upstream_id = _get_upstream_id ((GstElement *) base, base->sinkpad); in mpegts_base_new_program()
455 mpegts_base_add_program (MpegTSBase * base, in mpegts_base_add_program() argument
460 GST_DEBUG_OBJECT (base, "program_number : %d, pmt_pid : 0x%04x", in mpegts_base_add_program()
463 program = mpegts_base_new_program (base, program_number, pmt_pid); in mpegts_base_add_program()
466 if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->known_psi, pmt_pid))) { in mpegts_base_add_program()
470 MPEGTS_BIT_SET (base->known_psi, pmt_pid); in mpegts_base_add_program()
473 if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->is_pes, pmt_pid))) { in mpegts_base_add_program()
475 MPEGTS_BIT_UNSET (base->is_pes, pmt_pid); in mpegts_base_add_program()
479 g_ptr_array_add (base->programs, program); in mpegts_base_add_program()
485 mpegts_base_get_program (MpegTSBase * base, gint program_number) in mpegts_base_get_program() argument
489 for (i = 0; i < base->programs->len; i++) { in mpegts_base_get_program()
490 MpegTSBaseProgram *program = g_ptr_array_index (base->programs, i); in mpegts_base_get_program()
498 mpegts_base_steal_program (MpegTSBase * base, gint program_number) in mpegts_base_steal_program() argument
502 for (i = 0; i < base->programs->len; i++) { in mpegts_base_steal_program()
503 MpegTSBaseProgram *program = g_ptr_array_index (base->programs, i); in mpegts_base_steal_program()
506 return g_ptr_array_steal_index (base->programs, i); in mpegts_base_steal_program()
509 g_ptr_array_remove_index (base->programs, i); in mpegts_base_steal_program()
561 mpegts_base_deactivate_and_free_program (MpegTSBase * base, in mpegts_base_deactivate_and_free_program() argument
564 GST_DEBUG_OBJECT (base, "program_number : %d", program->program_number); in mpegts_base_deactivate_and_free_program()
566 mpegts_base_deactivate_program (base, program); in mpegts_base_deactivate_and_free_program()
571 mpegts_base_remove_program (MpegTSBase * base, MpegTSBaseProgram * program) in mpegts_base_remove_program() argument
573 GST_DEBUG_OBJECT (base, "program_number : %d", program->program_number); in mpegts_base_remove_program()
575 g_ptr_array_remove (base->programs, program); in mpegts_base_remove_program()
618 mpegts_base_program_add_stream (MpegTSBase * base, in mpegts_base_program_add_stream() argument
622 MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_program_add_stream()
636 bstream = g_malloc0 (base->stream_size); in mpegts_base_program_add_stream()
657 if (klass->stream_added (base, bstream, program)) { in mpegts_base_program_add_stream()
668 mpegts_base_program_remove_stream (MpegTSBase * base, in mpegts_base_program_remove_stream() argument
682 klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_program_remove_stream()
686 klass->stream_removed (base, stream); in mpegts_base_program_remove_stream()
721 mpegts_base_update_program (MpegTSBase * base, MpegTSBaseProgram * program, in mpegts_base_update_program() argument
724 MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_update_program()
755 mpegts_base_program_add_stream (base, program, stream->pid, in mpegts_base_update_program()
761 klass->update_program (base, program); in mpegts_base_update_program()
772 mpegts_base_program_remove_stream (base, program, stream->pid); in mpegts_base_update_program()
817 mpegts_base_is_same_program (MpegTSBase * base, MpegTSBaseProgram * oldprogram, in mpegts_base_is_same_program() argument
830 if (!base->ignore_pcr && oldprogram->pcr_pid != new_pmt->pcr_pid) { in mpegts_base_is_same_program()
887 mpegts_base_is_program_update (MpegTSBase * base, in mpegts_base_is_program_update() argument
933 mpegts_base_deactivate_program (MpegTSBase * base, MpegTSBaseProgram * program) in mpegts_base_deactivate_program() argument
936 MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_deactivate_program()
941 GST_DEBUG_OBJECT (base, "Deactivating PMT"); in mpegts_base_deactivate_program()
949 mpegts_base_program_remove_stream (base, program, stream->pid); in mpegts_base_deactivate_program()
953 if (!mpegts_pid_in_active_programs (base, stream->pid)) { in mpegts_base_deactivate_program()
955 if (base->parse_private_sections) in mpegts_base_deactivate_program()
956 MPEGTS_BIT_UNSET (base->known_psi, stream->pid); in mpegts_base_deactivate_program()
958 MPEGTS_BIT_UNSET (base->is_pes, stream->pid); in mpegts_base_deactivate_program()
965 mpegts_base_program_remove_stream (base, program, program->pcr_pid); in mpegts_base_deactivate_program()
966 if (!mpegts_pid_in_active_programs (base, program->pcr_pid)) in mpegts_base_deactivate_program()
967 MPEGTS_BIT_UNSET (base->is_pes, program->pcr_pid); in mpegts_base_deactivate_program()
974 klass->program_stopped (base, program); in mpegts_base_deactivate_program()
978 mpegts_base_activate_program (MpegTSBase * base, MpegTSBaseProgram * program, in mpegts_base_activate_program() argument
997 if (!base->ignore_pcr) in mpegts_base_activate_program()
1011 if (base->parse_private_sections) in mpegts_base_activate_program()
1012 MPEGTS_BIT_SET (base->known_psi, stream->pid); in mpegts_base_activate_program()
1014 if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->is_pes, stream->pid))) in mpegts_base_activate_program()
1018 if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->known_psi, stream->pid))) { in mpegts_base_activate_program()
1022 MPEGTS_BIT_UNSET (base->known_psi, stream->pid); in mpegts_base_activate_program()
1024 MPEGTS_BIT_SET (base->is_pes, stream->pid); in mpegts_base_activate_program()
1026 mpegts_base_program_add_stream (base, program, in mpegts_base_activate_program()
1031 mpegts_base_program_add_stream (base, program, program->pcr_pid, -1, NULL); in mpegts_base_activate_program()
1032 MPEGTS_BIT_SET (base->is_pes, program->pcr_pid); in mpegts_base_activate_program()
1037 klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_activate_program()
1039 klass->program_started (base, program); in mpegts_base_activate_program()
1041 GST_DEBUG_OBJECT (base, "new pmt activated"); in mpegts_base_activate_program()
1046 mpegts_base_apply_pat (MpegTSBase * base, GstMpegtsSection * section) in mpegts_base_apply_pat() argument
1056 GST_INFO_OBJECT (base, "PAT"); in mpegts_base_apply_pat()
1066 old_pat = base->pat; in mpegts_base_apply_pat()
1067 base->pat = pat; in mpegts_base_apply_pat()
1076 program = mpegts_base_get_program (base, patp->program_number); in mpegts_base_apply_pat()
1081 if (MPEGTS_BIT_IS_SET (base->is_pes, patp->network_or_program_map_PID)) { in mpegts_base_apply_pat()
1084 mpegts_base_add_program (base, patp->program_number, in mpegts_base_apply_pat()
1094 MPEGTS_BIT_UNSET (base->known_psi, program->pmt_pid); in mpegts_base_apply_pat()
1098 if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->known_psi, program->pmt_pid))) in mpegts_base_apply_pat()
1102 MPEGTS_BIT_SET (base->known_psi, patp->network_or_program_map_PID); in mpegts_base_apply_pat()
1109 mpegts_base_add_program (base, patp->program_number, in mpegts_base_apply_pat()
1117 MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_apply_pat()
1124 program = mpegts_base_get_program (base, patp->program_number); in mpegts_base_apply_pat()
1126 GST_DEBUG_OBJECT (base, "broken PAT, duplicated entry for program %d", in mpegts_base_apply_pat()
1140 GST_INFO_OBJECT (base, "PAT removing program 0x%04x 0x%04x", in mpegts_base_apply_pat()
1143 if (klass->can_remove_program (base, program)) { in mpegts_base_apply_pat()
1144 mpegts_base_deactivate_program (base, program); in mpegts_base_apply_pat()
1145 mpegts_base_remove_program (base, program); in mpegts_base_apply_pat()
1149 mpegts_base_steal_program (base, patp->program_number); in mpegts_base_apply_pat()
1154 if (G_UNLIKELY (MPEGTS_BIT_IS_SET (base->known_psi, in mpegts_base_apply_pat()
1160 MPEGTS_BIT_SET (base->known_psi, patp->network_or_program_map_PID); in mpegts_base_apply_pat()
1161 mpegts_packetizer_remove_stream (base->packetizer, in mpegts_base_apply_pat()
1172 mpegts_base_apply_pmt (MpegTSBase * base, GstMpegtsSection * section) in mpegts_base_apply_pmt() argument
1186 if (G_UNLIKELY (base->seen_pat == FALSE)) { in mpegts_base_apply_pmt()
1189 mpegts_packetizer_remove_stream (base->packetizer, section->pid); in mpegts_base_apply_pmt()
1208 old_program = mpegts_base_get_program (base, program_number); in mpegts_base_apply_pmt()
1212 if (base->streams_aware in mpegts_base_apply_pmt()
1213 && mpegts_base_is_program_update (base, old_program, section->pid, pmt)) { in mpegts_base_apply_pmt()
1216 mpegts_base_update_program (base, old_program, section, pmt); in mpegts_base_apply_pmt()
1220 if (G_UNLIKELY (mpegts_base_is_same_program (base, old_program, section->pid, in mpegts_base_apply_pmt()
1226 MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_apply_pmt()
1227 old_program = mpegts_base_steal_program (base, program_number); in mpegts_base_apply_pmt()
1228 program = mpegts_base_new_program (base, program_number, section->pid); in mpegts_base_apply_pmt()
1234 if (klass->can_remove_program (base, old_program)) { in mpegts_base_apply_pmt()
1235 mpegts_base_deactivate_program (base, old_program); in mpegts_base_apply_pmt()
1240 mpegts_base_steal_program (base, old_program->program_number); in mpegts_base_apply_pmt()
1243 g_ptr_array_add (base->programs, program); in mpegts_base_apply_pmt()
1252 mpegts_base_activate_program (base, program, section->pid, section, pmt, in mpegts_base_apply_pmt()
1273 mpegts_base_handle_psi (MpegTSBase * base, GstMpegtsSection * section) in mpegts_base_handle_psi() argument
1282 post_message = mpegts_base_apply_pat (base, section); in mpegts_base_handle_psi()
1283 if (base->seen_pat == FALSE) { in mpegts_base_handle_psi()
1284 base->seen_pat = TRUE; in mpegts_base_handle_psi()
1286 mpegts_packetizer_set_reference_offset (base->packetizer, in mpegts_base_handle_psi()
1291 post_message = mpegts_base_apply_pmt (base, section); in mpegts_base_handle_psi()
1295 post_message = mpegts_base_get_tags_from_eit (base, section); in mpegts_base_handle_psi()
1298 post_message = mpegts_base_parse_atsc_mgt (base, section); in mpegts_base_handle_psi()
1305 if (GST_MPEGTS_BASE_GET_CLASS (base)->handle_psi) in mpegts_base_handle_psi()
1306 GST_MPEGTS_BASE_GET_CLASS (base)->handle_psi (base, section); in mpegts_base_handle_psi()
1310 gst_element_post_message (GST_ELEMENT_CAST (base), in mpegts_base_handle_psi()
1311 gst_message_new_mpegts_section (GST_OBJECT (base), section)); in mpegts_base_handle_psi()
1316 mpegts_base_parse_atsc_mgt (MpegTSBase * base, GstMpegtsSection * section) in mpegts_base_parse_atsc_mgt() argument
1332 MPEGTS_BIT_SET (base->known_psi, table->pid); in mpegts_base_parse_atsc_mgt()
1340 mpegts_base_get_tags_from_eit (MpegTSBase * base, GstMpegtsSection * section) in mpegts_base_get_tags_from_eit() argument
1356 program = mpegts_base_get_program (base, section->subtable_extension); in mpegts_base_get_tags_from_eit()
1404 remove_each_program (MpegTSBaseProgram * program, MpegTSBase * base) in remove_each_program() argument
1407 mpegts_base_deactivate_program (base, program); in remove_each_program()
1411 mpegts_base_drain (MpegTSBase * base) in mpegts_base_drain() argument
1413 MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_drain()
1417 return klass->drain (base); in mpegts_base_drain()
1423 mpegts_base_flush (MpegTSBase * base, gboolean hard) in mpegts_base_flush() argument
1425 MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_flush()
1429 klass->flush (base, hard); in mpegts_base_flush()
1437 MpegTSBase *base = GST_MPEGTS_BASE (parent); in mpegts_base_sink_event() local
1440 GST_DEBUG_OBJECT (base, "Got event %s", in mpegts_base_sink_event()
1445 gst_event_copy_segment (event, &base->segment); in mpegts_base_sink_event()
1446 GST_DEBUG_OBJECT (base, "Received segment %" GST_SEGMENT_FORMAT, in mpegts_base_sink_event()
1447 &base->segment); in mpegts_base_sink_event()
1449 if (base->segment.format == GST_FORMAT_TIME) { in mpegts_base_sink_event()
1450 base->packetizer->calculate_offset = FALSE; in mpegts_base_sink_event()
1451 base->packetizer->calculate_skew = TRUE; in mpegts_base_sink_event()
1453 base->last_seek_seqnum = gst_event_get_seqnum (event); in mpegts_base_sink_event()
1455 base->packetizer->calculate_offset = TRUE; in mpegts_base_sink_event()
1456 base->packetizer->calculate_skew = FALSE; in mpegts_base_sink_event()
1459 res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event); in mpegts_base_sink_event()
1469 res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event); in mpegts_base_sink_event()
1470 hard = (base->mode != BASE_MODE_SEEKING); in mpegts_base_sink_event()
1471 mpegts_packetizer_flush (base->packetizer, hard); in mpegts_base_sink_event()
1472 mpegts_base_flush (base, hard); in mpegts_base_sink_event()
1473 gst_segment_init (&base->segment, GST_FORMAT_UNDEFINED); in mpegts_base_sink_event()
1474 base->seen_pat = FALSE; in mpegts_base_sink_event()
1477 res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event); in mpegts_base_sink_event()
1488 mpegts_base_default_sink_query (MpegTSBase * base, GstQuery * query) in mpegts_base_default_sink_query() argument
1490 return gst_pad_query_default (base->sinkpad, GST_OBJECT (base), query); in mpegts_base_default_sink_query()
1496 MpegTSBase *base = GST_MPEGTS_BASE (parent); in mpegts_base_sink_query() local
1498 GST_DEBUG_OBJECT (base, "Got query %s", in mpegts_base_sink_query()
1501 return GST_MPEGTS_BASE_GET_CLASS (base)->sink_query (base, query); in mpegts_base_sink_query()
1508 MpegTSBase *base; in mpegts_base_chain() local
1514 base = GST_MPEGTS_BASE (parent); in mpegts_base_chain()
1515 klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_chain()
1517 packetizer = base->packetizer; in mpegts_base_chain()
1520 GST_DEBUG_OBJECT (base, "Got DISCONT buffer, flushing"); in mpegts_base_chain()
1521 res = mpegts_base_drain (base); in mpegts_base_chain()
1525 mpegts_base_flush (base, FALSE); in mpegts_base_chain()
1529 if (base->mode == BASE_MODE_PUSHING in mpegts_base_chain()
1530 && base->segment.format == GST_FORMAT_TIME) { in mpegts_base_chain()
1531 mpegts_packetizer_flush (base->packetizer, TRUE); in mpegts_base_chain()
1532 mpegts_packetizer_clear (base->packetizer); in mpegts_base_chain()
1534 mpegts_packetizer_flush (base->packetizer, FALSE); in mpegts_base_chain()
1537 mpegts_packetizer_push (base->packetizer, buf); in mpegts_base_chain()
1540 pret = mpegts_packetizer_next_packet (base->packetizer, &packet); in mpegts_base_chain()
1548 GST_DEBUG_OBJECT (base, "bad packet, skipping"); in mpegts_base_chain()
1553 klass->inspect_packet (base, &packet); in mpegts_base_chain()
1556 if (MPEGTS_BIT_IS_SET (base->is_pes, packet.pid)) { in mpegts_base_chain()
1558 if (base->push_data) in mpegts_base_chain()
1559 res = klass->push (base, &packet, NULL); in mpegts_base_chain()
1561 && MPEGTS_BIT_IS_SET (base->known_psi, packet.pid)) { in mpegts_base_chain()
1568 mpegts_base_handle_psi (base, section); in mpegts_base_chain()
1571 mpegts_base_handle_psi (base, (GstMpegtsSection *) tmp->data); in mpegts_base_chain()
1576 if (base->push_section) in mpegts_base_chain()
1577 res = klass->push (base, &packet, section); in mpegts_base_chain()
1579 } else if (base->push_unknown) { in mpegts_base_chain()
1580 res = klass->push (base, &packet, NULL); in mpegts_base_chain()
1585 mpegts_packetizer_clear_packet (base->packetizer, &packet); in mpegts_base_chain()
1589 res = klass->input_done (base); in mpegts_base_chain()
1595 mpegts_base_scan (MpegTSBase * base) in mpegts_base_scan() argument
1613 ret = gst_pad_pull_range (base->sinkpad, i * 65536, 65536, &buf); in mpegts_base_scan()
1620 mpegts_packetizer_push (base->packetizer, buf); in mpegts_base_scan()
1623 if (mpegts_packetizer_has_packets (base->packetizer)) { in mpegts_base_scan()
1624 if (base->seek_offset == -1) { in mpegts_base_scan()
1626 base->seek_offset = base->packetizer->offset; in mpegts_base_scan()
1627 GST_DEBUG ("Sync point is now %" G_GUINT64_FORMAT, base->seek_offset); in mpegts_base_scan()
1628 base->packetsize = base->packetizer->packet_size; in mpegts_base_scan()
1632 pret = mpegts_packetizer_process_next_packet (base->packetizer); in mpegts_base_scan()
1635 if (pret != PACKET_BAD && base->packetizer->nb_seen_offsets >= 5) { in mpegts_base_scan()
1644 initial_pcr_seen = base->packetizer->nb_seen_offsets; in mpegts_base_scan()
1653 if (!gst_pad_peer_query_duration (base->sinkpad, format, &tmpval)) in mpegts_base_scan()
1665 mpegts_packetizer_clear (base->packetizer); in mpegts_base_scan()
1669 ret = gst_pad_pull_range (base->sinkpad, seek_pos, 56400, &buf); in mpegts_base_scan()
1676 mpegts_packetizer_push (base->packetizer, buf); in mpegts_base_scan()
1679 if (mpegts_packetizer_has_packets (base->packetizer)) { in mpegts_base_scan()
1683 pret = mpegts_packetizer_process_next_packet (base->packetizer); in mpegts_base_scan()
1685 if (base->packetizer->nb_seen_offsets > initial_pcr_seen) { in mpegts_base_scan()
1687 base->packetizer->nb_seen_offsets); in mpegts_base_scan()
1694 mpegts_packetizer_clear (base->packetizer); in mpegts_base_scan()
1698 mpegts_packetizer_clear (base->packetizer); in mpegts_base_scan()
1699 GST_WARNING_OBJECT (base, "Couldn't find any PCR within the first %d bytes", in mpegts_base_scan()
1706 mpegts_base_loop (MpegTSBase * base) in mpegts_base_loop() argument
1710 switch (base->mode) { in mpegts_base_loop()
1713 ret = mpegts_base_scan (base); in mpegts_base_loop()
1716 base->mode = BASE_MODE_STREAMING; in mpegts_base_loop()
1721 base->mode = BASE_MODE_STREAMING; in mpegts_base_loop()
1727 GST_DEBUG ("Pulling data from %" G_GUINT64_FORMAT, base->seek_offset); in mpegts_base_loop()
1729 if (G_UNLIKELY (base->last_seek_seqnum == GST_SEQNUM_INVALID)) { in mpegts_base_loop()
1731 base->last_seek_seqnum = gst_util_seqnum_next (); in mpegts_base_loop()
1733 ret = gst_pad_pull_range (base->sinkpad, base->seek_offset, in mpegts_base_loop()
1734 100 * base->packetsize, &buf); in mpegts_base_loop()
1737 base->seek_offset += gst_buffer_get_size (buf); in mpegts_base_loop()
1738 ret = mpegts_base_chain (base->sinkpad, GST_OBJECT_CAST (base), buf); in mpegts_base_loop()
1752 GST_DEBUG_OBJECT (base, "Pausing task, reason %s", gst_flow_get_name (ret)); in mpegts_base_loop()
1754 if (!GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, in mpegts_base_loop()
1756 GST_ELEMENT_ERROR (base, STREAM, FAILED, in mpegts_base_loop()
1760 GST_ELEMENT_FLOW_ERROR (base, ret); in mpegts_base_loop()
1761 GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, gst_event_new_eos ()); in mpegts_base_loop()
1763 gst_pad_pause_task (base->sinkpad); in mpegts_base_loop()
1769 mpegts_base_handle_seek_event (MpegTSBase * base, GstPad * pad, in mpegts_base_handle_seek_event() argument
1772 MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base); in mpegts_base_handle_seek_event()
1788 if (GST_EVENT_SEQNUM (event) == base->last_seek_seqnum) { in mpegts_base_handle_seek_event()
1789 GST_DEBUG_OBJECT (base, "Skipping already handled seek"); in mpegts_base_handle_seek_event()
1793 if (base->mode == BASE_MODE_PUSHING) { in mpegts_base_handle_seek_event()
1795 if (gst_pad_push_event (base->sinkpad, gst_event_ref (event))) { in mpegts_base_handle_seek_event()
1802 ret = klass->seek (base, event); in mpegts_base_handle_seek_event()
1808 if (GST_CLOCK_TIME_IS_VALID (base->seek_offset)) { in mpegts_base_handle_seek_event()
1809 base->mode = BASE_MODE_SEEKING; in mpegts_base_handle_seek_event()
1811 GST_SEEK_TYPE_SET, base->seek_offset, GST_SEEK_TYPE_NONE, -1); in mpegts_base_handle_seek_event()
1813 if (!gst_pad_push_event (base->sinkpad, new_seek)) in mpegts_base_handle_seek_event()
1816 base->last_seek_seqnum = GST_EVENT_SEQNUM (event); in mpegts_base_handle_seek_event()
1818 base->mode = BASE_MODE_PUSHING; in mpegts_base_handle_seek_event()
1846 if (base->mode != BASE_MODE_PUSHING && instant_rate_change) { in mpegts_base_handle_seek_event()
1852 if ((rate > 0 && base->out_segment.rate < 0) || in mpegts_base_handle_seek_event()
1853 (rate < 0 && base->out_segment.rate > 0) || in mpegts_base_handle_seek_event()
1856 GST_ERROR_OBJECT (base, in mpegts_base_handle_seek_event()
1862 ev = gst_event_new_instant_rate_change (rate / base->out_segment.rate, in mpegts_base_handle_seek_event()
1865 GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, ev); in mpegts_base_handle_seek_event()
1870 base->mode = BASE_MODE_SEEKING; in mpegts_base_handle_seek_event()
1872 GST_DEBUG_OBJECT (base, "sending flush start"); in mpegts_base_handle_seek_event()
1875 gst_pad_push_event (base->sinkpad, gst_event_ref (flush_event)); in mpegts_base_handle_seek_event()
1876 GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, flush_event); in mpegts_base_handle_seek_event()
1878 gst_pad_pause_task (base->sinkpad); in mpegts_base_handle_seek_event()
1881 GST_PAD_STREAM_LOCK (base->sinkpad); in mpegts_base_handle_seek_event()
1885 GST_DEBUG_OBJECT (base, "sending flush stop"); in mpegts_base_handle_seek_event()
1890 gst_pad_push_event (base->sinkpad, gst_event_ref (flush_event)); in mpegts_base_handle_seek_event()
1893 mpegts_base_flush (base, FALSE); in mpegts_base_handle_seek_event()
1894 mpegts_packetizer_flush (base->packetizer, FALSE); in mpegts_base_handle_seek_event()
1904 ret = klass->seek (base, event); in mpegts_base_handle_seek_event()
1908 base->last_seek_seqnum = GST_EVENT_SEQNUM (event); in mpegts_base_handle_seek_event()
1912 GST_DEBUG_OBJECT (base, "sending flush stop"); in mpegts_base_handle_seek_event()
1913 GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, flush_event); in mpegts_base_handle_seek_event()
1919 gst_pad_start_task (base->sinkpad, (GstTaskFunction) mpegts_base_loop, base, in mpegts_base_handle_seek_event()
1922 GST_PAD_STREAM_UNLOCK (base->sinkpad); in mpegts_base_handle_seek_event()
1962 MpegTSBase *base = GST_MPEGTS_BASE (parent); in mpegts_base_sink_activate_mode() local
1966 base->mode = BASE_MODE_PUSHING; in mpegts_base_sink_activate_mode()
1971 base->mode = BASE_MODE_SCANNING; in mpegts_base_sink_activate_mode()
1973 base->packetizer->calculate_offset = TRUE; in mpegts_base_sink_activate_mode()
1974 base->packetizer->calculate_skew = FALSE; in mpegts_base_sink_activate_mode()
1975 gst_segment_init (&base->segment, GST_FORMAT_BYTES); in mpegts_base_sink_activate_mode()
1977 gst_pad_start_task (pad, (GstTaskFunction) mpegts_base_loop, base, in mpegts_base_sink_activate_mode()
1992 MpegTSBase *base; in mpegts_base_change_state() local
1995 base = GST_MPEGTS_BASE (element); in mpegts_base_change_state()
1999 mpegts_base_reset (base); in mpegts_base_change_state()
2009 mpegts_base_reset (base); in mpegts_base_change_state()
2010 if (base->mode != BASE_MODE_PUSHING) in mpegts_base_change_state()
2011 base->mode = BASE_MODE_SCANNING; in mpegts_base_change_state()