Commit graph

3751 commits

Author SHA1 Message Date
Sebastian Dröge
89605b416b [MOVED FROM BAD 18/29] shapewipe: Replace floating point arithmetic in the inner processing loops by integer arithmetic 2010-02-12 11:12:34 +01:00
Sebastian Dröge
5f2e64e3a0 [MOVED FROM BAD 17/29] shapewipe: Don't do pointer dereferences in the processing loop
Lowers the time taken there in my testcase from 6.91% to 6.20%
as measured by callgrind.
2010-02-12 11:12:34 +01:00
Sebastian Dröge
41eed9dcca [MOVED FROM BAD 16/29] shapewipe: Add BGRA support for video in/output 2010-02-12 11:12:33 +01:00
Sebastian Dröge
9716cb9935 [MOVED FROM BAD 15/29] shapewipe: Add support for ARGB video input/output 2010-02-12 11:12:33 +01:00
Sebastian Dröge
76a21dec7f [MOVED FROM BAD 14/29] shapewipe: Correctly handle 0/1 fps 2010-02-12 11:12:33 +01:00
Sebastian Dröge
809d15428c [MOVED FROM BAD 13/29] shapewipe: Implement basic QoS
This change is based on Tim's QoS implementation
for jpegdec.
2010-02-12 11:12:33 +01:00
Sebastian Dröge
5fba6963ff [MOVED FROM BAD 12/29] shapewipe: Proxy queries on the video pads to the correct peers 2010-02-12 11:12:33 +01:00
Sebastian Dröge
48dd557fea [MOVED FROM BAD 11/29] shapewipe: Proxy bufferalloc on the video sinkpad 2010-02-12 11:12:33 +01:00
Sebastian Dröge
91668db57c [MOVED FROM BAD 10/29] shapewipe: Try to work inplace if possible
This saves one new, large allocation per frame for the
most cases.
2010-02-12 11:12:33 +01:00
Sebastian Dröge
e5d41ba407 [MOVED FROM BAD 08/29] shapewipe: Fix some issues that were exposed by the new unit test 2010-02-12 11:12:33 +01:00
Sebastian Dröge
e207e7b8a3 [MOVED FROM BAD 06/29] shapewipe: Add documentation and integrate into the build system 2010-02-12 11:12:32 +01:00
Sebastian Dröge
19a0764537 [MOVED FROM BAD 05/29] shapewipe: Adjust border to still have everything transparent at 1.0 and the other way around 2010-02-12 11:12:32 +01:00
Sebastian Dröge
88f4bd4efd [MOVED FROM BAD 04/29] shapewipe: Divide the border value by two, otherwise we use a twice a wide border 2010-02-12 11:12:32 +01:00
Sebastian Dröge
c0f9553707 [MOVED FROM BAD 03/29] shapewipe: Add border property to allow smooth borders
...and use a border of 0.01 in the example application.
2010-02-12 11:12:32 +01:00
Sebastian Dröge
12a27a46f9 [MOVED FROM BAD 01/29] shapewipe: Add a simple shapewipe transition filter & example application 2010-02-12 11:12:32 +01:00
Robert Swain
4aff3e48be qtdemux: temporary safety check to avoid crashes with a certain file
Add temporary check to avoid crashes with a certain file when seeking
until the real cause of this is figured out. See #609405.
2010-02-10 20:36:56 +00:00
Robert Swain
7877ffb6f5 qtdemux: skip unknown atoms when looking for moov
Fixes bug #609107
2010-02-07 10:56:02 +01:00
Robert Swain
9ed6c58006 qtdemux: Set the segment start time to the requested seek time for non-keyframe seeks 2010-02-04 18:54:58 +00:00
Robert Swain
8d4f70c5ce qtdemux: Fix time returned for index at a byte offset
The logic for searching forwards/backwards was swapped
2010-02-04 18:54:53 +00:00
Mark Nauwelaerts
f0d6b841a2 matroskademux: improve stream synchronization
In particular, do not make it send newsegment updates that
sort-of contradict the indented playback segment (e.g. start time).
2010-02-02 16:54:05 +01:00
Mark Nauwelaerts
b527360f21 matroskademux: fix bridging (time) gaps in streams
As a side effect, avoid sending newsegment updates with start times
that go back and forth, which leads to bogus downstream running_time.

Also fixes seeking in bug #606744.
2010-02-02 16:53:56 +01:00
Mark Nauwelaerts
9bec2b1127 matroskademux: fix stream synchronization
.. by initializing streams starting at 0, as that is basically
where we 'seek to' at the start and assume streams to start elsewhere.
Also enables newsegment update events for subtitle streams.
2010-02-02 16:53:51 +01:00
Wim Taymans
c35a984801 rtspsrc: free transports on errors
See #608564
2010-02-01 19:32:11 +01:00
Robert Swain
f9bf5970a3 flvmux: index timestamps should be in seconds, not milliseconds 2010-01-27 20:24:41 +01:00
Mark Nauwelaerts
71e35b2bf3 rtpspeexpay: fix occasional buffer leak
Fixes #608255.
2010-01-27 17:05:34 +01:00
Sebastian Dröge
41b17ec2a7 videomixer: Fix assembly register constraints
Fixes bug #608209.
2010-01-27 16:35:10 +01:00
Wim Taymans
01f0a5ce32 avidemux: ignore streams that finished
When we receive an UNEXPECTED from a stream, move to the next stream and only go
EOS when all streams are EOS. When selecting a stream to push, ignore streams
that went EOS.

Fixes #607949
2010-01-26 11:22:56 +01:00
Edward Hervey
cb0474b6b3 qtdemux: dmb1 is a valid fourcc for Motion-JPEG 2010-01-23 14:47:55 +01:00
Edward Hervey
a782ef3ce8 qtdeux: IV32 is also used for Indeo 3 video streams 2010-01-23 14:20:02 +01:00
Roland Krikava
8a80fdaad1 qtdemux: Avoid negative overflow on keyframe search
Do not overflow negatively when searching a previous
"keyframe" on audio streams. Could cause infinite loops
on backwards playback

