Commit graph

180 commits

Author SHA1 Message Date
Sebastian Dröge
7bf576b238 x264enc: Add configure parameter to specify additional x264 libraries with e.g. different depth configuration
x264 has to be compiled specifically for a target bit depth.
Distributions currently ship various libraries in their packages, with
different bit depths.

This change now allows to provide them all at configure time and have
the x264enc element dynamically switch between them based on the bit
depth of the input format.

https://bugzilla.gnome.org/show_bug.cgi?id=763297
2016-11-14 18:26:04 +02:00
Sebastian Dröge
590aa41bf5 x264enc: Set colorimetry and chroma-site information
https://bugzilla.gnome.org/show_bug.cgi?id=772159
2016-09-29 12:39:56 +03:00
Nirbheek Chauhan
c8260a1545 Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
2016-08-20 11:29:37 +01:00
Nirbheek Chauhan
5ae5b2d3c7 plugins: Use <stdint.h> instead of _stdint.h
_stdint.h is generated by Autotools and we don't really need it. All
supported platforms now ship with stdint.h. The only stickler was MSVC,
and since Visual Studio 2015 it also ships stdint.h now.
2016-08-19 13:03:29 +01:00
Vineeth TM
eacdaa56b3 ugly: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763082
2016-03-24 14:38:13 +02:00
Arjen Veenhuizen
f037e7e59e x264enc: increase bitrate limit from 100Mbps to 2Gbps
Don't artificially limit the bitrate, x264enc allows much
higher bitrates, and for intra-only 4k AVC they are needed.
x264 clips to 2Gbps internally, so use that as limit for now.

https://bugzilla.gnome.org/show_bug.cgi?id=758620
2015-11-26 15:49:47 +00:00
Reynaldo H. Verdejo Pinochet
7d7bab4640 x264enc: drop unnecessary NULL check before g_free 2015-11-18 23:20:59 -08:00
Jan Schmidt
05aa763561 x264: Add bitrate info to the tags output.
Makes it possible for muxers to know the target bitrate as soon
as encoding starts, which flvmux now uses.
2015-09-05 23:34:45 +10:00
Thiago Santos
7fef2de2d8 x264enc: actually return TRUE from accept-caps handler
The query was handled
2015-08-18 02:23:55 -03:00
Thiago Santos
ba5e19706d x264enc: implement accept-caps handling
Implement accept-caps handling without doing caps queries downstream
2015-08-16 14:27:44 -03:00
Matej Knopp
43d6ca85a0 x264enc: Use gst_video_encoder_set_min_pts
This method replace the manual adjustment of PTS and DTS to avoid
negative DTS issues. Using this method will also update the segment so
we don't loos sync.

https://bugzilla.gnome.org/show_bug.cgi?id=740575
2015-06-11 10:29:25 -04:00
Jan Schmidt
c6958c158f x264enc: Add support for stereoscopic video
Provide new frame-packing property to directly set
x264enc frame packing, or pass through upstream settings

The explicit layout from the frame-packing property is
preferred over any info from the caps.
2015-06-11 11:01:38 +10:00
Tim-Philipp Müller
c3c306b486 x264enc: don't artificially limit max allowed value of "threads" property
In auto mode it will happily chose much higher values anyway,
and a limit of 4 seems a bit low these days.
2015-05-26 17:58:18 +01:00
Tim-Philipp Müller
f034f77b73 docs: update example pipelines in element docs
Mostly gst-launch -> gst-launch-1.0, but also
use autoaudiosink/autovideosink in more places
and update pipelines a little or flesh out
descriptions.
2015-05-10 11:34:33 +01:00
Tim-Philipp Müller
19fd6f240d Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 17:56:31 +01:00
Sebastian Dröge
7dc03df3de Improve and fix LATENCY query handling
This now follows the design docs everywhere, especially the maximum latency
handling.

