Lines Matching refs:demux
104 #define QTDEMUX_N_STREAMS(demux) ((demux)->active_streams->len) argument
105 #define QTDEMUX_NTH_STREAM(demux,idx) \ argument
106 QTDEMUX_STREAM(g_ptr_array_index((demux)->active_streams,idx))
107 #define QTDEMUX_NTH_OLD_STREAM(demux,idx) \ argument
108 QTDEMUX_STREAM(g_ptr_array_index((demux)->old_streams,idx))
136 #define QTDEMUX_EXPOSE_GET_LOCK(demux) (&((demux)->expose_lock)) argument
137 #define QTDEMUX_EXPOSE_LOCK(demux) G_STMT_START { \ argument
139 g_mutex_lock (QTDEMUX_EXPOSE_GET_LOCK (demux)); \
143 #define QTDEMUX_EXPOSE_UNLOCK(demux) G_STMT_START { \ argument
145 g_mutex_unlock (QTDEMUX_EXPOSE_GET_LOCK (demux)); \
264 static void gst_qtdemux_check_send_pending_segment (GstQTDemux * demux);
329 static void gst_qtdemux_stream_check_and_change_stsd_index (GstQTDemux * demux,
331 static GstFlowReturn gst_qtdemux_process_adapter (GstQTDemux * demux,
334 static void gst_qtdemux_check_seekability (GstQTDemux * demux);
372 static void gst_qtdemux_send_gap_for_segment (GstQTDemux * demux,
1837 _get_upstream_id (GstQTDemux * demux) in _get_upstream_id() argument
1839 gchar *upstream_id = gst_pad_get_stream_id (demux->sinkpad); in _get_upstream_id()
1849 if (gst_element_query (GST_ELEMENT_CAST (demux), query)) { in _get_upstream_id()
1864 GST_FIXME_OBJECT (demux, "Creating random stream-id, consider " in _get_upstream_id()
1877 _create_stream (GstQTDemux * demux, guint32 track_id) in _create_stream() argument
1883 stream->demux = demux; in _create_stream()
1885 upstream_id = _get_upstream_id (demux); in _create_stream()
1921 gst_qtdemux_setcaps (GstQTDemux * demux, GstCaps * caps) in gst_qtdemux_setcaps() argument
1927 GST_DEBUG_OBJECT (demux, "Sink set caps: %" GST_PTR_FORMAT, caps); in gst_qtdemux_setcaps()
1936 demux->fragmented = TRUE; in gst_qtdemux_setcaps()
1937 demux->mss_mode = TRUE; in gst_qtdemux_setcaps()
1939 if (QTDEMUX_N_STREAMS (demux) > 1) { in gst_qtdemux_setcaps()
1951 if (QTDEMUX_N_STREAMS (demux) == 0) { in gst_qtdemux_setcaps()
1952 stream = _create_stream (demux, 1); in gst_qtdemux_setcaps()
1953 g_ptr_array_add (demux->active_streams, stream); in gst_qtdemux_setcaps()
1959 stream = QTDEMUX_NTH_STREAM (demux, 0); in gst_qtdemux_setcaps()
1969 demux->timescale = stream->timescale; in gst_qtdemux_setcaps()
1974 GST_DEBUG_OBJECT (demux, "We have a new caps %" GST_PTR_FORMAT, in gst_qtdemux_setcaps()
2007 gst_caps_replace (&demux->media_caps, (GstCaps *) mediacaps); in gst_qtdemux_setcaps()
2009 demux->mss_mode = FALSE; in gst_qtdemux_setcaps()
2206 GstQTDemux *demux = GST_QTDEMUX (parent); in gst_qtdemux_handle_sink_event() local
2209 GST_LOG_OBJECT (demux, "handling %s event", GST_EVENT_TYPE_NAME (event)); in gst_qtdemux_handle_sink_event()
2221 GST_DEBUG_OBJECT (demux, "received newsegment %" GST_SEGMENT_FORMAT, in gst_qtdemux_handle_sink_event()
2225 demux->upstream_format_is_time = TRUE; in gst_qtdemux_handle_sink_event()
2226 demux->segment_seqnum = gst_event_get_seqnum (event); in gst_qtdemux_handle_sink_event()
2228 GST_DEBUG_OBJECT (demux, "Not storing upstream newsegment, " in gst_qtdemux_handle_sink_event()
2232 if (demux->state != QTDEMUX_STATE_MOVIE || !QTDEMUX_N_STREAMS (demux)) { in gst_qtdemux_handle_sink_event()
2233 GST_DEBUG_OBJECT (demux, "still starting, eating event"); in gst_qtdemux_handle_sink_event()
2243 GST_DEBUG_OBJECT (demux, "Stored seek offset: %" G_GINT64_FORMAT in gst_qtdemux_handle_sink_event()
2245 demux->seek_offset, segment.start); in gst_qtdemux_handle_sink_event()
2247 && demux->seek_offset == segment.start) { in gst_qtdemux_handle_sink_event()
2248 GST_OBJECT_LOCK (demux); in gst_qtdemux_handle_sink_event()
2252 segment.start = demux->push_seek_start; in gst_qtdemux_handle_sink_event()
2253 segment.stop = demux->push_seek_stop; in gst_qtdemux_handle_sink_event()
2254 GST_DEBUG_OBJECT (demux, "Replaced segment with stored seek " in gst_qtdemux_handle_sink_event()
2257 GST_OBJECT_UNLOCK (demux); in gst_qtdemux_handle_sink_event()
2265 gst_qtdemux_find_sample (demux, segment.start, TRUE, FALSE, NULL, in gst_qtdemux_handle_sink_event()
2271 gst_qtdemux_find_sample (demux, segment.stop, FALSE, FALSE, NULL, in gst_qtdemux_handle_sink_event()
2280 gst_qtdemux_process_adapter (demux, TRUE); in gst_qtdemux_handle_sink_event()
2282 GST_DEBUG_OBJECT (demux, "unsupported segment format, ignoring"); in gst_qtdemux_handle_sink_event()
2287 if (!demux->upstream_format_is_time) { in gst_qtdemux_handle_sink_event()
2291 segment.duration = demux->segment.duration; in gst_qtdemux_handle_sink_event()
2292 segment.base = gst_segment_to_running_time (&demux->segment, in gst_qtdemux_handle_sink_event()
2293 GST_FORMAT_TIME, demux->segment.position); in gst_qtdemux_handle_sink_event()
2296 gst_segment_copy_into (&segment, &demux->segment); in gst_qtdemux_handle_sink_event()
2297 GST_DEBUG_OBJECT (demux, "Pushing newseg %" GST_SEGMENT_FORMAT, &segment); in gst_qtdemux_handle_sink_event()
2300 if (QTDEMUX_N_STREAMS (demux)) { in gst_qtdemux_handle_sink_event()
2301 demux->need_segment = TRUE; in gst_qtdemux_handle_sink_event()
2302 gst_qtdemux_check_send_pending_segment (demux); in gst_qtdemux_handle_sink_event()
2306 gst_adapter_clear (demux->adapter); in gst_qtdemux_handle_sink_event()
2309 demux->offset = offset; in gst_qtdemux_handle_sink_event()
2310 if (demux->upstream_format_is_time) { in gst_qtdemux_handle_sink_event()
2311 GST_DEBUG_OBJECT (demux, "Upstream is driving in time format, " in gst_qtdemux_handle_sink_event()
2313 demux->neededbytes = 16; in gst_qtdemux_handle_sink_event()
2314 demux->todrop = 0; in gst_qtdemux_handle_sink_event()
2316 gst_qtdemux_find_sample (demux, offset, TRUE, TRUE, &stream, &idx, in gst_qtdemux_handle_sink_event()
2319 demux->todrop = stream->samples[idx].offset - offset; in gst_qtdemux_handle_sink_event()
2320 demux->neededbytes = demux->todrop + stream->samples[idx].size; in gst_qtdemux_handle_sink_event()
2323 demux->neededbytes = -1; in gst_qtdemux_handle_sink_event()
2324 demux->todrop = 0; in gst_qtdemux_handle_sink_event()
2334 if (gst_event_get_seqnum (event) == demux->offset_seek_seqnum) { in gst_qtdemux_handle_sink_event()
2338 QTDEMUX_EXPOSE_LOCK (demux); in gst_qtdemux_handle_sink_event()
2339 res = gst_pad_event_default (demux->sinkpad, parent, event); in gst_qtdemux_handle_sink_event()
2340 QTDEMUX_EXPOSE_UNLOCK (demux); in gst_qtdemux_handle_sink_event()
2347 dur = demux->segment.duration; in gst_qtdemux_handle_sink_event()
2348 gst_qtdemux_reset (demux, FALSE); in gst_qtdemux_handle_sink_event()
2349 demux->segment.duration = dur; in gst_qtdemux_handle_sink_event()
2351 if (gst_event_get_seqnum (event) == demux->offset_seek_seqnum) { in gst_qtdemux_handle_sink_event()
2360 if (!demux->pullbased) { in gst_qtdemux_handle_sink_event()
2363 for (i = 0; i < QTDEMUX_N_STREAMS (demux); i++) { in gst_qtdemux_handle_sink_event()
2364 if (QTDEMUX_NTH_STREAM (demux, i)->pad != NULL) { in gst_qtdemux_handle_sink_event()
2370 gst_qtdemux_post_no_playable_stream_error (demux); in gst_qtdemux_handle_sink_event()
2372 GST_DEBUG_OBJECT (demux, "Data still available after EOS: %u", in gst_qtdemux_handle_sink_event()
2373 (guint) gst_adapter_available (demux->adapter)); in gst_qtdemux_handle_sink_event()
2374 if (gst_qtdemux_process_adapter (demux, TRUE) != GST_FLOW_OK) { in gst_qtdemux_handle_sink_event()
2384 gst_qtdemux_setcaps (demux, caps); in gst_qtdemux_handle_sink_event()
2394 GST_DEBUG_OBJECT (demux, "Received protection event for system ID %s", in gst_qtdemux_handle_sink_event()
2396 gst_qtdemux_append_protection_system_id (demux, system_id); in gst_qtdemux_handle_sink_event()
2398 g_queue_push_tail (&demux->protection_event_queue, gst_event_ref (event)); in gst_qtdemux_handle_sink_event()
2400 gst_qtdemux_push_event (demux, event); in gst_qtdemux_handle_sink_event()
2410 gst_qtdemux_process_adapter (demux, TRUE); in gst_qtdemux_handle_sink_event()
2411 gst_qtdemux_reset (demux, FALSE); in gst_qtdemux_handle_sink_event()
2413 if (demux->exposed) { in gst_qtdemux_handle_sink_event()
2414 gst_qtdemux_stream_concat (demux, in gst_qtdemux_handle_sink_event()
2415 demux->old_streams, demux->active_streams); in gst_qtdemux_handle_sink_event()
2424 res = gst_pad_event_default (demux->sinkpad, parent, event) & res; in gst_qtdemux_handle_sink_event()
2434 GstQTDemux *demux = GST_QTDEMUX (parent); in gst_qtdemux_handle_sink_query() local
2443 gst_qtdemux_check_seekability (demux); in gst_qtdemux_handle_sink_query()
2445 if (demux->upstream_size != -1 in gst_qtdemux_handle_sink_query()
2446 && gst_qtdemux_get_duration (demux, &duration)) { in gst_qtdemux_handle_sink_query()
2448 gst_util_uint64_scale (8 * demux->upstream_size, GST_SECOND, in gst_qtdemux_handle_sink_query()
2451 GST_LOG_OBJECT (demux, "bitrate query byte length: %" G_GUINT64_FORMAT in gst_qtdemux_handle_sink_query()
2453 demux->upstream_size, GST_TIME_ARGS (duration), bitrate); in gst_qtdemux_handle_sink_query()
2462 res = gst_pad_query_default (pad, (GstObject *) demux, query); in gst_qtdemux_handle_sink_query()
2474 GstQTDemux *demux = GST_QTDEMUX (element);
2476 GST_OBJECT_LOCK (demux);
2477 if (demux->element_index)
2478 gst_object_unref (demux->element_index);
2480 demux->element_index = gst_object_ref (index);
2482 demux->element_index = NULL;
2484 GST_OBJECT_UNLOCK (demux);
2487 gst_index_get_writer_id (index, GST_OBJECT (element), &demux->index_id);
2488 GST_DEBUG_OBJECT (demux, "Set index %" GST_PTR_FORMAT "for writer id %d",
2489 demux->element_index, demux->index_id);
2496 GstQTDemux *demux = GST_QTDEMUX (element);
2498 GST_OBJECT_LOCK (demux);
2499 if (demux->element_index)
2500 result = gst_object_ref (demux->element_index);
2501 GST_OBJECT_UNLOCK (demux);
2503 GST_DEBUG_OBJECT (demux, "Returning index %" GST_PTR_FORMAT, result);
2650 GstQTDemux *demux = stream->demux; in gst_qtdemux_stream_unref() local
2651 gst_element_remove_pad (GST_ELEMENT_CAST (demux), stream->pad); in gst_qtdemux_stream_unref()
2652 GST_OBJECT_LOCK (demux); in gst_qtdemux_stream_unref()
2653 gst_flow_combiner_remove_pad (demux->flowcombiner, stream->pad); in gst_qtdemux_stream_unref()
2654 GST_OBJECT_UNLOCK (demux); in gst_qtdemux_stream_unref()
5383 gst_qtdemux_sync_streams (GstQTDemux * demux) in gst_qtdemux_sync_streams() argument
5387 if (QTDEMUX_N_STREAMS (demux) <= 1) in gst_qtdemux_sync_streams()
5390 for (i = 0; i < QTDEMUX_N_STREAMS (demux); i++) { in gst_qtdemux_sync_streams()
5394 stream = QTDEMUX_NTH_STREAM (demux, i); in gst_qtdemux_sync_streams()
5405 if (demux->segment.flags & GST_SEEK_FLAG_SEGMENT) in gst_qtdemux_sync_streams()
5408 if (demux->pullbased) { in gst_qtdemux_sync_streams()
5415 stream->samples[stream->n_samples - 1].offset >= demux->offset) in gst_qtdemux_sync_streams()
5424 GST_LOG_OBJECT (demux, "current position: %" GST_TIME_FORMAT in gst_qtdemux_sync_streams()
5426 GST_TIME_ARGS (demux->segment.position), GST_TIME_ARGS (end_time)); in gst_qtdemux_sync_streams()
5428 && (end_time + 2 * GST_SECOND < demux->segment.position)) { in gst_qtdemux_sync_streams()
5431 GST_DEBUG_OBJECT (demux, "sending EOS for stream %s", in gst_qtdemux_sync_streams()
5435 if (demux->segment_seqnum != GST_SEQNUM_INVALID) in gst_qtdemux_sync_streams()
5436 gst_event_set_seqnum (event, demux->segment_seqnum); in gst_qtdemux_sync_streams()
5448 gst_qtdemux_combine_flows (GstQTDemux * demux, QtDemuxStream * stream, in gst_qtdemux_combine_flows() argument
5451 GST_LOG_OBJECT (demux, "flow return: %s", gst_flow_get_name (ret)); in gst_qtdemux_combine_flows()
5454 ret = gst_flow_combiner_update_pad_flow (demux->flowcombiner, stream->pad, in gst_qtdemux_combine_flows()
5457 ret = gst_flow_combiner_update_flow (demux->flowcombiner, ret); in gst_qtdemux_combine_flows()
5459 GST_LOG_OBJECT (demux, "combined flow return: %s", gst_flow_get_name (ret)); in gst_qtdemux_combine_flows()
5586 gst_qtdemux_align_buffer (GstQTDemux * demux, in gst_qtdemux_align_buffer() argument
5609 GST_DEBUG_OBJECT (demux, in gst_qtdemux_align_buffer()
6828 has_next_entry (GstQTDemux * demux) in has_next_entry() argument
6833 GST_DEBUG_OBJECT (demux, "Checking if there are samples not played yet"); in has_next_entry()
6835 for (i = 0; i < QTDEMUX_N_STREAMS (demux); i++) { in has_next_entry()
6836 stream = QTDEMUX_NTH_STREAM (demux, i); in has_next_entry()
6844 GST_LOG_OBJECT (demux, "track-id %u samples exhausted", stream->track_id); in has_next_entry()
6847 GST_DEBUG_OBJECT (demux, "Found a sample"); in has_next_entry()
6851 GST_DEBUG_OBJECT (demux, "There wasn't any next sample"); in has_next_entry()
6862 next_entry_size (GstQTDemux * demux) in next_entry_size() argument
6869 GST_LOG_OBJECT (demux, "Finding entry at offset %" G_GUINT64_FORMAT, in next_entry_size()
6870 demux->offset); in next_entry_size()
6872 for (i = 0; i < QTDEMUX_N_STREAMS (demux); i++) { in next_entry_size()
6873 stream = QTDEMUX_NTH_STREAM (demux, i); in next_entry_size()
6881 GST_LOG_OBJECT (demux, "track-id %u samples exhausted", stream->track_id); in next_entry_size()
6885 if (!qtdemux_parse_samples (demux, stream, stream->sample_index)) { in next_entry_size()
6886 GST_LOG_OBJECT (demux, "Parsing of index %u from stbl atom failed!", in next_entry_size()
6893 GST_LOG_OBJECT (demux, in next_entry_size()
6908 GST_LOG_OBJECT (demux, in next_entry_size()
6910 G_GUINT64_FORMAT, target_stream->track_id, smalloffs, demux->offset); in next_entry_size()
6915 if (sample->offset >= demux->offset) { in next_entry_size()
6916 demux->todrop = sample->offset - demux->offset; in next_entry_size()
6917 return sample->size + demux->todrop; in next_entry_size()
6920 GST_DEBUG_OBJECT (demux, in next_entry_size()
6921 "There wasn't any entry at offset %" G_GUINT64_FORMAT, demux->offset); in next_entry_size()
6926 gst_qtdemux_post_progress (GstQTDemux * demux, gint num, gint denom) in gst_qtdemux_post_progress() argument
6930 gst_element_post_message (GST_ELEMENT_CAST (demux), in gst_qtdemux_post_progress()
6931 gst_message_new_element (GST_OBJECT_CAST (demux), in gst_qtdemux_post_progress()
6936 qtdemux_seek_offset (GstQTDemux * demux, guint64 offset) in qtdemux_seek_offset() argument
6941 GST_DEBUG_OBJECT (demux, "Seeking to %" G_GUINT64_FORMAT, offset); in qtdemux_seek_offset()
6949 demux->offset_seek_seqnum = gst_event_get_seqnum (event); in qtdemux_seek_offset()
6950 res = gst_pad_push_event (demux->sinkpad, event); in qtdemux_seek_offset()
6951 demux->offset_seek_seqnum = GST_SEQNUM_INVALID; in qtdemux_seek_offset()
6958 gst_qtdemux_check_seekability (GstQTDemux * demux) in gst_qtdemux_check_seekability() argument
6964 if (demux->upstream_size) in gst_qtdemux_check_seekability()
6967 if (demux->upstream_format_is_time) in gst_qtdemux_check_seekability()
6971 if (!gst_pad_peer_query (demux->sinkpad, query)) { in gst_qtdemux_check_seekability()
6972 GST_DEBUG_OBJECT (demux, "seeking query failed"); in gst_qtdemux_check_seekability()
6980 GST_DEBUG_OBJECT (demux, "doing duration query to fix up unset stop"); in gst_qtdemux_check_seekability()
6981 gst_pad_peer_query_duration (demux->sinkpad, GST_FORMAT_BYTES, &stop); in gst_qtdemux_check_seekability()
6987 GST_DEBUG_OBJECT (demux, "seekable but unknown start/stop -> disable"); in gst_qtdemux_check_seekability()
6994 GST_DEBUG_OBJECT (demux, "seekable: %d (%" G_GUINT64_FORMAT " - %" in gst_qtdemux_check_seekability()
6996 demux->upstream_seekable = seekable; in gst_qtdemux_check_seekability()
6997 demux->upstream_size = seekable ? stop : -1; in gst_qtdemux_check_seekability()
7001 gst_qtdemux_drop_data (GstQTDemux * demux, gint bytes) in gst_qtdemux_drop_data() argument
7003 g_return_if_fail (bytes <= demux->todrop); in gst_qtdemux_drop_data()
7005 GST_LOG_OBJECT (demux, "Dropping %d bytes", bytes); in gst_qtdemux_drop_data()
7006 gst_adapter_flush (demux->adapter, bytes); in gst_qtdemux_drop_data()
7007 demux->neededbytes -= bytes; in gst_qtdemux_drop_data()
7008 demux->offset += bytes; in gst_qtdemux_drop_data()
7009 demux->todrop -= bytes; in gst_qtdemux_drop_data()
7014 gst_qtdemux_check_send_pending_segment (GstQTDemux * demux) in gst_qtdemux_check_send_pending_segment() argument
7016 if (G_UNLIKELY (demux->need_segment)) { in gst_qtdemux_check_send_pending_segment()
7019 if (!demux->upstream_format_is_time) { in gst_qtdemux_check_send_pending_segment()
7020 gst_qtdemux_map_and_push_segments (demux, &demux->segment); in gst_qtdemux_check_send_pending_segment()
7023 segment_event = gst_event_new_segment (&demux->segment); in gst_qtdemux_check_send_pending_segment()
7024 if (demux->segment_seqnum != GST_SEQNUM_INVALID) in gst_qtdemux_check_send_pending_segment()
7025 gst_event_set_seqnum (segment_event, demux->segment_seqnum); in gst_qtdemux_check_send_pending_segment()
7026 gst_qtdemux_push_event (demux, segment_event); in gst_qtdemux_check_send_pending_segment()
7029 demux->need_segment = FALSE; in gst_qtdemux_check_send_pending_segment()
7032 for (i = 0; i < QTDEMUX_N_STREAMS (demux); i++) { in gst_qtdemux_check_send_pending_segment()
7033 QtDemuxStream *stream = QTDEMUX_NTH_STREAM (demux, i); in gst_qtdemux_check_send_pending_segment()
7034 gst_qtdemux_push_tags (demux, stream); in gst_qtdemux_check_send_pending_segment()
7036 GST_INFO_OBJECT (demux, "Sending gap event on stream %d", i); in gst_qtdemux_check_send_pending_segment()
7046 gst_qtdemux_send_gap_for_segment (GstQTDemux * demux, in gst_qtdemux_send_gap_for_segment() argument
7073 GstQTDemux *demux; in gst_qtdemux_chain() local
7075 demux = GST_QTDEMUX (parent); in gst_qtdemux_chain()
7077 GST_DEBUG_OBJECT (demux, in gst_qtdemux_chain()
7082 gst_buffer_get_size (inbuf), demux->offset); in gst_qtdemux_chain()
7088 GST_DEBUG_OBJECT (demux, "Got DISCONT, marking all streams as DISCONT"); in gst_qtdemux_chain()
7090 for (i = 0; i < QTDEMUX_N_STREAMS (demux); i++) { in gst_qtdemux_chain()
7091 QTDEMUX_NTH_STREAM (demux, i)->discont = TRUE; in gst_qtdemux_chain()
7097 if (demux->upstream_format_is_time in gst_qtdemux_chain()
7099 for (i = 0; i < QTDEMUX_N_STREAMS (demux); i++) { in gst_qtdemux_chain()
7101 QtDemuxStream *stream = QTDEMUX_NTH_STREAM (demux, i); in gst_qtdemux_chain()
7102 GST_LOG_OBJECT (demux, in gst_qtdemux_chain()
7106 gst_qtdemux_find_index_for_given_media_offset_linear (demux, in gst_qtdemux_chain()
7110 GST_LOG_OBJECT (demux, in gst_qtdemux_chain()
7115 GST_LOG_OBJECT (demux, in gst_qtdemux_chain()
7120 demux->state = QTDEMUX_STATE_MOVIE; in gst_qtdemux_chain()
7124 demux->neededbytes = stream->samples[res].size; in gst_qtdemux_chain()
7125 demux->offset = GST_BUFFER_OFFSET (inbuf); in gst_qtdemux_chain()
7126 demux->mdatleft = in gst_qtdemux_chain()
7127 demux->mdatsize - demux->offset + demux->mdatoffset; in gst_qtdemux_chain()
7128 demux->todrop = 0; in gst_qtdemux_chain()
7133 GST_DEBUG_OBJECT (demux, "Resetting, actual DISCONT"); in gst_qtdemux_chain()
7135 demux->neededbytes = 16; in gst_qtdemux_chain()
7136 demux->state = QTDEMUX_STATE_INITIAL; in gst_qtdemux_chain()
7137 demux->offset = GST_BUFFER_OFFSET (inbuf); in gst_qtdemux_chain()
7138 gst_adapter_clear (demux->adapter); in gst_qtdemux_chain()
7147 if (!is_gap_input && demux->fragmented && demux->segment.rate < 0) { in gst_qtdemux_chain()
7148 gst_qtdemux_process_adapter (demux, TRUE); in gst_qtdemux_chain()
7149 g_ptr_array_foreach (demux->active_streams, in gst_qtdemux_chain()
7154 gst_adapter_push (demux->adapter, inbuf); in gst_qtdemux_chain()
7156 GST_DEBUG_OBJECT (demux, in gst_qtdemux_chain()
7158 demux->neededbytes, gst_adapter_available (demux->adapter)); in gst_qtdemux_chain()
7160 return gst_qtdemux_process_adapter (demux, FALSE); in gst_qtdemux_chain()
7164 gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force) in gst_qtdemux_process_adapter() argument
7169 if (demux->neededbytes == -1) { in gst_qtdemux_process_adapter()
7173 while (((gst_adapter_available (demux->adapter)) >= demux->neededbytes) && in gst_qtdemux_process_adapter()
7180 discont_offset = gst_adapter_offset_at_discont (demux->adapter); in gst_qtdemux_process_adapter()
7182 gst_adapter_distance_from_discont (demux->adapter); in gst_qtdemux_process_adapter()
7184 GST_DEBUG_OBJECT (demux, in gst_qtdemux_process_adapter()
7187 " bytes)", qt_demux_state_string (demux->state), demux->neededbytes, in gst_qtdemux_process_adapter()
7188 demux->offset, discont_offset, distance_from_discont); in gst_qtdemux_process_adapter()
7192 switch (demux->state) { in gst_qtdemux_process_adapter()
7198 gst_qtdemux_check_seekability (demux); in gst_qtdemux_process_adapter()
7200 data = gst_adapter_map (demux->adapter, demux->neededbytes); in gst_qtdemux_process_adapter()
7203 extract_initial_length_and_fourcc ((guint8 *) data, demux->neededbytes, in gst_qtdemux_process_adapter()
7205 gst_adapter_unmap (demux->adapter); in gst_qtdemux_process_adapter()
7207 GST_DEBUG_OBJECT (demux, "Peeking found [%" GST_FOURCC_FORMAT "] " in gst_qtdemux_process_adapter()
7210 GST_ELEMENT_ERROR (demux, STREAM, DEMUX, in gst_qtdemux_process_adapter()
7218 gint next_entry = next_entry_size (demux); in gst_qtdemux_process_adapter()
7219 if (QTDEMUX_N_STREAMS (demux) > 0 && (next_entry != -1 in gst_qtdemux_process_adapter()
7220 || !demux->fragmented)) { in gst_qtdemux_process_adapter()
7222 demux->state = QTDEMUX_STATE_MOVIE; in gst_qtdemux_process_adapter()
7223 demux->neededbytes = next_entry; in gst_qtdemux_process_adapter()
7224 demux->mdatleft = size; in gst_qtdemux_process_adapter()
7225 demux->mdatsize = demux->mdatleft; in gst_qtdemux_process_adapter()
7233 old = demux->offset; in gst_qtdemux_process_adapter()
7239 if (demux->upstream_seekable && in gst_qtdemux_process_adapter()
7240 demux->upstream_size > 4 * (1 << 20)) { in gst_qtdemux_process_adapter()
7241 res = qtdemux_seek_offset (demux, target); in gst_qtdemux_process_adapter()
7243 GST_DEBUG_OBJECT (demux, "skipping seek"); in gst_qtdemux_process_adapter()
7248 GST_DEBUG_OBJECT (demux, "seek success"); in gst_qtdemux_process_adapter()
7251 if (fourcc == FOURCC_mdat && demux->first_mdat == -1) { in gst_qtdemux_process_adapter()
7252 demux->first_mdat = old; in gst_qtdemux_process_adapter()
7253 GST_DEBUG_OBJECT (demux, "first mdat at %" G_GUINT64_FORMAT, in gst_qtdemux_process_adapter()
7254 demux->first_mdat); in gst_qtdemux_process_adapter()
7257 demux->offset = target; in gst_qtdemux_process_adapter()
7258 demux->neededbytes = 16; in gst_qtdemux_process_adapter()
7259 demux->state = QTDEMUX_STATE_INITIAL; in gst_qtdemux_process_adapter()
7262 demux->offset = old; in gst_qtdemux_process_adapter()
7263 GST_DEBUG_OBJECT (demux, "seek failed/skipped"); in gst_qtdemux_process_adapter()
7266 if (demux->mdatbuffer) in gst_qtdemux_process_adapter()
7267 bs = gst_buffer_get_size (demux->mdatbuffer); in gst_qtdemux_process_adapter()
7272 demux->state = QTDEMUX_STATE_BUFFER_MDAT; in gst_qtdemux_process_adapter()
7273 demux->neededbytes = size; in gst_qtdemux_process_adapter()
7274 if (!demux->mdatbuffer) in gst_qtdemux_process_adapter()
7275 demux->mdatoffset = demux->offset; in gst_qtdemux_process_adapter()
7279 GST_ELEMENT_ERROR (demux, STREAM, DEMUX, in gst_qtdemux_process_adapter()
7288 if (demux->mdatbuffer && !(fourcc == FOURCC_moov in gst_qtdemux_process_adapter()
7291 demux->neededbytes = size; in gst_qtdemux_process_adapter()
7292 demux->state = QTDEMUX_STATE_HEADER; in gst_qtdemux_process_adapter()
7300 GST_DEBUG_OBJECT (demux, "In header"); in gst_qtdemux_process_adapter()
7302 data = gst_adapter_map (demux->adapter, demux->neededbytes); in gst_qtdemux_process_adapter()
7305 extract_initial_length_and_fourcc (data, demux->neededbytes, NULL, in gst_qtdemux_process_adapter()
7310 if (demux->got_moov && QTDEMUX_N_STREAMS (demux) > 0 && in gst_qtdemux_process_adapter()
7311 (!demux->fragmented in gst_qtdemux_process_adapter()
7312 || demux->last_moov_offset == demux->offset)) { in gst_qtdemux_process_adapter()
7313 GST_DEBUG_OBJECT (demux, in gst_qtdemux_process_adapter()
7316 GST_DEBUG_OBJECT (demux, "Parsing [moov]"); in gst_qtdemux_process_adapter()
7318 if (demux->got_moov && demux->fragmented) { in gst_qtdemux_process_adapter()
7319 GST_DEBUG_OBJECT (demux, in gst_qtdemux_process_adapter()
7321 if (demux->moov_node_compressed) { in gst_qtdemux_process_adapter()
7322 g_node_destroy (demux->moov_node_compressed); in gst_qtdemux_process_adapter()
7323 if (demux->moov_node) in gst_qtdemux_process_adapter()
7324 g_free (demux->moov_node->data); in gst_qtdemux_process_adapter()
7326 demux->moov_node_compressed = NULL; in gst_qtdemux_process_adapter()
7327 if (demux->moov_node) in gst_qtdemux_process_adapter()
7328 g_node_destroy (demux->moov_node); in gst_qtdemux_process_adapter()
7329 demux->moov_node = NULL; in gst_qtdemux_process_adapter()
7332 demux->last_moov_offset = demux->offset; in gst_qtdemux_process_adapter()
7335 gst_qtdemux_stream_concat (demux, in gst_qtdemux_process_adapter()
7336 demux->old_streams, demux->active_streams); in gst_qtdemux_process_adapter()
7338 qtdemux_parse_moov (demux, data, demux->neededbytes); in gst_qtdemux_process_adapter()
7339 qtdemux_node_dump (demux, demux->moov_node); in gst_qtdemux_process_adapter()
7340 qtdemux_parse_tree (demux); in gst_qtdemux_process_adapter()
7341 qtdemux_prepare_streams (demux); in gst_qtdemux_process_adapter()
7342 QTDEMUX_EXPOSE_LOCK (demux); in gst_qtdemux_process_adapter()
7343 qtdemux_expose_streams (demux); in gst_qtdemux_process_adapter()
7344 QTDEMUX_EXPOSE_UNLOCK (demux); in gst_qtdemux_process_adapter()
7346 demux->got_moov = TRUE; in gst_qtdemux_process_adapter()
7348 gst_qtdemux_check_send_pending_segment (demux); in gst_qtdemux_process_adapter()
7350 if (demux->moov_node_compressed) { in gst_qtdemux_process_adapter()
7351 g_node_destroy (demux->moov_node_compressed); in gst_qtdemux_process_adapter()
7352 g_free (demux->moov_node->data); in gst_qtdemux_process_adapter()
7354 demux->moov_node_compressed = NULL; in gst_qtdemux_process_adapter()
7355 g_node_destroy (demux->moov_node); in gst_qtdemux_process_adapter()
7356 demux->moov_node = NULL; in gst_qtdemux_process_adapter()
7357 GST_DEBUG_OBJECT (demux, "Finished parsing the header"); in gst_qtdemux_process_adapter()
7360 if ((demux->got_moov || demux->media_caps) && demux->fragmented) { in gst_qtdemux_process_adapter()
7366 GST_DEBUG_OBJECT (demux, "Parsing [moof]"); in gst_qtdemux_process_adapter()
7379 prev_pts = gst_adapter_prev_pts (demux->adapter, &dist); in gst_qtdemux_process_adapter()
7380 prev_offset = demux->offset - dist; in gst_qtdemux_process_adapter()
7381 if (demux->fragment_start_offset == -1 in gst_qtdemux_process_adapter()
7382 || prev_offset > demux->fragment_start_offset) { in gst_qtdemux_process_adapter()
7383 demux->fragment_start_offset = prev_offset; in gst_qtdemux_process_adapter()
7384 demux->fragment_start = prev_pts; in gst_qtdemux_process_adapter()
7385 GST_DEBUG_OBJECT (demux, in gst_qtdemux_process_adapter()
7387 GST_TIME_FORMAT, demux->fragment_start_offset, in gst_qtdemux_process_adapter()
7388 GST_TIME_ARGS (demux->fragment_start)); in gst_qtdemux_process_adapter()
7406 gst_adapter_offset_at_discont (demux->adapter); in gst_qtdemux_process_adapter()
7408 gst_adapter_distance_from_discont (demux->adapter); in gst_qtdemux_process_adapter()
7410 GST_DEBUG_OBJECT (demux, in gst_qtdemux_process_adapter()
7413 demux->offset, adapter_discont_offset, adapter_discont_dist); in gst_qtdemux_process_adapter()
7415 if (demux->upstream_format_is_time) { in gst_qtdemux_process_adapter()
7416 demux->moof_offset = adapter_discont_offset; in gst_qtdemux_process_adapter()
7417 if (demux->moof_offset != GST_BUFFER_OFFSET_NONE) in gst_qtdemux_process_adapter()
7418 demux->moof_offset += adapter_discont_dist; in gst_qtdemux_process_adapter()
7419 if (demux->moof_offset == GST_BUFFER_OFFSET_NONE) in gst_qtdemux_process_adapter()
7420 demux->moof_offset = demux->offset; in gst_qtdemux_process_adapter()
7422 demux->moof_offset = demux->offset; in gst_qtdemux_process_adapter()
7425 if (!qtdemux_parse_moof (demux, data, demux->neededbytes, in gst_qtdemux_process_adapter()
7426 demux->moof_offset, NULL)) { in gst_qtdemux_process_adapter()
7427 gst_adapter_unmap (demux->adapter); in gst_qtdemux_process_adapter()
7433 if (demux->mss_mode && !demux->exposed) { in gst_qtdemux_process_adapter()
7434 QTDEMUX_EXPOSE_LOCK (demux); in gst_qtdemux_process_adapter()
7435 qtdemux_expose_streams (demux); in gst_qtdemux_process_adapter()
7436 QTDEMUX_EXPOSE_UNLOCK (demux); in gst_qtdemux_process_adapter()
7439 gst_qtdemux_check_send_pending_segment (demux); in gst_qtdemux_process_adapter()
7441 GST_DEBUG_OBJECT (demux, "Discarding [moof]"); in gst_qtdemux_process_adapter()
7444 GST_DEBUG_OBJECT (demux, "Parsing [ftyp]"); in gst_qtdemux_process_adapter()
7445 qtdemux_parse_ftyp (demux, data, demux->neededbytes); in gst_qtdemux_process_adapter()
7447 GST_DEBUG_OBJECT (demux, "Parsing [uuid]"); in gst_qtdemux_process_adapter()
7448 qtdemux_parse_uuid (demux, data, demux->neededbytes); in gst_qtdemux_process_adapter()
7450 GST_DEBUG_OBJECT (demux, "Parsing [sidx]"); in gst_qtdemux_process_adapter()
7451 qtdemux_parse_sidx (demux, data, demux->neededbytes); in gst_qtdemux_process_adapter()
7460 GST_DEBUG_OBJECT (demux, in gst_qtdemux_process_adapter()
7465 GST_WARNING_OBJECT (demux, in gst_qtdemux_process_adapter()
7472 gst_adapter_unmap (demux->adapter); in gst_qtdemux_process_adapter()
7475 if (demux->mdatbuffer && QTDEMUX_N_STREAMS (demux)) { in gst_qtdemux_process_adapter()
7479 GST_DEBUG_OBJECT (demux, "We have n_streams:%d and mdatbuffer:%p", in gst_qtdemux_process_adapter()
7480 QTDEMUX_N_STREAMS (demux), demux->mdatbuffer); in gst_qtdemux_process_adapter()
7484 gst_adapter_flush (demux->adapter, demux->neededbytes); in gst_qtdemux_process_adapter()
7487 remaining_data_size = gst_adapter_available (demux->adapter); in gst_qtdemux_process_adapter()
7489 g_assert (demux->restoredata_buffer == NULL); in gst_qtdemux_process_adapter()
7490 demux->restoredata_buffer = in gst_qtdemux_process_adapter()
7491 gst_adapter_take_buffer (demux->adapter, remaining_data_size); in gst_qtdemux_process_adapter()
7492 demux->restoredata_offset = demux->offset + demux->neededbytes; in gst_qtdemux_process_adapter()
7493 GST_DEBUG_OBJECT (demux, in gst_qtdemux_process_adapter()
7496 demux->restoredata_offset); in gst_qtdemux_process_adapter()
7499 gst_adapter_push (demux->adapter, demux->mdatbuffer); in gst_qtdemux_process_adapter()
7500 demux->mdatbuffer = NULL; in gst_qtdemux_process_adapter()
7501 demux->offset = demux->mdatoffset; in gst_qtdemux_process_adapter()
7502 demux->neededbytes = next_entry_size (demux); in gst_qtdemux_process_adapter()
7503 demux->state = QTDEMUX_STATE_MOVIE; in gst_qtdemux_process_adapter()
7504 demux->mdatleft = gst_adapter_available (demux->adapter); in gst_qtdemux_process_adapter()
7505 demux->mdatsize = demux->mdatleft; in gst_qtdemux_process_adapter()
7507 GST_DEBUG_OBJECT (demux, "Carrying on normally"); in gst_qtdemux_process_adapter()
7508 gst_adapter_flush (demux->adapter, demux->neededbytes); in gst_qtdemux_process_adapter()
7511 if (demux->got_moov && demux->first_mdat != -1 in gst_qtdemux_process_adapter()
7512 && has_next_entry (demux)) { in gst_qtdemux_process_adapter()
7516 res = qtdemux_seek_offset (demux, demux->first_mdat); in gst_qtdemux_process_adapter()
7518 demux->offset = demux->first_mdat; in gst_qtdemux_process_adapter()
7520 GST_DEBUG_OBJECT (demux, "Seek back failed"); in gst_qtdemux_process_adapter()
7523 demux->offset += demux->neededbytes; in gst_qtdemux_process_adapter()
7525 demux->neededbytes = 16; in gst_qtdemux_process_adapter()
7526 demux->state = QTDEMUX_STATE_INITIAL; in gst_qtdemux_process_adapter()
7535 GST_DEBUG_OBJECT (demux, "Got our buffer at offset %" G_GUINT64_FORMAT, in gst_qtdemux_process_adapter()
7536 demux->offset); in gst_qtdemux_process_adapter()
7537 buf = gst_adapter_take_buffer (demux->adapter, demux->neededbytes); in gst_qtdemux_process_adapter()
7539 GST_DEBUG_OBJECT (demux, "mdatbuffer starts with %" GST_FOURCC_FORMAT, in gst_qtdemux_process_adapter()
7541 if (demux->mdatbuffer) in gst_qtdemux_process_adapter()
7542 demux->mdatbuffer = gst_buffer_append (demux->mdatbuffer, buf); in gst_qtdemux_process_adapter()
7544 demux->mdatbuffer = buf; in gst_qtdemux_process_adapter()
7545 demux->offset += demux->neededbytes; in gst_qtdemux_process_adapter()
7546 demux->neededbytes = 16; in gst_qtdemux_process_adapter()
7547 demux->state = QTDEMUX_STATE_INITIAL; in gst_qtdemux_process_adapter()
7548 gst_qtdemux_post_progress (demux, 1, 1); in gst_qtdemux_process_adapter()
7559 GST_DEBUG_OBJECT (demux, in gst_qtdemux_process_adapter()
7560 "BEGIN // in MOVIE for offset %" G_GUINT64_FORMAT, demux->offset); in gst_qtdemux_process_adapter()
7562 if (demux->fragmented) { in gst_qtdemux_process_adapter()
7563 GST_DEBUG_OBJECT (demux, "mdat remaining %" G_GUINT64_FORMAT, in gst_qtdemux_process_adapter()
7564 demux->mdatleft); in gst_qtdemux_process_adapter()
7565 if (G_LIKELY (demux->todrop < demux->mdatleft)) { in gst_qtdemux_process_adapter()
7568 if (G_UNLIKELY (demux->neededbytes > demux->mdatleft)) { in gst_qtdemux_process_adapter()
7569 GST_ELEMENT_ERROR (demux, STREAM, DEMUX, in gst_qtdemux_process_adapter()
7575 demux->mdatleft -= demux->neededbytes; in gst_qtdemux_process_adapter()
7577 GST_DEBUG_OBJECT (demux, "data atom emptied; resuming atom scan"); in gst_qtdemux_process_adapter()
7579 gst_qtdemux_drop_data (demux, demux->mdatleft); in gst_qtdemux_process_adapter()
7580 demux->mdatleft = 0; in gst_qtdemux_process_adapter()
7583 demux->state = QTDEMUX_STATE_INITIAL; in gst_qtdemux_process_adapter()
7584 demux->neededbytes = 16; in gst_qtdemux_process_adapter()
7587 if (demux->restoredata_buffer) { in gst_qtdemux_process_adapter()
7588 g_assert (gst_adapter_available (demux->adapter) == 0); in gst_qtdemux_process_adapter()
7590 gst_adapter_push (demux->adapter, demux->restoredata_buffer); in gst_qtdemux_process_adapter()
7591 demux->restoredata_buffer = NULL; in gst_qtdemux_process_adapter()
7592 demux->offset = demux->restoredata_offset; in gst_qtdemux_process_adapter()
7599 if (demux->todrop) { in gst_qtdemux_process_adapter()
7600 if (demux->cenc_aux_info_offset > 0) { in gst_qtdemux_process_adapter()
7604 GST_DEBUG_OBJECT (demux, "parsing cenc auxiliary info"); in gst_qtdemux_process_adapter()
7605 data = gst_adapter_map (demux->adapter, demux->todrop); in gst_qtdemux_process_adapter()
7606 gst_byte_reader_init (&br, data + 8, demux->todrop); in gst_qtdemux_process_adapter()
7607 if (!qtdemux_parse_cenc_aux_info (demux, in gst_qtdemux_process_adapter()
7608 QTDEMUX_NTH_STREAM (demux, 0), &br, in gst_qtdemux_process_adapter()
7609 demux->cenc_aux_info_sizes, demux->cenc_aux_sample_count)) { in gst_qtdemux_process_adapter()
7610 GST_ERROR_OBJECT (demux, "failed to parse cenc auxiliary info"); in gst_qtdemux_process_adapter()
7612 gst_adapter_unmap (demux->adapter); in gst_qtdemux_process_adapter()
7613 g_free (demux->cenc_aux_info_sizes); in gst_qtdemux_process_adapter()
7614 demux->cenc_aux_info_sizes = NULL; in gst_qtdemux_process_adapter()
7617 demux->cenc_aux_info_offset = 0; in gst_qtdemux_process_adapter()
7618 g_free (demux->cenc_aux_info_sizes); in gst_qtdemux_process_adapter()
7619 demux->cenc_aux_info_sizes = NULL; in gst_qtdemux_process_adapter()
7620 gst_adapter_unmap (demux->adapter); in gst_qtdemux_process_adapter()
7622 gst_qtdemux_drop_data (demux, demux->todrop); in gst_qtdemux_process_adapter()
7628 gst_qtdemux_check_send_pending_segment (demux); in gst_qtdemux_process_adapter()
7631 for (i = 0; i < QTDEMUX_N_STREAMS (demux); i++) { in gst_qtdemux_process_adapter()
7632 stream = QTDEMUX_NTH_STREAM (demux, i); in gst_qtdemux_process_adapter()
7638 GST_LOG_OBJECT (demux, in gst_qtdemux_process_adapter()
7645 if (stream->samples[stream->sample_index].offset == demux->offset) in gst_qtdemux_process_adapter()
7652 gst_qtdemux_stream_check_and_change_stsd_index (demux, stream); in gst_qtdemux_process_adapter()
7655 gst_qtdemux_configure_stream (demux, stream); in gst_qtdemux_process_adapter()
7662 GST_DEBUG_OBJECT (demux, "stream : %" GST_FOURCC_FORMAT, in gst_qtdemux_process_adapter()
7671 if (G_UNLIKELY (demux->segment.stop != -1 in gst_qtdemux_process_adapter()
7672 && demux->segment.stop <= pts && stream->on_keyframe) in gst_qtdemux_process_adapter()
7673 && !(demux->upstream_format_is_time && demux->segment.rate < 0)) { in gst_qtdemux_process_adapter()
7674 GST_DEBUG_OBJECT (demux, "we reached the end of our segment."); in gst_qtdemux_process_adapter()
7678 gst_adapter_flush (demux->adapter, demux->neededbytes); in gst_qtdemux_process_adapter()
7679 demux->offset += demux->neededbytes; in gst_qtdemux_process_adapter()
7683 for (i = 0; i < QTDEMUX_N_STREAMS (demux); i++) { in gst_qtdemux_process_adapter()
7684 if (!STREAM_IS_EOS (QTDEMUX_NTH_STREAM (demux, i))) { in gst_qtdemux_process_adapter()
7693 gst_adapter_take_buffer (demux->adapter, demux->neededbytes); in gst_qtdemux_process_adapter()
7698 ret = gst_qtdemux_decorate_and_push_buffer (demux, stream, outbuf, in gst_qtdemux_process_adapter()
7699 dts, pts, duration, keyframe, dts, demux->offset); in gst_qtdemux_process_adapter()
7703 GST_OBJECT_LOCK (demux); in gst_qtdemux_process_adapter()
7704 ret = gst_qtdemux_combine_flows (demux, stream, ret); in gst_qtdemux_process_adapter()
7705 GST_OBJECT_UNLOCK (demux); in gst_qtdemux_process_adapter()
7708 gst_adapter_flush (demux->adapter, demux->neededbytes); in gst_qtdemux_process_adapter()
7715 GST_LOG_OBJECT (demux, "increasing offset %" G_GUINT64_FORMAT " by %u", in gst_qtdemux_process_adapter()
7716 demux->offset, demux->neededbytes); in gst_qtdemux_process_adapter()
7717 demux->offset += demux->neededbytes; in gst_qtdemux_process_adapter()
7718 GST_LOG_OBJECT (demux, "offset is now %" G_GUINT64_FORMAT, in gst_qtdemux_process_adapter()
7719 demux->offset); in gst_qtdemux_process_adapter()
7723 GST_DEBUG_OBJECT (demux, "All streams are EOS, signal upstream"); in gst_qtdemux_process_adapter()
7724 demux->neededbytes = -1; in gst_qtdemux_process_adapter()
7728 if ((demux->neededbytes = next_entry_size (demux)) == -1) { in gst_qtdemux_process_adapter()
7729 if (demux->fragmented) { in gst_qtdemux_process_adapter()
7730 GST_DEBUG_OBJECT (demux, "(temporarily) out of fragmented samples"); in gst_qtdemux_process_adapter()
7732 demux->todrop = demux->mdatleft; in gst_qtdemux_process_adapter()
7733 demux->neededbytes = demux->todrop; in gst_qtdemux_process_adapter()
7749 if (ret == GST_FLOW_OK && demux->state == QTDEMUX_STATE_BUFFER_MDAT && in gst_qtdemux_process_adapter()
7750 gst_adapter_available (demux->adapter) <= demux->neededbytes) { in gst_qtdemux_process_adapter()
7751 gst_qtdemux_post_progress (demux, gst_adapter_available (demux->adapter), in gst_qtdemux_process_adapter()
7752 demux->neededbytes); in gst_qtdemux_process_adapter()
7761 GST_DEBUG_OBJECT (demux, "Stopping, combined return flow %s", in gst_qtdemux_process_adapter()
7767 GST_ELEMENT_ERROR (demux, STREAM, FAILED, (NULL), ("unknown stream found")); in gst_qtdemux_process_adapter()
7773 GST_DEBUG_OBJECT (demux, "no next entry, EOS"); in gst_qtdemux_process_adapter()
7779 GST_ELEMENT_ERROR (demux, STREAM, FAILED, in gst_qtdemux_process_adapter()
7780 (NULL), ("qtdemuxer invalid state %d", demux->state)); in gst_qtdemux_process_adapter()
7786 GST_ELEMENT_ERROR (demux, STREAM, FAILED, in gst_qtdemux_process_adapter()
7828 GstQTDemux *demux = GST_QTDEMUX (parent); in qtdemux_sink_activate_mode() local
7832 demux->pullbased = FALSE; in qtdemux_sink_activate_mode()
7837 demux->pullbased = TRUE; in qtdemux_sink_activate_mode()
8956 gst_qtdemux_stream_check_and_change_stsd_index (GstQTDemux * demux, in gst_qtdemux_stream_check_and_change_stsd_index() argument
8966 GST_ELEMENT_ERROR (demux, STREAM, DEMUX, in gst_qtdemux_stream_check_and_change_stsd_index()