Commit graph

6373 commits

Author SHA1 Message Date
Sebastian Dröge
3d1cd1011b interaudiosrc: Set the GAP flag on buffers that only contain silence 2014-11-11 11:18:40 +01:00
Tim-Philipp Müller
6e3518dfd6 pngparse: optimise reading of png files
Read PNG data chunk in one go by letting the parser
base class know the size we need, so that it doesn't
drip-feed us small chunks of data (causing a lot of
reallocs and memcpy in the process) until we have
everything.

Improves parsing performance of very large PNG files
(65MB) from ~13 seconds to a couple of millisecs.

https://bugzilla.gnome.org/show_bug.cgi?id=736176
2014-11-09 21:02:15 +00:00
Aurélien Zanelli
6b5e950236 vc1parse: set seq_layer_sent to FALSE on reset()
https://bugzilla.gnome.org/show_bug.cgi?id=738526
2014-11-08 19:01:10 +01:00
Aurélien Zanelli
025f8b9129 vc1parse: implement asf to *-frame-layer stream-format
This commit add an helper to convert a frame to frame-layer format and
use it to implement these two stream-format conversion:
- asf --> sequence-layer-frame-layer
- asf --> frame-layer

In simple/main profile, we basically have a raw frame, so building a
frame layer isn't too complicated. But in advanced profile, the first
frame-layer should contain sequence-header, entrypoint, and frame and
each keyframe should contain entrypoint, so we have to handle these
carefully.

https://bugzilla.gnome.org/show_bug.cgi?id=738526
2014-11-08 19:01:10 +01:00
Aurélien Zanelli
7d76ba5731 vc1parse: check output format at negotiation time
Add an helper to check that output stream-format is coherent with
profile and header-format. It also check if we know how to do the
conversion if the input stream-format differs from selected
output-format.
So, in case output stream-format is not allowed, it will now fail at
negotiation rather than in pre_push_frame.

https://bugzilla.gnome.org/show_bug.cgi?id=738526
2014-11-08 19:01:10 +01:00
Aurélien Zanelli
5eadb05fab vc1parse: add some asf related stream-format conversions
This commit introduces an helper to convert an ASF frame to BDUs format with
startcodes and use this helper to implements following stream-format
conversions:
- asf --> bdu
- asf --> sequence-layer-bdu
- asf --> sequence-layer-raw-frame

https://bugzilla.gnome.org/show_bug.cgi?id=738526
2014-11-08 19:01:10 +01:00
Aurélien Zanelli
f2c5900c6d vc1parse: add some simple stream-format conversion
It add the support of following stream-format conversion:
- bdu --> sequence-layer-bdu
- bdu-frame --> sequence-layer-bdu-frame
- frame-layer --> sequence-layer-frame-layer

For these conversion, the only requirements is to push a sequence-layer
buffer prior to data.

https://bugzilla.gnome.org/show_bug.cgi?id=738526
2014-11-08 19:01:10 +01:00
Aurélien Zanelli
cd500c5a06 vc1parse: prepare the stream-format conversion code and add the simplest ones
It prepares the template for stream-format conversion and it implements
the following conversion:
- sequence-layer-bdu --> bdu
- sequence-layer-bdu-frame --> bdu-frame
- sequence-layer-frame-layer --> frame-layer

Work is done in the pre_push_frame() method.

https://bugzilla.gnome.org/show_bug.cgi?id=738526
2014-11-08 19:01:10 +01:00
Josep Torra
d518033e77 h264parse: set the HEADER flag on buffers containing SPS or PPS 2014-11-07 15:51:48 +01:00
Josep Torra
4b43e95ebd h265parse: set the HEADER flag on buffers containing VPS, SPS or PPS 2014-11-07 15:51:48 +01:00
Sebastian Dröge
0fc6cc6874 intervideosrc: Print a warning into the debug log on generating black frames 2014-11-06 17:36:15 +01:00
Sebastian Dröge
e6b5a271a1 intervideosink: Add some debug output in the render function 2014-11-06 17:21:39 +01:00
Sebastian Dröge
df64862ebe h265parse: don't unnecesarily set src_caps
https://bugzilla.gnome.org/show_bug.cgi?id=739374
2014-11-06 11:53:04 +01:00
Matej Knopp
1f367764fc h264parse: don't unnecesarily set src_caps
https://bugzilla.gnome.org/show_bug.cgi?id=739374
2014-11-06 11:51:59 +01:00
Sebastian Dröge
017a8c8369 interaudiosrc: Fix compiler warning about unused variables
gstinteraudiosrc.c: In function 'gst_inter_audio_src_create':
gstinteraudiosrc.c:339:27: error: variable 'buffer_samples' set but not used [-Werror=unused-but-set-variable]
   guint64 period_samples, buffer_samples;
                           ^