https://bugzilla.gnome.org/show_bug.cgi?id=744106
2015-02-11 13:56:48 +01:00
Sebastian Dröge
5dd1a28906 x264enc: Don't set max latency to the same value as the encoder latency
The meaning of the max latency is *not* the maximum latency this element will
introduce. It is the maximum latency this element can endure without
overflowing any buffers, which is infinite for x264enc.

Fixes latency configuration in zero latency mode, where max latency was
becoming 0... which usually won't work well if something else introduces
latency as then max < min in the end, and latency configuration just fails.
2015-02-06 19:04:32 +01:00
Vincent Penquerc'h
5f075f3361 x264enc: set annexb=1 in byte stream mode when downstream has ANY caps
This matches what is done when downstream caps are not ANY, and fixes
prerolling in byte stream mode when typefind is downstream.
2015-02-02 14:28:33 +00:00
Nicolas Dufresne
acc9529a36 x264enc: Don't set an allocation maximum
There is no reason x264enc should enforce a maximum allocation size.
The maximum is normally set by buffer pool which cannot grow, but we
don't offer a buffer pool. This would lead to stall when used with
element that don't implement allocation query.

Related to: https://bugzilla.gnome.org/show_bug.cgi?id=738302
2015-01-18 11:07:43 -05:00
Tim-Philipp Müller
5872a1454e x264: fix colour inversion with YV12 format
It's the same as I420 but with the U/V planes swapped.
2014-08-05 19:47:26 +01:00
Nicolas Dufresne
8aea88d261 x264enc: Request buffers in allocation query
https://bugzilla.gnome.org/show_bug.cgi?id=732288
2014-07-25 14:29:21 -04:00
Nicolas Dufresne
698714fc97 x264enc: Shift both PTS and DTS to ensure positive timestamp
Currently we only shift DTS to compensate that we don't support negative
timestamp. This cause a problem that PTS is no longer >= DTS and may
make muxers live much harder. Instead, shift both PTS/DTS forward. Also
remove all the hack to handle this which seems the result of thinking libx264
is bugged.

https://bugzilla.gnome.org/show_bug.cgi?id=731351
2014-07-19 12:59:05 -04:00
Aurélien Zanelli
84b2009155 x264enc: fix caps leak in set_format()
https://bugzilla.gnome.org/show_bug.cgi?id=730865
2014-05-28 10:09:41 +02:00
Dirk Van Haerenborgh
e15eb270f9 x264enc: allow lossless compression (qp=0)
https://bugzilla.gnome.org/show_bug.cgi?id=725051
2014-02-26 09:18:37 +01:00
Tim-Philipp Müller
88b27e30c9 x264enc: fix compiler warning
Compiler warns rightly about possibly uninitialized variable.
2013-11-29 15:54:55 +00:00
Tim-Philipp Müller
20d6dbd2f6 x264enc: fix crash on NULL caps when negotiation happens without a downstream peer
gst-launch-1.0 videotestsrc ! x264enc
2013-11-29 15:54:55 +00:00
Michael Esemplare
fc29cbaa54 x264enc: If FPS is available, set VFR to false
https://bugzilla.gnome.org/show_bug.cgi?id=708940
2013-10-04 12:07:31 +02:00
Andoni Morales Alastruey
03a98eabce x264enc: Update the documentation to match the default profile used
https://bugzilla.gnome.org/show_bug.cgi?id=708036
2013-09-24 10:47:41 +02:00
Olivier Crête
b82703170a x264enc: Implement getcaps that restricts the input format depending on the output profile
Also add some x264enc profile tests

https://bugzilla.gnome.org/show_bug.cgi?id=708326
2013-09-18 19:33:01 -04:00
Mathieu Duponchelle
0243810e1e x264enc: Don't unref future state but the old one
Being silly will lead us nowhere.
2013-09-05 22:56:48 +02:00
Sebastian Dröge
55037ab411 x264enc: Check if we have an input state before using it
Flushing might happen before caps were set on the encoder,
which would lead to crashes here.

Thanks to Matej Knopp for analyzing this.

