Commit graph

90 commits

Author SHA1 Message Date
Tim-Philipp Müller
698b9ab2ae gst/mpegstream/gstmpegparse.c: Don't unref event unconditionally after giving away ownership (gst_pad_push_event(), g...
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_handle_src_event):
Don't unref event unconditionally after giving away ownership
(gst_pad_push_event(), gst_pad_send_event() and
gst_pad_event_default() take ownership of the event
passed to them). Fixes warnings/crashes caused by
navigation events.
2006-03-29 11:31:55 +00:00
Michal Benes
39531423c5 gst/mpegstream/: Timestamps in mpeg stream are 32-bit numbers. Therefore, with a clock_freq of 90kHz this timestamp o...
Original commit message from CVS:
Patch by: Michal Benes <michal dot benes at xeris dot cz>
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_init),
(gst_mpeg_demux_parse_packet), (gst_mpeg_demux_parse_pes),
(gst_mpeg_demux_send_subbuffer), (gst_mpeg_demux_reset):
* gst/mpegstream/gstmpegdemux.h:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead):
Timestamps in mpeg stream are 32-bit numbers. Therefore, with a
clock_freq of 90kHz this timestamp overflows every ~13 hours. This
situation really happens when grabbing DVB streams. Current
mpegdemuxer can not handle this situation correctly and it
restarts counting gstreamer timestamps from zero.
Fixes #326598.
2006-03-23 18:17:34 +00:00
Jens Granseuer
b06e084912 gst/mpegstream/gstmpegparse.c: Declare variables at the beginning of a block and make
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_pad_added),
(gst_mpeg_parse_handle_src_query):
Declare variables at the beginning of a block and make
gcc-2.9x happy (fixes #328957; patch by: Jens Granseuer).
2006-03-01 12:35:09 +00:00
Tim-Philipp Müller
279475a917 gst/mpegstream/gstmpegparse.c: If we haven't set caps on a source pad yet, the caps on the pad are NULL, not un-fixed...
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_send_buffer):
If we haven't set caps on a source pad yet, the caps on the
pad are NULL, not un-fixed. Set caps on outgoing buffers.
2006-01-30 18:57:45 +00:00
Martin Soto
ba4f177426 gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_process_event): Erase spurious call to gst_segment_set_newsegment.
Original commit message from CVS:
2006-01-22  Martin Soto  <martinsoto@users.sourceforge.net>

* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_process_event):
Erase spurious call to gst_segment_set_newsegment.
* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event): Call
the superclass method when handling NEWSEGMENT events.
(gst_dvd_demux_handle_dvd_event): Get rid of dvd-audio-shutdown
and dvd-audio-restart event handling. There are currently less
hackish ways of handling the sparse audio stream problem.
2006-01-22 12:00:46 +00:00
Martin Soto
b34e7d995b gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse): gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_reset) (gst_mpeg_...
Original commit message from CVS:
2006-01-19  Martin Soto  <martinsoto@users.sourceforge.net>

* gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse):
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_reset)
(gst_mpeg_parse_process_event, gst_mpeg_parse_parse_packhead)
(gst_mpeg_parse_change_state):
Make timestamp adjustment somewhat milder. Actual timestamps are
now sent unmodified unless an actual gap is found in the
stream. This should fix time display when playing most MPEG
files.
2006-01-19 21:32:05 +00:00
Tim-Philipp Müller
9828b301eb Pass unhandled queries upstream (useful e.g. for SEEKING query)
Original commit message from CVS:
* ext/amrnb/amrnbparse.c: (gst_amrnbparse_query):
* ext/mad/gstid3tag.c: (gst_id3_tag_src_query):
* ext/mad/gstmad.c: (gst_mad_src_query):
* ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_src_query):
* ext/sidplay/gstsiddec.cc:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_handle_src_query):
* gst/realmedia/rmdemux.c: (gst_rmdemux_src_query):
Pass unhandled queries upstream (useful e.g. for SEEKING query)
(fixes #325652; based on patch by: Philippe); make rmdemux return
FALSE for position queries, instead of setting -1 as value and
returning TRUE.
2006-01-10 11:43:37 +00:00
Martin Soto
216917d0b1 gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts)
Original commit message from CVS:
2006-01-05  Martin Soto  <martinsoto@users.sourceforge.net>

* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts)
(gst_mpeg_parse_process_event, gst_mpeg_parse_pad_added): Don't
rewrite timestamps in the case segments are being set from
upstream, but use timestamps unmodified. Also send proper position
values. This allows for correct time display and makes queries
work in sink elements.

* gst/mpegstream/gstdvddemux.h:
* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init)
(gst_dvd_demux_handle_dvd_event, gst_dvd_demux_send_subbuffer):
Rename flush_filter to segment_filter, which is better represents
what the arreibute does.

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event):
Activate segment filtering when a timestamp discontinuity is seen.
2006-01-05 21:36:49 +00:00
Martin Soto
4252e5c174 gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event): Use the new "audio-shutdown" and "audio-restart" DVD e...
Original commit message from CVS:
2005-12-31  Martin Soto  <martinsoto@users.sourceforge.net>

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event):
Use the new "audio-shutdown" and "audio-restart" DVD events
instead of the "spu-still-frame" event to shutdown and restart
the audio pipeline.

* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts):
Check for cases where the segment-based adjustment calculation
would produce negative values (which result in an overflow) and
return GST_CLOCK_TIME_NONE instead.

* gst/mpegstream/gstdvddemux.h:
* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init)
(gst_dvd_demux_process_event, gst_dvd_demux_send_subbuffer):
Add a mechanism to discard audio buffers with timestamps outside
the currently set segment. This was causing (sometimes serious)
synchronization problems after seeking in DVDs with LPCM audio,
since VOBUs usually contain audio material that lies outside the
timestamp range specified by the header.
2005-12-30 23:51:46 +00:00
Martin Soto
4c81add3e6 Big mpegparse clean up, second round:
Original commit message from CVS:
2005-12-19  Martin Soto  <martinsoto@users.sourceforge.net>

Big mpegparse clean up, second round:

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event):
Send and EOS event down the audio pipeline when an still frame
event arrives. This prevents the pipeline from locking when a
still menu comes directly after a flush.

* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_reset):
Don't send a newsegment in reset.
(gst_mpeg_parse_adjust_ts): Check for invalid timestamps.
(gst_mpeg_parse_handle_newsegment, gst_mpeg_parse_process_event):
Move the code of handle_newsegment to process_event. Send a
NEWSEGMENT after FLUSH_STOP.
(gst_mpeg_parse_change_state): Send a NEWSEGMENT right after
moving to PAUSED.

* gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_event)
(gst_mpeg_demux_class_init): Don't override send_event.
* gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_init)
(gst_mpeg_demux_send_event, gst_mpeg_demux_send_subbuffer)
(gst_mpeg_demux_reset):
* gst/mpegstream/gstmpegdemux.h:  Get rid of just_flushed
attribute.

* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_process_event):
Reset the mpegparse element after a flush.

* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_newsegment):
Don't forward events.
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_process_event):
* gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass):
handle_newsegment is not a virtual method anymore.

* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_send_newsegment)
(gst_mpeg_parse_reset, gst_mpeg_parse_class_init):
* gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass): Get
rid of send_newsegment virtual method.

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event): Only
handle DVD events and call the superclass method for other event
types.
* gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_event): Don't
override process_event anymore.
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_event)
(gst_mpeg_parse_process_event): Move actual event processing to
process event so that subclasses can properly override or extend
it.
* gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass):
Eliminate time parameter in process event.

* gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_init)
(gst_mpeg_demux_parse_packet, gst_mpeg_demux_parse_pes)
(gst_mpeg_demux_send_subbuffer):
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init)
(gst_mpeg_parse_parse_packhead, gst_mpeg_parse_event)
(gst_mpeg_parse_chain): Use the new adjust_ts method instead of
adding the value of the adjust attribute.
* gst/mpegstream/gstmpegdemux.h (struct _GstMPEGVideoStream): Get
rid of the adjust attribute. Now all timestamp adjustments are
performed by mpegparse using the current segment.
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts)
(gst_mpeg_parse_class_init): Implement the adjust_ts method based
on the adjust attribute for SCR values and the current segment.
* gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass): New
adjust_ts virtual method to adjust timestamps for outgoing
buffers.
* gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_newsegment)
(gst_mpeg_demux_parse_packet): Don't override send_newsegment.
* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_class_init)
(gst_dvd_demux_handle_newsegment): Don't override
handle_newsegment.
(gst_dvd_demux_process_event, gst_dvd_demux_handle_dvd_event):
Check for DVD events in process_event instead of
handle_dvd_event.

* gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass):
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_newsegment)
(gst_mpeg_parse_send_newsegment, gst_mpeg_parse_send_event):
* gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_process_event)
(gst_mpeg_demux_send_event):
* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event)
(gst_dvd_demux_handle_dvd_event):
Eliminate the time parameter in send_event.
2005-12-19 17:26:47 +00:00
Martin Soto
81f2585c88 gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_newsegment): Properly handle non contiguous VOBUs by adding the se...
Original commit message from CVS:
2005-12-08  Martin Soto  <martinsoto@users.sourceforge.net>

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_newsegment):
Properly handle non contiguous VOBUs by adding the segment accum
field to the adjust value.

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_class_init)
(gst_dvd_demux_init, gst_dvd_demux_handle_newsegment): Extend
handle_newsegment to prevent sending actual newsegment events and
use tiemstamp rewriting instead.
(gst_dvd_demux_handle_dvd_event): Don't send a newsegment after
dvd-lang-codes.
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_newsegment)
(gst_mpeg_parse_event):
* gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass):
Add a new parameter to handle_newsegment to allow controlling
whether newsegment events are forwarded or not.

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init)
(gst_dvd_demux_handle_dvd_event, gst_dvd_demux_send_subbuffer)
(gst_dvd_demux_reset):
last_end_ptm and discont_time aren't necessary anymore, since
timestamp adjustment is now replaced by newsegment events.
(gst_dvd_demux_init): Prevent MPEGParse from adjusting
timestamps.
* gst/mpegstream/gstdvddemux.h:
* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event):
Don't handle dvd-nav-packet events anymore, since the are now
replaced by standard newsegment events.

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init)
(gst_dvd_demux_handle_dvd_event, gst_dvd_demux_send_subbuffer)
(gst_dvd_demux_change_state):
* gst/mpegstream/gstdvddemux.h:
Get rid of the ignore_next_newmedia_discont hack.
* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_class_init)
(gst_dvd_demux_handle_newsegment):
* gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_class_init)
(gst_mpeg_demux_handle_newsegment): Don't override
handle_newsegment anymore. It was only necessary to handle
NEWMEDIA events.

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event)
(gst_dvd_demux_handle_dvd_event, gst_dvd_demux_set_cur_audio)
(gst_dvd_demux_set_cur_subpicture):
Reactivate handling of DVD events.