2014-11-04 15:16:33 +01:00
Sebastian Dröge
5c7d0a1553 interaudio: Make buffer size and latency handling more explicit and add properties for them
This now makes audio work more reliable without disconts.
2014-11-04 14:56:55 +01:00
Sebastian Dröge
2939337b61 interaudiosink: Use the bpf from the audio info instead of hardcoding 4 2014-11-04 13:59:20 +01:00
Sebastian Dröge
c10f5eecea interaudio: Only flush the ringbuffer on the sink side 2014-11-04 13:58:44 +01:00
Sebastian Dröge
6a36b53831 interaudiosink: Flush the adapter when we get new caps
Ideally we would drain the source but that would require more coordination
between sink and source than what we currently have.
2014-11-04 13:47:38 +01:00
Sebastian Dröge
dda95aeb50 intervideosrc: Negotiate framerate with downstream
Prefer the closest framerate to the input framerate though.
2014-11-03 16:54:58 +01:00
Sebastian Dröge
85f66e3531 inter*src: No need to set caps manually on the pad
basesrc does that for us already.
2014-11-03 16:24:33 +01:00
Wim Taymans
4e8d93c44a inter: fix order of arguments 2014-11-03 15:19:48 +01:00
Sebastian Dröge
f660537fd5 interaudio: Set all required fields on the template caps
https://bugzilla.gnome.org/show_bug.cgi?id=739542
2014-11-03 10:05:59 +01:00
Tim-Philipp Müller
4a84fd9355 inter: don't leak surface name 2014-11-02 23:24:39 +00:00
Tim-Philipp Müller
074d6347d1 mpegdemux: start pushing data again when a pad gets linked later
The whole not_linked optimisation is really a bit dodgy here, but
let's leave it in place for now and at least start pushing data
again when a pad got linked later, in which case we should get a
RECONFIGURE event.
2014-11-02 22:49:05 +00:00
Tim-Philipp Müller
2a93e71e67 mpegdemux: namespace fixes 2014-11-02 22:46:49 +00:00
Tim-Philipp Müller
d5c7a09a83 audiovisualizer: post QoS messages when dropping frames due to QoS 2014-11-02 19:26:20 +00:00
Tim-Philipp Müller
77e5c7644c audiovisualizer: fix boilerplate macros 2014-11-02 19:12:56 +00:00
Luis de Bethencourt
3e452352f0 gaudieffects: remove < 0 comparison on guint32
Current CLAMP checks both if the value is below 0 or above 255. Considering it
is an unsigned value it can never be less than zero, so that comparison is
unnecessary. Switching to using if just for the upper bound.

CID #1139796
2014-10-30 17:06:01 +00:00
Luis de Bethencourt
267bc774ec gaudieffects: declare floor and ceiling as constants 2014-10-30 16:16:19 +00:00
Luis de Bethencourt
381eb9537c gaudieffects: stored value is overwritten
Value from left_luminance is assigned to out_luminance here, but that stored
value is not used before it is overwritten in the next cycle of the loop.
Removing assignation.

CID #1226473
2014-10-30 15:51:46 +00:00
Matthieu Bouron
0b040b7131 mpegtsbase: do not remove programs on EOS
As a consequence, tsdemux won't remove its pads anymore on EOS.

Fixes the case when mpegtsbase is not able to process new packets
after EOS as the corresponding pids aren't known anymore because
the programs were removed and the pes/psi were kept, preventing the
PAT to be parsed again.

https://bugzilla.gnome.org/show_bug.cgi?id=738695
2014-10-30 16:28:40 +01:00
Vincent Penquerc'h
a5350f2d0c siren: fix sample rate list
It was using a 24000/24000/48000, but I think it meant to use
24000/32000/48000. Not 100% sure...

