• Home
  • Raw
  • Download

Lines Matching refs:stream

78 static guint8 tsmux_stream_pes_header_length (TsMuxStream * stream);
79 static void tsmux_stream_write_pes_header (TsMuxStream * stream, guint8 * data);
80 static void tsmux_stream_find_pts_dts_within (TsMuxStream * stream, guint bound,
111 TsMuxStream *stream = g_slice_new0 (TsMuxStream); in tsmux_stream_new() local
113 stream->state = TSMUX_STREAM_STATE_HEADER; in tsmux_stream_new()
114 stream->pi.pid = pid; in tsmux_stream_new()
115 stream->stream_type = stream_type; in tsmux_stream_new()
117 stream->pes_payload_size = 0; in tsmux_stream_new()
118 stream->cur_pes_payload_size = 0; in tsmux_stream_new()
119 stream->pes_bytes_written = 0; in tsmux_stream_new()
120 stream->pmt_index = -1; in tsmux_stream_new()
129 stream->id = 0xE0; in tsmux_stream_new()
130 stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER; in tsmux_stream_new()
131 stream->is_video_stream = TRUE; in tsmux_stream_new()
134 stream->id = 0xBD; in tsmux_stream_new()
135 stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER; in tsmux_stream_new()
136 stream->is_video_stream = TRUE; in tsmux_stream_new()
142 stream->is_audio = TRUE; in tsmux_stream_new()
143 stream->id = 0xC0; in tsmux_stream_new()
144 stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER; in tsmux_stream_new()
150 stream->id = 0xFD; in tsmux_stream_new()
154 stream->id_extended = 0x60; in tsmux_stream_new()
155 stream->is_video_stream = TRUE; in tsmux_stream_new()
158 stream->is_audio = TRUE; in tsmux_stream_new()
159 stream->id_extended = 0x80; in tsmux_stream_new()
162 stream->is_audio = TRUE; in tsmux_stream_new()
163 stream->id_extended = 0x71; in tsmux_stream_new()
166 stream->is_audio = TRUE; in tsmux_stream_new()
167 stream->id_extended = 0x82; in tsmux_stream_new()
172 stream->pi.flags |= in tsmux_stream_new()
178 stream->pi.pes_header_length = 36; in tsmux_stream_new()
182 stream->id = 0xBD; in tsmux_stream_new()
183 stream->is_dvb_sub = TRUE; in tsmux_stream_new()
184 stream->stream_type = TSMUX_ST_PRIVATE_DATA; in tsmux_stream_new()
185 stream->pi.flags |= in tsmux_stream_new()
192 stream->id = 0xBD; in tsmux_stream_new()
193 stream->stream_type = TSMUX_ST_PRIVATE_DATA; in tsmux_stream_new()
194 stream->is_meta = TRUE; in tsmux_stream_new()
195 stream->pi.flags |= in tsmux_stream_new()
201 stream->id = 0xBD; in tsmux_stream_new()
202 stream->is_audio = TRUE; in tsmux_stream_new()
203 stream->stream_type = TSMUX_ST_PRIVATE_DATA; in tsmux_stream_new()
204 stream->is_opus = TRUE; in tsmux_stream_new()
205 stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER; in tsmux_stream_new()
212 stream->first_ts = GST_CLOCK_STIME_NONE; in tsmux_stream_new()
214 stream->last_pts = GST_CLOCK_STIME_NONE; in tsmux_stream_new()
215 stream->last_dts = GST_CLOCK_STIME_NONE; in tsmux_stream_new()
217 stream->pcr_ref = 0; in tsmux_stream_new()
218 stream->next_pcr = -1; in tsmux_stream_new()
220 stream->get_es_descrs = in tsmux_stream_new()
222 stream->get_es_descrs_data = NULL; in tsmux_stream_new()
224 return stream; in tsmux_stream_new()
236 tsmux_stream_get_pid (TsMuxStream * stream) in tsmux_stream_get_pid() argument
238 g_return_val_if_fail (stream != NULL, G_MAXUINT16); in tsmux_stream_get_pid()
240 return stream->pi.pid; in tsmux_stream_get_pid()
250 tsmux_stream_free (TsMuxStream * stream) in tsmux_stream_free() argument
254 g_return_if_fail (stream != NULL); in tsmux_stream_free()
257 for (cur = stream->buffers; cur; cur = cur->next) { in tsmux_stream_free()
260 if (stream->buffer_release) in tsmux_stream_free()
261 stream->buffer_release (tmbuf->data, tmbuf->user_data); in tsmux_stream_free()
264 g_list_free (stream->buffers); in tsmux_stream_free()
266 g_slice_free (TsMuxStream, stream); in tsmux_stream_free()
279 tsmux_stream_set_buffer_release_func (TsMuxStream * stream, in tsmux_stream_set_buffer_release_func() argument
282 g_return_if_fail (stream != NULL); in tsmux_stream_set_buffer_release_func()
284 stream->buffer_release = func; in tsmux_stream_set_buffer_release_func()
297 tsmux_stream_set_get_es_descriptors_func (TsMuxStream * stream, in tsmux_stream_set_get_es_descriptors_func() argument
300 g_return_if_fail (stream != NULL); in tsmux_stream_set_get_es_descriptors_func()
302 stream->get_es_descrs = func; in tsmux_stream_set_get_es_descriptors_func()
303 stream->get_es_descrs_data = user_data; in tsmux_stream_set_get_es_descriptors_func()
309 tsmux_stream_consume (TsMuxStream * stream, guint len) in tsmux_stream_consume() argument
311 g_assert (stream->cur_buffer != NULL); in tsmux_stream_consume()
312 g_assert (len <= stream->cur_buffer->size - stream->cur_buffer_consumed); in tsmux_stream_consume()
314 stream->cur_buffer_consumed += len; in tsmux_stream_consume()
315 stream->bytes_avail -= len; in tsmux_stream_consume()
317 if (stream->cur_buffer_consumed == 0 && stream->cur_buffer->size != 0) in tsmux_stream_consume()
320 if (GST_CLOCK_STIME_IS_VALID (stream->cur_buffer->pts)) in tsmux_stream_consume()
321 stream->last_pts = stream->cur_buffer->pts; in tsmux_stream_consume()
322 if (GST_CLOCK_STIME_IS_VALID (stream->cur_buffer->dts)) in tsmux_stream_consume()
323 stream->last_dts = stream->cur_buffer->dts; in tsmux_stream_consume()
325 if (stream->cur_buffer_consumed == stream->cur_buffer->size) { in tsmux_stream_consume()
327 stream->buffers = g_list_delete_link (stream->buffers, stream->buffers); in tsmux_stream_consume()
329 if (stream->buffer_release) { in tsmux_stream_consume()
330 stream->buffer_release (stream->cur_buffer->data, in tsmux_stream_consume()
331 stream->cur_buffer->user_data); in tsmux_stream_consume()
334 g_slice_free (TsMuxStreamBuffer, stream->cur_buffer); in tsmux_stream_consume()
335 stream->cur_buffer = NULL; in tsmux_stream_consume()
339 if (stream->cur_pes_payload_size == 0) { in tsmux_stream_consume()
340 stream->state = TSMUX_STREAM_STATE_HEADER; in tsmux_stream_consume()
341 stream->pes_bytes_written = 0; in tsmux_stream_consume()
355 tsmux_stream_at_pes_start (TsMuxStream * stream) in tsmux_stream_at_pes_start() argument
357 g_return_val_if_fail (stream != NULL, FALSE); in tsmux_stream_at_pes_start()
359 return stream->state == TSMUX_STREAM_STATE_HEADER; in tsmux_stream_at_pes_start()
371 _tsmux_stream_bytes_avail (TsMuxStream * stream) in _tsmux_stream_bytes_avail() argument
375 g_return_val_if_fail (stream != NULL, 0); in _tsmux_stream_bytes_avail()
377 if (stream->cur_pes_payload_size != 0) in _tsmux_stream_bytes_avail()
378 bytes_avail = stream->cur_pes_payload_size - stream->pes_bytes_written; in _tsmux_stream_bytes_avail()
380 bytes_avail = stream->bytes_avail; in _tsmux_stream_bytes_avail()
382 bytes_avail = MIN (bytes_avail, stream->bytes_avail); in _tsmux_stream_bytes_avail()
385 if (stream->state == TSMUX_STREAM_STATE_HEADER) in _tsmux_stream_bytes_avail()
386 bytes_avail += tsmux_stream_pes_header_length (stream); in _tsmux_stream_bytes_avail()
392 tsmux_stream_bytes_avail (TsMuxStream * stream) in tsmux_stream_bytes_avail() argument
394 g_return_val_if_fail (stream != NULL, 0); in tsmux_stream_bytes_avail()
396 return _tsmux_stream_bytes_avail (stream); in tsmux_stream_bytes_avail()
408 tsmux_stream_bytes_in_buffer (TsMuxStream * stream) in tsmux_stream_bytes_in_buffer() argument
410 g_return_val_if_fail (stream != NULL, 0); in tsmux_stream_bytes_in_buffer()
412 return stream->bytes_avail; in tsmux_stream_bytes_in_buffer()
424 tsmux_stream_initialize_pes_packet (TsMuxStream * stream) in tsmux_stream_initialize_pes_packet() argument
426 if (stream->state != TSMUX_STREAM_STATE_HEADER) in tsmux_stream_initialize_pes_packet()
429 if (stream->pes_payload_size != 0) { in tsmux_stream_initialize_pes_packet()
431 stream->cur_pes_payload_size = stream->pes_payload_size; in tsmux_stream_initialize_pes_packet()
432 tsmux_stream_find_pts_dts_within (stream, stream->cur_pes_payload_size, in tsmux_stream_initialize_pes_packet()
433 &stream->pts, &stream->dts); in tsmux_stream_initialize_pes_packet()
436 stream->cur_pes_payload_size = stream->bytes_avail; in tsmux_stream_initialize_pes_packet()
437 tsmux_stream_find_pts_dts_within (stream, stream->cur_pes_payload_size, in tsmux_stream_initialize_pes_packet()
438 &stream->pts, &stream->dts); in tsmux_stream_initialize_pes_packet()
441 stream->pi.flags &= ~(TSMUX_PACKET_FLAG_PES_WRITE_PTS_DTS | in tsmux_stream_initialize_pes_packet()
444 if (GST_CLOCK_STIME_IS_VALID (stream->pts) in tsmux_stream_initialize_pes_packet()
445 && GST_CLOCK_STIME_IS_VALID (stream->dts) in tsmux_stream_initialize_pes_packet()
446 && stream->pts != stream->dts) in tsmux_stream_initialize_pes_packet()
447 stream->pi.flags |= TSMUX_PACKET_FLAG_PES_WRITE_PTS_DTS; in tsmux_stream_initialize_pes_packet()
449 if (GST_CLOCK_STIME_IS_VALID (stream->pts)) in tsmux_stream_initialize_pes_packet()
450 stream->pi.flags |= TSMUX_PACKET_FLAG_PES_WRITE_PTS; in tsmux_stream_initialize_pes_packet()
453 if (stream->buffers) { in tsmux_stream_initialize_pes_packet()
454 TsMuxStreamBuffer *buf = (TsMuxStreamBuffer *) (stream->buffers->data); in tsmux_stream_initialize_pes_packet()
456 stream->pi.flags |= TSMUX_PACKET_FLAG_RANDOM_ACCESS; in tsmux_stream_initialize_pes_packet()
457 stream->pi.flags |= TSMUX_PACKET_FLAG_ADAPTATION; in tsmux_stream_initialize_pes_packet()
461 if (stream->is_video_stream) { in tsmux_stream_initialize_pes_packet()
464 hdr_len = tsmux_stream_pes_header_length (stream); in tsmux_stream_initialize_pes_packet()
467 if ((stream->cur_pes_payload_size + hdr_len - 6) > G_MAXUINT16) in tsmux_stream_initialize_pes_packet()
468 stream->cur_pes_payload_size = 0; in tsmux_stream_initialize_pes_packet()
485 tsmux_stream_get_data (TsMuxStream * stream, guint8 * buf, guint len) in tsmux_stream_get_data() argument
487 g_return_val_if_fail (stream != NULL, FALSE); in tsmux_stream_get_data()
490 if (stream->state == TSMUX_STREAM_STATE_HEADER) { in tsmux_stream_get_data()
493 pes_hdr_length = tsmux_stream_pes_header_length (stream); in tsmux_stream_get_data()
500 pes_hdr_length, stream->cur_pes_payload_size); in tsmux_stream_get_data()
501 tsmux_stream_write_pes_header (stream, buf); in tsmux_stream_get_data()
506 stream->state = TSMUX_STREAM_STATE_PACKET; in tsmux_stream_get_data()
509 if (len > (guint) _tsmux_stream_bytes_avail (stream)) in tsmux_stream_get_data()
512 stream->pes_bytes_written += len; in tsmux_stream_get_data()
514 if (stream->cur_pes_payload_size != 0 && in tsmux_stream_get_data()
515 stream->pes_bytes_written == stream->cur_pes_payload_size) { in tsmux_stream_get_data()
517 stream->state = TSMUX_STREAM_STATE_HEADER; in tsmux_stream_get_data()
518 stream->pes_bytes_written = 0; in tsmux_stream_get_data()
525 if (stream->cur_buffer == NULL) { in tsmux_stream_get_data()
527 if (stream->buffers == NULL) in tsmux_stream_get_data()
529 stream->cur_buffer = (TsMuxStreamBuffer *) (stream->buffers->data); in tsmux_stream_get_data()
530 stream->cur_buffer_consumed = 0; in tsmux_stream_get_data()
534 avail = stream->cur_buffer->size - stream->cur_buffer_consumed; in tsmux_stream_get_data()
535 cur = stream->cur_buffer->data + stream->cur_buffer_consumed; in tsmux_stream_get_data()
538 tsmux_stream_consume (stream, avail); in tsmux_stream_get_data()
544 tsmux_stream_consume (stream, len); in tsmux_stream_get_data()
554 tsmux_stream_pes_header_length (TsMuxStream * stream) in tsmux_stream_pes_header_length() argument
563 if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_FULL_HEADER) { in tsmux_stream_pes_header_length()
567 if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_WRITE_PTS_DTS) { in tsmux_stream_pes_header_length()
569 } else if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_WRITE_PTS) { in tsmux_stream_pes_header_length()
572 if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_EXT_STREAMID) { in tsmux_stream_pes_header_length()
577 if (stream->pi.pes_header_length) { in tsmux_stream_pes_header_length()
579 g_assert (packet_len <= stream->pi.pes_header_length + 6 + 3); in tsmux_stream_pes_header_length()
580 packet_len = stream->pi.pes_header_length + 6 + 3; in tsmux_stream_pes_header_length()
590 tsmux_stream_find_pts_dts_within (TsMuxStream * stream, guint bound, in tsmux_stream_find_pts_dts_within() argument
598 for (cur = stream->buffers; cur; cur = cur->next) { in tsmux_stream_find_pts_dts_within()
623 tsmux_stream_write_pes_header (TsMuxStream * stream, guint8 * data) in tsmux_stream_write_pes_header() argument
626 guint8 hdr_len = tsmux_stream_pes_header_length (stream); in tsmux_stream_write_pes_header()
633 data[3] = stream->id; in tsmux_stream_write_pes_header()
638 if (stream->cur_pes_payload_size != 0) { in tsmux_stream_write_pes_header()
639 length_to_write = hdr_len + stream->cur_pes_payload_size - 6; in tsmux_stream_write_pes_header()
646 if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_FULL_HEADER) { in tsmux_stream_write_pes_header()
651 if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_DATA_ALIGNMENT) in tsmux_stream_write_pes_header()
657 if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_WRITE_PTS_DTS) in tsmux_stream_write_pes_header()
659 else if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_WRITE_PTS) in tsmux_stream_write_pes_header()
661 if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_EXT_STREAMID) in tsmux_stream_write_pes_header()
670 if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_WRITE_PTS_DTS) { in tsmux_stream_write_pes_header()
671 tsmux_put_ts (&data, 0x3, stream->pts); in tsmux_stream_write_pes_header()
672 tsmux_put_ts (&data, 0x1, stream->dts); in tsmux_stream_write_pes_header()
673 } else if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_WRITE_PTS) { in tsmux_stream_write_pes_header()
674 tsmux_put_ts (&data, 0x2, stream->pts); in tsmux_stream_write_pes_header()
676 if (stream->pi.flags & TSMUX_PACKET_FLAG_PES_EXT_STREAMID) { in tsmux_stream_write_pes_header()
685 *data++ = stream->id_extended; in tsmux_stream_write_pes_header()
688 if (stream->pi.pes_header_length) in tsmux_stream_write_pes_header()
689 while (data < orig_data + stream->pi.pes_header_length + 9) in tsmux_stream_write_pes_header()
712 tsmux_stream_add_data (TsMuxStream * stream, guint8 * data, guint len, in tsmux_stream_add_data() argument
717 g_return_if_fail (stream != NULL); in tsmux_stream_add_data()
728 if (stream->bytes_avail == 0) { in tsmux_stream_add_data()
729 stream->last_pts = pts; in tsmux_stream_add_data()
730 stream->last_dts = dts; in tsmux_stream_add_data()
733 stream->bytes_avail += len; in tsmux_stream_add_data()
734 stream->buffers = g_list_append (stream->buffers, packet); in tsmux_stream_add_data()
749 tsmux_stream_default_get_es_descrs (TsMuxStream * stream, in tsmux_stream_default_get_es_descrs() argument
754 g_return_if_fail (stream != NULL); in tsmux_stream_default_get_es_descrs()
757 if (stream->is_audio && stream->language[0] != '\0') { in tsmux_stream_default_get_es_descrs()
758 descriptor = gst_mpegts_descriptor_from_iso_639_language (stream->language); in tsmux_stream_default_get_es_descrs()
766 switch (stream->stream_type) { in tsmux_stream_default_get_es_descrs()
809 guint8 level = stream->profile_and_level & 0xF; in tsmux_stream_default_get_es_descrs()
833 gst_byte_writer_put_uint16_be (&writer, stream->profile_and_level); in tsmux_stream_default_get_es_descrs()
834 gst_byte_writer_put_uint32_be (&writer, stream->horizontal_size); in tsmux_stream_default_get_es_descrs()
835 gst_byte_writer_put_uint32_be (&writer, stream->vertical_size); in tsmux_stream_default_get_es_descrs()
837 gst_byte_writer_put_uint32_be (&writer, stream->max_bitrate); in tsmux_stream_default_get_es_descrs()
838 gst_byte_writer_put_uint16_be (&writer, stream->den); in tsmux_stream_default_get_es_descrs()
839 gst_byte_writer_put_uint16_be (&writer, stream->num); in tsmux_stream_default_get_es_descrs()
840 gst_byte_writer_put_uint8 (&writer, stream->color_spec); in tsmux_stream_default_get_es_descrs()
842 if (stream->interlace_mode) in tsmux_stream_default_get_es_descrs()
882 switch (stream->audio_sampling) { in tsmux_stream_default_get_es_descrs()
898 switch (stream->audio_bitrate) { in tsmux_stream_default_get_es_descrs()
962 switch (stream->audio_channels) { in tsmux_stream_default_get_es_descrs()
1016 if (stream->is_dvb_sub) { in tsmux_stream_default_get_es_descrs()
1017 GST_DEBUG ("Stream language %s", stream->language); in tsmux_stream_default_get_es_descrs()
1023 gst_mpegts_descriptor_from_dvb_subtitling (stream->language, 0x10, in tsmux_stream_default_get_es_descrs()
1029 if (stream->is_opus) { in tsmux_stream_default_get_es_descrs()
1036 &stream->opus_channel_config_code, 1); in tsmux_stream_default_get_es_descrs()
1040 if (stream->is_meta) { in tsmux_stream_default_get_es_descrs()
1062 tsmux_stream_get_es_descrs (TsMuxStream * stream, in tsmux_stream_get_es_descrs() argument
1065 g_return_if_fail (stream->get_es_descrs != NULL); in tsmux_stream_get_es_descrs()
1067 stream->get_es_descrs (stream, pmt_stream, stream->get_es_descrs_data); in tsmux_stream_get_es_descrs()
1077 tsmux_stream_pcr_ref (TsMuxStream * stream) in tsmux_stream_pcr_ref() argument
1079 g_return_if_fail (stream != NULL); in tsmux_stream_pcr_ref()
1081 stream->pcr_ref++; in tsmux_stream_pcr_ref()
1091 tsmux_stream_pcr_unref (TsMuxStream * stream) in tsmux_stream_pcr_unref() argument
1093 g_return_if_fail (stream != NULL); in tsmux_stream_pcr_unref()
1095 stream->pcr_ref--; in tsmux_stream_pcr_unref()
1107 tsmux_stream_is_pcr (TsMuxStream * stream) in tsmux_stream_is_pcr() argument
1109 return stream->pcr_ref != 0; in tsmux_stream_is_pcr()
1122 tsmux_stream_get_pts (TsMuxStream * stream) in tsmux_stream_get_pts() argument
1124 g_return_val_if_fail (stream != NULL, GST_CLOCK_STIME_NONE); in tsmux_stream_get_pts()
1126 return stream->last_pts; in tsmux_stream_get_pts()
1139 tsmux_stream_get_dts (TsMuxStream * stream) in tsmux_stream_get_dts() argument
1141 g_return_val_if_fail (stream != NULL, GST_CLOCK_STIME_NONE); in tsmux_stream_get_dts()
1143 return stream->last_dts; in tsmux_stream_get_dts()