We implemented the AAL2 packing, add the encoding-name for those to the caps and
a property to force AAL2 decoding (always TRUE for now).
Implement RFC3551 unpacking for regular G726.
See #567140.
In streaming mode, avidemux is not supposed to send an EOS event downstream but
it is supposed to return UNEXPECTED from the chain function instead so that
upstream can do the right EOS handling.
Fix the duration query so that it also works with formats other than
TIME, such as DEFAULT to get the number of frames.
Add a convert function.
Fixes#578052.
In the sequence of header lengths, for headers >127 bytes, we use
multiple bytes to encode the length. Bytes other than the last must have
the top (flag) bit set.
The on-npt-stop signals was added only recently to rtpjitterbuffer in
-bad, so check if the signal exists before g_signal_connect()ing to
it, to avoid warnings.
Some clips (trailers) may have (length-wise) unbalanced streams,
which stalls the pipeline if seeking into that region.
Additional stream synchronization can handle this, as well as
sparse (subtitle) streams (at some later time ?)
Try to post a decent error message when it looks like we're failing
because the Real RTSP extension plugin is missing. Also add i18n
bits for rtspsrc so our error messages get translated.
Cater for DELTA_UNIT flag on buffers, keep track of current
position, remove and warn about edit lists if any (as those
as are de facto discarded anyway), add some debug statements
and indent fixes.
The audioMuxVersion structure is packed in such a way that the codec
data does not start byte-aligned, which means there's an extra bit of
padding at the end. We don't want that bit in the codec data, since
some decoders seem get confused when they're fed with an extra codec
data byte (also it's just not right of course).
Add network interface selection when joining multicast groups.
Useful when using the udpsrc on multihomed hosts.
Fixes#575234.
API: GstUDPSrc::multicast-iface
Non-ok flow returns may happen for a variety of perfectly legitimate and expected reasons
(temporarily not linked, seeking, pipeline shutdown), so we really shouldn't spew ERROR
debug messages to stderr in those cases. Fixes#570781. (Seems like someone already took
care of some of these.)
Standard pull mode loop based SEEK handling fails in push mode,
so convert the SEEK event appropriately and dispatch to upstream.
Also cater for NEWSEGMENT event handling, and properly inform
downstream and application of SEEKABLE capabilities, depending
on scheduling mode and upstream.
Previously the sockaddr length used for recvfrom() was calculated as
sizeof (struct sockaddr). However, this is too little to hold an IPv6
address, so the full size of the gst_sockaddr union should be used
instead.
MS RTSP spec states that the UDP port pair used in subsequent SETUP
requests for various streams must be identical (since there will actually
be only 1 stream of muxed asf packets). Following traditional specs and
using different port pairs in the SETUPs for separate streams will result
in all but the first one failing and only one stream being streamed.
So, in appropriate circumstances, retry UDP SETUP using previously used
port pair. Fixes#552650.
When we are dealing with connected sockets shared between a udpsrc and a udpsink
we might receive ICMP connection refused error messages in udpsrc that will
cause it to go into a bursty loop because the poll returns right away without a
message to read.
Instead of looping, read the error message from the error queue in udpsrc.
Fixes#567857.
Reading integers from random memory addresses will result
in SIGBUS on some architectures if the memory address
is not correctly aligned. This can happen at two
places in avidemux so we should use GST_READ_UINT32_LE
and friends here. Fixes bug #572256.
stps atoms contain "partial sync" information, which means that it's
a sync point where pts != dts. This is needed to properly handle
MPEG2, H.264, Dirac, etc., in quicktime.
Not all Matroska files have a Tags element which contains
information about the title among other things. Most video
Matroska files only contain the Title element so we
should parse this too. Fixes bug #570435.
Move reallocating the history buffer out of _compute_frequencies() and call the
right function as needed. Add some logging and tweak the formatting of existing
logging. Simplify setting need_new_coefficients when changing properties.
Link to properties. Correct titles for examples. Document a few trivial cases. Keep lists in section file and docs/plugins/Makefile.am alphabetically ordered. Fix warnings that gtk-doc points out.
Introduce a new max-delay property that can only
be set before going to PLAYING or PAUSED. This
is used to limit the maximum delay and is set
to the current delay by default.
Using this will make sure that we have enough data
in our internal ringbuffer for the echo. With dynamic
reallocation of the ringbuffer as used before silence
could've been used as the echo directly after setting
a new delay.
Link to properties. Correct titles for examples. Document a few trivial cases. Keep lists in section file and docs/plugins/Makefile.am alphabetically ordered.
Save some allocations if the echo delay is increased often
during playback by always allocating enough memory to hold
data up to the next complete second, i.e. in the worst case
allocate memory for one additional second.
Add a note to the docs that audioecho's reverb will
sound metallic. This happens because for a real
reverb filter additional filtering is necessary.
Also note which values should be used for the delay
property to get an echo effect.
The element can add an echo and a simple reverb effect to
an audio stream but for a real reverb filter it would need
some additional filtering to prevent a metallic-sounding
result.
Original commit message from CVS:
Patch by: Luotao Fu <l dot fu at pengutronix dot de>
* gst/videocrop/gstvideocrop.c:
(gst_video_crop_get_image_details_from_caps):
Add 8bit grayscale support to videocrop plugin. Fixes#567952.
Original commit message from CVS:
* gst/spectrum/gstspectrum.c: (gst_spectrum_reset_state),
(gst_spectrum_transform_ip):
* gst/spectrum/gstspectrum.h:
Implement a simple compensation algorithm for rounding errors.
This makes sure that a spectrum message is posted on the bus
every interval nanoseconds. Fixes bug #567955.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_parse_segments):
Catch invalid and commonly wrong playback rates in the elst atoms.
Fixes#567800.
Original commit message from CVS:
* gst/spectrum/gstspectrum.c: (gst_spectrum_reset_state):
Don't call gst_fft_f32_free() with NULL to prevent a
crash. Fixes bug #567642.
Original commit message from CVS:
* gst/spectrum/gstspectrum.c: (gst_spectrum_transform_ip):
* gst/spectrum/gstspectrum.h:
Use correct types for frame/fft counters and some minor
cleanup.
Original commit message from CVS:
* gst/spectrum/Makefile.am:
* gst/spectrum/README:
* gst/spectrum/gstspectrum.c: (gst_spectrum_base_init),
(gst_spectrum_class_init), (gst_spectrum_init),
(gst_spectrum_reset_state), (gst_spectrum_finalize),
(gst_spectrum_set_property), (gst_spectrum_start),
(gst_spectrum_stop), (gst_spectrum_setup),
(gst_spectrum_transform_ip):
* gst/spectrum/gstspectrum.h:
Post a spectrum message on the bus for every interval, even
if the interval is small than the length of the FFT.
Fixes bug #567642.
Major cleanup of the spectrum element.
Original commit message from CVS:
Patch by: Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br>
* gst/qtdemux/qtdemux.c:
Fix format string for guint64.
Original commit message from CVS:
* gst/audiofx/audiochebband.c: (gst_audio_cheb_band_class_init),
(gst_audio_cheb_band_init), (gst_audio_cheb_band_finalize),
(gst_audio_cheb_band_set_property):
* gst/audiofx/audiochebband.h:
* gst/audiofx/audiocheblimit.c: (gst_audio_cheb_limit_class_init),
(gst_audio_cheb_limit_init), (gst_audio_cheb_limit_finalize),
(gst_audio_cheb_limit_set_property):
* gst/audiofx/audiocheblimit.h:
* gst/audiofx/audiowsincband.c: (gst_audio_wsincband_class_init),
(gst_audio_wsincband_init), (gst_audio_wsincband_finalize),
(gst_audio_wsincband_set_property):
* gst/audiofx/audiowsincband.h:
* gst/audiofx/audiowsinclimit.c: (gst_audio_wsinclimit_class_init),
(gst_audio_wsinclimit_init), (gst_audio_wsinclimit_finalize),
(gst_audio_wsinclimit_set_property):
* gst/audiofx/audiowsinclimit.h:
Use a custom mutex for protecting the instance fields instead of
the GstObject lock. Using the latter can lead to deadlocks, especially
with the FIR filters when updating the latency.
Original commit message from CVS:
* gst/audiofx/Makefile.am:
* gst/audiofx/audiofxbasefirfilter.c:
(gst_audio_fx_base_fir_filter_dispose),
(gst_audio_fx_base_fir_filter_base_init),
(gst_audio_fx_base_fir_filter_class_init),
(gst_audio_fx_base_fir_filter_init),
(gst_audio_fx_base_fir_filter_push_residue),
(gst_audio_fx_base_fir_filter_setup),
(gst_audio_fx_base_fir_filter_transform),
(gst_audio_fx_base_fir_filter_start),
(gst_audio_fx_base_fir_filter_stop),
(gst_audio_fx_base_fir_filter_query),
(gst_audio_fx_base_fir_filter_query_type),
(gst_audio_fx_base_fir_filter_event),
(gst_audio_fx_base_fir_filter_set_kernel):
* gst/audiofx/audiofxbasefirfilter.h:
* gst/audiofx/audiofxbaseiirfilter.c:
Implement a base class for generic audio FIR filters.
* gst/audiofx/audiowsincband.c:
(gst_gst_audio_wsincband_mode_get_type),
(gst_gst_audio_wsincband_window_get_type),
(gst_audio_wsincband_base_init), (gst_audio_wsincband_class_init),
(gst_audio_wsincband_init), (gst_audio_wsincband_build_kernel),
(gst_audio_wsincband_setup), (gst_audio_wsincband_set_property),
(gst_audio_wsincband_get_property):
* gst/audiofx/audiowsincband.h:
* gst/audiofx/audiowsinclimit.c:
(gst_audio_wsinclimit_mode_get_type),
(gst_audio_wsinclimit_window_get_type),
(gst_audio_wsinclimit_base_init),
(gst_audio_wsinclimit_class_init), (gst_audio_wsinclimit_init),
(gst_audio_wsinclimit_build_kernel), (gst_audio_wsinclimit_setup),
(gst_audio_wsinclimit_set_property),
(gst_audio_wsinclimit_get_property):
* gst/audiofx/audiowsinclimit.h:
* tests/check/elements/audiowsincband.c: (GST_START_TEST):
* tests/check/elements/audiowsinclimit.c: (GST_START_TEST):
Use this new base class for audiowsincband and audiowsinclimit.
Also cleanup both elements.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c:
In push mode, error out if we get EOS before we've created any srcpads.
Handle (in pull mode) some files that have a truncated moov atom where
the final sub-atom is a 'free' atom and the contents of that are not
present in the file.
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_video_caps):
* gst/matroska/matroska-mux.c: (gst_matroska_mux_video_pad_setcaps):
Some cleanups, refactoring and minor enhancements in caps handling.
* gst/matroska/matroska-mux.c: (gst_matroska_mux_class_init),
(gst_matroska_mux_init), (gst_matroska_pad_reset),
(gst_matroska_pad_free), (gst_matroska_mux_reset),
(gst_matroska_mux_video_pad_setcaps),
(gst_matroska_mux_request_new_pad):
* tests/check/elements/matroskamux.c: (teardown_src_pad):
Only remove, release or reset what is appropriate upon state change.
Original commit message from CVS:
* gst/matroska/matroska-mux.c: (gst_matroska_mux_reset),
(gst_matroska_mux_handle_sink_event), (gst_matroska_mux_finish):
* gst/matroska/matroska-mux.h:
Remove internal taglist and fully use tagsetter interface.
Original commit message from CVS:
* gst/avi/gstavimux.c: (gst_avi_mux_reset),
(gst_avi_mux_riff_get_avi_header):
* gst/avi/gstavimux.h:
Ensure header size invariance during subsequent rewrite by using
tags snapshot.
Original commit message from CVS:
* gst/audiofx/Makefile.am:
* gst/audiofx/audiofxbaseiirfilter.c:
(gst_audio_fx_base_iir_filter_base_init),
(gst_audio_fx_base_iir_filter_dispose),
(gst_audio_fx_base_iir_filter_class_init),
(gst_audio_fx_base_iir_filter_init),
(gst_audio_fx_base_iir_filter_calculate_gain),
(gst_audio_fx_base_iir_filter_set_coefficients),
(gst_audio_fx_base_iir_filter_setup), (process),
(gst_audio_fx_base_iir_filter_transform_ip),
(gst_audio_fx_base_iir_filter_stop):
* gst/audiofx/audiofxbaseiirfilter.h:
Implement a base class for IIR filters.
* gst/audiofx/audiochebband.c: (gst_audio_cheb_band_base_init),
(gst_audio_cheb_band_class_init), (gst_audio_cheb_band_init),
(generate_coefficients), (gst_audio_cheb_band_set_property),
(gst_audio_cheb_band_setup):
* gst/audiofx/audiochebband.h:
* gst/audiofx/audiocheblimit.c: (gst_audio_cheb_limit_base_init),
(gst_audio_cheb_limit_class_init), (gst_audio_cheb_limit_init),
(generate_coefficients), (gst_audio_cheb_limit_set_property),
(gst_audio_cheb_limit_setup):
* gst/audiofx/audiocheblimit.h:
Use the IIR filter base class for the chebyshev filters.
Original commit message from CVS:
Patch by: j^ <j at oil21.org>
* gst/qtdemux/qtdemux.c: (qtdemux_video_caps),
(qtdemux_audio_caps):
Add codec mapping for xvid, fmp4 and ac3 tracks.
Fixes#565850
Original commit message from CVS:
* ext/pulse/pulsemixerctrl.c:
And remove temporary comment pointing to the bug ticket.
* gst/avi/gstavimux.c:
Move reoccuring logging to LOG and log instance too.
Original commit message from CVS:
* gst/avi/gstavimux.c:
Instead of filtering wrongly just use the mergemode. Applications is
use KEEP_ALL if they want to supress tag-events. Fixes#563221 for
avi for real (I hope). Everyone chime in, before I fix the others.
Original commit message from CVS:
* gst/avi/gstavidemux.c:
More logging.
* gst/avi/gstavimux.c:
Handle more metadata fields. Better estimate of metadata size. Don't
merge received tags, if application has specified tags using
GST_TAG_MERGE_REPLACE_ALL. Fixes#563221 for avi.
Original commit message from CVS:
* gst/rtp/gstrtpjpegdepay.c: (gst_rtp_jpeg_depay_process):
Add an EOI marker at the end of the jpeg frame when it's missing.
Fixes#563056.
Original commit message from CVS:
* gst/rtp/gstrtpmp4vpay.c: (gst_rtp_mp4v_pay_flush),
(gst_rtp_mp4v_pay_event):
Don't try to push packets before we could find a valid config
startcode. Fixes#563509.
Original commit message from CVS:
* gst/udp/gstmultiudpsink.c: (gst_multiudpsink_render):
Provide the parameters that are required for the format string
to fix a compiler warning.
Original commit message from CVS:
Patch by: Peter Kjellerstedt <pkj at axis com>
* gst/udp/gstmultiudpsink.c: (gst_multiudpsink_render):
Make gst_multiudpsink_render() ignore errors from sendto() instead of
breaking streaming. Emit a warning instead. Fixes#562572.
Original commit message from CVS:
Patch by: 이문형 <iwings at gmail dot com>
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_loop_udp):
Prevent further read/write actions taken to the connect-failed socket by
erroring out quickly. See #562258.
Original commit message from CVS:
2008-11-25 Julien Moutte <julien@fluendo.com>
* gst/qtdemux/qtdemux.c: (qtdemux_video_caps): Add MPG1 and MPG2
fourcc
to supported qtdemux video codecs as I found some video clips
using
those.
Original commit message from CVS:
* gst/autodetect/gstautoaudiosink.c: (gst_auto_audio_sink_detect):
* gst/autodetect/gstautoaudiosrc.c: (gst_auto_audio_src_detect):
* gst/autodetect/gstautovideosink.c: (gst_auto_video_sink_reset),
(gst_auto_video_sink_detect):
* gst/autodetect/gstautovideosrc.c: (gst_auto_video_src_detect):
Post an error when we can't set the internal ghostpad target.
Original commit message from CVS:
* gst/videocrop/gstvideocrop.c: (gst_video_crop_init),
(gst_video_crop_transform), (gst_video_crop_transform_caps),
(gst_video_crop_set_caps), (gst_video_crop_set_property):
* gst/videocrop/gstvideocrop.h:
Fix renegotiation when changing properties using the new basetransform
features. Fixes#561502.
* tests/icles/Makefile.am:
* tests/icles/videocrop2-test.c: (make_pipeline), (main):
Add crazy interactive test unit for dynamically changing properties.
Original commit message from CVS:
* gst/rtsp/gstrtspsrc.c: (new_session_pad),
(gst_rtspsrc_parse_range):
Add some more debugging.
Use the reanges received from the server unconditionally.
Fixes#561625.
Original commit message from CVS:
Patch by: Tal Shalif <tshalif at nargila dot org>
* gst/qtdemux/qtdemux.c: (qtdemux_audio_caps):
Use G_{BIG,LITTLE}_ENDIAN instead of the non-GLib variants as
the latter don't exist on some systems (mingw). Fixes bug #561992.
Original commit message from CVS:
* gst/udp/gstmultiudpsink.c:
* gst/udp/gstudpnetutils.c:
* gst/udp/gstudpnetutils.h:
* gst/udp/gstudpsrc.c:
Fix multiudpsink on OSX by passing the specific length of the socket,
refactor that into a function shared with the same thing in udpsrc.
Original commit message from CVS:
* gst/wavparse/gstwavparse.c: (uint64_ceiling_scale_int),
(uint64_ceiling_scale), (gst_wavparse_calculate_duration),
(gst_wavparse_stream_headers):
Fix the scaling code.
Fix parsing of the INFO chunks, we were reading the wrong number of
bytes. Fixes#561580.
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_audio_caps):
* gst/matroska/matroska-ids.h:
Make mkvdemux aware of E-AC3.
Original commit message from CVS:
* gst/rtsp/Makefile.am:
* gst/rtsp/gstrtsp.c: (plugin_init):
* gst/rtsp/gstrtspgoogle.c:
* gst/rtsp/gstrtspgoogle.h:
Remove google extension again, it's not needed anymore because we never
send multiple transports anymore.
Original commit message from CVS:
Based on patch by: Eric Zhang <chao.zhang at access-company dot com>
* gst/rtsp/gstrtspsrc.c: (gst_rtsp_nat_method_get_type),
(gst_rtspsrc_class_init), (gst_rtspsrc_set_property),
(gst_rtspsrc_get_property), (gst_rtspsrc_create_stream),
(gst_rtspsrc_stream_free),
(gst_rtspsrc_stream_configure_udp_sinks),
(gst_rtspsrc_stream_configure_transport),
(gst_rtspsrc_send_dummy_packets),
(gst_rtspsrc_create_transports_string),
(gst_rtspsrc_handle_message), (gst_rtspsrc_change_state):
* gst/rtsp/gstrtspsrc.h:
Add property to configure NAT traversal method.
Ignore EOS from the internal sinks.
Implement sending dummy packets as a (simple) method to open up
some firewalls.
Send PLAY request to the server after we started the udp sources.
Fixes#559545.
Original commit message from CVS:
Patch by: Yotam <sh dot yotam at gmail dot com>
* gst/rtp/gstrtpmp4vpay.c: (gst_rtp_mp4v_pay_event):
Flush the remaining frames on EOS. Fixes#560641.
Original commit message from CVS:
* gst/qtdemux/qtdemux.h (struct _GstQTDemux):
* gst/qtdemux/qtdemux.c (gst_qtdemux_do_seek): Queue up new
segment events instead of sending them from the seeking thread.
Fixes#559288.
(gst_qtdemux_push_pending_newsegment): New helper, sends out
queued newsegment events.
(gst_qtdemux_loop_state_movie): Voilà, call it here. Only need to
call it here, as we only seek when looping, and only push in the
movie state.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_tag_add_tmpo),
(qtdemux_tag_add_covr), (qtdemux_parse_udta):
* gst/qtdemux/qtdemux_fourcc.h:
* gst/qtdemux/qtdemux_types.c:
Add cover and alternative copyright tag, and enhance some existing
ones by marking them as container atoms.
Original commit message from CVS:
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_create_transports_string),
(gst_rtspsrc_change_state):
Only send one transport at a time for improved compatibility with some
broken servers. See #537832.
Original commit message from CVS:
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_do_seek),
(gst_rtspsrc_perform_seek):
Only pause/play in the seek handler when the source was playing.
Fixes#529379.
Original commit message from CVS:
* gst/matroska/matroska-mux.c:
(gst_matroska_mux_handle_dirac_packet):
Fix muxing of Dirac streams if the input already has the format
we need, i.e. is the output of matroskademux.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_parse_trak),
(qtdemux_video_caps), (qtdemux_audio_caps):
Refactor some raw audio caps building, and handle >16-bit cases.
Fix/replace building caps from a string description.
Original commit message from CVS:
* gst/audiofx/audiowsincband.c:
* gst/audiofx/audiowsinclimit.c:
* gst/cutter/gstcutter.c:
Make author name consistent with others.
Original commit message from CVS:
Based on patch by: Eric Zhang <chao.zhang at access-company dot com>
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_perform_seek),
(gst_rtspsrc_stream_configure_udp_sink):
Pause the RTSP stream before doing a new play request.
Make sure that adding the udpsinks does not cause the rtspsrc to become
a sink. Fixes#559547.
Original commit message from CVS:
* gst/matroska/matroska-ids.h:
* gst/matroska/matroska-mux.c: (gst_matroska_pad_free),
(gst_matroska_mux_handle_dirac_packet),
(gst_matroska_mux_write_data):
Implement Dirac muxing into Matroska comforming to the spec, i.e.
put all Dirac packages up to a picture into a Matroska block.
TODO: Implement writing of the ReferenceBlock Matroska elements,
currently the Dirac muxing is only 100% correct if Matroska version 2
is selected for muxing.
Original commit message from CVS:
* gst/wavenc/gstwavenc.c: (gst_wavenc_create_header_buf),
(gst_wavenc_sink_setcaps), (gst_wavenc_change_state):
* gst/wavenc/gstwavenc.h:
Add support for float/double as input and remove the (nowadays)
useless parsing of the depth as we require width==depth.
Original commit message from CVS:
* gst/rtp/gstrtpmpadepay.c: (gst_rtp_mpa_depay_setcaps):
* gst/rtp/gstrtpmpapay.c:
Narrow down the caps of the mpeg audio pay/depayloaders to only accept
mpeg version 1. Fixes#558427.
Original commit message from CVS:
* gst/rtp/gstrtpL16pay.c: (gst_rtp_L16_pay_flush),
(gst_rtp_L16_pay_getcaps):
Only put an integral amount of samples in the RTP packet.
Fixes#556641.
Original commit message from CVS:
* gst/rtp/gstrtpchannels.c: (gst_rtp_channels_get_by_index):
* gst/rtp/gstrtpchannels.h:
Add method to get possible channel positions.