* gst/mpegstream/gstmpegparse.c (normal_seek)
(gst_mpeg_parse_handle_src_event)
(gst_mpeg_parse_handle_src_query):
First attempt at reenabling seek.

* gst/mpegstream/gstmpegparse.h:
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init)
(gst_mpeg_parse_update_streaminfo)
(gst_mpeg_parse_get_rate)
(gst_mpeg_parse_convert, gst_mpeg_parse_get_src_query_types)
(gst_mpeg_parse_handle_src_query):
* gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_new_output_pad):
Make queries work again.

* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_reset)
(gst_mpeg_parse_handle_newsegment)
(gst_mpeg_parse_send_newsegment, gst_mpeg_parse_pad_added)
(gst_mpeg_parse_chain, gst_mpeg_parse_handle_src_event):
* gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse):
Get rid of the newsegment_pending attribute, and rely instead on
proper timestamp adjustment.

* gst/mpegstream/gstmpegparse.c
(gst_mpeg_parse_get_src_event_masks): Erase.

* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init):
Initialize fields before creating pads to prevent the pad creation
callback from failing.
(gst_mpeg_parse_reset): Initialize new fields, and change
initialization order to match the order in the structure.
(gst_mpeg_parse_handle_newsegment): Forward new segment events
whenever possible, and update the current segment.
(gst_mpeg_parse_send_newsegment): Update the current segment and
pending_newsegment.
(gst_mpeg_parse_pad_added): Use the current segment to send
newsegment events to new pads.
(gst_mpeg_parse_chain): Properly add adjust time to sent buffers
and events. Properly update newsegment_pending.
* gst/mpegstream/gstmpegparse.h	(struct _GstMPEGParse):
New fields do_adjust and current_segment.

* gst/mpegstream/gstmpegdemux.c:
* gst/mpegstream/gstdvddemux.c:
* gst/mpegstream/gstmpegparse.h:
Rename handle_discont virtual method to handle_newsegment. Erase
some (already commented out support) for old NEW_MEDIA events.

* gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse):
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init)
(gst_mpeg_parse_reset, gst_mpeg_parse_handle_discont)
(gst_mpeg_parse_pad_added, gst_mpeg_parse_parse_packhead)
(gst_mpeg_parse_event, gst_mpeg_parse_chain):
Erase the "pending_scr" field, and replace it by a slightly
different handling of the current SCR. Document code blocks in
parse_packhead and chain.
2005-12-08 12:45:09 +00:00
Thomas Vander Stichele
ffe763c043 expand tabs
Original commit message from CVS:
expand tabs
2005-12-06 19:48:07 +00:00
Tim-Philipp Müller
ceb53c930c gst/mpegstream/: Ref events before sending them to multiple pads, after all gst_pad_send_event() takes ownership of e...
Original commit message from CVS:
Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_event):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_send_newsegment),
(gst_mpeg_parse_send_event):
Ref events before sending them to multiple pads, after all
gst_pad_send_event() takes ownership of events. Don't leak
events that have not been handled (fixes #322745).
2005-11-29 11:26:35 +00:00
Martin Soto
4d652b147a gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event)
Original commit message from CVS:
2005-11-28  Martin Soto  <martinsoto@users.sourceforge.net>

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event)
(gst_dvd_demux_handle_dvd_event): Erase code to prevent mpegparse
from making timestamp adjustments. This will have to be re-added
in some form in the near future, but in order to do that, some nav
packet parsing will be necessary in mpegdemux.
* gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse):
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init)
(g_value_set_int, gst_mpeg_parse_set_property)
Get rid of do_adjust and use_adjust. Rename max_discont to
max_src_gap.
(gst_mpeg_parse_parse_packhead): When max_scr_gap has a value of
-1, no adjustment is made.
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init):
Rename max_discont property to max_scr_gap. Erase "adjust"
property.

* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_send_event): Don't
override send_event anymore, base class does the job.
* gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_event):
Base class now does most of the work.
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_send_event):
Generalize to forwarding the event to all source pads in the
element.

