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.
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.
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (_read_var_length), (_read_guid),
(gst_asf_demux_process_segment), (gst_asf_demux_handle_data),
(gst_asf_demux_process_chunk), (gst_asf_demux_handle_sink_event):
Prevent infinite loops. More correct error reporting.
* gst/auparse/gstauparse.c: (gst_auparse_chain):
Error out if negotiation fails.
* gst/playback/gstplaybasebin.c: (setup_source),
(gst_play_base_bin_change_state), (gst_play_base_bin_error),
(gst_play_base_bin_found_tag):
Error/tag forwarding. Pre-roll fixes for source errors on state
changes (e.g. "file does not exist") to prevent hangs.
Original commit message from CVS:
* ext/mad/gstmad.c: (gst_mad_check_caps_reset),
(gst_mad_change_state):
Allow for mp3 rate/channels changes. However, only very
conservatively. Reason that we *have* to enable this is smiply
because the mad find_sync() function is not good enough, it will
regularly sync on random data as valid frames and therefore make
us provide random caps as *final* caps of the stream. The best fix
I could think of is to simply require several of the same stream
changes in a row before we change caps.
The actual testcase that works now is #
* ext/ogg/Makefile.am:
* ext/ogg/gstogg.c: (plugin_init):
* ext/ogg/gstogmparse.c:
OGM support (video only for now; I need an audio sample file).
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init),
(gst_asf_demux_process_stream), (gst_asf_demux_video_caps),
(gst_asf_demux_add_video_stream):
WMV extradata.
* gst/playback/gstplaybasebin.c: (unknown_type):
Don't error out on single unknown-types after all. It's wrong.
If we found type of video and audio but not of a subtitle stream,
it will still error out (which is unwanted). Will find a better fix
later on.
* gst/typefind/gsttypefindfunctions.c: (ogmvideo_type_find),
(ogmaudio_type_find), (plugin_init):
OGM support.
Original commit message from CVS:
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_get_audio_stream):
Caps are only set if the type of the stream is unknown, but this
is initialized in ->init_stream(), so set to UNKNOWN after calling
->init_stream() so that capsnego starts.
Original commit message from CVS:
* ext/dvdnav/README:
Update the README to use dvddemux
* ext/gdk_pixbuf/pixbufscale.c: (gst_pixbufscale_getcaps):
Ensure getcaps returns a subset of the template caps
* gst/mpeg2sub/gstmpeg2subt.c: (gst_mpeg2subt_base_init),
(gst_mpeg2subt_init):
Ensure getcaps returns a subset of the template caps
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_class_init),
(gst_dvd_demux_init), (gst_dvd_demux_get_video_stream),
(gst_dvd_demux_get_subpicture_stream),
(gst_dvd_demux_send_subbuffer), (gst_dvd_demux_set_cur_subpicture):
* gst/mpegstream/gstdvddemux.h:
Set the explicit caps on the current_video pad before pushing
anything
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream),
(gst_mpeg_demux_get_audio_stream):
Free caps used to gst_pad_set_explicit_caps, which takes a const
GstCaps *
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.
Original commit message from CVS:
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_new_output_pad),
(gst_mpeg_demux_parse_packet), (gst_mpeg_demux_process_private):
Add pad to element *after* setting the pad functions so that
the scheduler can use the correct ones.
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_init),
(gst_asf_demux_loop), (gst_asf_demux_process_file),
(gst_asf_demux_process_data), (gst_asf_demux_handle_data),
(gst_asf_demux_process_object), (gst_asf_demux_get_stream),
(gst_asf_demux_process_chunk), (gst_asf_demux_handle_sink_event),
(gst_asf_demux_handle_src_event), (gst_asf_demux_handle_src_query),
(gst_asf_demux_change_state):
* gst/asfdemux/gstasfdemux.h:
You know Chimaira? "I - HATE - EVERYTHING". Yeah, that's what this
feels like. I think we should set a new requirement for demuxers
from now on to implement sane loop functions, data loops, query
and seek functions before first commit into CVS. And this commit
fixes all of the above.
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c:
- fix a mem leak and always propagate tags
- add WMV3 to known video codecs (but no decoder yet)
- replace "surplus data" at end of audio header for what
it is : codec specific data
- fix a typo
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c :
- freeing the event also frees its associated taglist,
that's unfortunate as we need taglist after that. fixed
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_comment):
don't write to memory we might not write to - g_convert does that
for us anyway
(gst_asf_demux_audio_caps):
conmment out gst_util_dump_mem
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_comment):
Fix some odd cases and fix BE metadata parsing of unicode16 text.
Original commit message from CVS:
* ext/a52dec/gsta52dec.c : mark audio/a52, audio/ac3 as deprecated in a comment
* gst/ac3parse/gstac3parse.c : audio/ac3 => audio/x-ac3
* gst/realmedia/rmdemux.c : audio/a52 => audio/x-ac3
Original commit message from CVS:
* ext/jpeg/gstjpegenc.c: (gst_jpegenc_get_type),
(gst_jpegenc_chain):
fix DURATION on outgoing buffers
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_handle_sink_event):
debug using time formats
* sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get):
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_get_xv_support),
(gst_xvimagesink_sink_link):
windows with width/height 0 generate X errors, so don't allow them
Original commit message from CVS:
* gst/asfdemux/Makefile.am:
* gst/asfdemux/asfheaders.c:
* gst/asfdemux/asfheaders.h:
* gst/asfdemux/gstasf.c: (plugin_init):
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_get_type),
(gst_asf_demux_base_init), (gst_asf_demux_process_comment),
(gst_asf_demux_setup_pad):
* gst/asfdemux/gstasfdemux.h:
* gst/asfdemux/gstasfmux.c:
* gst/asfdemux/gstasfmux.h:
Add tagging support to demuxer, split out registration in its own
file instead of in demux (hacky), and prevent having some tables
in our memory multiple times (in asfheaders.h).
Original commit message from CVS:
* ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_dispose):
actually free the URI string
* ext/mad/gstid3tag.c: (gst_id3_tag_src_event):
compute offset correctly when passing discont events
* ext/mad/gstid3tag.c: (gst_id3_tag_handle_event):
don't leak discont events
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_video_caps):
add some missing breaks so caps aren't copied randomly
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream):
if we realloc memory, we better use it
Original commit message from CVS:
a52dec: Use a debug category, Output timestamps correctly
Emit tag info, Handle events, tell liba52dec about cpu
capabilities so it can use MMX etc.
dvdec: Fix a crasher accessing invalid memory
dvdnavsrc:Some support for byte-format seeking.
Small fixes for still frames and menu button overlays
mpeg2dec: Use a debug category. Adjust the report level of several items to
LOG. Call mpeg2_custom_fbuf to mark our buffers as 'custom buffers'
so it doesn't lose the GstBuffer pointer
navseek: Add the navseek debug element for seeking back and forth in a
video stream using arrow keys.
mpeg2subt:Pretty much a complete rewrite. Now a loopbased element. May still
require work to properly synchronise subtitle buffers.
mpegdemux:
dvddemux: Don't attempt to create subbuffers of size 0
Reduce a couple of error outputs to warnings.
y4mencode:Output the y4m frame header correctly
Original commit message from CVS:
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_private):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead),
(gst_mpeg_demux_parse_packet), (gst_mpeg_demux_parse_pes):
get rid of non-standard "..." ranges in case statements.
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.
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_video_caps),
(gst_asf_demux_setup_pad):
Use 25fps as our "fake" fps value (marked for fixage in 0.9.x)
instead of 0. Reason is simple: some elements have a fps range
of 1-max instead of 0-max. So now ASF video actually works.