Fixes #607718
2010-01-21 23:20:34 -03:00
Alessandro Decina
5d3d3f28e1 qtdemux: fix compiler warnings under OS X. 2010-01-21 19:24:22 +01:00
Wim Taymans
7d39f8e5bb avidemux: don't parse NULL indexes
for some streams we might fail to fetch the index offsets. Don't try to parse
NULL indexes in those cases.
2010-01-21 17:59:25 +01:00
Olivier Crête
9afc247906 rtpg729pay: ptime should is in nanoseconds
https://bugzilla.gnome.org/show_bug.cgi?id=607403
2010-01-21 10:54:14 +01:00
Thiago Santos
ef2b7bbcab wavenc: Post warning if file isnt finished properly
When the pipeline is shut down and the file isn't
finished properly, wavenc should post a warning.

Fixes #607440
2010-01-20 15:11:15 -03:00
Arnout Vandecappelle
ca41ddda75 matroskamux: make index size configurable.
Added the 'min-index-interval' property to matroskamux,
which determines how much time (nanoseconds) is left
between keyframes stored in the index.

Fixes #583985.
2010-01-20 14:37:20 -03:00
Wim Taymans
1f6b06ce66 rtph264pay: scale spspps_interval to milliseconds
The spspps_interval is kept in seconds. Convert it to milliseconds before
comparing it to another value in milliseconds.
2010-01-20 16:29:57 +01:00
Mark Nauwelaerts
8ca984d5e8 qtdemux: always keep media segments within total duration
... as opposed to only doing so following a seek.
2010-01-20 16:03:21 +01:00
Wim Taymans
95333115cd rtph264pay: rename spspps-interval property
Rename the spspps-interval property to config-interval because it is nicer.
2010-01-20 15:44:40 +01:00
Wim Taymans
afc3c674c0 avidemux: skip RIFF and index in push mode
When we are in push mode, we can encounter RIFF and idx tags in the data chunk
when we are dealing with ODML files. In these cases, simply skip the chunks and
continue streaming instead of going EOS.
2010-01-20 11:47:04 +01:00
Wim Taymans
570319822a avidemux: more DISCONT handling
Add some debug in the DISCONT handling code.
When we receive a DISCONT in push mode, mark all streams as DISCONT.
2010-01-20 11:47:04 +01:00
Wim Taymans
40e3b0189a avidemux: reset on flush events
When we receive a flush event on the sinkpad, reset the EOS state and the
flowreturn of all streams. Also mark the streams with a DISCONT.
2010-01-20 11:47:03 +01:00
Wim Taymans
183d450113 avidemux: rename some variable
Rename the seek_event variable to seg_event because it really contains the
newsegment event that needs to be pushed.
2010-01-20 11:47:03 +01:00
Olivier Crête
c4fa559f15 rtph264pay: Don't set profile-level-id in out caps
The profile-level-id represents restrictions on what can be sent, it does not
describe the stream. So it should be reflected in the sink caps of the
payloader, not the src caps.

https://bugzilla.gnome.org/show_bug.cgi?id=607353
2010-01-19 13:47:38 +01:00
Olivier Crête
7a0590b1f1 rtph264pay: Don't ignore the return value from set_outcaps
https://bugzilla.gnome.org/show_bug.cgi?id=607353
2010-01-19 13:35:37 +01:00
Sebastian Dröge
2261bd8346 deinterlace: Fix license and copyright headers 2010-01-18 17:44:17 +01:00
Wim Taymans
fb716a6250 avidemux: avoid some typecasting 2010-01-15 18:15:14 +01:00
Wim Taymans
592b440911 avidemux: avoid some type checks 2010-01-15 18:13:24 +01:00
Wim Taymans
d4301d900f avidemux: fallback to avih duration
when we have not yet parsed the indexes (in push mode, for example) use
the duration as given in the avih header instead of -1.
2010-01-15 18:09:15 +01:00
Thiago Santos
e61a71b490 qtdemux: g_free is NULL safe 2010-01-15 13:42:30 -03:00
Thiago Santos
b07f406634 qtdemux: use DEMUX errors, instead of DECODE
qtdemux should use DEMUX errors, and not DECODE

Conflicts:

	gst/qtdemux/qtdemux.c
2010-01-15 13:42:30 -03:00
Thiago Santos
b988ff4f57 qtdemux: Minor refactor
Replace repeated code with a function call
2010-01-15 13:42:30 -03:00
Thiago Santos
92a83e016a qtdemux: Handle another kind of redirect trak
Some traks might contain a redirect rtsp uri inside
hndl atom (which is a dref atom entry). This commit makes qtdemux
post a message when it finds one of these traks and there are
no other traks.

Fixes #597497
2010-01-15 13:42:29 -03:00
Thiago Santos
06de494640 qtdemux: Post error when reaching EOS without pads
Post an error when EOS is reached and there are no src pads
2010-01-15 13:42:22 -03:00
Thiago Santos
b53a45ed44 qtdemux: Do not post empty redirect messages
Some misinterpreted data could result in posting redirect messages
with empty redirect strings. It is better not to post them.

An example is the file on bug #597497
2010-01-15 13:13:59 -03:00
Mark Nauwelaerts
891ca1f4d3 matroskademux: polish last buffer end time usage
That is, reset it upon seek, and note that (rarely) last pushed buffer
time might precede segment start.
2010-01-14 18:19:25 +01:00
Stefan Kost
404e673ac0 videomixer: use 'q' constraint instead of 'r'
This avoids the "bad register name `%dil'" compilation errors on 32bit where
because of 'r' gcc puts the value in a general purpose register and then tries
to access the lower part as %dil/%sil which is not existing on 32bit. 'q' requests
a-d registers
2010-01-13 16:48:46 +02:00
Stefan Kost
7e3783cbac avi: add missing include for sscanf 2010-01-13 16:44:58 +02:00
Sebastian Dröge
4a0f441c59 equalizer: Fix property description for the 3rd band of the 10band equalizer
The frequency is actually 237 Hz, not 227 Hz.