* gst/mpegstream/gstmpegparse.h:
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init)
(gst_mpeg_parse_init, gst_mpeg_parse_set_clock)
(gst_mpeg_parse_chain, gst_mpeg_parse_get_property)
(gst_mpeg_parse_set_property):
Clock synchronization doesn't make sense anymore for a
demultiplexer.
2005-11-28 19:13:51 +00:00
Edward Hervey
254cf104d8 ext/mad/gstmad.c: Proper warning statements,
Original commit message from CVS:
* ext/mad/gstmad.c: (gst_mad_chain):
Proper warning statements,
Don't error if the src pad isn't linked when pushing.
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_change_state):
Proper state_change, avoids borkage when going to READY
2005-11-28 15:47:01 +00:00
Martin Soto
f51be26aa8 gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init) (gst_mpeg_parse_handle_discont, gst_mpeg_parse_send_newsegm...
Original commit message from CVS:
2005-11-23  Martin Soto  <martinsoto@users.sourceforge.net>

* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init)
(gst_mpeg_parse_handle_discont, gst_mpeg_parse_send_newsegment)
(gst_mpeg_parse_chain):
* gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_class_init)
(gst_mpeg_demux_send_newsegment):
* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_send_subbuffer):
* gst/mpegstream/gstmpegparse.h:
Rename send_discont method to send_newsegment and add parameters
to handle actual segments. Adapt code all around to run with the
new name and signature.
* gst/mpegstream/gstmpegdemux.c:
* gst/mpegstream/gstmpegparse.c:
* gst/mpegstream/gstdvddemux.c:
Convert to GST_BOILERPLATE.
2005-11-24 13:52:49 +00:00
Wim Taymans
93933f17fa gst/mpegstream/gstmpegparse.c: set_clock returns a boolean.
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_set_clock):
set_clock returns a boolean.
2005-11-22 19:07:13 +00:00
Andy Wingo
d731d22791 ext/a52dec/gsta52dec.c (gst_a52dec_sink_event) ext/mad/gstid3tag.c (gst_id3_tag_sink_event) ext/mad/gstmad.c (gst_mad...
Original commit message from CVS:
2005-11-22  Andy Wingo  <wingo@pobox.com>

* ext/a52dec/gsta52dec.c (gst_a52dec_sink_event)
* ext/mad/gstid3tag.c (gst_id3_tag_sink_event)
* ext/mad/gstmad.c (gst_mad_chain)
* gst/mpegaudioparse/gstmpegaudioparse.c
(gst_mp3parse_sink_event)
* gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event)
* gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_discont)
(gst_mpeg_parse_send_discont, gst_mpeg_parse_pad_added)
* gst/realmedia/rmdemux.c (gst_rmdemux_perform_seek)
(gst_rmdemux_chain, gst_rmdemux_add_stream): Run update-funcnames.
2005-11-22 11:55:32 +00:00
Tim-Philipp Müller
cbc750649e ext/mpeg2dec/gstmpeg2dec.c: Set DELTA_UNIT flag on outgoing buffers if this is NOT a keyframe; nice-ify debug message...
Original commit message from CVS:
* ext/mpeg2dec/gstmpeg2dec.c: (handle_slice),
(gst_mpeg2dec_sink_event):
Set DELTA_UNIT flag on outgoing buffers if this is NOT a keyframe;
nice-ify debug message in event handler; add CHECKME.
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_event),
(gst_dvd_demux_send_event), (gst_dvd_demux_process_private),
(gst_dvd_demux_send_subbuffer), (gst_dvd_demux_reset),
(gst_dvd_demux_sync_stream_to_time):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_class_init),
(gst_mpeg_demux_process_event), (gst_mpeg_demux_send_event),
(gst_mpeg_demux_handle_discont), (gst_mpeg_demux_new_output_pad),
(gst_mpeg_demux_parse_packet), (gst_mpeg_demux_parse_pes),
(gst_mpeg_demux_send_subbuffer), (gst_mpeg_demux_process_private),
(gst_mpeg_demux_sync_stream_to_time),
(gst_mpeg_demux_handle_src_event), (gst_mpeg_demux_reset):
* gst/mpegstream/gstmpegdemux.h:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_init),
(gst_mpeg_parse_handle_discont), (gst_mpeg_parse_send_buffer),
(gst_mpeg_parse_process_event), (gst_mpeg_parse_send_discont),
(gst_mpeg_parse_send_event), (gst_mpeg_parse_event),
(gst_mpeg_parse_chain):
* gst/mpegstream/gstmpegparse.h:
Get rid of GST_PAD_IS_USABLE and fix GstFlowReturn vs. gboolean
return value confusion (gst_pad_push vs. gst_pad_send_event and
gst_pad_push_event); pass flow return values to caller;
miscellaneous fixes and clean-ups.
2005-11-15 14:19:38 +00:00
Josef Zlomek
d45697d6ed partially port the mpegstream plugin to GStreamer 0.9.
Original commit message from CVS:
2005-11-14  Martin Soto  <martinsoto@users.sourceforge.net>

