gstreamer/win32/common/libgstbase.def
Thiago Santos 581c4297d0 dataqueue: add gst_data_queue_push_force
Adds a variant of the _push function that doesn't check the queue limits
before adding the new item. It is useful when pushing an element to the
queue shouldn't lock the thread.

One particular scenario is when the queue is used to serialize buffers
and events that are going to be pushed from another thread. The
dataqueue should have a limit on the amount of buffers to be stored to
avoid large memory consumption, but events can be considered to have
negligible impact on memory compared to buffers. So it is useful to be
used to push items into the queue that contain events, even though the
queue is already full, it shouldn't matter inserting an item that has
no significative size.

This scenario happens on adaptive elements (dashdemux / mssdemux) as
there is a single download thread fetching buffers and putting into the
dataqueues for the streams. This same download thread can als generate
events in some situations as caps changes, eos or a internal control
events. There can be a deadlock at preroll if the first buffer fetched
is large enough to fill the dataqueue and the download thread and the
next iteration of the download thread decides to push an event to this
same dataqueue before fetching buffers to other streams, if this push
locks, the pipeline will be stuck in preroll as no more buffers will be
downloaded.
There is a somewhat common practice in dash streams to have a single
very large buffer for audio and one for video, so this will always
happen as the download thread will have to push an EOS right after
fetching the first buffer for any stream.

API: gst_data_queue_push_force

https://bugzilla.gnome.org/show_bug.cgi?id=705694
2013-08-13 12:00:48 -03:00

275 lines
7.8 KiB
Modula-2