https://bugzilla.gnome.org/show_bug.cgi?id=707414
2013-09-04 16:33:18 +02:00
Matej Knopp
ae45623450 x264enc: fix unsigned comparison warning 2013-09-04 10:47:55 +02:00
Tim-Philipp Müller
6572393629 x264enc: log when we output a lower profile than requested 2013-08-27 14:13:06 +01:00
Sebastian Dröge
aab5534573 x264enc: Consider subset relations of profiles when setting srcpad caps
constrained-baseline is a subset of baseline, is a subset of main,
is a subset of high profile.

https://bugzilla.gnome.org/show_bug.cgi?id=705425
2013-08-21 18:35:09 +02:00
Tim-Philipp Müller
e0ae81ebac x264enc: propagate flow return back to base class and upstream
https://bugzilla.gnome.org/show_bug.cgi?id=705425
2013-08-21 12:35:32 +01:00
Tim-Philipp Müller
71ce5136d1 x264enc: minor clean-up
We requires x264 build >= 120 now.
2013-08-17 23:09:15 +01:00
Sebastian Dröge
f541f94262 ext: Use new flush vfunc of video codec base classes and remove reset implementations 2013-08-15 15:27:48 +02:00
Edward Hervey
767005d8c0 x264: Fix dts comparision
We were assigning to a guint64 value (frame->dts) the sum of a unsigned
and signed value... resulting it the result never being < 0.

Instead just check if it is smaller before assigning to frame->dts.
2013-07-26 16:47:30 +02:00
Sebastian Dröge
a4a89275f8 x264enc: React properly to flushing/resetting the encoder
https://bugzilla.gnome.org/show_bug.cgi?id=656007
2013-07-25 12:48:55 +02:00
Tim-Philipp Müller
62ac56668a x264enc: output byte-stream if downstream has ANY caps
It's what people expect when they pipe the output to
filesink or into a tcp connection or pipe.
2013-04-30 10:04:23 +01:00
Sebastian Dröge
ef182de45f gst: Add better support for static plugins 2013-04-15 15:56:02 +02:00
Tom Greenwood
2e38f24b56 x264enc: Fix for 0/1 framerate - now uses VFR in this case
Previously did a division by zero.

https://bugzilla.gnome.org/show_bug.cgi?id=695728
2013-03-25 10:08:44 +01:00
Tim-Philipp Müller
5f83e4101f x264enc: simplify template caps
No need to make an array for one single element.
2013-02-08 00:15:01 +00:00
Tim-Philipp Müller
201e3f74be x264enc: put all theoretically possible formats in template caps
and decide at runtime which subset of these (8-bit or 10-bit video
formats) is supported. libx264 will be compiled for one of these
two options, and it is possible to switch by pointing the dynamic
linker to a different libx264 build at runtime. If we want our
template caps to be correct, they should contain all then, with
the actually supported ones determined at runtime.

https://bugzilla.gnome.org/show_bug.cgi?id=691935
2013-02-08 00:11:03 +00:00
Tim-Philipp Müller
e765deb01b x264enc: detect supported bit depth and pixel formats at runtime
http://bugs.debian.org/667573
https://bugzilla.gnome.org/show_bug.cgi?id=691935
2013-02-07 13:37:44 +00:00
Sebastian Dröge
fcd55cfd12 x264enc: Add support for 10-bit color formats
Requires x264 to be built with 10-bit support, which disables
9-bit support. Also only advertise the color formats that were
compiled into x264.
2012-11-15 16:42:09 +01:00
Sebastian Dröge
d098eb0941 x264enc: Add support for Y444, Y42B and NV12 2012-11-15 16:21:49 +01:00
Tim-Philipp Müller
9c690b2018 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 20:40:37 +00:00
Tim-Philipp Müller
4935096912 x264enc: when setting fallback decoder latency, set valid min_latency
Min. latency needs to be a valid time, so pass 0 as default
value in the fallback case where we can't determine any latency,
and avoid nasty criticals at runtime.
2012-09-26 01:05:52 +01:00
Mark Nauwelaerts
b06e81b532 x264enc: clean up some debug statements 2012-09-09 16:04:56 +02:00