* configure.ac:
* gst/mpegstream/Makefile.am:
* gst/mpegstream/gstdvddemux.c:
* gst/mpegstream/gstdvddemux.h:
* gst/mpegstream/gstmpegdemux.c:
* gst/mpegstream/gstmpegdemux.h:
* gst/mpegstream/gstmpegpacketize.c:
* gst/mpegstream/gstmpegpacketize.h:
* gst/mpegstream/gstmpegparse.c:
* gst/mpegstream/gstmpegparse.h:
* gst/mpegstream/gstmpegstream.c:
* gst/mpegstream/gstrfc2250enc.c:
* gst/mpegstream/gstrfc2250enc.h:
Applied patch from Josef Zlomek <josef.zlomek@xeris.cz> to
partially port the mpegstream plugin to GStreamer 0.9.
2005-11-14 21:20:21 +00:00
Stefan Kost
470f3bb857 renamed GST_FLAGS macros to GST_OBJECT_FLAGS moved bitshift from macro to enum definition
Original commit message from CVS:
* examples/indexing/indexmpeg.c: (main):
* ext/a52dec/gsta52dec.c: (gst_a52dec_init):
* ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_is_open),
(dvdnavsrc_set_property), (dvdnavsrc_open), (dvdnavsrc_close),
(dvdnavsrc_event), (dvdnavsrc_convert), (dvdnavsrc_query):
* ext/dvdread/dvdreadsrc.c: (dvdreadsrc_set_property),
(dvdreadsrc_srcpad_query), (dvdreadsrc_get),
(dvdreadsrc_open_file), (dvdreadsrc_close_file):
* ext/dvdread/dvdreadsrc.h:
* ext/lame/gstlame.h:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_init):
* gst/asfdemux/gstasfmux.c: (gst_asfmux_init):
* gst/iec958/ac3iec.h:
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_init):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_init):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_init):
* gst/mpegstream/gstrfc2250enc.c: (gst_rfc2250_enc_init):
* gst/synaesthesia/gstsynaesthesia.c: (gst_synaesthesia_init):
renamed GST_FLAGS macros to GST_OBJECT_FLAGS
moved bitshift from macro to enum definition
2005-10-12 14:30:36 +00:00
Andy Wingo
fa4bd0499f All plugins updated for element state changes.
Original commit message from CVS:
2005-09-02  Andy Wingo  <wingo@pobox.com>

* All plugins updated for element state changes.
2005-09-02 15:43:54 +00:00
Jan Schmidt
3ef22c4774 ext/mpeg2dec/gstmpeg2dec.c: Don't send things to NULL PAD_PEERs
Original commit message from CVS:
* ext/mpeg2dec/gstmpeg2dec.c:
Don't send things to NULL PAD_PEERs

* gst/deinterlace/gstdeinterlace.c: (gst_deinterlace_chain):
Copy-on-write the incoming buffer.

* gst/mpegstream/gstdvddemux.h:
* gst/mpegstream/gstmpegclock.h:
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead),
(normal_seek), (gst_mpeg_demux_handle_src_event):
* gst/mpegstream/gstmpegdemux.h:
* gst/mpegstream/gstmpegpacketize.h:
* gst/mpegstream/gstmpegparse.c:
(gst_mpeg_parse_update_streaminfo), (gst_mpeg_parse_reset),
(gst_mpeg_parse_handle_discont), (gst_mpeg_parse_parse_packhead),
(gst_mpeg_parse_loop), (gst_mpeg_parse_get_rate),
(gst_mpeg_parse_convert_src), (gst_mpeg_parse_handle_src_query),
(gst_mpeg_parse_handle_src_event), (gst_mpeg_parse_change_state):
* gst/mpegstream/gstmpegparse.h:
* gst/mpegstream/gstrfc2250enc.h:
Various changes to the way time is computed that make seeking and
total time estimation much better here.
Use G_BEGIN/END_DECLS instead of __cplusplus

* gst/videocrop/gstvideocrop.c: (gst_video_crop_chain):
Use gst_buffer_stamp instead of only copying the TIMESTAMP
2005-02-01 16:40:10 +00:00
Jan Schmidt
fa41f815d4 gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_class_init)
Original commit message from CVS:

* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_class_init)
Use 1/2 a second for default max_discont, as PES streams from DVB
seem to have larger spacings in the SCR.
Fix a typo.
2005-01-25 18:26:45 +00:00
Jan Schmidt
f8d863517a ext/a52dec/gsta52dec.c: Add some debug output. Check that a discont has a valid time associated.
Original commit message from CVS:
* ext/a52dec/gsta52dec.c: (gst_a52dec_push),
(gst_a52dec_handle_event), (gst_a52dec_chain):
Add some debug output. Check that a discont has a valid
time associated.
* ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event),
(gst_alsa_sink_loop):
Ignore TAG events. A little extra debug for broken timestamps.
* ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_init), (dvdnavsrc_loop),
(dvdnavsrc_change_state):
Ensure we send a discont to engage the link before we send any
other events.
* ext/dvdread/dvdreadsrc.c: (dvdreadsrc_init),
(dvdreadsrc_finalize), (_close), (_open), (_seek_title),
(_seek_chapter), (seek_sector), (dvdreadsrc_get),
(dvdreadsrc_uri_get_uri), (dvdreadsrc_uri_set_uri):
Handle URI of the form dvd://title[,chapter[,angle]]. Currently only
dvd://title works in totem because typefinding sends a seek that ends
up going back to chapter 1 regardless.
* ext/mpeg2dec/gstmpeg2dec.c:
* ext/mpeg2dec/gstmpeg2dec.h:
Output correct timestamps and handle disconts.
* ext/ogg/gstoggdemux.c: (get_relative):
Small guard against a null dereference.
* ext/pango/gsttextoverlay.c: (gst_textoverlay_finalize),
(gst_textoverlay_set_property):
Free memory when done. Don't call gst_event_filler_get_duration on
EOS events. Use GST_LOG and GST_WARNING instead of g_message and
g_warning.
* ext/smoothwave/gstsmoothwave.c: (gst_smoothwave_init),
(draw_line), (gst_smoothwave_dispose), (gst_sw_sinklink),
(gst_sw_srclink), (gst_smoothwave_chain):
Draw solid lines, prettier colours.
* gst/mpeg2sub/gstmpeg2subt.c: (gst_mpeg2subt_init):
Add a default palette that'll work for some movies.
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_init),
(gst_dvd_demux_handle_dvd_event), (gst_dvd_demux_send_discont),
(gst_dvd_demux_send_subbuffer), (gst_dvd_demux_reset):
* gst/mpegstream/gstdvddemux.h:
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_discont),
(gst_mpeg_demux_parse_syshead), (gst_mpeg_demux_parse_pes):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_init),
(gst_mpeg_parse_handle_discont), (gst_mpeg_parse_parse_packhead):
* gst/mpegstream/gstmpegparse.h:
Use PTM/NAV events when for timestamp adjustment when connected to
dvdnavsrc. Don't use many discont events where one suffices.
* gst/playback/gstplaybasebin.c: (group_destroy),
(gen_preroll_element), (gst_play_base_bin_add_element):
* gst/playback/gstplaybasebin.h:
Make sure we remove subtitles from the same bin we put them in.
* gst/subparse/gstsubparse.c: (convert_encoding), (parse_subrip),
(gst_subparse_buffer_format_autodetect),
(gst_subparse_change_state):
Fix some memleaks and invalid accesses.
* gst/typefind/gsttypefindfunctions.c: (ogganx_type_find),
(oggskel_type_find), (cmml_type_find), (plugin_init):
Some typefind functions for Annodex v3.0 files
* gst/wavparse/gstwavparse.h:
GstRiffReadClass is the correct parent class.
2005-01-25 15:34:08 +00:00
Ronald S. Bultje
baa893dc16 gst/mpegstream/gstmpegparse.c: MPEG2 has a useful rate property, so we can actually use that.
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead):
MPEG2 has a useful rate property, so we can actually use that.
For MPEG-1, continue using the bytes/time properties.
2005-01-19 15:06:01 +00:00
Ronald S. Bultje
a95af88f1f gst/mpegstream/: Recreate pads on new-media (#160730).
Original commit message from CVS:
Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_class_init),
(gst_dvd_demux_handle_discont):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_class_init),
(gst_mpeg_demux_handle_discont):
Recreate pads on new-media (#160730).
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_new_pad):
Send discont even if manager changes timestamps (#161929).
2005-01-05 17:03:27 +00:00
Ronald S. Bultje
97148ae7cd ext/dvdread/dvdreadsrc.c: Fix. Don't do one big huge loop around the whole DVD, that will cache all data and thus eat...
Original commit message from CVS:
* ext/dvdread/dvdreadsrc.c: (dvdreadsrc_class_init),
(dvdreadsrc_init), (dvdreadsrc_dispose), (dvdreadsrc_set_property),
(dvdreadsrc_get_property), (_open), (_seek), (_read),
(dvdreadsrc_get), (dvdreadsrc_open_file),
(dvdreadsrc_change_state):
Fix. Don't do one big huge loop around the whole DVD, that will
cache all data and thus eat sizeof(dvd) (several GB) before we
see something.
* gst-libs/gst/riff/riff-read.c: (gst_riff_read_seek):
Actually NULL'ify event after using it.
* gst/matroska/ebml-read.c: (gst_ebml_read_use_event),
(gst_ebml_read_handle_event), (gst_ebml_read_element_id),
(gst_ebml_read_element_length), (gst_ebml_read_element_data),
(gst_ebml_read_seek), (gst_ebml_read_skip):
Handle events.
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_base_init),
(gst_dvd_demux_init), (gst_dvd_demux_get_audio_stream),
(gst_dvd_demux_get_subpicture_stream), (gst_dvd_demux_plugin_init):
Fix timing (this will probably break if I seek using menus, but
I didn't get there yet). VOBs and normal DVDs should now work.
Add a mpeg2-only pad with high rank so this get autoplugged for
MPEG-2 movies.
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_base_init),
(gst_mpeg_demux_class_init), (gst_mpeg_demux_init),
(gst_mpeg_demux_new_output_pad), (gst_mpeg_demux_get_video_stream),
(gst_mpeg_demux_get_audio_stream),
(gst_mpeg_demux_get_private_stream), (gst_mpeg_demux_parse_packet),
(gst_mpeg_demux_parse_pes), (gst_mpeg_demux_plugin_init):
Use this as second rank for MPEG-1 and MPEG-2. Still use this for
MPEG-1 but use dvddemux for MPEG-2.
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_class_init),
(gst_mpeg_parse_init), (gst_mpeg_parse_new_pad),
(gst_mpeg_parse_parse_packhead):
Timing. Only add pad template if it exists. Add sink template from
class and not from ourselves. This means we will always use the
correct sink template even if it is not the one defined in this
file.
2004-10-01 08:42:56 +00:00
Wim Taymans
1fc1f89e91 gst/mpegstream/: Fix playback of mpeg again, timestamps where screwed up by patch 1.61.
Original commit message from CVS:
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_packet),
(gst_mpeg_demux_parse_pes):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead):
Fix playback of mpeg again, timestamps where screwed up by
patch 1.61.
2004-09-29 19:09:26 +00:00
Stéphane Loeuillet
38ef93527b gst/mpegstream/gstmpegparse.c: fix synchronistation for streams recorded from digital PCR fixes bug #119376
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c:
fix synchronistation for streams recorded from digital PCR
fixes bug #119376
2004-09-13 18:56:32 +00:00
Wim Taymans
48858d6543 gst/mpegstream/: Check for error codes from the negotiation functions. Make sure we really set the pad caps when a ne...
Original commit message from CVS:
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream),
(gst_mpeg_demux_get_audio_stream),
(gst_mpeg_demux_process_private):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_send_data):
Check for error codes from the negotiation functions. Make sure
we really set the pad caps when a new pad is created.
2004-07-26 15:17:25 +00:00
Stéphane Loeuillet
a74cdc5f34 first batch : remove ',' at end of enums as they could confuse older gcc, foreign compilers (forte) and gtk-doc
Original commit message from CVS:

