Original commit message from CVS:
* gst/asfdemux/asfheaders.c:
* gst/asfdemux/asfheaders.h:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_init),
(gst_asf_demux_sink_event), (gst_asf_demux_handle_seek_event),
(gst_asf_demux_identify_guid), (asf_demux_peek_object),
(gst_asf_demux_chain_headers), (gst_asf_demux_chain),
(gst_asf_demux_setup_pad), (gst_asf_demux_process_stream),
(gst_asf_demux_process_ext_content_desc),
(gst_asf_demux_get_object_header), (gst_asf_demux_process_header),
(gst_asf_demux_process_file), (gst_asf_demux_process_comment),
(gst_asf_demux_process_bitrate_props_object),
(gst_asf_demux_process_header_ext),
(gst_asf_demux_process_language_list),
(gst_asf_demux_process_ext_stream_props),
(gst_asf_demux_process_queued_extended_stream_objects),
(gst_asf_demux_process_object), (gst_asf_demux_change_state):
* gst/asfdemux/gstasfdemux.h:
Refactor and clean up header parsing and chain function a bit; get
rid of some cruft; make header parsing a tad more robust, fixing
#403188.
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_handle_seek_event),
(gst_asf_demux_process_data), (gst_asf_demux_process_file),
(gst_asf_demux_handle_src_query), (gst_asf_demux_change_state):
* gst/asfdemux/gstasfdemux.h:
Don't crash in the seek event handling code when playtime is 0,
as may be the case with live streams (#386218). Implement SEEKING
query so applications can query seekability without second-guessing
based on whether we have a duration or not.
Original commit message from CVS:
* gst/asfdemux/asfheaders.h:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_get_obj_stream),
(gst_asf_demux_process_stream),
(gst_asf_demux_process_language_list),
(gst_asf_demux_process_ext_stream_props),
(gst_asf_demux_process_queued_extended_stream_objects),
(gst_asf_demux_process_object), (gst_asf_demux_change_state):
* gst/asfdemux/gstasfdemux.h:
Parse extended stream properties objects and stream objects
hidden inside them (but delay creation of the appropriate
pads until after all the 'normal' stream objects have been
dealt with) (#343763). Also parse language list object.
Original commit message from CVS:
* gst/asfdemux/asfheaders.c:
* gst/asfdemux/asfheaders.h:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_identify_guid),
(gst_asf_demux_process_header), (gst_asf_demux_push_obj),
(gst_asf_demux_pop_obj), (gst_asf_demux_process_object),
(gst_asf_demux_change_state):
* gst/asfdemux/gstasfdemux.h:
Add some more GUIDs and make debug log more readable
and easier to follow when parsing the headers.
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_setup_pad),
(gst_asf_demux_add_audio_stream), (gst_asf_demux_add_video_stream),
(gst_asf_demux_push_buffer):
* gst/asfdemux/gstasfdemux.h:
Handle unknown codec IDs/fourccs properly (#345879); send tag
events after newsegment event; fix use of GST_FOURCC_FORMAT
macro.
Original commit message from CVS:
Patch by: Fabrizio Gennari <fabrizio dot ge at tiscali dot it>
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_setup_pad),
(gst_asf_demux_process_chunk):
* gst/asfdemux/gstasfdemux.h:
Subtract first timestamp from timestamps, so that
stream starts from 0; makes live streams that don't
start at 0 work again (fixes#317310, #336097).
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_init),
(gst_asf_demux_commit_taglist), (gst_asf_demux_process_comment),
(gst_asf_demux_process_ext_content_desc),
(gst_asf_demux_change_state), (gst_asf_demux_add_audio_stream),
(gst_asf_demux_add_video_stream), (gst_asf_demux_setup_pad):
* gst/asfdemux/gstasfdemux.h:
Improve metadata display, e.g. if the metadata comes before the
streams are loaded (which is perfectly valid).
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/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:
Riff, EBML, fourcc etc. work. Not fully finished, but better than
what we used to have and definately worth a first broad testing.
I've revived rifflib. Rifflib used to be a bytestream-for-riff, which
just dup'ed bytestream. I've rewritten rifflib to be a modern riff-
chunk parser that uses bytestream fully, plus adds some extra functions
so that riff file parsing becomes extremely easy. It also contains some
small usability functions for strh/strf and metadata parsing. Note that
it doesn't use the new tagging yet, that's a TODO.
Avidemux has been rewritten to use this. I think we all agreed that
avidemux was pretty much a big mess, which is because it used all
sort of bytestream magic all around the place. It was just ugly.
This is a lot nicer, very complete and safe. I think this is far more
robust than what the old avidemux could ever have been. Of course, it
might contain bugs, please let me know.
EBML writing has also been implemented. This is useful for matroska.
I'm intending to modify avidemux (with a riffwriter) similarly. Maybe
I'll change wavparse/-enc too to use rifflib.
Lastly, several plugins have been modified to use rifflib's fourcc
parsing instead of their own. this puts fourcc parsing in one central
place, which should make it a lot simpler to add new fourccs. We might
want to move this to its own lib instead of rifflib.
Enjoy!
Original commit message from CVS:
Remove all config.h includes from header files, add it to each source file and remove duplicate config.h includes from several source files
Original commit message from CVS:
merge TYPEFIND branch. Major changes:
- totally reworked type(find) system
- all typefind functions are in gst/typefind now
- more typefind functions then before
- some plugins might fail to compile now because I don't have them installed and they
a) require bytestream or
b) haven't had their typefind fixed.
Please fix those plugins and put the typefind functions into gst/typefind if they don't have dependencies
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
Original commit message from CVS:
Added code to handle split segments, changed src caps to video/avi to make
it work with ffmpeg. Correct time conversion code. Numerous minor bug fixes
and slight code cleanup.
Original commit message from CVS:
First step in giving us asf support is making this code widely available.
Now back to step 2 which used to be step 1 and get this code debugged so
it works :)