Lines Matching refs:dvdspu

93 static gboolean gst_dvd_spu_video_set_caps (GstDVDSpu * dvdspu, GstPad * pad,
101 static void gst_dvd_spu_redraw_still (GstDVDSpu * dvdspu, gboolean force);
103 static void gst_dvd_spu_check_still_updates (GstDVDSpu * dvdspu);
108 static gboolean gst_dvd_spu_subpic_set_caps (GstDVDSpu * dvdspu, GstPad * pad,
111 static void gst_dvd_spu_clear (GstDVDSpu * dvdspu);
112 static void gst_dvd_spu_flush_spu_info (GstDVDSpu * dvdspu,
114 static void gst_dvd_spu_advance_spu (GstDVDSpu * dvdspu, GstClockTime new_ts);
115 static void gstspu_render (GstDVDSpu * dvdspu, GstBuffer * buf);
117 dvdspu_handle_vid_buffer (GstDVDSpu * dvdspu, GstBuffer * buf);
118 static void gst_dvd_spu_handle_dvd_event (GstDVDSpu * dvdspu, GstEvent * event);
148 gst_dvd_spu_init (GstDVDSpu * dvdspu) in gst_dvd_spu_init() argument
150 dvdspu->videosinkpad = in gst_dvd_spu_init()
152 gst_pad_set_chain_function (dvdspu->videosinkpad, gst_dvd_spu_video_chain); in gst_dvd_spu_init()
153 gst_pad_set_event_function (dvdspu->videosinkpad, gst_dvd_spu_video_event); in gst_dvd_spu_init()
154 gst_pad_set_query_function (dvdspu->videosinkpad, gst_dvd_spu_video_query); in gst_dvd_spu_init()
156 dvdspu->srcpad = gst_pad_new_from_static_template (&src_factory, "src"); in gst_dvd_spu_init()
157 gst_pad_set_event_function (dvdspu->srcpad, gst_dvd_spu_src_event); in gst_dvd_spu_init()
158 gst_pad_set_query_function (dvdspu->srcpad, gst_dvd_spu_src_query); in gst_dvd_spu_init()
160 dvdspu->subpic_sinkpad = in gst_dvd_spu_init()
162 gst_pad_set_chain_function (dvdspu->subpic_sinkpad, gst_dvd_spu_subpic_chain); in gst_dvd_spu_init()
163 gst_pad_set_event_function (dvdspu->subpic_sinkpad, gst_dvd_spu_subpic_event); in gst_dvd_spu_init()
165 GST_PAD_SET_PROXY_ALLOCATION (dvdspu->videosinkpad); in gst_dvd_spu_init()
167 gst_element_add_pad (GST_ELEMENT (dvdspu), dvdspu->videosinkpad); in gst_dvd_spu_init()
168 gst_element_add_pad (GST_ELEMENT (dvdspu), dvdspu->subpic_sinkpad); in gst_dvd_spu_init()
169 gst_element_add_pad (GST_ELEMENT (dvdspu), dvdspu->srcpad); in gst_dvd_spu_init()
171 g_mutex_init (&dvdspu->spu_lock); in gst_dvd_spu_init()
172 dvdspu->pending_spus = g_queue_new (); in gst_dvd_spu_init()
174 gst_dvd_spu_clear (dvdspu); in gst_dvd_spu_init()
178 gst_dvd_spu_clear (GstDVDSpu * dvdspu) in gst_dvd_spu_clear() argument
180 gst_dvd_spu_flush_spu_info (dvdspu, FALSE); in gst_dvd_spu_clear()
181 gst_segment_init (&dvdspu->subp_seg, GST_FORMAT_UNDEFINED); in gst_dvd_spu_clear()
183 dvdspu->spu_input_type = SPU_INPUT_TYPE_NONE; in gst_dvd_spu_clear()
185 gst_buffer_replace (&dvdspu->ref_frame, NULL); in gst_dvd_spu_clear()
186 gst_buffer_replace (&dvdspu->pending_frame, NULL); in gst_dvd_spu_clear()
188 dvdspu->spu_state.info.fps_n = 25; in gst_dvd_spu_clear()
189 dvdspu->spu_state.info.fps_d = 1; in gst_dvd_spu_clear()
191 gst_segment_init (&dvdspu->video_seg, GST_FORMAT_UNDEFINED); in gst_dvd_spu_clear()
197 GstDVDSpu *dvdspu = GST_DVD_SPU (object); in gst_dvd_spu_dispose() local
200 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_dispose()
201 gst_dvd_spu_clear (dvdspu); in gst_dvd_spu_dispose()
202 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_dispose()
210 GstDVDSpu *dvdspu = GST_DVD_SPU (object); in gst_dvd_spu_finalize() local
214 if (dvdspu->spu_state.comp_bufs[i] != NULL) { in gst_dvd_spu_finalize()
215 g_free (dvdspu->spu_state.comp_bufs[i]); in gst_dvd_spu_finalize()
216 dvdspu->spu_state.comp_bufs[i] = NULL; in gst_dvd_spu_finalize()
219 g_queue_free (dvdspu->pending_spus); in gst_dvd_spu_finalize()
220 g_mutex_clear (&dvdspu->spu_lock); in gst_dvd_spu_finalize()
227 gst_dvd_spu_flush_spu_info (GstDVDSpu * dvdspu, gboolean keep_events) in gst_dvd_spu_flush_spu_info() argument
230 SpuState *state = &dvdspu->spu_state; in gst_dvd_spu_flush_spu_info()
233 GST_INFO_OBJECT (dvdspu, "Flushing SPU information"); in gst_dvd_spu_flush_spu_info()
235 if (dvdspu->partial_spu) { in gst_dvd_spu_flush_spu_info()
236 gst_buffer_unref (dvdspu->partial_spu); in gst_dvd_spu_flush_spu_info()
237 dvdspu->partial_spu = NULL; in gst_dvd_spu_flush_spu_info()
240 packet = (SpuPacket *) g_queue_pop_head (dvdspu->pending_spus); in gst_dvd_spu_flush_spu_info()
254 packet = (SpuPacket *) g_queue_pop_head (dvdspu->pending_spus); in gst_dvd_spu_flush_spu_info()
259 g_queue_push_tail (dvdspu->pending_spus, packet); in gst_dvd_spu_flush_spu_info()
264 switch (dvdspu->spu_input_type) { in gst_dvd_spu_flush_spu_info()
266 gstspu_vobsub_flush (dvdspu); in gst_dvd_spu_flush_spu_info()
269 gstspu_pgs_flush (dvdspu); in gst_dvd_spu_flush_spu_info()
279 GstDVDSpu *dvdspu = GST_DVD_SPU (parent); in gst_dvd_spu_src_event() local
283 peer = gst_pad_get_peer (dvdspu->videosinkpad); in gst_dvd_spu_src_event()
319 gst_dvd_spu_video_set_caps (GstDVDSpu * dvdspu, GstPad * pad, GstCaps * caps) in gst_dvd_spu_video_set_caps() argument
329 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_video_set_caps()
331 state = &dvdspu->spu_state; in gst_dvd_spu_video_set_caps()
338 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_video_set_caps()
348 GstDVDSpu *dvdspu = GST_DVD_SPU (gst_pad_get_parent (pad)); in gst_dvd_spu_video_proxy_getcaps() local
354 otherpad = (pad == dvdspu->srcpad) ? dvdspu->videosinkpad : dvdspu->srcpad; in gst_dvd_spu_video_proxy_getcaps()
369 gst_object_unref (dvdspu); in gst_dvd_spu_video_proxy_getcaps()
375 update_video_to_position (GstDVDSpu * dvdspu, GstClockTime new_pos) in update_video_to_position() argument
377 SpuState *state = &dvdspu->spu_state; in update_video_to_position()
381 GST_TIME_ARGS (dvdspu->video_seg.position), GST_TIME_ARGS (start)); in update_video_to_position()
383 while (dvdspu->video_seg.position < new_pos && in update_video_to_position()
385 DVD_SPU_UNLOCK (dvdspu); in update_video_to_position()
386 if (dvdspu_handle_vid_buffer (dvdspu, NULL) != GST_FLOW_OK) { in update_video_to_position()
387 DVD_SPU_LOCK (dvdspu); in update_video_to_position()
390 DVD_SPU_LOCK (dvdspu); in update_video_to_position()
397 GstDVDSpu *dvdspu = (GstDVDSpu *) parent; in gst_dvd_spu_video_event() local
398 SpuState *state = &dvdspu->spu_state; in gst_dvd_spu_video_event()
407 res = gst_dvd_spu_video_set_caps (dvdspu, pad, caps); in gst_dvd_spu_video_event()
409 res = gst_pad_push_event (dvdspu->srcpad, event); in gst_dvd_spu_video_event()
425 GST_DEBUG_OBJECT (dvdspu, in gst_dvd_spu_video_event()
428 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_video_event()
433 gst_dvd_spu_check_still_updates (dvdspu); in gst_dvd_spu_video_event()
437 gst_dvd_spu_redraw_still (dvdspu, TRUE); in gst_dvd_spu_video_event()
438 to_push = dvdspu->pending_frame; in gst_dvd_spu_video_event()
439 dvdspu->pending_frame = NULL; in gst_dvd_spu_video_event()
443 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_video_event()
445 gst_pad_push (dvdspu->srcpad, to_push); in gst_dvd_spu_video_event()
447 GST_DEBUG_OBJECT (dvdspu, in gst_dvd_spu_video_event()
466 GST_DEBUG_OBJECT (dvdspu, "video pad Segment: %" GST_SEGMENT_FORMAT, in gst_dvd_spu_video_event()
469 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_video_event()
471 if (seg.start > dvdspu->video_seg.position) { in gst_dvd_spu_video_event()
472 update_video_to_position (dvdspu, seg.start); in gst_dvd_spu_video_event()
475 dvdspu->video_seg = seg; in gst_dvd_spu_video_event()
476 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_video_event()
488 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_video_event()
489 GST_LOG_OBJECT (dvdspu, "Received GAP. Advancing to %" GST_TIME_FORMAT, in gst_dvd_spu_video_event()
491 update_video_to_position (dvdspu, timestamp); in gst_dvd_spu_video_event()
492 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_video_event()
503 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_video_event()
504 gst_segment_init (&dvdspu->video_seg, GST_FORMAT_UNDEFINED); in gst_dvd_spu_video_event()
505 gst_buffer_replace (&dvdspu->ref_frame, NULL); in gst_dvd_spu_video_event()
506 gst_buffer_replace (&dvdspu->pending_frame, NULL); in gst_dvd_spu_video_event()
508 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_video_event()
552 GstDVDSpu *dvdspu = (GstDVDSpu *) parent; in gst_dvd_spu_video_chain() local
555 g_return_val_if_fail (dvdspu != NULL, GST_FLOW_ERROR); in gst_dvd_spu_video_chain()
557 GST_LOG_OBJECT (dvdspu, "video buffer %p with TS %" GST_TIME_FORMAT, in gst_dvd_spu_video_chain()
560 ret = dvdspu_handle_vid_buffer (dvdspu, buf); in gst_dvd_spu_video_chain()
566 dvdspu_handle_vid_buffer (GstDVDSpu * dvdspu, GstBuffer * buf) in dvdspu_handle_vid_buffer() argument
572 DVD_SPU_LOCK (dvdspu); in dvdspu_handle_vid_buffer()
575 GstClockTime next_ts = dvdspu->video_seg.position; in dvdspu_handle_vid_buffer()
578 dvdspu->spu_state.info.fps_d, dvdspu->spu_state.info.fps_n); in dvdspu_handle_vid_buffer()
582 if (dvdspu->ref_frame == NULL) { in dvdspu_handle_vid_buffer()
583 dvdspu->video_seg.position = next_ts; in dvdspu_handle_vid_buffer()
587 buf = gst_buffer_copy (dvdspu->ref_frame); in dvdspu_handle_vid_buffer()
600 dvdspu->video_seg.position = GST_BUFFER_TIMESTAMP (buf); in dvdspu_handle_vid_buffer()
603 new_ts = gst_segment_to_running_time (&dvdspu->video_seg, GST_FORMAT_TIME, in dvdspu_handle_vid_buffer()
604 dvdspu->video_seg.position); in dvdspu_handle_vid_buffer()
608 GST_TIME_ARGS (dvdspu->video_seg.position), GST_TIME_ARGS (new_ts)); in dvdspu_handle_vid_buffer()
611 gst_dvd_spu_advance_spu (dvdspu, new_ts); in dvdspu_handle_vid_buffer()
616 if ((dvdspu->spu_state.flags & SPU_STATE_FORCED_DSP) || in dvdspu_handle_vid_buffer()
617 ((dvdspu->spu_state.flags & SPU_STATE_FORCED_ONLY) == 0 && in dvdspu_handle_vid_buffer()
618 (dvdspu->spu_state.flags & SPU_STATE_DISPLAY))) { in dvdspu_handle_vid_buffer()
625 gst_buffer_replace (&dvdspu->ref_frame, copy); in dvdspu_handle_vid_buffer()
632 gstspu_render (dvdspu, buf); in dvdspu_handle_vid_buffer()
637 gst_buffer_replace (&dvdspu->ref_frame, buf); in dvdspu_handle_vid_buffer()
641 if (dvdspu->spu_state.flags & SPU_STATE_STILL_FRAME) { in dvdspu_handle_vid_buffer()
642 GST_DEBUG_OBJECT (dvdspu, "Outputting buffer with TS %" GST_TIME_FORMAT in dvdspu_handle_vid_buffer()
647 DVD_SPU_UNLOCK (dvdspu); in dvdspu_handle_vid_buffer()
650 ret = gst_pad_push (dvdspu->srcpad, buf); in dvdspu_handle_vid_buffer()
656 DVD_SPU_UNLOCK (dvdspu); in dvdspu_handle_vid_buffer()
663 gstspu_render (GstDVDSpu * dvdspu, GstBuffer * buf) in gstspu_render() argument
667 if (!gst_video_frame_map (&frame, &dvdspu->spu_state.info, buf, in gstspu_render()
671 switch (dvdspu->spu_input_type) { in gstspu_render()
673 gstspu_vobsub_render (dvdspu, &frame); in gstspu_render()
676 gstspu_pgs_render (dvdspu, &frame); in gstspu_render()
686 gst_dvd_spu_redraw_still (GstDVDSpu * dvdspu, gboolean force) in gst_dvd_spu_redraw_still() argument
690 if (dvdspu->ref_frame) { in gst_dvd_spu_redraw_still()
691 gboolean redraw = (dvdspu->spu_state.flags & SPU_STATE_FORCED_DSP); in gst_dvd_spu_redraw_still()
692 redraw |= (dvdspu->spu_state.flags & SPU_STATE_FORCED_ONLY) == 0 && in gst_dvd_spu_redraw_still()
693 (dvdspu->spu_state.flags & SPU_STATE_DISPLAY); in gst_dvd_spu_redraw_still()
696 GstBuffer *buf = gst_buffer_ref (dvdspu->ref_frame); in gst_dvd_spu_redraw_still()
700 GST_LOG_OBJECT (dvdspu, "Redraw due to Still Frame with ref %p", in gst_dvd_spu_redraw_still()
701 dvdspu->ref_frame); in gst_dvd_spu_redraw_still()
707 gstspu_render (dvdspu, buf); in gst_dvd_spu_redraw_still()
708 gst_buffer_replace (&dvdspu->pending_frame, buf); in gst_dvd_spu_redraw_still()
712 GstBuffer *buf = gst_buffer_ref (dvdspu->ref_frame); in gst_dvd_spu_redraw_still()
718 GST_DEBUG_OBJECT (dvdspu, "Pushing reference frame at start of still"); in gst_dvd_spu_redraw_still()
720 gst_buffer_replace (&dvdspu->pending_frame, buf); in gst_dvd_spu_redraw_still()
723 GST_LOG_OBJECT (dvdspu, "Redraw due to Still Frame skipped"); in gst_dvd_spu_redraw_still()
726 GST_LOG_OBJECT (dvdspu, "Not redrawing still frame - no ref frame"); in gst_dvd_spu_redraw_still()
731 gst_dvd_spu_handle_dvd_event (GstDVDSpu * dvdspu, GstEvent * event) in gst_dvd_spu_handle_dvd_event() argument
735 GST_INFO_OBJECT (dvdspu, "DVD event of type %s on subp pad OOB=%d", in gst_dvd_spu_handle_dvd_event()
739 switch (dvdspu->spu_input_type) { in gst_dvd_spu_handle_dvd_event()
741 hl_change = gstspu_vobsub_handle_dvd_event (dvdspu, event); in gst_dvd_spu_handle_dvd_event()
744 hl_change = gstspu_pgs_handle_dvd_event (dvdspu, event); in gst_dvd_spu_handle_dvd_event()
750 if (hl_change && (dvdspu->spu_state.flags & SPU_STATE_STILL_FRAME)) { in gst_dvd_spu_handle_dvd_event()
751 gst_dvd_spu_redraw_still (dvdspu, FALSE); in gst_dvd_spu_handle_dvd_event()
756 gstspu_execute_event (GstDVDSpu * dvdspu) in gstspu_execute_event() argument
758 switch (dvdspu->spu_input_type) { in gstspu_execute_event()
760 return gstspu_vobsub_execute_event (dvdspu); in gstspu_execute_event()
763 return gstspu_pgs_execute_event (dvdspu); in gstspu_execute_event()
774 gst_dvd_spu_advance_spu (GstDVDSpu * dvdspu, GstClockTime new_ts) in gst_dvd_spu_advance_spu() argument
776 SpuState *state = &dvdspu->spu_state; in gst_dvd_spu_advance_spu()
778 if (G_UNLIKELY (dvdspu->spu_input_type == SPU_INPUT_TYPE_NONE)) in gst_dvd_spu_advance_spu()
782 GST_DEBUG_OBJECT (dvdspu, in gst_dvd_spu_advance_spu()
786 if (!gstspu_execute_event (dvdspu)) { in gst_dvd_spu_advance_spu()
788 SpuPacket *packet = (SpuPacket *) g_queue_pop_head (dvdspu->pending_spus); in gst_dvd_spu_advance_spu()
793 GST_LOG_OBJECT (dvdspu, in gst_dvd_spu_advance_spu()
798 GST_TIME_ARGS (gst_segment_to_running_time (&dvdspu->video_seg, in gst_dvd_spu_advance_spu()
799 GST_FORMAT_TIME, dvdspu->video_seg.position)), in gst_dvd_spu_advance_spu()
800 GST_TIME_ARGS (dvdspu->video_seg.position), in gst_dvd_spu_advance_spu()
804 switch (dvdspu->spu_input_type) { in gst_dvd_spu_advance_spu()
806 gstspu_vobsub_handle_new_buf (dvdspu, packet->event_ts, in gst_dvd_spu_advance_spu()
810 gstspu_pgs_handle_new_buf (dvdspu, packet->event_ts, packet->buf); in gst_dvd_spu_advance_spu()
818 gst_dvd_spu_handle_dvd_event (dvdspu, packet->event); in gst_dvd_spu_advance_spu()
827 gst_dvd_spu_check_still_updates (GstDVDSpu * dvdspu) in gst_dvd_spu_check_still_updates() argument
832 if (dvdspu->spu_state.flags & SPU_STATE_STILL_FRAME) { in gst_dvd_spu_check_still_updates()
834 if (dvdspu->video_seg.format != GST_FORMAT_TIME) in gst_dvd_spu_check_still_updates()
837 vid_ts = gst_segment_to_running_time (&dvdspu->video_seg, in gst_dvd_spu_check_still_updates()
838 GST_FORMAT_TIME, dvdspu->video_seg.position); in gst_dvd_spu_check_still_updates()
839 sub_ts = gst_segment_to_running_time (&dvdspu->subp_seg, in gst_dvd_spu_check_still_updates()
840 GST_FORMAT_TIME, dvdspu->subp_seg.position); in gst_dvd_spu_check_still_updates()
844 GST_DEBUG_OBJECT (dvdspu, in gst_dvd_spu_check_still_updates()
847 gst_dvd_spu_advance_spu (dvdspu, vid_ts); in gst_dvd_spu_check_still_updates()
852 submit_new_spu_packet (GstDVDSpu * dvdspu, GstBuffer * buf) in submit_new_spu_packet() argument
858 GST_DEBUG_OBJECT (dvdspu, in submit_new_spu_packet()
866 if (ts < (GstClockTime) dvdspu->subp_seg.start) { in submit_new_spu_packet()
867 GstClockTimeDiff diff = dvdspu->subp_seg.start - ts; in submit_new_spu_packet()
871 gst_segment_to_running_time (&dvdspu->subp_seg, GST_FORMAT_TIME, in submit_new_spu_packet()
872 dvdspu->subp_seg.start); in submit_new_spu_packet()
880 gst_segment_to_running_time (&dvdspu->subp_seg, GST_FORMAT_TIME, ts); in submit_new_spu_packet()
892 GST_INFO_OBJECT (dvdspu, in submit_new_spu_packet()
897 g_queue_push_tail (dvdspu->pending_spus, spu_packet); in submit_new_spu_packet()
901 gst_dvd_spu_check_still_updates (dvdspu); in submit_new_spu_packet()
910 GstDVDSpu *dvdspu = (GstDVDSpu *) parent; in gst_dvd_spu_subpic_chain() local
914 g_return_val_if_fail (dvdspu != NULL, GST_FLOW_ERROR); in gst_dvd_spu_subpic_chain()
916 GST_INFO_OBJECT (dvdspu, "Have subpicture buffer with timestamp %" in gst_dvd_spu_subpic_chain()
920 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_subpic_chain()
923 dvdspu->subp_seg.position = GST_BUFFER_TIMESTAMP (buf); in gst_dvd_spu_subpic_chain()
926 if (GST_BUFFER_IS_DISCONT (buf) && dvdspu->partial_spu) { in gst_dvd_spu_subpic_chain()
927 gst_buffer_unref (dvdspu->partial_spu); in gst_dvd_spu_subpic_chain()
928 dvdspu->partial_spu = NULL; in gst_dvd_spu_subpic_chain()
931 if (dvdspu->partial_spu != NULL) { in gst_dvd_spu_subpic_chain()
933 GST_WARNING_OBJECT (dvdspu, in gst_dvd_spu_subpic_chain()
935 dvdspu->partial_spu = gst_buffer_append (dvdspu->partial_spu, buf); in gst_dvd_spu_subpic_chain()
940 dvdspu->partial_spu = buf; in gst_dvd_spu_subpic_chain()
945 if (dvdspu->partial_spu == NULL) in gst_dvd_spu_subpic_chain()
948 size = gst_buffer_get_size (dvdspu->partial_spu); in gst_dvd_spu_subpic_chain()
950 switch (dvdspu->spu_input_type) { in gst_dvd_spu_subpic_chain()
956 gst_buffer_extract (dvdspu->partial_spu, 0, header, 2); in gst_dvd_spu_subpic_chain()
959 submit_new_spu_packet (dvdspu, dvdspu->partial_spu); in gst_dvd_spu_subpic_chain()
960 dvdspu->partial_spu = NULL; in gst_dvd_spu_subpic_chain()
962 GST_LOG_OBJECT (dvdspu, "Discarding empty SPU buffer"); in gst_dvd_spu_subpic_chain()
963 gst_buffer_unref (dvdspu->partial_spu); in gst_dvd_spu_subpic_chain()
964 dvdspu->partial_spu = NULL; in gst_dvd_spu_subpic_chain()
968 GST_DEBUG_OBJECT (dvdspu, in gst_dvd_spu_subpic_chain()
971 gst_buffer_unref (dvdspu->partial_spu); in gst_dvd_spu_subpic_chain()
972 dvdspu->partial_spu = NULL; in gst_dvd_spu_subpic_chain()
974 GST_LOG_OBJECT (dvdspu, in gst_dvd_spu_subpic_chain()
989 gst_buffer_map (dvdspu->partial_spu, &map, GST_MAP_READ); in gst_dvd_spu_subpic_chain()
1013 gst_buffer_unmap (dvdspu->partial_spu, &map); in gst_dvd_spu_subpic_chain()
1016 gst_buffer_unref (dvdspu->partial_spu); in gst_dvd_spu_subpic_chain()
1017 dvdspu->partial_spu = NULL; in gst_dvd_spu_subpic_chain()
1019 GST_DEBUG_OBJECT (dvdspu, in gst_dvd_spu_subpic_chain()
1022 submit_new_spu_packet (dvdspu, dvdspu->partial_spu); in gst_dvd_spu_subpic_chain()
1023 dvdspu->partial_spu = NULL; in gst_dvd_spu_subpic_chain()
1028 GST_ERROR_OBJECT (dvdspu, "Input type not configured before SPU passing"); in gst_dvd_spu_subpic_chain()
1033 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_subpic_chain()
1040 GST_ELEMENT_ERROR (dvdspu, RESOURCE, NO_SPACE_LEFT, in gst_dvd_spu_subpic_chain()
1050 GstDVDSpu *dvdspu = (GstDVDSpu *) parent; in gst_dvd_spu_subpic_event() local
1061 res = gst_dvd_spu_subpic_set_caps (dvdspu, pad, caps); in gst_dvd_spu_subpic_event()
1078 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_subpic_event()
1081 GST_DEBUG_OBJECT (dvdspu, in gst_dvd_spu_subpic_event()
1084 g_queue_push_tail (dvdspu->pending_spus, spu_packet); in gst_dvd_spu_subpic_event()
1086 gst_dvd_spu_handle_dvd_event (dvdspu, event); in gst_dvd_spu_subpic_event()
1093 need_push = (dvdspu->pending_frame != NULL); in gst_dvd_spu_subpic_event()
1094 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_subpic_event()
1099 GST_LOG_OBJECT (dvdspu, "Going for stream lock"); in gst_dvd_spu_subpic_event()
1100 GST_PAD_STREAM_LOCK (dvdspu->videosinkpad); in gst_dvd_spu_subpic_event()
1101 GST_LOG_OBJECT (dvdspu, "Got stream lock"); in gst_dvd_spu_subpic_event()
1102 GST_OBJECT_LOCK (dvdspu->videosinkpad); in gst_dvd_spu_subpic_event()
1103 flushing = GST_PAD_IS_FLUSHING (dvdspu->videosinkpad); in gst_dvd_spu_subpic_event()
1104 GST_OBJECT_UNLOCK (dvdspu->videosinkpad); in gst_dvd_spu_subpic_event()
1106 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_subpic_event()
1107 if (dvdspu->pending_frame == NULL || flushing) { in gst_dvd_spu_subpic_event()
1109 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_subpic_event()
1111 to_push = dvdspu->pending_frame; in gst_dvd_spu_subpic_event()
1112 dvdspu->pending_frame = NULL; in gst_dvd_spu_subpic_event()
1114 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_subpic_event()
1115 gst_pad_push (dvdspu->srcpad, to_push); in gst_dvd_spu_subpic_event()
1117 GST_LOG_OBJECT (dvdspu, "Dropping stream lock"); in gst_dvd_spu_subpic_event()
1118 GST_PAD_STREAM_UNLOCK (dvdspu->videosinkpad); in gst_dvd_spu_subpic_event()
1131 GST_DEBUG_OBJECT (dvdspu, "subpic pad Segment: %" GST_SEGMENT_FORMAT, in gst_dvd_spu_subpic_event()
1134 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_subpic_event()
1136 dvdspu->subp_seg = seg; in gst_dvd_spu_subpic_event()
1137 GST_LOG_OBJECT (dvdspu, "Subpicture segment now: %" GST_SEGMENT_FORMAT, in gst_dvd_spu_subpic_event()
1138 &dvdspu->subp_seg); in gst_dvd_spu_subpic_event()
1139 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_subpic_event()
1151 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_subpic_event()
1152 dvdspu->subp_seg.position = timestamp; in gst_dvd_spu_subpic_event()
1153 GST_LOG_OBJECT (dvdspu, "Received GAP. Segment now: %" GST_SEGMENT_FORMAT, in gst_dvd_spu_subpic_event()
1154 &dvdspu->subp_seg); in gst_dvd_spu_subpic_event()
1155 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_subpic_event()
1164 GST_DEBUG_OBJECT (dvdspu, "Have flush-stop event on SPU pad"); in gst_dvd_spu_subpic_event()
1165 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_subpic_event()
1166 gst_segment_init (&dvdspu->subp_seg, GST_FORMAT_UNDEFINED); in gst_dvd_spu_subpic_event()
1167 gst_dvd_spu_flush_spu_info (dvdspu, TRUE); in gst_dvd_spu_subpic_event()
1168 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_subpic_event()
1189 gst_dvd_spu_subpic_set_caps (GstDVDSpu * dvdspu, GstPad * pad, GstCaps * caps) in gst_dvd_spu_subpic_set_caps() argument
1205 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_subpic_set_caps()
1206 if (dvdspu->spu_input_type != input_type) { in gst_dvd_spu_subpic_set_caps()
1207 GST_INFO_OBJECT (dvdspu, "Incoming SPU packet type changed to %u", in gst_dvd_spu_subpic_set_caps()
1209 dvdspu->spu_input_type = input_type; in gst_dvd_spu_subpic_set_caps()
1210 gst_dvd_spu_flush_spu_info (dvdspu, TRUE); in gst_dvd_spu_subpic_set_caps()
1213 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_subpic_set_caps()
1222 GstDVDSpu *dvdspu = (GstDVDSpu *) element; in gst_dvd_spu_change_state() local
1229 DVD_SPU_LOCK (dvdspu); in gst_dvd_spu_change_state()
1230 gst_dvd_spu_clear (dvdspu); in gst_dvd_spu_change_state()
1231 DVD_SPU_UNLOCK (dvdspu); in gst_dvd_spu_change_state()
1265 dvdspu,