https://en.wikipedia.org/wiki/G.722.1 has the list of supported
bitrates. It's not clear whether the "flag" code maps to this,
however.

Coverity 206072
2014-10-30 15:21:15 +00:00
Sreerenj Balachandran
3776e78ae6 codecparsers: h264: add support for Frame Packing Arrangement SEI message.
This parses the frame_packing_arragement() payload in SEI message.
This information can be used by decoders to appropriately rearrange the
samples which belong to Stereoscopic and Multiview High profiles.

https://bugzilla.gnome.org/show_bug.cgi?id=685215

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2014-10-29 23:09:41 +11:00
Sreerenj Balachandran
51f003e469 codecparsers: h264: add support for Stereo Video Information SEI message.
Add the necessary payload parsing support for stereo_video_info.

https://bugzilla.gnome.org/show_bug.cgi?id=685215

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
2014-10-29 23:09:41 +11:00
Jan Schmidt
068cba5df6 tsparse: Handle backward and discont timestamps better.
Assume that small backward PCR jumps are just from upstream packet
mis-ordering and don't reset timestamp tracking state - assuming that
things will be OK again shortly.

Make the threshold for detecting discont between sequential buffers
configurable and match the smoothing-latency setting on tsparse
to better cope with data bursts.
2014-10-29 23:02:50 +11:00
Jan Schmidt
a49ce685d1 tsparse: Implement timestamp/retimestamping of output buffers
When the set-timestamps property is set, use PCRs on the provided
(or autodetected) pcr-pid to apply (or replace) timestamps on the
output buffers, using piece-wise linear interpolation.

This allows tsparse to be used to stream an arbitrary mpeg-ts file,
or to smooth jittery reception timestamps from a network stream.

The reported latency is increased to match the smoothing latency if
necessary.
2014-10-29 23:02:50 +11:00
Tim-Philipp Müller
95c211dc49 Add some missing G_END_DECLS 2014-10-28 21:42:31 +00:00
Sebastian Dröge
56e49ce3b6 inter: Use 64-bit safe scaling functions 2014-10-27 15:35:43 +01:00
Vootele Vesterblom
9e6377d4b7 rawparse: fix handling of segment event in sink event handler 2014-10-23 16:47:25 +02:00
Sebastian Dröge
76f879525d interaudio: Add support for arbitrary raw audio formats 2014-10-22 19:34:17 +02:00
Sebastian Dröge
9bcc1aa274 intervideo: Add support for arbitrary video formats 2014-10-22 19:31:31 +02:00
Sebastian Dröge
1363a244a0 inter: Truncate the caps as part of the fixating 2014-10-22 19:28:48 +02:00
Sebastian Dröge
04dbd095a1 interaudio: Fix timestamp, latency and period handling 2014-10-22 19:09:15 +02:00
Sebastian Dröge
8c5a8c76f6 interaudio: Use GST_DEBUG_OBJECT() instead of GST_DEBUG() 2014-10-22 19:09:15 +02:00
Sebastian Dröge
6f72e8ceab interaudio: Properly pass through caps from the sink to the source
Otherwise a magic capsfilter after the source is required with
exactly the same caps as the input.
2014-10-22 19:09:15 +02:00
Sebastian Dröge
211a39e55e inter: Clean up surfaces after the last user is gone 2014-10-22 19:09:15 +02:00
Sebastian Dröge
f3ce87d1bd inter: Whitespace cleanup 2014-10-22 19:09:15 +02:00
Sebastian Dröge
b7ed4e9355 intervideo: Properly pass through caps from the sink to the source
Otherwise a magic capsfilter after the source is required with
exactly the same caps as the input.

This would've failed before with invalid buffer sizes:
gst-launch-1.0 videotestsrc ! intervideosink  intervideosrc ! "video/x-raw,width=640,height=480" ! xvimagesink
2014-10-22 19:09:01 +02:00
Sebastian Dröge
1dd83ca6ee rawparse: Check for 0-size after adjusting the size for the frame size
If we don't have a complete raw audio frame we would otherwise still
ask for a 0 sized buffer from the adapter.
2014-10-22 15:07:04 +02:00