first batch :
remove ',' at end of enums as they could confuse older gcc, foreign compilers (forte) and gtk-doc
2004-05-21 22:39:29 +00:00
Martin Soto
40b740126e gst/mpegstream/gstmpegdemux.*: Complete overhaul. All DVD specific functionality split to the new dvddemux element.
Original commit message from CVS:
* gst/mpegstream/gstmpegdemux.c:
* gst/mpegstream/gstmpegdemux.h: Complete overhaul. All DVD
specific functionality split to the new dvddemux element.
* gst/mpegstream/gstdvddemux.c:
* gst/mpegstream/gstdvddemux.h: New demultiplexer for DVD (VOB)
streams, derived from mpegdemux.
* gst/mpegstream/gstmpegparse.c: Discontinuity handling cleaned
up. SCR based timestamp rewriting can be turned off (will probably
completely disappear soon).
* ext/dvdnav/dvdnavsrc.c: Changes resulting from a few months
hacking. General cleanup. All printf statements replaced by
debugging messages. Almost complete libdvdnav support.
(dvdnavsrc_class_init): Got rid of unnecessary signals (replaced
by events. New properties for audio and subpicture languages.
(dvdnavsrc_update_highlight): Now uses events.
(dvdnavsrc_user_op): Cleaned up.
(dvdnavsrc_get): Renamed to dvdnavsrc_loop (element is now loop
based). Lots of cleanup, and propper support for most libdvdnav
events.
(dvdnavsrc_make_dvd_event): New function.
(dvdnavsrc_make_dvd_nav_packet_event): New function.
(dvdnavsrc_make_clut_change_event): New function.
2004-03-27 22:45:41 +00:00
Thomas Vander Stichele
9ac53e9a2a don't mix tabs and spaces
Original commit message from CVS:
don't mix tabs and spaces
2004-03-15 19:32:25 +00:00
Thomas Vander Stichele
908defa2c4 gst-indent
Original commit message from CVS:
gst-indent
2004-03-14 22:34:30 +00:00
Thomas Vander Stichele
2ce3a35e15 change NULL to (NULL) for GST_ELEMENT_ERROR
Original commit message from CVS:
change NULL to (NULL) for GST_ELEMENT_ERROR
Make sure errors end with "."
2004-02-02 17:23:32 +00:00
Thomas Vander Stichele
611d7f4dd0 GST_ELEMENT_ERROR
Original commit message from CVS:
GST_ELEMENT_ERROR
2004-01-29 23:20:44 +00:00
Thomas Vander Stichele
7a033494ea use new error signal and classification
Original commit message from CVS:
use new error signal and classification
2004-01-18 21:46:58 +00:00
Benjamin Otte
b92468d7a4 use element time.
Original commit message from CVS:
2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>

* ext/aalib/gstaasink.c: (gst_aasink_chain):
* ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
* ext/esd/esdsink.c: (gst_esdsink_chain):
* ext/libcaca/gstcacasink.c: (gst_cacasink_chain):
* ext/mas/massink.c: (gst_massink_chain):
* ext/sdl/sdlvideosink.c: (gst_sdlvideosink_chain):
* gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_index),
(gst_matroska_demux_parse_metadata):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_loop),
(gst_mpeg_parse_release_locks):
* gst/tcp/gsttcpsink.c: (gst_tcpsink_chain):
* gst/udp/gstudpsink.c: (gst_udpsink_chain):
* gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get):
* sys/oss/gstosssink.c: (gst_osssink_init), (gst_osssink_chain),
(gst_osssink_change_state):
* sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_chain):
* sys/ximage/ximagesink.c: (gst_ximagesink_chain):
* sys/xvideo/xvideosink.c: (gst_xvideosink_chain),
(gst_xvideosink_release_locks):
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain):
use element time.
* ext/alsa/gstalsaclock.c: (gst_alsa_clock_start),
(gst_alsa_clock_stop):
* gst-libs/gst/audio/audioclock.c: (gst_audio_clock_set_active),
(gst_audio_clock_get_internal_time):
simplify for use with new clocking code.
* testsuite/alsa/Makefile.am:
* testsuite/alsa/sinesrc.c: (sinesrc_init), (sinesrc_force_caps):
fix testsuite for new caps system
2004-01-14 00:53:52 +00:00
Ronald S. Bultje
7334e3b7d8 gst/mpegstream/gstmpegparse.c: When we have received a new SCR right in the first buffer after we should handle the b...
Original commit message from CVS:
2004-01-06  Ronald Bultje  <rbultje@ronald.bitfreak.net>

* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_loop):
When we have received a new SCR right in the first buffer after
a seek (so in the same cycle that handles the discont), we should
handle the buffer instead of unreffing it, else we lose data.
2004-01-06 12:31:31 +00:00
Ronald S. Bultje
9717e2b847 gst/mpegstream/: Fix more integer overflows. Again, see #126967.
Original commit message from CVS:
2004-01-04  Ronald Bultje  <rbultje@ronald.bitfreak.net>

* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead),
(gst_mpeg_demux_parse_packet), (gst_mpeg_demux_parse_pes):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead):
Fix more integer overflows. Again, see #126967.
2004-01-03 23:07:19 +00:00
Ronald S. Bultje
cc5aa11ece gst/mpegstream/: and also fix integer overflows at high PTS values (see #126967).
Original commit message from CVS:
2004-01-03  Ronald Bultje  <rbultje@ronald.bitfreak.net>

* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_pes):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_class_init),
(gst_mpeg_parse_init):
* gst/mpegstream/gstmpegparse.h:
Remove clock (which was never provided, i.e. dead code), and
also fix integer overflows at high PTS values (see #126967).
2004-01-03 13:06:10 +00:00
David Schleef
df0b7b7ae1 ext/alsa/gstalsasrc.c: Remove bogus "src" request pad.
Original commit message from CVS:
* ext/alsa/gstalsasrc.c: (gst_alsa_src_pad_factory),
(gst_alsa_src_base_init): Remove bogus "src" request pad.
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_base_init),
(gst_mpeg_parse_class_init): Move pad template registration
to class_init, since the derived class (mpegdemux) doesn't
want them.
2004-01-03 01:27:31 +00:00
David Schleef
763b096ef2 Convert elements to use gst_pad_use_explicit_caps() where appropriate.
Original commit message from CVS:
Convert elements to use gst_pad_use_explicit_caps() where appropriate.
2004-01-02 07:09:23 +00:00
David Schleef
200089a2ba Merge CAPS branch
Original commit message from CVS:
Merge CAPS branch
2003-12-22 01:47:08 +00:00
Ronald S. Bultje
d71c0d2065 MPEG system streams work too, now
Original commit message from CVS:
MPEG system streams work too, now
2003-11-02 21:22:09 +00:00
Andy Wingo
6300f2611c /GstBuffer/GstData/ in the API where you can pass events. Fix the plugins to deal with that. Fixes #113488.
Original commit message from CVS:
/GstBuffer/GstData/ in the API where you can pass events. Fix the plugins to deal with that. Fixes #113488.
2003-10-08 16:08:10 +00:00
Ronald S. Bultje
0ea59b7a7b New typefind system: bytestream is now part of the core all plugins have been modified to use this new typefind syste...
Original commit message from CVS:
New typefind system:
* bytestream is now part of the core
* all plugins have been modified to use this new typefind system
* asf typefinding added
* mpeg video stream typefiding removed because it's broken
* duplicate typefind entries removed
* extra id3 typefinding added, because we've seen 4 types of files
(riff/wav, flac, vorbis, mp3) with id3 headers and each of these needs
to work. Instead, I've added an id3 element and let it redo typefiding
after the id3 header. this needs a hack because spider only typefinds
once. We can remove this hack once spider supports multiple typefinds.
* with all this, mp3 typefinding is semi-rewritten
* id3 typefinding in flac/vorbis is removed, it's no longer needed
* fixed spider and gst-typefind to use this, too.
* Other general cleanups
2003-10-01 13:14:51 +00:00
Thomas Vander Stichele
e78672327e reverting error patch before making a branch.
Original commit message from CVS:
reverting error patch before making a branch.
2003-09-16 10:00:00 +00:00
Benjamin Otte
fde31ee83f converted gst_element_error to new format in gst/ - gettext pending
Original commit message from CVS:
converted gst_element_error to new format in gst/ - gettext pending
2003-09-15 00:34:47 +00:00