Fixes bug #606692.
2010-01-13 09:36:03 +01:00
Kipp Cannon
d009678bc5 audioamplify: Allow negative amplifications
Fixes bug #606807.
2010-01-13 09:22:20 +01:00
Edward Hervey
3f5add8820 qtdemux: use G_GSIZE_FORMAT for platform independent gsize qualifier
Fixes build on macosx
2010-01-12 17:39:05 +01:00
Mark Nauwelaerts
59224d77f8 matroskademux: refactor eos sending when pausing loop
Also, prevent hanging if no pads yet on which to send eos by
posting a message instead.
2010-01-11 21:15:47 +01:00
Mark Nauwelaerts
ae515fead4 matroskademux: standardize seek handling
... which implies fixing some corner cases.
2010-01-11 21:15:46 +01:00
Mark Nauwelaerts
927c22bdc4 matroskamux: use more generic xiphN_streamheader_to_codecdata helper 2010-01-11 21:15:43 +01:00
Mark Nauwelaerts
847d1dd4ed matroskamux: reflow audio and video setcaps and improve logging
Also ensure width and height are available as they are mandatory
in matroska specs.
2010-01-11 21:15:41 +01:00
Michael Smith
144fbd2d8f qtdemux: fix offset for type 2 mp4a sound sample descriptions.
Allows us to correctly find the esds (and thus the codec data) for such
mp4a files.
2010-01-11 11:48:29 -08:00
Thiago Santos
fa32e08d91 rtpmp4g(de)pay: Only handle raw aac
rtpmp4g(de)pay should only handle raw AAC streams
2010-01-11 15:46:50 -03:00
Sebastian Dröge
daa52708b3 videomixer: Implement basic QoS
This drops frames if they're too late anyway before blending and all
that starts but QoS events are not forwarded upstream. In the future
the QoS events should be transformed somehow and forwarded upstream.
2010-01-11 19:32:35 +01:00
Thiago Santos
c563dd7eb2 rtpmp4a(de)pay: Only accept raw aac
rtpmp4a(de)pay should only handle raw aac to conform to the RFC
2010-01-11 15:00:00 -03:00
Sebastian Dröge
6158f401a1 videomixer: Add MMX implementations for I420 and all non-alpha RGB formats 2010-01-11 18:37:45 +01:00
Sebastian Dröge
2950262186 videomixer: Refactor processing functions
This allows easier plugging of optimized processing functions
in the future, like for SSE or AltiVec.
2010-01-11 18:37:44 +01:00
Thiago Santos
5975b01b01 avimux: matroskamux: rename aac's stream-format to raw
AAC's none stream-format has been renamed to raw, rename
on avimux and matroskamux as well
2010-01-11 13:26:32 -03:00
Thiago Santos
1314853210 matroskamux: Only accept raw aac
makes matroskamux reject aac streams that are not
in raw format (stream-format=none)

Fixes #598350
2010-01-11 12:32:29 -03:00
Thiago Santos
bacd350483 avimux: Only accept raw aac
makes avimux reject aac streams that are not
in raw format (stream-format=none)

Fixes #598350
2010-01-11 12:32:27 -03:00
Robert Swain
866d13e7b9 qtdemux: Oops. The gpointer cast is needed because of the const
qualifiers on the data elements
2010-01-11 10:38:10 +01:00
Robert Swain
4ac643c2d9 qtdemux: Debug -> info level for a message for benchmarking index parsing
The extra message output at higher levels affects the accuracy of the
benchmark.
2010-01-11 10:17:54 +01:00
Robert Swain
c93ea637ef qtdemux: Don't check for NULL pointers or cast to gpointer as this is
not needed
2010-01-11 10:05:10 +01:00
Robert Swain
a340359127 qtdemux: Refactor stbl sub-atom freeing. Free when index has been
completely parsed.
2010-01-11 09:50:33 +01:00
Robert Swain
3daf1871c1 qtdemux: Avoid whitespace commits due to inconsistent GNU indent
behaviour
2010-01-11 09:50:33 +01:00
Tim-Philipp Müller
e1bff64f00 qtdemux: remove newline at end of debug statement 2010-01-11 00:10:34 +00:00
Havard Graff
4ead3d85bf multiudpsink: Compiler warning fixes for Windows
Just simple missing casts

Fixes bug #606438.
2010-01-09 17:17:23 +01:00
Thiago Santos
8e84d457b2 avidemux: Use more glib and be safer
Be safer on sscanf by limiting string format sizes.
Remove useless parameter and use g_strndup.
2010-01-08 11:33:02 -03:00
Thiago Santos
c0e184641a avidemux: Simplifying code
Greatly simplify the IDIT chunk handling by using sscanf
instead of 'manually' parsing. Also replaces strncasecmp and
is_alpha/is_digit with glib versions.
2010-01-08 10:51:17 -03:00
Thiago Santos
7024ce14cf avidemux: it's feb for february
Fix typo in last commit.
2010-01-08 10:18:30 -03:00
Thiago Santos
a5197a94ee avidemux: Parse and post IDIT dates
Parses and post date tags contained in IDIT chunks.

Fixes #503582
2010-01-08 09:17:22 -03:00
Sebastian Dröge
a9a5e0c7e1 audiofxbasefirfilter: Add property for not draining the history on kernel changes
Currently this only works if the kernel size doesn't change, in the future
it will be possible to change the kernel size too without draining
the complete history and without loosing anything.

Partially based on a patch by
Thiago Santos <thiago.sousa.santos@collabora.co.uk>
2010-01-07 17:28:43 +01:00
Wim Taymans
ed22a97478 rtph264pay: remove weird memcmp code
Use plain memcmp for comparing memory instead of the custom buggy one.

Fixes #606198
2010-01-07 17:00:20 +01:00
Edward Hervey
3e08a0cb4e level: fix typo in 'message' property description 2010-01-07 15:38:36 +01:00
Wim Taymans
4c1947045e rtpg728pay: remove unused adapter peek 2010-01-06 13:45:59 +01:00
Michael Smith
7f442ab1c1 qtdemux: Add support for wave-style audio in qt.
Uses gstriff to parse the wave headers appropriately. Tested with MS-ADPCM
content.
2010-01-05 12:11:31 -08:00
Olivier Crête
63a9db5826 rtpg729pay: Simplify adapter usage
https://bugzilla.gnome.org/show_bug.cgi?id=606050
2010-01-05 13:23:26 -05:00
Olivier Crête
0a18587792 rtpg729pay: Support ptime from caps
https://bugzilla.gnome.org/show_bug.cgi?id=606050
2010-01-05 13:23:26 -05:00
Olivier Crête
321829f595 rtp: Add maxptime to the README
https://bugzilla.gnome.org/show_bug.cgi?id=606050
2010-01-05 13:23:26 -05:00
Wim Taymans
b32ddfc174 rtpg723depay: add G723 depayloader 2010-01-05 19:03:06 +01:00
Wim Taymans
ca7ecdf2f3 rtpg729depay: remove unused variable 2010-01-05 19:02:39 +01:00
Wim Taymans
d6d06630e8 rtpg723pay: rewrite payloader
Handle all 3 packet sizes according to RFC 3551.
Totally untested, we don't have a G723 encoder.

