Turns out 4 + 4 + 2 + (4 * 2) is actually 18 and not 22. This avoids
a presumably unintentional padding of uninitialised bytes at the end
of the CONT tags chunk, which should be harmless but causes warnings
in valgrind (see #608533 for a test URL).
Fixes playback of Windows Media RTSP streams and other non-Real RTSP
streams where the server errors out because it can't handle the
Real-specific 'Required: com.real.retain-entity-for-setup' header
we've been adding unconditionally in the recent past.
For reference:
rtsp://66.111.34.191:601/broadcast/alnour.rm
rtsp://195.134.224.231/snowboard_100.wmv
Parse the ETag from the describe method and pass the sessionid as the value for
the If-Match header is subsequent setup calls.
Fixes support for more RealMedia RTSP streams.
Add a new utri handler for pnm:// that for now just redirects to the same uri
with the rtsp:// protocol, which usually works nowadays.
Separate the registration of the various plugins into a separate source file.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
(gst_rmdemux_descramble_mp4a_audio),
(gst_rmdemux_handle_scrambled_packet):
Add suport for mpeg4 and aac audio. See #556714.
Original commit message from CVS:
* gst/realmedia/rdtdepay.c: (gst_rdt_depay_init),
(gst_rdt_depay_setcaps), (gst_rdt_depay_sink_event),
(create_segment_event), (gst_rdt_depay_push),
(gst_rdt_depay_handle_data), (gst_rdt_depay_change_state):
* gst/realmedia/rdtdepay.h:
Parse other values from the incomming caps.
Add event handler to handle flushing and segments.
Create segment events.
* gst/realmedia/rdtjitterbuffer.c: (rdt_jitter_buffer_insert):
Do skew correction based on RDT timestamps.
* gst/realmedia/rdtmanager.c: (activate_session),
(gst_rdt_manager_parse_caps), (gst_rdt_manager_setcaps),
(create_recv_rtp):
Parse caps to get the clockrate needed for the jitterbuffer.
* gst/realmedia/rmdemux.c: (gst_rmdemux_parse_video_packet):
Apply timestamp fixup after correcting for initial timestamp and
internal base timestamp corrections.
Original commit message from CVS:
* gst/realmedia/rdtdepay.c: (gst_rdt_depay_handle_data),
(gst_rdt_depay_change_state):
* gst/realmedia/rdtdepay.h:
Check seqnum gaps and drop duplicate packets or mark outgoing buffers
with a DISCONT flag when needed.
* gst/realmedia/rdtmanager.c: (gst_rdt_manager_query_src):
Report the configure latency instead of a hardcoded value.
Original commit message from CVS:
* gst/realmedia/rdtmanager.c: (create_session), (activate_session),
(free_session), (gst_rdt_manager_query_src),
(gst_rdt_manager_src_activate_push),
(gst_rdt_manager_handle_data_packet), (gst_rdt_manager_chain_rdt),
(gst_rdt_manager_loop), (create_recv_rtp):
Include the new rdt jitterbuffer in the session manager.
Original commit message from CVS:
* gst/realmedia/rdtdepay.c: (gst_rdt_depay_class_init),
(gst_rdt_depay_finalize), (gst_rdt_depay_setcaps),
(gst_rdt_depay_push), (gst_rdt_depay_handle_data),
(gst_rdt_depay_chain), (gst_rdt_depay_change_state):
* gst/realmedia/rdtdepay.h:
Use new RDT parsing helper functions.
Copy discont flags correctly.
Push the header from the chain function instead of the setcaps function.
Copy incomming timestamp to the output buffers instead of doing magic
with the RDT timestamps.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_init),
(find_seek_offset_time), (gst_rmdemux_reset), (gst_rmdemux_chain),
(gst_rmdemux_parse_mdpr), (gst_rmdemux_descramble_cook_audio),
(gst_rmdemux_descramble_dnet_audio),
(gst_rmdemux_parse_video_packet), (gst_rmdemux_parse_audio_packet):
* gst/realmedia/rmdemux.h:
Keep track of the first timestamp of the stream and add this to the
outgoing buffer timestamps so that we can handle live streams.
Set discont flag on the first buffers and after a seek.
Original commit message from CVS:
* docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
* docs/plugins/gst-plugins-ugly-plugins-sections.txt:
* ext/a52dec/gsta52dec.c:
* ext/amrnb/amrnbdec.c:
* ext/amrnb/amrnbenc.c:
* ext/amrnb/amrnbparse.c:
* ext/lame/gstlame.c:
* ext/mad/gstmad.c:
* ext/sidplay/gstsiddec.cc:
* gst/asfdemux/gstrtspwms.c:
* gst/mpegaudioparse/gstxingmux.c:
* gst/realmedia/rademux.c:
* gst/realmedia/rdtmanager.c:
* gst/realmedia/rtspreal.c:
* gst/synaesthesia/gstsynaesthesia.c:
Add missing elements to docs. Restore alphabetical order in section
file. Document mad (it was included in docs already).
Fix doc-markup: use convinience syntax for examples
(produces valid docbook), add several refsec2 when we have several
titles. Fix some types.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_parse_video_packet):
Properly aggregate GstFlowReturn from downstream in order to properly
stop, and doing that as early as possible.
Fixes#532807
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_parse_mdpr),
(gst_rmdemux_fix_timestamp), (gst_rmdemux_parse_video_packet),
(gst_rmdemux_parse_audio_packet), (gst_rmdemux_parse_packet):
Fix video timestamps by adjusting it with the first timestamp found.
Don't assume we have a complete fragment when flushing the adapter,
packets might have been lost or the stream might just be broken.
Original commit message from CVS:
* gst/realmedia/rdtmanager.c: (gst_rdt_manager_plugin_init):
Set Rank to NONE so that we don't accidentally try to autoplug the
rdtmanager.
Original commit message from CVS:
* gst/realmedia/rtspreal.c: (rtsp_ext_real_before_send),
(rtsp_ext_real_parse_sdp), (rtsp_ext_real_stream_select):
* gst/realmedia/rtspreal.h:
Move assembly rule parsing to the place where we parse the SDP as it's
also there that we create the MDPR and we need the currently selected
asmrule in order to select the right MTLI.
Fixes#529359.
Original commit message from CVS:
* gst/realmedia/realhash.c:
* gst/realmedia/rtspreal.c:
Include generated "_stdint.h" instead of <stdint.h> which might not
exist on some systems.
Original commit message from CVS:
* gst/realmedia/asmrules.c: (gst_asm_scan_string), (main):
make ) also a delimiter for rules.
Skip \\ when scanning strings.
Add new testcase for these problems.
Original commit message from CVS:
Patch by: Pizpot Gargravarr <pgargravarr at siriuscybernetics dot org>
* gst/realmedia/rtspreal.c: (rtsp_ext_real_parse_sdp):
Add the version field when creating the CONT chunk resulting in
the Author, Comment and Copyright tags not being parsed correctly.
Fixes#521459.
Original commit message from CVS:
* gst/realmedia/rdtmanager.c:
(gst_rdt_manager_marshal_VOID__UINT_UINT),
(gst_rdt_manager_class_init):
* gst/realmedia/rdtmanager.h:
Implement some more signals that rtspsrc connects to.
Fixes#504671.
Original commit message from CVS:
2007-11-20 Julien MOUTTE <julien@moutte.net>
* gst/realmedia/rtspreal.c: (rtsp_ext_real_parse_sdp): Fix build
on Mac OS X.
Original commit message from CVS:
* gst/realmedia/asmrules.c: (gst_asm_scan_parse_expression),
(gst_asm_scan_parse_condition):
* gst/realmedia/rmdemux.c: (gst_rmdemux_parse_video_packet):
Fix some compiler warnings shown on Forte.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_reset),
(gst_rmdemux_chain), (gst_rmdemux_parse_mdpr),
(gst_rmdemux_fix_timestamp), (gst_rmdemux_parse_video_packet),
(gst_rmdemux_parse_audio_packet), (gst_rmdemux_parse_packet):
Do fragment collection in the demuxer so that we can now work with
both ffmpeg and realvideodec to decoder real video content.
Original commit message from CVS:
* gst/realmedia/rtspreal.c: (rtsp_ext_real_get_transports),
(rtsp_ext_real_parse_sdp), (rtsp_ext_real_stream_select):
Disable UDP transport for now.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_descramble_cook_audio):
After descrambling, push the packets out as individual packets
instead of one big descrambled buffer. Makes cook audio decoding
work with the 'realaudiodec' decoder from gst-plugins-bad.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_init),
(gst_rmdemux_sink_event), (gst_rmdemux_perform_seek),
(gst_rmdemux_reset), (gst_rmdemux_chain), (gst_rmdemux_add_stream),
(gst_rmdemux_parse_packet):
* gst/realmedia/rmdemux.h:
Remember first timestamp encountered in stream and re-timestamp
stream to start from zero (fixes#397219); only send one newsegment
event, not two; when seeking, send newsegment events from the
streaming thread and not from the seeking thread.
Original commit message from CVS:
Patch by: René Stadler <mail at renestadler dot de>
* gst/realmedia/rmdemux.c: (find_seek_offset_bytes),
(find_seek_offset_time), (gst_rmdemux_reset),
(gst_rmdemux_get_stream_by_id), (gst_rmdemux_send_event),
(gst_rmdemux_add_stream), (gst_rmdemux_combine_flows):
* gst/realmedia/rmdemux.h:
Make rmdemux handle any number of logical streams. Fixes#428698.
Original commit message from CVS:
* gst/realmedia/rmdemux.c:(gst_rmdemux_parse_indx_data):
Use gst_guint64_to_gdouble for conversions.
* gst/synaesthesia/synaescope.c:
Define M_PI and do not include <pthread.h> and
<sys/time.h> for G_OS_WIN32
* win32/vs6/libgstrealmedia.dsp:
* win32/vs6/synaesthesia.dsp:
Update projects files.
* win32/common/config.h.in:
Add config.h.in for autogen of config.h
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_src_query),
(gst_rmdemux_src_query_types):
Implement SEEKING query, make query function thread-safe.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_descramble_dnet_audio):
Use alignment-safe macros here too (subbuffers ...); guard against
hypothetical memory access beyond our given buffer in the case
where the buffer size is not a multiple of 2.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_parse_indx_data):
Also, don't read the index for a stream a second time when
operating in pull-mode and reaching the end of the file.
Original commit message from CVS:
Patch by: Roland Kay <roland.kay at ox compsoc net>
* gst/realmedia/rmdemux.c: (gst_rmdemux_reset):
Don't leak stream index (#385292).
Original commit message from CVS:
Based on patch by: Roland Kay <roland.kay at ox compsoc net>
* gst/realmedia/rmdemux.c: (gst_rmdemux_parse_mdpr):
For version 4 streams, read the extra codec data size from the
header instead of assuming it is always 16 (also read it from the
right position) (#384989). For version 4 and 5 streams, check that
the specified extra codec data size doesn't make us read beyond the
chunk boundary (#384989).
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/realmedia/rdtdepay.c: (gst_rdt_depay_base_init),
(gst_rdt_depay_init), (gst_rdt_depay_setcaps),
(gst_rdt_depay_chain), (gst_rdt_depay_change_state):
Change caps to x-rdt, because it's not x-rtp.
* gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
(gst_rmdemux_parse_mdpr), (gst_rmdemux_parse_packet),
(gst_rmdemux_plugin_init):
Activate pad before adding to the element.
Return the combined stream return values after pad_alloc.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
(gst_rmdemux_parse_mdpr):
Handle audio streams with stream_version 3 properly; warn about
unknown stream versions; handle unknown fourccs a tad more
gracefully (setting bogus caps). Also, use GST_FOURCC_ARGS
with GST_FOURCC_FORMAT.
Original commit message from CVS:
* gst/realmedia/Makefile.am:
* gst/realmedia/rmdemux.c: (gst_rmdemux_parse_mdpr),
(gst_rmdemux_parse_cont):
* gst/realmedia/rmutils.c: (gst_rm_utils_read_string8),
(gst_rm_utils_read_string16), (gst_rm_utils_read_tags):
* gst/realmedia/rmutils.h:
Factor out some code into rmutils.[ch]; when reading
strings, don't read beyond the available data; read
metadata strings correctly (string length is 16 bits
here, not just 8).
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_class_init),
(gst_rmdemux_init), (gst_rmdemux_chain), (gst_rmdemux_add_stream),
(gst_rmdemux_parse_mdpr), (gst_rmdemux_parse_data),
(gst_rmdemux_stream_clear_cached_subpackets),
(gst_rmdemux_descramble_cook_audio),
(gst_rmdemux_descramble_dnet_audio),
(gst_rmdemux_handle_scrambled_packet), (gst_rmdemux_parse_packet):
Descramble cook audio streams before sending them to the
decoder. Fixes#347292.
Also miscellaneous clean-ups and log-level changes.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
(gst_rmdemux_parse_cont):
Extract more tags and also post codec name tag on the
bus so this shows up in totem and nautilus.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
(gst_rmdemux_fill_audio_packet), (gst_rmdemux_parse_packet):
Extra data usually goes into the caps as 'codec_data', not
as first buffer into the stream.
Need to byte swap AC3 content in realmedia files for some
reason (fixes#331588).
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_init),
(gst_rmdemux_validate_offset), (gst_rmdemux_loop),
(gst_rmdemux_parse_mdpr), (gst_rmdemux_parse_packet):
When operating in pull mode, post an error message on the
bus when all source pads are unlinked or some other fatal
error occured (#323023). Regrade some recurring debug messages
to LOG level. Convert c++-style comments into C-style ones.
Original commit message from CVS:
* gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream):
One source pad not being linked is not an error condition when we're
still parsing the header. In this case (e.g. where we don't have a
suitable decoder installed) just pretend everything is fine, so that
the demuxer will actually go on to signal no-more-pads when done
parsing the header, otherwise decodebin/playbin will never post the
appropriate error message if decoders are not available.
Original commit message from CVS:
2006-01-20 Thomas Vander Stichele <thomas at apestaart dot org>
* ext/dvdnav/dvdnavsrc.c: (if):
* ext/dvdread/stream_labels.c:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_segment):
* gst/realmedia/rmdemux.c: (gst_rmdemux_loop):
fix up error domains, error strings, and use of translation
* po/POTFILES.in:
fix up this file, even though none of them are actually marked
for build yet.
Original commit message from CVS:
* ext/amrnb/amrnbparse.c: (gst_amrnbparse_query):
* ext/mad/gstid3tag.c: (gst_id3_tag_src_query):
* ext/mad/gstmad.c: (gst_mad_src_query):
* ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_src_query):
* ext/sidplay/gstsiddec.cc:
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_handle_src_query):
* gst/realmedia/rmdemux.c: (gst_rmdemux_src_query):
Pass unhandled queries upstream (useful e.g. for SEEKING query)
(fixes#325652; based on patch by: Philippe); make rmdemux return
FALSE for position queries, instead of setting -1 as value and
returning TRUE.