summaryrefslogtreecommitdiffstats
path: root/gst/matroska
Commit message (Collapse)AuthorAgeFilesLines
* gst/matroska/matroska-demux.*: Allow an infinite number of stream inside ↵Sebastian Dröge2008-08-022-51/+74
| | | | | | | | | | | | | | | | | | | Matroska containers and use a GPtrArray for ... Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_finalize), (gst_matroska_demux_class_init), (gst_matroska_demux_init), (gst_matroska_demux_combine_flows), (gst_matroska_demux_reset), (gst_matroska_demux_stream_from_num), (gst_matroska_demux_tracknumber_unique), (gst_matroska_demux_add_stream), (gst_matroska_demux_send_event), (gst_matroska_demux_handle_seek_event), (gst_matroska_demux_sync_streams), (gst_matroska_demux_parse_blockgroup_or_simpleblock), (gst_matroska_demux_loop): * gst/matroska/matroska-demux.h: Allow an infinite number of stream inside Matroska containers and use a GPtrArray for storing them instead of allowing "only" 127 streams.
* gst/matroska/: Fix indention everywhere. A broken indent version has added ↵Sebastian Dröge2008-08-024-266/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | newlines after every single declaration so... Original commit message from CVS: * gst/matroska/ebml-read.c: (gst_ebml_read_class_init), (gst_ebml_read_change_state), (gst_ebml_read_element_level_up), (gst_ebml_read_peek_bytes), (gst_ebml_read_element_id), (gst_ebml_read_element_length), (gst_ebml_peek_id), (gst_ebml_read_get_length), (gst_ebml_read_skip), (gst_ebml_read_buffer), (gst_ebml_read_bytes), (gst_ebml_read_uint), (gst_ebml_read_sint), (_ext2dbl), (gst_ebml_read_float), (gst_ebml_read_ascii), (gst_ebml_read_date), (gst_ebml_read_master), (gst_ebml_read_binary), (gst_ebml_read_header): * gst/matroska/ebml-write.c: (gst_ebml_write_element_id), (gst_ebml_write_element_size), (gst_ebml_write_uint), (gst_ebml_write_sint), (gst_ebml_write_ascii), (gst_ebml_write_master_start), (gst_ebml_write_master_finish), (gst_ebml_replace_uint): * gst/matroska/matroska-demux.c: (gst_matroska_demux_reset), (gst_matroska_demux_read_track_encoding), (gst_matroska_demux_read_track_encodings), (gst_matroska_demux_add_stream), (gst_matroskademux_do_index_seek), (gst_matroska_demux_send_event), (gst_matroska_demux_element_send_event), (gst_matroska_demux_handle_seek_event), (gst_matroska_demux_handle_src_event), (gst_matroska_demux_init_stream), (gst_matroska_demux_parse_tracks), (gst_matroska_demux_parse_index_cuetrack), (gst_matroska_demux_parse_index_pointentry), (gst_matroska_demux_parse_index), (gst_matroska_demux_parse_info), (gst_matroska_demux_parse_metadata_id_simple_tag), (gst_matroska_demux_parse_metadata_id_tag), (gst_matroska_demux_parse_metadata), (gst_matroska_demux_parse_attached_file), (gst_matroska_demux_parse_attachments), (gst_matroska_demux_parse_chapters), (gst_matroska_ebmlnum_uint), (gst_matroska_ebmlnum_sint), (gst_matroska_demux_push_hdr_buf), (gst_matroska_demux_push_flac_codec_priv_data), (gst_matroska_demux_push_xiph_codec_priv_data), (gst_matroska_demux_push_dvd_clut_change_event), (gst_matroska_demux_add_mpeg_seq_header), (gst_matroska_demux_add_wvpk_header), (gst_matroska_demux_check_subtitle_buffer), (gst_matroska_decode_buffer), (gst_matroska_demux_parse_blockgroup_or_simpleblock), (gst_matroska_demux_parse_cluster), (gst_matroska_demux_parse_contents_seekentry), (gst_matroska_demux_parse_contents), (gst_matroska_demux_loop_stream_parse_id), (gst_matroska_demux_loop_stream), (gst_matroska_demux_loop), (gst_matroska_demux_video_caps), (gst_matroska_demux_audio_caps), (gst_matroska_demux_subtitle_caps), (gst_matroska_demux_change_state): * gst/matroska/matroska-ids.c: * gst/matroska/matroska-mux.c: (gst_matroska_mux_class_init), (gst_matroska_mux_reset), (gst_matroska_mux_handle_sink_event), (gst_matroska_mux_video_pad_setcaps), (xiph3_streamheader_to_codecdata), (vorbis_streamheader_to_codecdata), (theora_streamheader_to_codecdata), (gst_matroska_mux_audio_pad_setcaps), (gst_matroska_mux_request_new_pad), (gst_matroska_mux_release_pad), (gst_matroska_mux_track_header), (gst_matroska_mux_start), (gst_matroska_mux_write_simple_tag), (gst_matroska_mux_finish), (gst_matroska_mux_best_pad), (gst_matroska_mux_write_data), (gst_matroska_mux_collected), (gst_matroska_mux_change_state): Fix indention everywhere. A broken indent version has added newlines after every single declaration some time ago.
* gst/matroska/matroska-demux.c: If no Tracks are found error out instead of ↵Sebastian Dröge2008-08-021-2/+2
| | | | | | | | | | trying it again until the end of time. Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_loop_stream_parse_id): If no Tracks are found error out instead of trying it again until the end of time.
* gst/matroska/matroska-demux.c: Fix demuxing of raw integer audio. The ↵Sebastian Dröge2008-08-021-1/+1
| | | | | | | | | samples are unsigned only for 8 bit and signed ... Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_audio_caps): Fix demuxing of raw integer audio. The samples are unsigned only for 8 bit and signed otherwise, not the other way around.
* gst/matroska/matroska-mux.c: Add more raw YUV formats to the list of ↵Sebastian Dröge2008-08-021-1/+2
| | | | | | | | supported formats. Original commit message from CVS: * gst/matroska/matroska-mux.c: Add more raw YUV formats to the list of supported formats.
* gst/matroska/matroska-mux.c: Add support for muxing raw float audio now that ↵Sebastian Dröge2008-08-021-8/+32
| | | | | | | | | | | | the spec defines the endianness and add ... Original commit message from CVS: * gst/matroska/matroska-mux.c: (gst_matroska_mux_audio_pad_setcaps): Add support for muxing raw float audio now that the spec defines the endianness and add support for muxing raw integer audio with 24 and 32 bits. Allow muxing of more than 8 audio channels.
* gst/matroska/matroska-mux.c: Add locking to the global array of used track ↵Sebastian Dröge2008-08-021-27/+15
| | | | | | | | | | | | | UIDs to prevent random crashes if more tha... Original commit message from CVS: * gst/matroska/matroska-mux.c: (gst_matroska_mux_create_uid), (gst_matroska_mux_reset), (gst_matroska_mux_start): Add locking to the global array of used track UIDs to prevent random crashes if more than a single matrosmux instance is used. Use 64 bit values for the track UIDs. Use the global GRandom of GLib instead of creating our own one for the few random numbers we need every single time.
* gst/matroska/matroska-demux.c: Handle position and duration query in DEFAULT ↵Sebastian Dröge2008-07-021-32/+69
| | | | | | | | | | | | | | | format if the pad's track has a default ... Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_class_init), (gst_matroska_demux_add_stream), (gst_matroska_demux_query), (gst_matroska_demux_element_query), (gst_matroska_demux_handle_src_query), (gst_matroska_demux_handle_seek_event): Handle position and duration query in DEFAULT format if the pad's track has a default frame duration set. Fix seeking now that the segment's duration doesn't contain the (possibly wrong or inaccurate) duration of the Matroska file.
* gst/matroska/ebml-read.c: Use NAN constant instead of 0.0/0.0 if possible. ↵Sebastian Dröge2008-07-021-1/+11
| | | | | | | | | | NAN is defined in math.h except on MSVC wh... Original commit message from CVS: * gst/matroska/ebml-read.c: (_ext2dbl): Use NAN constant instead of 0.0/0.0 if possible. NAN is defined in math.h except on MSVC where it is defined in xmath.h. Fixes compilation with MSVC.
* gst/matroska/matroska-demux.*: Don't set the segment duration to the ↵Sebastian Dröge2008-07-022-3/+4
| | | | | | | | | | | | | duration from the Matroska header as this value ... Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_reset), (gst_matroska_demux_handle_src_query), (gst_matroska_demux_parse_info), (gst_matroska_demux_loop_stream_parse_id): * gst/matroska/matroska-demux.h: Don't set the segment duration to the duration from the Matroska header as this value could be wrong and is just informational.
* gst/matroska/matroska-demux.c: If no Tracks element is found until the first ↵Sebastian Dröge2008-07-021-3/+68
| | | | | | | | | | Cluster is found search it and error out... Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_loop_stream_parse_id): If no Tracks element is found until the first Cluster is found search it and error out if none is found in the complete file.
* gst/matroska/matroska-demux.c: Resync non-subtitle tracks too if a too large ↵Sebastian Dröge2008-07-021-2/+0
| | | | | | | | | gap compared to other tracks is detected. Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_sync_streams): Resync non-subtitle tracks too if a too large gap compared to other tracks is detected.
* gst/matroska/matroska-demux.c: Fix buggy format strings in macros. (makes it ↵Julien Moutte2008-06-231-4/+4
| | | | | | | | | | | | build on OS X again...) Original commit message from CVS: 2008-06-23 Julien Moutte <julien@fluendo.com> * gst/matroska/matroska-demux.c: (gst_matroska_demux_read_track_encoding), (gst_matroska_demux_parse_blockgroup_or_simpleblock): Fix buggy format strings in macros. (makes it build on OS X again...)
* gst/matroska/: Fix demuxing of WavPack files. Muxing is still broken.Sebastian Dröge2008-06-192-37/+127
| | | | | | | | | Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_add_wvpk_header), (gst_matroska_demux_audio_caps): * gst/matroska/matroska-ids.h: Fix demuxing of WavPack files. Muxing is still broken.
* gst/matroska/: Add a "vfunc" to the track context for postprocessing frames ↵Sebastian Dröge2008-06-192-40/+121
| | | | | | | | | | | | | | | | | | | | | and convert the wavpack and subtitle post... Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_track_free), (gst_matroska_demux_add_mpeg_seq_header), (gst_matroska_demux_add_wvpk_header), (gst_matroska_demux_check_subtitle_buffer), (gst_matroska_demux_parse_blockgroup_or_simpleblock), (gst_matroska_demux_video_caps), (gst_matroska_demux_audio_caps), (gst_matroska_demux_subtitle_caps): * gst/matroska/matroska-ids.h: Add a "vfunc" to the track context for postprocessing frames and convert the wavpack and subtitle postprocessing to this vfunc. Copy buffer flags in those functions to the new buffers too. Parse CodecState elements of Blocks. Add a postprocessing function for MPEG video that adds the sequence header from the codec private data or codec state to the frames if it's not already there.
* gst/matroska/matroska-demux.c: If a gap of more than 1/2 second is found in ↵Sebastian Dröge2008-06-191-9/+21
| | | | | | | | | | | | | | | | one stream send a Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_blockgroup_or_simpleblock): If a gap of more than 1/2 second is found in one stream send a NEWSEGMENT event to not stall the pipeline if the gap is too large. This also fixes Matroska files where the first buffer doesn't start at timestamp 0. Fixes bug #429322. The duration of a block is the default duration multiplied with the number of laces. Every lace is one frame and the default duration is the duration of one frame. This fixes playback of files that use lacing for some tracks.
* gst/matroska/matroska-demux.c: Update FIXME/TODOs and only ignore EOS at the ↵Sebastian Dröge2008-06-181-16/+5
| | | | | | | | | | central, important place instead of seve... Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_contents_seekentry): Update FIXME/TODOs and only ignore EOS at the central, important place instead of several places.
* gst/matroska/matroska-demux.c: Improve debug output everywhere and fix the ↵Sebastian Dröge2008-06-185-574/+743
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | EOS logic. Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_reset), (gst_matroska_demux_stream_from_num), (gst_matroska_demux_encoding_cmp), (gst_matroska_demux_encoding_order_unique), (gst_matroska_demux_read_track_encoding), (gst_matroska_demux_read_track_encodings), (gst_matroska_demux_tracknumber_unique), (gst_matroska_demux_add_stream), (gst_matroska_demux_init_stream), (gst_matroska_demux_parse_tracks), (gst_matroska_demux_parse_index_cuetrack), (gst_matroska_demux_parse_index_pointentry), (gst_matroska_demux_parse_index), (gst_matroska_demux_parse_info), (gst_matroska_demux_parse_metadata_id_simple_tag), (gst_matroska_demux_parse_metadata_id_tag), (gst_matroska_demux_parse_metadata), (gst_matroska_demux_parse_attached_file), (gst_matroska_demux_parse_attachments), (gst_matroska_demux_parse_chapters), (gst_matroska_demux_sync_streams), (gst_matroska_decode_buffer), (gst_matroska_demux_parse_blockgroup_or_simpleblock), (gst_matroska_demux_parse_cluster), (gst_matroska_demux_parse_contents_seekentry), (gst_matroska_demux_parse_contents), (gst_matroska_demux_loop_stream_parse_id), (gst_matroska_demux_loop): Improve debug output everywhere and fix the EOS logic. Check the values of the ContentEncoding elements more strictly and don't use tracks for which it's invalid. Check that the track number is unique for this stream. Check that seek positions are below G_MAXINT64 as our seeks are int64-based and overflows will fail badly. After seeks also don't push SimpleBlocks until the first one containing a keyframe is found. Before this was done only for normal Blocks. Update some FIXME/TODOs. * gst/matroska/ebml-read.c: (gst_ebml_read_peek_bytes), (gst_ebml_read_utf8), (gst_ebml_read_header): Improve debug output. * gst/matroska/matroska-ids.c: (gst_matroska_track_init_video_context): * gst/matroska/matroska-ids.h: * gst/matroska/matroska-mux.c: (gst_matroska_mux_video_pad_setcaps): Remove eye mode and don't parse it anymore. We can't use that information in GStreamer yet so it's useless.
* gst/matroska/matroska-demux.c: When comparing index elements with the same ↵Sebastian Dröge2008-06-161-0/+7
| | | | | | | | | time compare their block number. Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_index_compare): When comparing index elements with the same time compare their block number.
* gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_attached_file)Tim-Philipp Müller2008-06-161-5/+2
| | | | | | | Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_attached_file) Init variable to NULL to avoid compiler warning.
* gst/matroska/: Parse Attachments and post them as GST_TAG_IMAGE if we detect ↵Sebastian Dröge2008-06-166-15/+238
| | | | | | | | | | | | | | | | | | | it as image and otherwise as GST_TAG_ATT... Original commit message from CVS: * gst/matroska/Makefile.am: * gst/matroska/matroska-demux.c: (gst_matroska_demux_reset), (gst_matroska_demux_parse_attached_file), (gst_matroska_demux_parse_attachments), (gst_matroska_demux_parse_contents_seekentry), (gst_matroska_demux_loop_stream_parse_id): * gst/matroska/matroska-demux.h: * gst/matroska/matroska-ids.c: (gst_matroska_register_tags): * gst/matroska/matroska-ids.h: * gst/matroska/matroska.c: (plugin_init): Parse Attachments and post them as GST_TAG_IMAGE if we detect it as image and otherwise as GST_TAG_ATTACHMENT. Include filename and description of the attachments in the caps. Fixes bug #537622.
* gst/matroska/ebml-read.c: Return GST_FLOW_UNEXPECTED instead of ↵Sebastian Dröge2008-06-161-1/+1
| | | | | | | | | | GST_FLOW_ERROR on short reads. Original commit message from CVS: * gst/matroska/ebml-read.c: (gst_ebml_read_peek_bytes): Return GST_FLOW_UNEXPECTED instead of GST_FLOW_ERROR on short reads. If we get less bytes than requested we can't do anything except doing our EOS logic.
* gst/matroska/: Use a GArray for storing the Cue (i.e. seek) information, ↵Sebastian Dröge2008-06-153-69/+132
| | | | | | | | | | | | | | | | | | | | store the CueTrackPositions for every track,... Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_reset), (gst_matroskademux_do_index_seek), (gst_matroska_demux_parse_index_cuetrack), (gst_matroska_demux_parse_index_pointentry), (gst_matroska_index_compare), (gst_matroska_demux_parse_index), (gst_matroska_demux_parse_metadata): * gst/matroska/matroska-demux.h: * gst/matroska/matroska-ids.h: Use a GArray for storing the Cue (i.e. seek) information, store the CueTrackPositions for every track, store the block number and optimize searching in the array by sorting it after the last element was added. Fix a small memory leak when trying to parse a tags element that was already parsed.
* gst/matroska/matroska-mux.*: Don't write another SeekHead which indexes all ↵Sebastian Dröge2008-06-152-64/+2
| | | | | | | | | | | | Clusters to the end of the file. This isn... Original commit message from CVS: * gst/matroska/matroska-mux.c: (gst_matroska_mux_reset), (gst_matroska_mux_start), (gst_matroska_mux_finish), (gst_matroska_mux_write_data): * gst/matroska/matroska-mux.h: Don't write another SeekHead which indexes all Clusters to the end of the file. This isn't useful for anything and just increases filesize.
* gst/matroska/ebml-read.c: Prevent unaligned memory access when reading floats.Sebastian Dröge2008-06-151-20/+12
| | | | | | Original commit message from CVS: * gst/matroska/ebml-read.c: (_ext2dbl), (gst_ebml_read_float): Prevent unaligned memory access when reading floats.
* gst/matroska/: Make sure that every Tags element is only parsed once and ↵Sebastian Dröge2008-06-154-1/+41
| | | | | | | | | | | | | it's containing tags are only posted once. Original commit message from CVS: * gst/matroska/ebml-read.c: * gst/matroska/ebml-read.h: * gst/matroska/matroska-demux.c: (gst_matroska_demux_reset), (gst_matroska_demux_parse_metadata): * gst/matroska/matroska-demux.h: Make sure that every Tags element is only parsed once and it's containing tags are only posted once.
* gst/matroska/: Handle EBML elements like Void or CRC32 in the EbmlRead base ↵Sebastian Dröge2008-06-152-45/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | class already. They're not useful in the ... Original commit message from CVS: * gst/matroska/ebml-read.c: (gst_ebml_peek_id), (gst_ebml_read_header): * gst/matroska/matroska-demux.c: (gst_matroska_demux_add_stream), (gst_matroska_demux_parse_tracks), (gst_matroska_demux_parse_index_cuetrack), (gst_matroska_demux_parse_index_pointentry), (gst_matroska_demux_parse_index), (gst_matroska_demux_parse_info), (gst_matroska_demux_parse_metadata_id_simple_tag), (gst_matroska_demux_parse_metadata_id_tag), (gst_matroska_demux_parse_metadata), (gst_matroska_demux_parse_attachments), (gst_matroska_demux_parse_chapters), (gst_matroska_demux_parse_blockgroup_or_simpleblock), (gst_matroska_demux_parse_cluster), (gst_matroska_demux_parse_contents_seekentry), (gst_matroska_demux_parse_contents), (gst_matroska_demux_loop_stream_parse_id): Handle EBML elements like Void or CRC32 in the EbmlRead base class already. They're not useful in the matroska parser and only cause additional code.
* gst/matroska/: Reverse the level list as we usually are only interested in ↵Sebastian Dröge2008-06-142-14/+57
| | | | | | | | | | | | | | | | the first element or want to add a new fir... Original commit message from CVS: * gst/matroska/ebml-read.c: (gst_ebml_level_free), (gst_ebml_finalize), (gst_ebml_read_change_state), (gst_ebml_read_element_level_up), (gst_ebml_read_master): * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_contents_seekentry): Reverse the level list as we usually are only interested in the first element or want to add a new first element. Having the first element stored at the end and calling g_list_last() and g_list_append() is more expensive. Also use GSlice for allocating the GstEbmlLevel structs.
* gst/matroska/: Use gst_value_serialize() and gst_value_deserialize() for ↵Sebastian Dröge2008-06-132-13/+10
| | | | | | | | | | | | | | transforming tags from some GType to a strin... Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_metadata_id_simple_tag): * gst/matroska/matroska-mux.c: (gst_matroska_mux_write_simple_tag), (gst_matroska_mux_write_data): Use gst_value_serialize() and gst_value_deserialize() for transforming tags from some GType to a string and the other way around. The default transformations in GLib don't include transformations from string to number types.
* gst/matroska/matroska-demux.*: Only parse Tracks, SeekHead and SegmentInfo ↵Sebastian Dröge2008-06-132-59/+242
| | | | | | | | | | | | | | | | | | | | | | | elements once but allow Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_reset), (gst_matroska_demux_parse_tracks), (gst_matroska_demux_parse_index), (gst_matroska_demux_parse_info), (gst_matroska_demux_parse_attachments), (gst_matroska_demux_parse_chapters), (gst_matroska_demux_parse_contents_seekentry), (gst_matroska_demux_loop_stream_parse_id): * gst/matroska/matroska-demux.h: Only parse Tracks, SeekHead and SegmentInfo elements once but allow Tags multiple times. The first ones can appear more than once but must contain the same content as the first for backup purposes so we ignore all but the first one. Tags can appear multiple times with different content. Jump to all elements except Clusters that are available from a SeekHead to make it more likely to have all required informations before getting to the first Clusters. Add dummy functions for parsing Attachments and Chapters.
* gst/matroska/matroska-mux.c: Update the counter for the number of streams ↵Sebastian Dröge2008-06-111-0/+3
| | | | | | | | | | | when pads are added or removed. This will m... Original commit message from CVS: * gst/matroska/matroska-mux.c: (gst_matroska_mux_request_new_pad), (gst_matroska_mux_release_pad), (gst_matroska_mux_write_data): Update the counter for the number of streams when pads are added or removed. This will make sure that a seek table is generated for files with just one audio stream.
* gst/matroska/: Add some more tags, improve debugging a bit and make sure thatSebastian Dröge2008-06-113-26/+45
| | | | | | | | | | | Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_metadata_id_simple_tag): * gst/matroska/matroska-ids.h: * gst/matroska/matroska-mux.c: (gst_matroska_mux_write_simple_tag): Add some more tags, improve debugging a bit and make sure that GValue transformation has succeeded before using the result as a tag.
* gst/matroska/ebml-write.c: Use GDOUBLE_TO_BE() instead of (probably slower) ↵Sebastian Dröge2008-06-106-333/+997
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | custom code. Original commit message from CVS: * gst/matroska/ebml-write.c: (gst_ebml_write_float): Use GDOUBLE_TO_BE() instead of (probably slower) custom code. * gst/matroska/matroska-demux.c: (gst_matroska_demux_base_init), (gst_matroska_demux_class_init), (gst_matroska_demux_init), (gst_matroska_track_free), (gst_matroska_demux_encoding_cmp), (gst_matroska_demux_read_track_encodings), (gst_matroska_demux_add_stream), (gst_matroska_demux_handle_src_query), (gst_matroska_demux_init_stream), (gst_matroska_demux_parse_index_cuetrack), (gst_matroska_demux_parse_index_pointentry), (gst_matroska_demux_parse_info), (gst_matroska_demux_parse_metadata_id_simple_tag), (gst_matroska_demux_parse_metadata), (gst_matroska_demux_add_wvpk_header), (gst_matroska_decode_buffer), (gst_matroska_demux_parse_blockgroup_or_simpleblock), (gst_matroska_demux_parse_cluster), (gst_matroska_demux_parse_contents_seekentry), (gst_matroska_demux_loop_stream_parse_id), (gst_matroska_demux_loop), (gst_matroska_demux_video_caps), (gst_matroska_demux_audio_caps), (gst_matroska_demux_subtitle_caps): * gst/matroska/matroska-demux.h: * gst/matroska/matroska-ids.c: (gst_matroska_track_init_subtitle_context): * gst/matroska/matroska-ids.h: * gst/matroska/matroska-mux.c: (gst_matroska_mux_base_init), (gst_matroska_mux_class_init), (gst_matroska_mux_init), (gst_matroska_mux_create_uid), (gst_matroska_mux_reset), (gst_matroska_mux_video_pad_setcaps), (gst_matroska_mux_audio_pad_setcaps), (gst_matroska_mux_subtitle_pad_setcaps), (gst_matroska_mux_request_new_pad), (gst_matroska_mux_track_header), (gst_matroska_mux_start), (gst_matroska_mux_write_simple_tag), (gst_matroska_mux_finish), (gst_matroska_mux_write_data), (gst_matroska_mux_collected), (gst_matroska_mux_set_property): Add many FIXMEs/TODOs all over the matroska muxer and demuxer elements, do some checks for valid values in the demuxer, handle tracktimecodescale in the demuxer, set correct default values for all settings in the demuxer, review and add all missing matroska IDs and some more raw YUV formats, and some trivial cleanup.
* gst/matroska/ebml-write.c: Unref the write cache in finalize if it was set ↵Sebastian Dröge2008-06-041-1/+14
| | | | | | | | | | and add add "FIXME" to a comment that need... Original commit message from CVS: * gst/matroska/ebml-write.c: (gst_ebml_write_finalize), (gst_ebml_write_set_cache): Unref the write cache in finalize if it was set and add add "FIXME" to a comment that needs it.
* gst/matroska/matroska-demux.c: Convert subtitle palette info in VobSub ↵Mark Nauwelaerts2008-05-121-2/+13
| | | | | | | | | | private data from VobSub's (buggy) RGB to YUV. Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_push_dvd_clut_change_event): Convert subtitle palette info in VobSub private data from VobSub's (buggy) RGB to YUV.
* gst/matroska/matroska-mux.c: Update the track duration if the old one was ↵Sjoerd Simons2008-05-081-1/+1
| | | | | | | | | | invalid. Original commit message from CVS: Patch by: Sjoerd Simons <sjoerd at luon dot net> * gst/matroska/matroska-mux.c: (gst_matroska_mux_collected): Update the track duration if the old one was invalid. Fixes bug #532117.
* gst/matroska/matroska-demux.c: Fix open-ended seeks in matroskademuxMark Nauwelaerts2008-04-141-8/+11
| | | | | | | | | Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_handle_seek_event): Fix open-ended seeks in matroskademux Patch by: Mark Nauwelaerts <manauw skynet be> Fixes: #526557
* gst/matroska/: Fix the Forte build by making function declaration signatures ↵Jan Schmidt2008-04-092-9/+10
| | | | | | | | | | | | | match the implementations. Original commit message from CVS: * gst/matroska/ebml-read.c: (gst_ebml_read_seek): * gst/matroska/matroska-demux.c: (gst_matroska_demux_handle_seek_event), (gst_matroska_demux_parse_contents_seekentry), (gst_matroska_demux_loop): Fix the Forte build by making function declaration signatures match the implementations.
* gst/matroska/ebml-ids.h: Add ID for EBML CRC32 elements.Sebastian Dröge2008-03-083-25/+84
| | | | | | | | | | | | | | | | Original commit message from CVS: * gst/matroska/ebml-ids.h: Add ID for EBML CRC32 elements. * gst/matroska/Makefile.am: * gst/matroska/ebml-read.c: (gst_ebml_finalize), (gst_ebml_read_class_init), (gst_ebml_read_peek_bytes), (gst_ebml_read_get_length), (_ext2dbl), (gst_ebml_read_float), (gst_ebml_read_header): Support reading 80bit floats, add finalize method to clean up in any case, support reading length/id elements with any length as long as it's smaller than our supported maximum, don't leak buffers if reading as much data as we wanted failed and some smaller cleanup.
* gst/matroska/: Handle return values from pull_range in a more granular way ↵Wim Taymans2008-03-065-670/+739
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to properly shut down on seeks. Original commit message from CVS: * gst/matroska/ebml-read.c: (gst_ebml_read_peek_bytes), (gst_ebml_read_pull_bytes), (gst_ebml_read_element_id), (gst_ebml_read_element_length), (gst_ebml_peek_id), (gst_ebml_read_skip), (gst_ebml_read_buffer), (gst_ebml_read_bytes), (gst_ebml_read_uint), (gst_ebml_read_sint), (gst_ebml_read_float), (gst_ebml_read_ascii), (gst_ebml_read_utf8), (gst_ebml_read_date), (gst_ebml_read_master), (gst_ebml_read_binary), (gst_ebml_read_header): * gst/matroska/ebml-read.h: * gst/matroska/matroska-demux.c: (gst_matroska_demux_combine_flows), (gst_matroska_demux_reset), (gst_matroska_demux_read_track_encodings), (gst_matroska_demux_add_stream), (gst_matroska_demux_handle_src_query), (gst_matroska_demux_handle_seek_event), (gst_matroska_demux_init_stream), (gst_matroska_demux_parse_tracks), (gst_matroska_demux_parse_index_cuetrack), (gst_matroska_demux_parse_index_pointentry), (gst_matroska_demux_parse_index), (gst_matroska_demux_parse_info), (gst_matroska_demux_parse_metadata_id_simple_tag), (gst_matroska_demux_parse_metadata_id_tag), (gst_matroska_demux_parse_metadata), (gst_matroska_demux_sync_streams), (gst_matroska_demux_push_hdr_buf), (gst_matroska_demux_push_flac_codec_priv_data), (gst_matroska_demux_push_xiph_codec_priv_data), (gst_matroska_demux_add_wvpk_header), (gst_matroska_demux_check_subtitle_buffer), (gst_matroska_demux_parse_blockgroup_or_simpleblock), (gst_matroska_demux_parse_cluster), (gst_matroska_demux_parse_contents_seekentry), (gst_matroska_demux_parse_contents), (gst_matroska_demux_loop_stream_parse_id), (gst_matroska_demux_loop_stream), (gst_matroska_demux_loop): * gst/matroska/matroska-demux.h: * gst/matroska/matroska-ids.h: Handle return values from pull_range in a more granular way to properly shut down on seeks. Combine return values from push. Implement proper error handling. Prepare for handling seeking correctly.
* gst/matroska/ebml-read.c: Use GINT64 formatting constants from GLIB.Jan Schmidt2008-03-033-43/+82
| | | | | | | | | | | | | | | | Original commit message from CVS: * gst/matroska/ebml-read.c: Use GINT64 formatting constants from GLIB. * gst/matroska/matroska-demux.c: Add some guards to avoid a possible division by 0 and crashing with NULL events on some systems. Use gst_gdouble_to_guint64 somewhere instead of an implicit conversion. * gst/matroska/matroska-mux.c: Check for invalid timestamps in a bunch of places to avoid writing bogus durations into the output file. Fix some double<->gint64 conversions that weren't using gst_guint64_to_gdouble
* gst/matroska/: Fix Dirac mapping. I had previously added a VfW-type ↵David Schleef2008-02-293-4/+9
| | | | | | | | | | | | mapping, but it looks like Dirac will get a nati... Original commit message from CVS: * gst/matroska/matroska-demux.c: * gst/matroska/matroska-ids.h: * gst/matroska/matroska-mux.c: Fix Dirac mapping. I had previously added a VfW-type mapping, but it looks like Dirac will get a native Matroska mapping, and this is the most likely method.
* gst/matroska/matroska-demux.c: Flag keyframe and delta units correctly when ↵Julien Moutte2008-02-081-0/+6
| | | | | | | | | | | | | dealign with a Original commit message from CVS: 2008-02-08 Julien Moutte <julien@fluendo.com> * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_blockgroup_or_simpleblock): Flag keyframe and delta units correctly when dealign with a BlockGroup. Fixes: #514397
* gst/matroska/ebml-write.c: Don't leak buffers when we don't push them ↵Bjarne Rosengren2008-02-071-0/+3
| | | | | | | | | | downstream. Original commit message from CVS: Patch by: Bjarne Rosengren <bjarne at axis dot com> * gst/matroska/ebml-write.c: (gst_ebml_write_element_push): Don't leak buffers when we don't push them downstream. Fixes bug #514965.
* gst/matroska/matroska-mux.c: Also fix up pad templates to indicate that ↵Tim-Philipp Müller2008-01-081-1/+5
| | | | | | | | | | image/jpeg doesn't absolutely require the fra... Original commit message from CVS: * gst/matroska/matroska-mux.c: (COMMON_VIDEO_CAPS_NO_FRAMERATE), (videosink_templ): Also fix up pad templates to indicate that image/jpeg doesn't absolutely require the framerate property to be set (#504081).
* gst/matroska/matroska-mux.*: Keep track of first and last timestamps for ↵Wouter Cloetens2008-01-082-16/+48
| | | | | | | | | | | | | | | | | | | | each incoming stream, so we can calculate th... Original commit message from CVS: Based on patch by: Wouter Cloetens <wouter at mind be> * gst/matroska/matroska-mux.c: (gst_matroska_mux_video_pad_setcaps), (gst_matroska_mux_request_new_pad), (gst_matroska_mux_release_pad), (gst_matroska_mux_finish), (gst_matroska_mux_collected): * gst/matroska/matroska-mux.h: Keep track of first and last timestamps for each incoming stream, so we can calculate the total duration for live sources and other input where we can't query the duration from the start or where there's no constant framerate from which we can deduce the duration; also use calculated/observed duration if it is bigger than the previously queried duration. Furthermore, use gst_pad_query_peer_duration() and take into account that it may return TRUE but still a duration of CLOCK_TIME_NONE, which easily screws up comparisons when using unsigned integers. Fixes #504081.
* gst/matroska/: Extract palette data for dvd subpicture streams and send it ↵Mark Nauwelaerts2007-11-132-0/+68
| | | | | | | | | | | | | | downstream as custom gstreamer dvd event (... Original commit message from CVS: Patch by: Mark Nauwelaerts <manauw skynet be> * gst/matroska/matroska-demux.c: (gst_matroska_demux_push_dvd_clut_change_event), (gst_matroska_demux_parse_blockgroup_or_simpleblock), (gst_matroska_demux_subtitle_caps): * gst/matroska/matroska-ids.h: Extract palette data for dvd subpicture streams and send it downstream as custom gstreamer dvd event (fixes #453417).
* gst/matroska/matroska-demux.c: Fix setting the discont flag on the first ↵Tim-Philipp Müller2007-09-271-0/+6
| | | | | | | | | | | buffer pushed downstream for formats with pr... Original commit message from CVS: * gst/matroska/matroska-demux.c: Fix setting the discont flag on the first buffer pushed downstream for formats with private codec data that needs to be deserialised into buffers (such as vorbis and FLAC when in a matroska container).
* Fix build against core CVS.Tim-Philipp Müller2007-07-111-3/+3
| | | | | | | | | | | | | | | | | | | | | | | Original commit message from CVS: * ext/cairo/gsttimeoverlay.c: (gst_cairo_time_overlay_transform): * ext/jpeg/gstjpegenc.c: (gst_jpegenc_chain): * ext/libpng/gstpngenc.c: (gst_pngenc_chain): * ext/wavpack/gstwavpackdec.c: (gst_wavpack_dec_chain): * gst/debug/gstnavigationtest.c: (gst_navigationtest_transform): * gst/effectv/gstaging.c: (gst_agingtv_transform): * gst/effectv/gstdice.c: (gst_dicetv_transform): * gst/effectv/gstedge.c: (gst_edgetv_transform): * gst/effectv/gstquark.c: (gst_quarktv_transform): * gst/effectv/gstrev.c: (gst_revtv_transform): * gst/effectv/gstshagadelic.c: (gst_shagadelictv_transform): * gst/effectv/gstvertigo.c: (gst_vertigotv_transform): * gst/effectv/gstwarp.c: (gst_warptv_transform): * gst/matroska/matroska-demux.c: (gst_matroska_demux_add_wvpk_header), (gst_matroska_demux_check_subtitle_buffer), (gst_matroska_decode_buffer): * gst/videofilter/gstvideoflip.c: (gst_video_flip_transform): Fix build against core CVS.
* gst/matroska/Makefile.am: If zlib is available and used, we must link it ↵Tim-Philipp Müller2007-01-051-1/+2
| | | | | | | | | explicitly for things to work on MingW (fixe... Original commit message from CVS: * gst/matroska/Makefile.am: If zlib is available and used, we must link it explicitly for things to work on MingW (fixes #392855).