Fixes #605882
2010-01-05 18:33:25 +01:00
Wim Taymans
48615d5e98 qtdemux: fix chunk counter 2010-01-05 15:51:55 +01:00
Wim Taymans
17630760f4 qtdemux: more work at reducing loop overhead
Try to avoid derefs when parsing the index. Save the state into the structures
when we exit the loop instead of for each iteration.
2010-01-05 15:51:52 +01:00
Wim Taymans
91a5e5138f qtdemux: cleanups and make duration more accurate
Make the QtDemuxSample struct smaller by keeping the duration and the pts_offset
as their 32 bit values.
Make some macros to calculate PTS, DTS and duration of a sample.
Deref the sample index less often by keeping a ref to the sample we're dealing
with.
2010-01-05 15:51:50 +01:00
Wim Taymans
22eb18f828 qtdemux: simplify logic to calculate duration
Since we no longer store the timestamp and duration in nanoseconds, we can now
simply store the duration as-is.
2010-01-05 15:51:48 +01:00
Robert Swain
1c27ed4dae qtdemux: Store timestamps in mov format in the index
This allows faster building of the index upon seeks so that scaling of
timestamps only occurs when actually needed.
2010-01-05 15:51:45 +01:00
Wim Taymans
86021857c5 qtdemux: make seeking in push mode work
Move sample position checks into qtdemux_parse_samples where we can protect it
with a lock.
Refactor and make an qtdemux_ensure_index function.
Rename qtdemux_do_push_seek to qtdemux_seek_offset in order to avoid confusion
with gst_qtdemux_do_push_seek.
2010-01-05 15:51:43 +01:00
Wim Taymans
3b643817be qtdemux: move error code out of normal flow 2010-01-05 15:51:40 +01:00
Robert Swain
4b2b7067b6 qtdemux: Add push mode seek support for seeking to obtain the moov atom 2010-01-05 15:51:36 +01:00
Wim Taymans
8c5a822250 rtspsrc: fix on-npt-stop signal warnings for RDT
The RDT manager does not implement this signal so we need to check for it before
trying to connect to it.
2010-01-05 12:23:16 +01:00
Stefan Kost
fd9530d2d5 avimux: fix typo in warning message 2010-01-05 00:12:44 +02:00
Arun Raghavan
e9f9164fb6 qtdemux: Add tags for average and maximum bitrate
Fixes #599300.
2009-12-31 18:25:20 +00:00
Thiago Santos
173be1422c audiofxbasefirfilter: do not try to alloc really large buffers
When nsamples_out is larger than nsamples_in, using unsigned
ints lead to a overflow and the resulting value is wrong and
way too large for allocating a buffer. Use signed integers
and returning immediatelly when that happens.
2009-12-26 16:59:14 -03:00
Wim Taymans
362785df88 videomixer: optimize blend code some more
Use more efficient formula that uses less multiplies.
Reduce the amount of scalar code, use MMX to calculate the desired
alpha value.
Unroll and handle 2 pixels in one iteration for improved pairing.
2009-12-25 12:38:45 +01:00
Wim Taymans
4f9ded7742 videomixer: scale and clamp
Scale and clamp to the max alpha values.
2009-12-24 22:59:09 +01:00
Wim Taymans
0620797a18 alpha: scale and clamp alpha to its full extend
Convert the alpha value to 0->255 when setting and to 0->256 when using as
a scaling factor. This makes sure we can reach the full opacity value of 0xff in
all cases.
2009-12-24 22:50:31 +01:00
Wim Taymans
a65240d1c1 rtspsrc: fix some comments, remove property check
Fix some comments, clarify some FIXMEs
Remove the on-ntp-stop signal check now that the jitterbuffer is in
-good and we know that it supports this signal.
2009-12-24 22:23:01 +01:00
Wim Taymans
3c0f18d765 videomixer: some trivial cleanups 2009-12-24 21:45:12 +01:00
Thiago Santos
ac03ad782a rtspsrc: Parse all rtpinfo entries
Do not forget to parse all rtp-info entries, instead of
parsing the first one only.

Fixes #605222
2009-12-24 17:08:22 -03:00
Thiago Santos
5d86010dad qtdemux: perf tag should map to GST_TAG_ARTIST 2009-12-24 17:06:16 -03:00
Wim Taymans
fe529e71c5 interleave: fix weird indentation 2009-12-24 17:03:02 +01:00
Wim Taymans
59dc9dac03 rtph263ppay: use faster _adapter_copy() whem possible 2009-12-24 17:01:54 +01:00
Mark Nauwelaerts
05307c46e7 rtph264pay: fix uninitialized variable 2009-12-23 19:39:05 +01:00
Wim Taymans
9f098b352b rtp: use boilerplate 2009-12-23 13:09:54 +01:00
Wim Taymans
2ee7f58416 rtpL16pay: convert to baseaudiopayload
Use GstRTPBaseAudioPayload as the base class. This saves a lot of code and fixes
a bunch of problems that were already solved in the base class.

