The new delay is three times as much as the old one, and just happens
to let me properly decode my "Princess Mononoke" DVD, on which dvdreadsrc
was chocking before at 5:11.
While there, merge the constants used in two places into a define.
https://bugzilla.gnome.org/show_bug.cgi?id=539708
Original commit message from CVS:
Patch by: Tal Shalif <tshalif at nargila dot org>
* gst/mpegstream/gstdvddemux.c:
(gst_dvd_demux_get_subpicture_stream):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream),
(gst_mpeg_demux_get_audio_stream):
Fix memmory corruption due to not storing the new updated pointer
after a g_renew(). Fixes#558896.
Original commit message from CVS:
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_base_init),
(gst_dvd_demux_get_audio_stream),
(gst_dvd_demux_get_subpicture_stream),
(gst_dvd_demux_parse_packhead), (gst_dvd_demux_reset):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_init),
(gst_mpeg_demux_process_event), (gst_mpeg_demux_init_stream),
(gst_mpeg_demux_parse_packhead), (gst_mpeg_demux_reset):
* gst/mpegstream/gstmpegdemux.h:
Resend tags event after a FLUSH (seek) to support prerolling
a partial pipeline.
Original commit message from CVS:
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_subbuffer),
(gst_mpeg_demux_sync_stream_to_time):
Bridge gaps in stream by NEWSEGMENT sending. Fixes#540194.
Original commit message from CVS:
* ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_read),
(gst_dvd_read_src_create), (gst_dvd_read_src_handle_seek_event):
Allow and implement non-flushing and/or segment seek
(mainly in TIME and chapter format).
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_event),
(gst_dvd_demux_get_subpicture_stream),
(gst_dvd_demux_synchronise_pads),
(gst_dvd_demux_sync_stream_to_time):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_process_event),
(gst_mpeg_demux_send_subbuffer),
(gst_mpeg_demux_sync_stream_to_time),
(gst_mpeg_streams_reset_cur_ts):
* gst/mpegstream/gstmpegdemux.h:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_process_event),
(gst_mpeg_parse_pad_added), (gst_mpeg_parse_handle_src_query):
Delegate a query to upstream if it can't be handled.
Make segment stop aware.
Fix (subtitle) stream synchronization.
Add some debug statements.
Original commit message from CVS:
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_subbuffer):
Add sanity check so we don't abort for broken or non-MPEG streams,
but instead error out. Fixes crashes/aborts for when our typefinder
wrongly identifies quicktime files as mpeg (which should be fixed in
-base now too). (#440120).
Original commit message from CVS:
Based on patch by: Mark Nauwelaerts <manauw skynet be>
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_event):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_class_init),
(gst_mpeg_demux_process_event), (gst_mpeg_streams_reset_last_flow):
* gst/mpegstream/gstmpegdemux.h:
Reset last_flow values for the various streams after a flushing
seek, otherwise we might aggregate wrong flow returns afterwards
that will make upstream pause silently. This should fix seeking
in DVDs and also fix the Thoggen cropping dialog (#438610).
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_process_event),
(gst_mpeg_parse_send_event):
Post an error message if EOS wasn't handled by anything downstream.
This should fix playbin freezing/hanging with small VobSub subtitle
files (background: not-linked flow returns from downstream are
ignored for a while at the beginning, so if the file is small
upstream will never get a not-linked flow return even if nothing
is connected downstream). (#429960).
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead):
Use our alignment-safe macros here too, since we can't assume that
GST_BUFFER_DATA is aligned (these are subbuffers we're dealing with
here).
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c: Use the GST_READ macro I meant
to in the previous checkin. see #385192. You can have your
cheese back now.
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c: Fix unaligned load that loads
from the dereferenced integer, not the pointer itself. Fixes
#385192.
I'm takin ur cheese!
Original commit message from CVS:
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_base_init),
(gst_dvd_demux_class_init), (gst_dvd_demux_combine_flows),
(gst_dvd_demux_send_subbuffer):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_class_init),
(gst_mpeg_demux_init_stream), (gst_mpeg_demux_parse_packet),
(gst_mpeg_demux_parse_pes), (gst_mpeg_demux_combine_flows),
(gst_mpeg_demux_send_subbuffer):
* gst/mpegstream/gstmpegdemux.h:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_process_event),
(gst_mpeg_parse_chain):
Fix flow value combination; this fixes playbin/totem locking up if
a VobSub file is specified as subtitle file (#334322). Flow value
combination should only happen once we are fairly sure we've got all
pads that are available for now. Since there isn't a well-specified
time when this is the case in MPEG, we'll just assume this is the
case once there has been a certain number of packets for each
stream we've found so far.
Original commit message from CVS:
Patch by: Josep Torra Valles <josep at fluendo com>
* gst/iec958/ac3_padder.c: (ac3p_init):
* gst/mpegstream/gstmpegparse.c:
* gst/realmedia/rmdemux.c: (gst_rmdemux_parse__rmf),
(gst_rmdemux_parse_prop), (gst_rmdemux_parse_mdpr),
(gst_rmdemux_parse_indx), (gst_rmdemux_parse_indx_data),
(gst_rmdemux_parse_data), (gst_rmdemux_parse_cont),
(gst_rmdemux_parse_packet):
Misc. fixes for problems discovered by Forte (different return types
in function declaration and definition, pointer arithmetics with
void pointers). Fixes#362639.
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_sink_event),
(gst_asf_demux_setup_pad), (gst_asf_demux_process_segment):
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_get_audio_stream),
(gst_dvd_demux_get_subpicture_stream):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream),
(gst_mpeg_demux_get_audio_stream),
(gst_mpeg_demux_get_private_stream):
Active pads before adding them to the running element. Don't assert
on non-BYTE format newsegment events in asfdemux.
Original commit message from CVS:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_handle_src_query):
Reflow code so that compiler doesn't complain about possible use
of uninitialised variable any longer; but just in case, initialise
it anyway; also take object ref in query function and do peer pad
stuff in a more thread-safe way.
Original commit message from CVS:
* ext/mad/gstid3tag.c:
* gst/mpegstream/gstrfc2250enc.h:
* gst/synaesthesia/gstsynaesthesia.c:
More G_OBJECT macro fixing.
Original commit message from CVS:
* gst/mpegstream/gstmpegpacketize.c:
(gst_mpeg_packetize_flush_cache), (gst_mpeg_packetize_put):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_chain):
Also flush packetizer cache when we get a buffer that has the
DISCONT flag set; update current byte position from buffer
offset after a flush.
Original commit message from CVS:
* gst/mpegstream/gstmpegpacketize.c: (gst_mpeg_packetize_new),
(gst_mpeg_packetize_flush_cache), (gst_mpeg_packetize_destroy),
(gst_mpeg_packetize_read):
* gst/mpegstream/gstmpegpacketize.h:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_process_event),
(gst_mpeg_parse_change_state):
Flush packetizer cache when we get a FLUSH_STOP event;
remove unused source pad member from packetizer; add debug
category for packetizer.
Original commit message from CVS:
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_change_state):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_change_state):
* gst/mpegstream/gstrfc2250enc.c: (gst_rfc2250_enc_change_state):
Do state changes correctly
Original commit message from CVS:
* gst/mpegstream/gstmpegpacketize.c: (gst_mpeg_packetize_put),
(read_cache):
* gst/mpegstream/gstmpegpacketize.h:
g_malloc() can't fail, we don't need to handle this. Same for
gst_buffer_new_and_alloc().
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_chain):
klass->send_buffer() should have the same semantics as
gst_pad_push(), ie. ownership of the buffer is transfered,
so we never have to unref the buffer no matter what the flow
return value was.
Original commit message from CVS:
* ext/mad/gstmad.c: (index_seek):
move GstIndexEntry *entry variable declaration before
the first instruction
* ext/mad/gstmad.c:
remove debug macros with variable number of parameter by using
GST_DEBUG for WIN32
* gst/dvdsub/gstdvdsubdec.c: (gst_dvd_sub_dec_parse_subpic):
use gst_guint64_to_gdouble for conversions
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_sync_stream_to_time):
replace __FUNCTION__ which is not supported by MSVC by the current function name
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_reset):
remove LL suffix by using G_GINT64_CONSTANT
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead),(gst_mpeg_parse_get_rate):
use gst_guint64_to_gdouble for conversions
* gst/mpegstream/gstmpegparse.h:
remove LL suffix by using G_GINT64_CONSTANT
* win32/vs6:
add project files for tagac3parse, asfdemux, dvdlpcmdec, dvdsub, iec958, lame,
mad, mpegaudioparse, mpegstream, realmedia, synaesthesia
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.
Original commit message from CVS:
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_subbuffer):
Don't ref NULL caps (private streams have NULL caps) (#336387);
also, no need to set caps on the same buffer twice.
Original commit message from CVS:
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_event),
(gst_dvd_demux_handle_dvd_event), (gst_dvd_demux_get_audio_stream),
(gst_dvd_demux_get_subpicture_stream):
* gst/mpegstream/gstmpegdemux.c:
(gst_mpeg_demux_sync_stream_to_time):
Don't leak element and pad names in error messages, use
GST_DEBUG_PAD_NAME instead. Add some more debug code.
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.