EXPORTS
gst_adapter_available
gst_adapter_available_fast
gst_adapter_clear
gst_adapter_copy
gst_adapter_flush
gst_adapter_get_type
gst_adapter_map
gst_adapter_masked_scan_uint32
gst_adapter_masked_scan_uint32_peek
gst_adapter_new
gst_adapter_prev_dts
gst_adapter_prev_dts_at_offset
gst_adapter_prev_pts
gst_adapter_prev_pts_at_offset
gst_adapter_push
gst_adapter_take
gst_adapter_take_buffer
gst_adapter_take_buffer_fast
gst_adapter_take_list
gst_adapter_unmap
gst_base_parse_add_index_entry
gst_base_parse_convert_default
gst_base_parse_finish_frame
gst_base_parse_frame_free
gst_base_parse_frame_get_type
gst_base_parse_frame_init
gst_base_parse_frame_new
gst_base_parse_get_type
gst_base_parse_push_frame
gst_base_parse_set_average_bitrate
gst_base_parse_set_duration
gst_base_parse_set_frame_rate
gst_base_parse_set_has_timing_info
gst_base_parse_set_infer_ts
gst_base_parse_set_latency
gst_base_parse_set_min_frame_size
gst_base_parse_set_passthrough
gst_base_parse_set_pts_interpolation
gst_base_parse_set_syncable
gst_base_parse_set_ts_at_offset
gst_base_sink_do_preroll
gst_base_sink_get_blocksize
gst_base_sink_get_last_sample
gst_base_sink_get_latency
gst_base_sink_get_max_bitrate
gst_base_sink_get_max_lateness
gst_base_sink_get_render_delay
gst_base_sink_get_sync
gst_base_sink_get_throttle_time
gst_base_sink_get_ts_offset
gst_base_sink_get_type
gst_base_sink_is_async_enabled
gst_base_sink_is_last_sample_enabled
gst_base_sink_is_qos_enabled
gst_base_sink_query_latency
gst_base_sink_set_async_enabled
gst_base_sink_set_blocksize
gst_base_sink_set_last_sample_enabled
gst_base_sink_set_max_bitrate
gst_base_sink_set_max_lateness
gst_base_sink_set_qos_enabled
gst_base_sink_set_render_delay
gst_base_sink_set_sync
gst_base_sink_set_throttle_time
gst_base_sink_set_ts_offset
gst_base_sink_wait
gst_base_sink_wait_clock
gst_base_sink_wait_preroll
gst_base_src_get_allocator
gst_base_src_get_blocksize
gst_base_src_get_buffer_pool
gst_base_src_get_do_timestamp
gst_base_src_get_type
gst_base_src_is_async
gst_base_src_is_live
gst_base_src_new_seamless_segment
gst_base_src_query_latency
gst_base_src_set_async
gst_base_src_set_blocksize
gst_base_src_set_caps
gst_base_src_set_do_timestamp
gst_base_src_set_dynamic_size
gst_base_src_set_format
gst_base_src_set_live
gst_base_src_start_complete
gst_base_src_start_wait
gst_base_src_wait_playing
gst_base_transform_get_allocator
gst_base_transform_get_buffer_pool
gst_base_transform_get_type
gst_base_transform_is_in_place
gst_base_transform_is_passthrough
gst_base_transform_is_qos_enabled
gst_base_transform_reconfigure_sink
gst_base_transform_reconfigure_src
gst_base_transform_set_gap_aware
gst_base_transform_set_in_place
gst_base_transform_set_passthrough
gst_base_transform_set_prefer_passthrough
gst_base_transform_set_qos_enabled
gst_base_transform_update_qos
gst_bit_reader_free
gst_bit_reader_get_bits_uint16
gst_bit_reader_get_bits_uint32
gst_bit_reader_get_bits_uint64
gst_bit_reader_get_bits_uint8
gst_bit_reader_get_pos
gst_bit_reader_get_remaining
gst_bit_reader_get_size
gst_bit_reader_init
gst_bit_reader_new
gst_bit_reader_peek_bits_uint16
gst_bit_reader_peek_bits_uint32
gst_bit_reader_peek_bits_uint64
gst_bit_reader_peek_bits_uint8
gst_bit_reader_set_pos
gst_bit_reader_skip
gst_bit_reader_skip_to_byte
gst_byte_reader_dup_data
gst_byte_reader_dup_string_utf16
gst_byte_reader_dup_string_utf32
gst_byte_reader_dup_string_utf8
gst_byte_reader_free
gst_byte_reader_get_data
gst_byte_reader_get_float32_be
gst_byte_reader_get_float32_le
gst_byte_reader_get_float64_be
gst_byte_reader_get_float64_le
gst_byte_reader_get_int16_be
gst_byte_reader_get_int16_le
gst_byte_reader_get_int24_be
gst_byte_reader_get_int24_le
gst_byte_reader_get_int32_be
gst_byte_reader_get_int32_le
gst_byte_reader_get_int64_be
gst_byte_reader_get_int64_le
gst_byte_reader_get_int8
gst_byte_reader_get_pos
gst_byte_reader_get_remaining
gst_byte_reader_get_size
gst_byte_reader_get_string_utf8
gst_byte_reader_get_uint16_be
gst_byte_reader_get_uint16_le
gst_byte_reader_get_uint24_be
gst_byte_reader_get_uint24_le
gst_byte_reader_get_uint32_be
gst_byte_reader_get_uint32_le
gst_byte_reader_get_uint64_be
gst_byte_reader_get_uint64_le
gst_byte_reader_get_uint8
gst_byte_reader_init
gst_byte_reader_masked_scan_uint32
gst_byte_reader_new
gst_byte_reader_peek_data
gst_byte_reader_peek_float32_be
gst_byte_reader_peek_float32_le
gst_byte_reader_peek_float64_be
gst_byte_reader_peek_float64_le
gst_byte_reader_peek_int16_be
gst_byte_reader_peek_int16_le
gst_byte_reader_peek_int24_be
gst_byte_reader_peek_int24_le
gst_byte_reader_peek_int32_be
gst_byte_reader_peek_int32_le
gst_byte_reader_peek_int64_be
gst_byte_reader_peek_int64_le
gst_byte_reader_peek_int8
gst_byte_reader_peek_string_utf8
gst_byte_reader_peek_uint16_be
gst_byte_reader_peek_uint16_le
gst_byte_reader_peek_uint24_be
gst_byte_reader_peek_uint24_le
gst_byte_reader_peek_uint32_be
gst_byte_reader_peek_uint32_le
gst_byte_reader_peek_uint64_be
gst_byte_reader_peek_uint64_le
gst_byte_reader_peek_uint8
gst_byte_reader_set_pos
gst_byte_reader_skip
gst_byte_reader_skip_string_utf16
gst_byte_reader_skip_string_utf32
gst_byte_reader_skip_string_utf8
gst_byte_writer_ensure_free_space
gst_byte_writer_fill
gst_byte_writer_free
gst_byte_writer_free_and_get_buffer
gst_byte_writer_free_and_get_data
gst_byte_writer_get_remaining
gst_byte_writer_init
gst_byte_writer_init_with_data
gst_byte_writer_init_with_size
gst_byte_writer_new
gst_byte_writer_new_with_data
gst_byte_writer_new_with_size
gst_byte_writer_put_data
gst_byte_writer_put_float32_be
gst_byte_writer_put_float32_le
gst_byte_writer_put_float64_be
gst_byte_writer_put_float64_le
gst_byte_writer_put_int16_be
gst_byte_writer_put_int16_le
gst_byte_writer_put_int24_be
gst_byte_writer_put_int24_le
gst_byte_writer_put_int32_be
gst_byte_writer_put_int32_le
gst_byte_writer_put_int64_be
gst_byte_writer_put_int64_le
gst_byte_writer_put_int8
gst_byte_writer_put_string_utf16
gst_byte_writer_put_string_utf32
gst_byte_writer_put_string_utf8
gst_byte_writer_put_uint16_be
gst_byte_writer_put_uint16_le
gst_byte_writer_put_uint24_be
gst_byte_writer_put_uint24_le
gst_byte_writer_put_uint32_be
gst_byte_writer_put_uint32_le
gst_byte_writer_put_uint64_be
gst_byte_writer_put_uint64_le
gst_byte_writer_put_uint8
gst_byte_writer_reset
gst_byte_writer_reset_and_get_buffer
gst_byte_writer_reset_and_get_data
gst_collect_pads_add_pad
gst_collect_pads_available
gst_collect_pads_clip_running_time
gst_collect_pads_event_default
gst_collect_pads_flush
gst_collect_pads_get_type
gst_collect_pads_new
gst_collect_pads_peek
gst_collect_pads_pop
gst_collect_pads_query_default
gst_collect_pads_read_buffer
gst_collect_pads_remove_pad
gst_collect_pads_set_buffer_function
gst_collect_pads_set_clip_function
gst_collect_pads_set_compare_function
gst_collect_pads_set_event_function
gst_collect_pads_set_flushing
gst_collect_pads_set_function
gst_collect_pads_set_query_function
gst_collect_pads_set_waiting
gst_collect_pads_start
gst_collect_pads_stop
gst_collect_pads_take_buffer
gst_data_queue_drop_head
gst_data_queue_flush
gst_data_queue_get_level
gst_data_queue_get_type
gst_data_queue_is_empty
gst_data_queue_is_full
gst_data_queue_limits_changed
gst_data_queue_new
gst_data_queue_peek
gst_data_queue_pop
gst_data_queue_push
gst_data_queue_push_force
gst_data_queue_set_flushing
gst_push_src_get_type
gst_queue_array_drop_element
gst_queue_array_find
gst_queue_array_free
gst_queue_array_get_length
gst_queue_array_is_empty
gst_queue_array_new
gst_queue_array_peek_head
gst_queue_array_pop_head
gst_queue_array_push_tail
gst_type_find_helper
gst_type_find_helper_for_buffer
gst_type_find_helper_for_data
gst_type_find_helper_for_extension
gst_type_find_helper_get_range