Fixes #853367
2009-12-23 00:38:05 +01:00
Wim Taymans
cdb8c718bb rtppcmapay: the boilerplate macro sets parent_class 2009-12-23 00:30:49 +01:00
Wim Taymans
05418f1687 rtpbin: avoid some structure copies
Don't make copied in the getter and setter for SDES in the RTPSource. This
avoids a couple of copies of the SDES structure when generating RTCP
packets.
2009-12-22 22:27:21 +01:00
Pascal Buhler
c3448f978e rtpmanager: improve SDES handling
Store SDES internally as a struct to support multiple PRIV values.
Include all values set in SDES struct when sending RTCP SDES.
2009-12-22 21:43:25 +01:00
Wim Taymans
251401aef1 rtph263depay: add some fixmes 2009-12-22 14:41:35 +01:00
Wim Taymans
564581e1b8 rtph263depay: baseclass handles timestamps for us 2009-12-22 14:35:13 +01:00
Wim Taymans
27ff4a8a47 rtph263depay: reset start variable properly 2009-12-22 14:27:40 +01:00
Marco Ballesio
74b3439374 Drop the whole frame if a packet is lost.
Fixes #582575
2009-12-22 11:48:52 +01:00
Wim Taymans
4687199348 rtph264pay: add option to insert PPS/SPS in streams
Add a new spspps-interval property to instruct the payloader to insert
SPS and PPS at periodic intervals in the stream.
Rework the SPS/PPS handling so that bytestream and AVC sample code both use the
same code paths to handle sprop-parameter-sets. This also allows to have the AVC
code to insert SPS/PPS like the bytestream code.

Fixes #604913
2009-12-21 20:45:54 +01:00
Jonathan Conder
1112090589 qtdemux: Adds new tags
Adds some new tags mapping to qtdemux.

Fixes #599759
2009-12-21 12:03:30 -03:00
Wim Taymans
9734699788 rtpbin: add property to remove pads automatically
Add a property called autoremove to automatically remove the pads of sources
that timed out.

Fixes #554839
2009-12-21 15:07:44 +01:00
Wim Taymans
c611bbaa8e ssrcdemux: fix comparison
A NULL means no pad was found.
2009-12-21 15:07:34 +01:00
Michael Smith
eab08d67b3 multiudpsink: pass length parameter to g_convert 2009-12-20 17:26:15 -08:00
Edward Hervey
188725811f matroska: Fix unitialized variable.
Yes, it's stupid, but macosx compilers are even more stupid.
2009-12-18 12:46:06 +01:00
Sebastian Dröge
3ac6f5e48b videomixer: Fix assembly compilation on x86
Fixes bug #604814.
2009-12-17 18:14:55 +01:00
Branko Čibej
7b107f64f3 rganalysis: fix timestamp rounding
Use scaling function to round and avoid overflows.

Fixes #604352
2009-12-17 17:37:03 +01:00
Tiago Katcipis
908a9ee63b rtp: add G723 payloader
Fixes #597823
2009-12-17 17:27:42 +01:00
Wim Taymans
cc277b4a26 qtdemux: Fix ALAC codec_data parsing
Fixes #604611
2009-12-17 16:23:56 +01:00
Thiago Santos
4063bb87e8 qtdemux: Remove cpp style coments
Removes // comments and replace them with /* */ comments
2009-12-16 17:28:30 -03:00
Mark Nauwelaerts
c9a0d2339e matroskademux: also consider BlockNumber indicated in index when seeking 2009-12-16 12:48:02 +01:00
Mark Nauwelaerts
900ff7247e matroskademux: support push based mode
Fixes #598610.
2009-12-16 12:46:40 +01:00
Mark Nauwelaerts
e4183c6904 matroskademux: fix ebml read cache usage 2009-12-16 12:46:37 +01:00
Sebastian Dröge
0a0f7ecc16 videomixer: Use movzbl instead of movzxb for moving one byte to a l register
For some reason latest gcc/binutils accept movzxb here while
movzbl would be correct and is the only thing accepted by older
gcc/binutils.

Fixes bug #604679.
2009-12-16 10:50:32 +01:00
Sebastian Dröge
9e45038d8d videomixer: src/dest are input and output of the AYUV blending MMX assembler 2009-12-16 06:59:01 +01:00
Sebastian Dröge
c26ccb9722 audiowsincband: Use the same upper length limit as audiowsinclimit 2009-12-15 18:18:54 +01:00
Sebastian Dröge
7fec6843c0 audiowsinc{limit,band}: Allow much larger filter lengths now 2009-12-15 18:12:47 +01:00
Sebastian Dröge
119a6ce637 audiofxbasefirfilter: Fix frequency response calculation 2009-12-15 18:12:47 +01:00
Sebastian Dröge
8695581751 audiofxbasefirfilter: Remove dead assignments 2009-12-15 18:12:46 +01:00
Sebastian Dröge
cd2b1c1b58 audiofxbasefirfilter: Add special processing functions for Mono/Stereo
This provides another 7% speedup for the time domain convolution and 1.5%
speedup for the FFT convolution on Mono input.

This optimization assumes that the compiler simplifies calculations
and conditions on constant numbers and unrolls loops with a constant
number of repeats.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
a3d7321c50 audiofxbasefirfilter: Add a "low-latency" mode
This will always use time-domain convolution, which lowers the latency.
With FFT convolution it's always a multiple of the kernel length,
with time domain convolution it's only the pre-latency of the filter kernel.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
ca568ff079 audiofxbasefirfilter: Remove obsolete TODO comments 2009-12-15 18:12:46 +01:00
Sebastian Dröge
45edc1bbd8 audiofxbasefirfilter: Use samples everywhere instead of samples*channels sometimes 2009-12-15 18:12:46 +01:00
Sebastian Dröge
02960383c1 audiofxbasefirfilter: FFT convolution implementation
This provides a great speedup, especially the relationship between kernel
length and processing size is now logarithmic instead of linear. Below a
kernel size of 32 it's a bit slower, afterwards it's much faster:

17     0.788000 -> 0.950000
33     1.208000 -> 1.146000
65     2.166000 -> 1.146000
...
4097 107.444000 -> 1.508000

For sizes smaller 32 the normal time-domain convolution is chosen,
for larger sizes the FFT convolution is automatically used.

Fixes bug #594381.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
ddafc20b28 audiofxbasefirfilter: Make most code parts independent of the processing functions and used convolution algorithm
Only remaining part is the residue pushing, which will be fixed later.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
43576fb0cf audiofxbasefirfilter: Optimize time-domain convolution
Remove some redundant calculations, move comparisions out of
inner loops, etc.

