Commit graph

6391 commits

Author SHA1 Message Date
Sreerenj Balachandran
3910cbe7ce h264parse: expose compatible profiles to downstream
Some video bitstreams report a too restrictive set of profiles. If a video
decoder was to strictly follow the indicated profile, it wouldn't support that
stream, whereas it could in theory and in practice. So we should relax the
profile restriction for allowing the decoder to get connected with parser.

https://bugzilla.gnome.org/show_bug.cgi?id=739992
2014-12-05 09:36:02 +01:00
Edward Hervey
56ae254dd3 mpegtbase: Improve last PCR detection
When dealing with random-access content (such as files), we initially
search for the last PCR in order to figure out duration and to handle
other position estimation such as those used in seeking.

Previously, the code looking for that last PCR would search in the last
640kB of the file going forward, and stop at the first PCR encountered.
The problem with that was two-fold:
* It wouldn't really be the last PCR (it would be the first one within
  those last 640kB. In case of VBR files, this would put off duration
  and seek code slightly.
* It would fail on files with bitrates higher than 52Mbit/s (not common)

Instead this patch modifies that code by:
* Scanning over the last 2048kB (allows to cope with streams up to 160Mbit/s)
* Starts by the end of the file, going over chunks of 300 MPEG-TS packets
* Doesn't stop at the first PCR detected in a chunk, but instead records all
  of them, and only stop searching if there was "at least" one PCR within
  that chunk

This should improve duration reporting and seeking operations on VBR files

https://bugzilla.gnome.org/show_bug.cgi?id=708532
2014-12-01 15:04:25 +01:00
Edward Hervey
16fc431ada tsdemux: Only activate warning for real streams
streams with stream_type 0xff are PCR-only streams, it's normal not
to have a pad for them.
2014-12-01 13:31:21 +01:00
Tim-Philipp Müller
83d9353d58 gdppay: minor caps event payloading optimisation
Avoid creation of buffer we're just going to throw
away two lines later anyway.
2014-11-30 14:38:22 +00:00
Tim-Philipp Müller
82b0ecf194 gdppay: fix some memory leaks 2014-11-30 14:38:22 +00:00
Sebastian Dröge
06013a0a6c compositor: Failure to map a video frame is not just a warning
Also add some warning debug output if mapping a output buffer fails
2014-11-28 10:23:55 +01:00
Sebastian Dröge
2a5aed6966 compositor: Implement rescaling of the input via pad properties
compositor has now the same interface as glvideomixer.
2014-11-27 21:23:04 +01:00
Thibault Saunier
d2cea992c0 audiomixer: Do not try to resize a buffer to a negative size on EOS 2014-11-27 19:10:58 +01:00
Thibault Saunier
31679e56bb watchdog: Handle FLUSHING seek events even in PAUSED state
https://bugzilla.gnome.org/show_bug.cgi?id=740757
2014-11-27 19:10:58 +01:00
Thibault Saunier
eb24d9d607 watchdog: Properly handle PAUSED state
In PAUSED state we should just preroll, so get one buffer
and stop monitoring.

https://bugzilla.gnome.org/show_bug.cgi?id=740757
2014-11-27 19:10:58 +01:00
Sebastian Dröge
debf5340bb compositor: Remove unused zorder pad property
It's handled in videoaggregator already.
2014-11-26 12:42:24 +01:00
Sebastian Dröge
7eef9dd0ad compositor: GstVideoMeta is supported just fine, tell upstream about that
Also provide a GstVideoBufferPool to upstream just in case.
2014-11-25 19:03:21 +01:00
Ramprakash Jelari
f9e50eee58 mpegtspacketizer: Fix format string compiler warning 2014-11-24 13:34:21 +01:00
Wonchul Lee
aa2ecf5e53 rawparse: send SEEKING query upstream first
Sometimes rawparse does not handle the seeking query
properly, the rawparse should send the query upstream
first. For example, upstream could support seeking in
TIME format (but not in BYTE format), so the BYTE format
seeking query that rawparse sends in push mode would
fail.

https://bugzilla.gnome.org/show_bug.cgi?id=722764
2014-11-22 17:51:01 +00:00
Sebastian Dröge
6c3b3bef4e interaudiosink: Make sure to store at least period-time samples at once in the adapter
It's better to create some more silence than having the source pull multiple
short buffers out of the adapter and insert silence between them.
2014-11-12 18:10:45 +01:00
Sebastian Dröge
411795560f intervideosrc: Stop showing the current frame after 1 second, not after 30 frames 2014-11-12 13:59:23 +01:00
Sebastian Dröge
cf5cd85a3b interaudiosrc: Make sure we have a writable buffer before we start changing metadata 2014-11-11 11:18:40 +01:00
Sebastian Dröge
ce6222f8d4 intervideosrc: Set the GAP flag on repeated buffers
videorate does the same and it allows optimizations downstream.
2014-11-11 11:18:40 +01:00
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