This makes the convolution about 3 (!) times faster but
processing time is of course still proportional to the
filter size.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
c5f955a3b6 audiofxbasefirfilter: Use _CAST macros in some places and do some calculations only once 2009-12-15 18:12:46 +01:00
Sebastian Dröge
abb437454e audiofxbasefirfilter: Rewrite timestamp tracking
It's much simpler now and doesn't introduce accumulating rounding
errors.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
c57be62881 audiofxbasefirfilter: Rename some variables and change comments 2009-12-15 18:12:45 +01:00
Sebastian Dröge
742a7c7f50 audiofxbasefirfilter: Add const qualifier to the source data array 2009-12-15 18:12:45 +01:00
Sebastian Dröge
061ededa36 videomixer: Add MMX implementations of the AYUV blending and color filling functions
This provides a 20% speedup for blending and 100% for color filling.

The blending can probably be optimized even more.
2009-12-15 12:30:21 +01:00
Tim-Philipp Müller
d3a9f07669 id3demux: prefer two letter ISO 639-1 code for extended comment 2009-12-13 13:19:43 +00:00
Tim-Philipp Müller
6c4c8f8670 qtdemux: fix up language code extraction some more
Quicktime uses ISO 639-2 for language codes, but GST_TAG_LANGUAGE
is supposed to hold a ISO 639-1 code, so convert as needed using
the new API from -base.

See #602126.
2009-12-13 13:10:12 +00:00
Tim-Philipp Müller
b66f914586 matroska: fix language code writing and extraction
Matroska uses three-letter ISO 639-2B codes, but GST_TAG_LANGUAGE is
supposed to contain two-letter ISO 639-1 codes, so use new language
code mapping functions in -base to convert between those two as
needed.

Fixes #505823.
2009-12-13 12:51:13 +00:00
Tim-Philipp Müller
1b786258c2 avidemux: minor debug message changes
Fix up a few debug messages so that it's clearer what they mean.
2009-12-13 12:51:13 +00:00
Thiago Santos
52177fa056 Revert "qtdemux: Correctly parse classification tags"
This reverts commit cd883aa60c.

Previous code was correct, 4 is due to table and language code,
not only language code
2009-12-12 17:44:04 -03:00
Thiago Santos
cd883aa60c qtdemux: Correctly parse classification tags
In clsf atoms, the language code is 2 bytes long, not 4.
2009-12-12 16:31:35 -03:00
Sebastian Dröge
66d3ac8fb7 videomixer: Dequeue current buffer on FLUSH_STOP and don't unref NULL buffers
... NULL buffers shouldn't really happen anymore when popping the
buffer from GstCollectPads but better check for this and print a warning.
2009-12-12 16:55:13 +01:00
Sebastian Dröge
760eaf7b2a videomixer: Fix stupid mistake in last commit 2009-12-11 13:11:12 +01:00
Sebastian Dröge
089d9d9dba videomixer: Don't do floating point math in the inner processing loop for I420 blending 2009-12-11 12:36:42 +01:00
Wim Taymans
b8c2ccce4e rtspsrc: handle NULL and empty transport strings
When an RTSP extension returns NULL or an empty transport string, just ignore it
and try to get the next possible transport. Fixes playback of RealMedia streams.
2009-12-10 18:45:55 +01:00
Wim Taymans
6a44d8e198 rtspsrc: install event function on internal RTCP pad
Install a custom event function on the internal RTCP pad so that we can reply
TRUE to a latency event.
2009-12-10 18:45:55 +01:00
Sebastian Dröge
6f51dfba95 videomixer: Remove wrong comments, copied from the I420 blend function 2009-12-10 10:48:49 +01:00
Sebastian Dröge
93089ef445 videomixer: The queued duration is a signed integer
...and it will really be negative sometimes.
2009-12-09 21:15:07 +01:00
Sebastian Dröge
7418dee253 videomixer: Only pop buffers from collectpads after they're fully consumed
This decreases latency and memory usage because new buffers are only
accepted by collectpads if there's no queued buffer.
2009-12-09 21:03:57 +01:00
Sebastian Dröge
cd888c0531 matroskademux: Clean up position/duration handling
Also use the last end time for closing the segment, not the
start time of the last buffer.
2009-12-09 20:42:44 +01:00
Sebastian Dröge
0766a54138 matroskademux: Close the segment on EOS if the real duration is known 2009-12-09 16:50:02 +01:00
Sebastian Dröge
5ca96043ff matroskademux: Update duration if current buffer is already after the old duration 2009-12-09 16:46:18 +01:00
Sebastian Dröge
c9b1ab53fe matroskademux: Drop buffers that are after segment stop
...and if this happened for all streams go EOS.
2009-12-09 16:43:41 +01:00
Sebastian Dröge
276a61ab2a matroskademux: Fix position tracking and sending of filler segments 2009-12-09 16:41:04 +01:00
Sebastian Dröge
b0f8978fd8 videomixer: Use gst_util_uint64_scale_int() for fps to seconds per frame calculations 2009-12-09 16:15:09 +01:00
Sebastian Dröge
3ddb75e3c5 matroskademux: Keep the segment stop position for update newsegment events 2009-12-08 17:34:15 +01:00
Wim Taymans
ee6d7fd2db avidemux: init current_entry in push mode
Set the current_entry to 0 (instead of -1) in push mode so that we correctly
calculate the current frame number and timestamp.

Add some more debug info and fic the duration debug.
2009-12-04 13:52:49 +01:00
Tim-Philipp Müller
24b93d82ec rtspsrc: fix major memory leak when playing back rtsp video streams
Don't forget to unref QoS, navigation and latency events when
dropping them.
2009-12-04 11:14:03 +00:00
Tim-Philipp Müller
d0b25845ec matroskademux: only send pending tags with newsegment events
Send pending tags only from the streaming thread, just after we've sent
the newsegment event, not with e.g. flush-start. This not only does the
right thing, but also makes sure we're not trampling over variables set
up in the streaming thread from the seeking thread in case someone tries
to issue a seek just as the demuxer is parsing the headers.

Fixes #601617. Spotted by Ognyan Tonchev.
2009-12-04 11:13:31 +00:00
Thiago Santos
ff4ac9ddf6 qtdemux: fix debug message printf args
Fixes debug message printf format to make it build in mac's gcc
2009-12-03 17:49:55 -03:00
Aurelien Grimaud
07f27f0efd rtpsession: avoid buffer ref/unref pairs for CSRCs
We ref the buffer before pushing it downstream in order to get the CSRCs of it
after pushing. This causes performance problems when downstream elements want to
change the metadata because the buffer needs to be subbuffered.

Instead, read and store the CSRCs of the buffer in an array before pushing it
and process the array after pushing the buffer. This allows us to remove the
ref/unref pair.

Fixes #603376
2009-11-30 15:59:50 +01:00
Mark Nauwelaerts
e49e71a1d9 rtph264depay: optionally merge NALUs into Access Units
... which may be expected/desired by some downstream decoders
(and spec-wise highly recommended for at least non-bytestream mode).
2009-11-26 17:29:26 +01:00
Mark Nauwelaerts
baa28ddedf qtdemux: fix timestamp datatype 2009-11-26 17:29:03 +01:00
Wim Taymans
8070ae967b jitterbuffer: avoid using wrong clock-rate
Check for a valid clock-rate before attempting to estimate the npt
stop time.
2009-11-25 10:38:23 -06:00
Wim Taymans
5682e2bf01 rtpbin: fix typo in comments 2009-11-25 10:37:30 -06:00
Michael Smith
9d6adc8f3c multiudpsink: return error message on windows too. 2009-11-24 11:13:06 -08:00
Michael Smith
d4826d987c multiudpsink: first phase of fixing up error reporting for windows. 2009-11-24 10:58:49 -08:00
Thiago Santos
b59dc3e5fb avimux: also set the suggested buf size for audio
We were only setting the suggested buf size for video,
we can set it for audio as well.

This and 195e14529d80ef318ce3a778c1995efb11f266cd
fix an issue that prevented seeking on large avi files
on WMP (non-recent versions).
2009-11-24 12:44:57 -03:00
Thiago Santos
831b1e958a avimux: fix indx duration for PCM audio
GstBuffers for PCM audio usually contains more than
1 sample, we need to get the total number of samples to set
the indx duration.
2009-11-24 12:44:56 -03:00
Thiago Santos
8dd78015f1 avimux: Audio buffers should be picked earlier
Adds a 0.5s advantage for audio buffers to being
picked earlier for muxing.
2009-11-24 12:44:56 -03:00
Robert Swain
98279be735 qtdemux: Fix push mode by making sure stbl information is available in
next_entry_size ()
2009-11-24 16:40:19 +01:00
Robert Swain
db5de8f1b6 qtdemux: Fix order of arguments in log message 2009-11-24 16:35:20 +01:00
Robert Swain
f9745e89d3 qtdemux: Ease debugging by removing a goto for an error message 2009-11-23 16:29:15 +01:00
Robert Swain
4025d7cbd7 qtdemux: Parse per sample rather than all at once but build complete index when
seeking
2009-11-23 16:29:15 +01:00
Robert Swain
0c62109d20 qtdemux: Save atom data for later use so it doesn't get freed after initial
parsing
2009-11-23 16:29:15 +01:00
Robert Swain
29c33806c1 qtdemux: Parse from the previously parsed sample up to sample n 2009-11-23 16:29:14 +01:00
Robert Swain
52b1040219 qtdemux: Make qtdemux_parse_samples () parse up to n samples 2009-11-23 16:29:14 +01:00
Robert Swain
1f7b878d89 qtdemux: Separate off stbl sub-atom initialisation 2009-11-23 16:29:14 +01:00
Robert Swain
6a6d2c4970 qtdemux: Move variables into context in preparation for refactorisation 2009-11-23 16:29:14 +01:00
Robert Swain
ab61fb22f6 qtdemux: Fix bug where stps is never parsed due to logic error 2009-11-23 16:29:14 +01:00
Robert Swain
a1e2047472 qtdemux: Port ctts from Gnode * to GstByteReader 2009-11-23 16:29:14 +01:00
Robert Swain
9e49197208 qtdemux: Switch from QtAtomParser to GstByteReader 2009-11-23 16:29:14 +01:00
Wim Taymans
5d41590601 qtdemux: fix typo and grammar 2009-11-23 12:53:50 +01:00
Tim-Philipp Müller
5908c40405 deinterlace: fix typo in mode enum description 2009-11-20 10:30:00 +00:00
Stefan Kost
9ee0815e85 docs: more links and better short description
Fix spelling of GstRtpSsrcDemux to get it linked. Add more links. Change
the short description to be more meaningful.
2009-11-20 11:25:49 +02:00
Thiago Santos
e35085e5b5 qtdemux: Add more fields to SVQ3 caps
qtdemux only added the whole stsd atom as 'codec_data'
in its output caps for SVQ3. This patch makes it add
the SEQH (inside a SMI atom) and a gamma field (taken
from the gama atom) if available.

Fixes #587922
2009-11-18 16:41:50 -03:00
Edward Hervey
f2f75d7fd9 wavenc: Raise rank of muxer to PRIMARY 2009-11-18 17:55:42 +01:00
Edward Hervey
8a1e0c53ae y4m: Raise rank of encoder to PRIMARY 2009-11-18 17:54:36 +01:00
Edward Hervey
a5dd867d6f law: Raise rank of encoders to PRIMARY 2009-11-18 17:54:35 +01:00
Bastien Nocera
efc611e420 Add user-id and user-pw properties
So that one doesn't need to modify the URL to have access
to authenticated RTSP streams.

fixes #601728
2009-11-18 17:27:19 +01:00
Mark Nauwelaerts
bf5f3a3964 qtdemux: fix bogus memory chunk size check 2009-11-18 12:54:48 +01:00
Wim Taymans
f52859432f jitterbuffer: release lock before emiting signals
Release the jbuf lock before emiting the request-pt-map signal to avoid
deadlocks. We also need to catch the shutdown case when locking again.

Fixes #593354
2009-11-18 10:50:44 +01:00
Wim Taymans
8c3b03de26 rtp: add BroadcomVoice depayloader 2009-11-18 10:50:43 +01:00
Wim Taymans
039d225a78 rtpbvpay: add rfc reference 2009-11-18 10:50:43 +01:00
Wim Taymans
02476fb5a3 rtp: add BroadcomVoice payloader 2009-11-18 10:50:43 +01:00
Jan Urbański
dd82612340 flvmux: properly finish the ECMA array
The ECMA array with the file index was missing a mandatory end marker.
Fixes bug #601242.
2009-11-18 08:03:43 +01:00
Jan Schmidt
baa79ffecb Use new still-frame API from gst-plugins-base 2009-11-18 03:09:06 +00:00
Michael Smith
fe9415544e qtdemux: identify IMA adpcm in qt properly. 2009-11-17 17:59:13 -08:00
Tim-Philipp Müller
4b1566d7f3 equalizer: printf format fix 2009-11-05 23:40:15 +00:00
Thiago Santos
feed8c2af3 avimux: do not write empty INFO list
avoid writing an empty INFO list chunk, both because
it is useless and because vlc refuses to play the
resulting file.
2009-11-05 12:31:56 -03:00
Sebastian Dröge
fb682d0444 equalizer: Notify about band property changes caused by changing number of bands 2009-11-05 10:54:12 +01:00
Sebastian Dröge
64e00f172c equalizer: Make changes to band properties and the number of bands threadsafe 2009-11-05 10:45:59 +01:00
Sebastian Dröge
025e26f73a equalizer: Fix stupid off by two bug 2009-11-05 10:30:46 +01:00
Sebastian Dröge
9405a328b1 equalizer: Add band property to select the band filter type
This allows per band configuration of a peak, low shelf or
high shelf filter, which can be very useful if the band frequencies
and widths are manually configured.
2009-11-05 08:21:33 +01:00
Sebastian Dröge
0525abd4af equalizer: Fix code style 2009-11-05 08:21:33 +01:00
Sebastian Dröge
e1acc8f4da equalizer: Some cleanup 2009-11-05 08:21:33 +01:00
Gabriel Millaire
773f142483 celtpay/depay : change GST_DEBUG_OBJECT to GST_LOG_OBJECT in pay_handle_buffer and depay_process 2009-11-04 12:02:50 -05:00
Gabriel Millaire
ac90398092 celtpay/depay: Negotiate parameters through caps
celtdepay : added default framesize(480) channels(1) and clockrate(32000)
            depay_setcaps : now gets channels and framesize from string with default value
            depay_process : now adds timestamp to outbuf
            Added frame_size to GstRtpCeltDepay
            Changed some GST_DEBUG to GST_DEBUG_OBJECT or GST_LOG_OBJECT
celtpay : getcaps : gets channel and framesize and sets caps
          Added frame-size to static caps for audio/x-celt
2009-11-04 12:02:50 -05:00
Jan Schmidt
1636bb0800 deinterlace: Pull in CFLAGS and LIBS flags from -base before core before system. 2009-11-04 15:59:49 +00:00
Edward Hervey
8df3e5c22b qtdemux: init variables to make compiler on osx build bot happy 2009-11-04 16:47:42 +01:00
Tim-Philipp Müller
261454dd92 qtdemux: init variables to make compiler on osx build bot happy 2009-11-03 16:05:47 +00:00
Tim-Philipp Müller
65a1db99eb deinterlace: remove pointless call to gst_element_no_more_pads() 2009-11-02 08:45:53 +00:00
Stefan Kost
03d2f4bdec level: fix decay to be smooth
The length not having any fractional part as it was promoted to gdouble after
dividing two guint64.
2009-11-01 00:31:48 +02:00
Stefan Kost
71044b37b6 level: calculate the message-intervall when it changes 2009-11-01 00:31:48 +02:00
Stefan Kost
f5b3392fa6 level: clocktime is a guint64, use right macro to init fields 2009-11-01 00:31:48 +02:00
Stefan Kost
519e424494 level: use more g-style types 2009-11-01 00:31:48 +02:00
Wim Taymans
0c12f585e3 avidemux: use segment_full when we can
Use segment_full so that we can pass the applied rate to the segment values. We
will change the applied rate when we implement skip mode.
2009-10-27 18:07:18 +01:00
Robert Swain
0cbe0d6e98 wavenc: Fix buffer offset by moving length incrementation 2009-10-27 12:43:33 +01:00
Michael Smith
b0b54d9324 Add dependencies of gstriff to things that link to gstriff, needed on Win32. 2009-10-23 18:09:43 -07:00
Stefan Kost
e43eb89449 tests: add a jitterbuffer test
Tests pushing a few buffers in various order and asserting the order sent by the
jitterbuffer. Contains two disabled tests that need more work.
2009-10-22 13:35:57 +03:00
Sebastian Dröge
68176befa2 matroskamux: Dirac "muxing" units end on EOS too
A Dirac muxing unit are all non-picture, non-end-of-sequence
packets up to and including the first picture or eos packet.

See http://www.diracvideo.org/wiki/index.php/ContainerFormatMappingGuidelines
2009-10-22 12:32:32 +02:00
Tim-Philipp Müller
457ac565ba avidemux: fix compilation with debugging disabled
total_idx is always evaluated.
2009-10-22 02:09:08 +01:00
Edward Hervey
683f2a02fb avidemux: Stop scanning at the last entry... and not the one before :)
This ensures we actually push out everything
2009-10-20 18:23:28 +02:00
Andy Wingo
c917d65e6d qtdemux: unpack more information into image/x-j2c caps
* gst/qtdemux/qtdemux_fourcc.h: Add new fourccs for use by the mj2
  unpacker.
* gst/qtdemux/qtdemux.c (qtdemux_parse_trak): Unpack JPEG2000 component
  mapping and channel definitions from the jp2h header. Will add
  component-map and channel-definitions elements to the caps if the
  component maps or channel definitions are nonstandard, where standard
  order means RGB, 444 packed YUV, or greyscale, with no alpha channel.

Fixes #598915.
2009-10-20 17:20:55 +02:00
Stefan Kost
217b54a8f6 level: code cleanup
Use gdouble instead of double. Calculate falloff_time once instead of twice.
2009-10-18 23:53:42 +03:00
Edward Hervey
024f1bae0c avidemux: MEMDUMP the junk blobs
It will only actually pull the junk blobs from upstream if the memdump
level is activated
2009-10-18 16:16:43 +02:00
Edward Hervey
1f5ace4de1 avidemux: Some avi files have INFO lists in the headers. 2009-10-18 16:16:43 +02:00