Nirbheek Chauhan
b09f478e80
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:21:12 +01:00
Mario Sanchez Prada
8740313504
vpxenc: Properly handle frames with too low duration
...
When a frame's duration is too low, calling gst_util_uint64_scale()
to scale its value can result into it being truncated to zero, which
will cause the vpx encoder to return an VPX_CODEC_INVALID_PARAM error
when trying to encode.
To prevent this from happening, we simply ignore the duration when
encoding if it becomes zero after scaling, logging a warning message.
https://bugzilla.gnome.org/show_bug.cgi?id=765391
2016-04-23 13:56:56 +01:00
Nicolas Dufresne
284d723a9a
vpxdec: Use threads on multi-core systems
...
This is a redo of commit b848c1b6ff
. The
code was lost when the elements where ported to use a baseclass.
https://bugzilla.gnome.org/show_bug.cgi?id=764169
2016-03-24 19:30:44 -04:00
Vineeth TM
1071309870
good: use new gst_element_class_add_static_pad_template()
...
https://bugzilla.gnome.org/show_bug.cgi?id=763076
2016-03-24 14:32:20 +02:00
Sebastian Dröge
70db210315
vp8enc: Ensure that we always have valid frame user data before using it
...
Otherwise we're going to dereference NULL pointers.
2016-01-20 13:41:33 +02:00
Sebastian Dröge
7eee775d5f
vpxdec: Unref frame in all code paths of handle_frame()
...
https://bugzilla.gnome.org/show_bug.cgi?id=760666
2016-01-20 10:02:48 +02:00
Thibault Saunier
01f995b8dd
vpxenc: Unref frame on ERROR
...
All code paths for handle_frame() must somehow take ownership of the frame, be
it by actually unreffing, forwarding the frame elsewhere or storing it for
later.
http://bugzilla.gnome.org/show_bug.cgi?id=760666
2016-01-20 10:02:44 +02:00
Thibault Saunier
17838829eb
vp8enc: Return FLOW_ERROR when an error accures
...
FALSE would mean FLOW_OK
https://bugzilla.gnome.org/show_bug.cgi?id=760666
2016-01-16 08:58:48 +01:00
Sebastian Dröge
bed1f0a0a6
vpxdec: Initialize buffer variable to NULL
...
False positive but trivial to fix and possibly causing compiler warnings at
some point in the future too.
CID 1346535
2015-12-29 17:58:38 +02:00
Nicolas Dufresne
9808cff566
vpx: Add missing headers in Makefile.am
...
This fixes distcheck.
https://bugzilla.gnome.org/show_bug.cgi?id=755510
2015-12-15 14:27:22 -05:00
Prashant Gotarne
5c7eb0f886
vpx: created common baseclass GstVPXEnc
...
GstVP8Enc and GstVP9Enc has almost 80% code in common.
created common baseclass GstVPXEnc for GstVP8Enc and GstVP9Enc
https://bugzilla.gnome.org/show_bug.cgi?id=755510
2015-12-15 14:03:29 -05:00
Nicolas Dufresne
90dcc3921a
vpxdec: Remove unneeded add video_meta
...
This also remove copies for VP8, which was not correctly in place
in previous related patch.
2015-12-15 12:57:53 -05:00
Prashant Gotarne
75fb614c1e
vpx: created common base class GstVPXdec for vpx decoders
...
Base class for the vp8dec and vp9dec.
https://bugzilla.gnome.org/show_bug.cgi?id=755510
2015-12-15 12:06:45 -05:00
Nicolas Dufresne
189c291805
vpxdec: Use GstMemory to avoid copies
...
With the VPX decoders it's not simple to use downstream buffer pool,
because we don't know the image size and alignment when buffers get
allocated. We can though use GstAllocator (for downstream, or the system
allocator) to avoid a copy before pushing if downstream supports
GstVideoMeta. This would still cause a copy for sink that requires
specialized memory and does not have a GstAllocator for that, though
it will greatly improve performance for sink like glimagesink and
cluttersink. To avoid allocating for every buffer, we also use a
internal buffer pool.
https://bugzilla.gnome.org/show_bug.cgi?id=745372
2015-12-04 17:29:15 -05:00
Nicolas Dufresne
b848c1b6ff
vpxdec: Use threads on multi-core systems
...
This adds an automatic mode to the threads property of vpxdec in order to
use as many threads as there is CPU on the platform. This brings back
GStreamer VPX decoding performance closer to what is achieved by other
players, including Chromium.
https://bugzilla.gnome.org/show_bug.cgi?id=758195
2015-11-17 12:27:31 -05:00
Reynaldo H. Verdejo Pinochet
2b7a1b4bb9
vp9enc: remove unnecessary NULL check before g_free()
2015-11-15 01:43:08 -08:00
Reynaldo H. Verdejo Pinochet
97a94b02ae
vp8enc: remove unnecessary NULL check before g_free()
2015-11-15 01:43:08 -08:00
Thiago Santos
1b27badcfd
videoencoders: use template subset check for accept-caps
...
It is faster than doing a query that propagates downstream and
should be enough
Elements: jpegenc, pngenc, vp8enc, vp9enc, y4menc
2015-08-16 14:30:57 -03:00
Thiago Santos
16fbd4f86f
videodecoders: use default pad accept-caps handling
...
Avoids useless check of downstream caps when handling an
accept-caps query
Elements: jpegdec, pngdec, vp8dec, vp9dec
2015-08-15 11:46:32 -03:00
Tim-Philipp Müller
98527a6ea2
vp8enc, vp9enc: reset multipass file index when stopping encoder
...
Fixes multipass encoding when re-using the same element/pipeline
for subsequent encoding runs.
https://bugzilla.gnome.org/show_bug.cgi?id=747728
2015-08-15 11:21:02 +01:00
Tim-Philipp Müller
0e10e92953
vp9enc: provide support for multiple pass cache files
...
Some files may provide different caps insight of one stream. Since
vp9enc support caps reinit, we should support cache reinit too.
If more then file cache file will be created, the naming will be:
cache cache.1 cache.2 ...
Based on patch by: Oleksij Rempel <linux@rempel-privat.de>
https://bugzilla.gnome.org/show_bug.cgi?id=747728
2015-08-15 11:09:42 +01:00
Oleksij Rempel
abc33c928f
vp8enc: provide support for multiple pass cache files
...
Some files may provide different caps insight of one stream. Since vp8enc
support caps reinit, we should support cache reinit too.
If more then file cache file will be created, the naming will be:
cache
cache.1
cache.2
...
https://bugzilla.gnome.org/show_bug.cgi?id=747728
2015-08-14 11:40:58 +01:00
Sebastian Dröge
a0b69c8dac
vp[89]enc: Properly convert between GStreamer and encoder timebase
...
... by switching numerator and denominator when scaling.
https://bugzilla.gnome.org/show_bug.cgi?id=749122
2015-05-12 12:13:16 +03:00
Sebastian Dröge
eb365cc3bb
vp[89]enc: Don't set timebase from the framerate
...
The framerate very often is just an indication of the ideal framerate, not the
actual framerate of the stream. By just using the framerate, we confuse the
rate control algorithm algorithm as multiple frames will map to the same PTS
or have durations of 0.
https://bugzilla.gnome.org/show_bug.cgi?id=749122
2015-05-12 11:54:40 +03:00
Tim-Philipp Müller
2e412a447a
docs: update example pipelines in element docs
...
Mostly gst-launch -> gst-launch-1.0
Use autovideosink/autoaudiosink more often.
Sprinkle some converters here and there.
2015-05-10 11:05:00 +01:00
Thiago Santos
5c7c90ff2c
vp8dec: optimize vpx image to gstbuffer copy when strides match
...
Solving this FIXME. Copy the full plane when strides are the same
2015-04-17 14:27:27 -03:00
Thiago Santos
3270137702
vp9dec: optimize vpx image to gstbuffer copy when strides match
...
Solving this FIXME. Copy the full plane when strides are the same
2015-04-17 13:06:41 -03:00
Olivier Crête
12867fcb3d
vp8enc: Expose VP8 width/height limitations in the caps template
...
The VP8 format specification (RFC 6386 section 18.1) specifies
that the maximum size is 16383x16383.
2015-04-01 19:31:18 -04:00
Luis de Bethencourt
3763f4057a
vp9enc: remove duplicate declaration of function
2015-03-09 16:25:43 +00:00
Sebastian Dröge
a52e432fda
vp[89]enc: Reset the encoder when flushing
...
https://bugzilla.gnome.org/show_bug.cgi?id=745704
2015-03-09 16:47:57 +01:00
Sebastian Dröge
627e492b7e
vp[89]dec: Drop frames that have no output buffer because of errors
...
finish_frame() assumes that there is an output buffer.
2015-03-05 10:01:09 +01:00
Sebastian Dröge
379621fd0b
vp8enc: Use 0 as duration for the EOS "frame"
2015-03-02 15:06:09 +01:00
Sebastian Dröge
51ebca3c03
vp{8,9}enc: Tell the encoder about actual timestamps and durations of frames
...
... instead of just counting frames. The values are supposed to be in timebase
units, not frame units. This fixes various quality problems with VP8/VP9
encoding and in general makes the encoder behave better.
Thanks to Nirbheek Chauhan for noticing this bug.
2015-03-02 15:03:49 +01:00
Nicolas Dufresne
501a53b26d
vpxdec: Fix calculation of width in bytes
...
Right now we only support I420, but vpx seems to support more formats.
This will prevent hard to find bug in the future.
2015-03-01 14:03:05 -05:00
Nicolas Dufresne
1521f65e8d
vpxdec: Don't memcpy in frame map failed
...
This avoid a crash if mapping the frame failed.
2015-03-01 14:03:04 -05:00
Sebastian Dröge
f4b5107796
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:53:02 +01:00
Thibault Saunier
7874bba773
vpXenc: CLOCK_TIME_NONE is not a valid min_latency value
...
We should just use 0 if we do not have the information
2014-12-09 20:38:22 +01:00
Aurélien Zanelli
d0e8a385e0
vpx: mark arnr-type properties as deprecated and set them to no-op
...
ARNR type control in libvpx has been deprecated so this commit mark the
vp8enc and vp9enc associated properties as deprecated and change their
behavior to just display a warning message.
https://bugzilla.gnome.org/show_bug.cgi?id=739476
2014-11-10 16:14:17 +01:00
Aurélien Zanelli
130873c8fd
vpx: remove compatibility defines
...
We are guaranteed to have VPX_IMG_FMT_I420, VPX_PLANE_Y,
VPX_PLANE_U and VPX_PLANE_V as we require libvpx > 1.1.0.
https://bugzilla.gnome.org/show_bug.cgi?id=739476
2014-11-01 15:40:44 +00:00
Sebastian Dröge
23a3377b1e
vp8enc/vp9enc: Protect the encoder with a mutex in all situations
2014-09-30 11:35:42 +03:00
Sebastian Dröge
df053c997c
vp9enc: Allow caps renegotiation
...
https://bugzilla.gnome.org/show_bug.cgi?id=726329
2014-09-30 11:35:42 +03:00
Sebastian Dröge
ced5d657e3
vp8enc: finish() and drain() should return a GstFlowReturn
2014-09-30 11:35:42 +03:00
Jose Antonio Santos Cadenas
a2e2012ae3
vp8enc: Allow caps renegotiation
...
https://bugzilla.gnome.org/show_bug.cgi?id=726329
2014-09-30 11:35:35 +03:00
Sebastian Dröge
9eb22a533b
vp9dec: Get input width/height from the codec instead of the input caps
...
They are reported properly by libvpx if the correct struct members are used.
This also fixes handling of resolution changes without input caps changes.
https://bugzilla.gnome.org/show_bug.cgi?id=719359
2014-09-02 09:09:49 +03:00
Tom Greenwood
5430b6c351
vp8dec: Fix for handling resolution changes when decoding VP8
...
If the resolution changes in the bitstream without the input caps changing we
would previously output corrupted video or crash.
https://bugzilla.gnome.org/show_bug.cgi?id=719359
2014-09-02 08:42:24 +03:00
Thiago Santos
8bee49c85e
vp9dec: Fix segfault when a new caps is received
...
Remember to unref the output caps when a new caps event is received
as it should generate a new one based on the new caps.
https://bugzilla.gnome.org/show_bug.cgi?id=734266
2014-09-02 01:01:43 -03:00
Jose Antonio Santos Cadenas
f22b91dad5
vp8dec: Reset output and input states when changing format
...
https://bugzilla.gnome.org/show_bug.cgi?id=734266
2014-09-01 23:56:51 -03:00
Edward Hervey
eb30edae9f
vp9enc: Don't dereference NULL checks
...
CID #1197703
2014-06-02 09:47:34 +02:00
Edward Hervey
b4a129ad71
vp8enc: Don't dereference NULL variable
...
CID #1139838
2014-06-02 09:46:05 +02:00
Edward Hervey
ce4bb3ffef
vp8enc: Don't dereference NULL variable
...
CID #1139838
2014-05-20 08:24:48 +02:00
Edward Hervey
5263f91e13
vp9enc: Don't dereference NULL checks
...
CID #1197703
2014-05-20 08:24:48 +02:00
Vincent Penquerc'h
1da2fd457d
vp9enc: do not dereference NULL pointer
...
Coverity 1197703
2014-05-05 14:33:38 +01:00
Vincent Penquerc'h
a6e7948711
vp8enc: guard against NULL pointer dereference
...
Coverity 1139838
2014-05-02 14:02:52 +01:00
Sebastian Dröge
5c8163a685
vpx: Use new gst_video_decoder_set_needs_format() API
2013-12-05 11:42:34 +01:00
Sebastian Dröge
b1e442236f
ext: Use new flush vfunc of video codec base classes and remove reset implementations
2013-08-15 15:08:05 +02:00
Arnaud Vrac
37458a4a17
vpx: fix compilation when encoder or decoder headers are not installed
...
https://bugzilla.gnome.org/show_bug.cgi?id=704547
2013-07-19 14:21:28 +02:00
Sebastian Dröge
943520382f
vp8dec: Error out gracefully if we get an unsupported color format
...
In theory we can only get I420 though, just to be on the safe side.
2013-06-22 10:59:17 +02:00
Sebastian Dröge
9b7a6a3f90
vp9: Add support for YV12, Y42B and Y444 color formats
...
The encoder does not work with Y42B and Y444 yet it seems.
2013-06-22 10:57:41 +02:00
Sebastian Dröge
9788976fd4
vp9dec: Update default postproc settings from vp9_dx_iface.c
2013-06-22 10:26:18 +02:00
Sebastian Dröge
f67af2936f
vpx: Add initial, experimental VP9 support
2013-06-21 18:22:12 +02:00
Tom Greenwood
5532989728
vp8enc: Add property to manually specify the timebase of the encoder
...
https://bugzilla.gnome.org/show_bug.cgi?id=695709
2013-05-26 10:23:08 +02:00
Sebastian Dröge
b0b0557c48
gst: Add better support for static plugins
2013-04-15 15:54:11 +02:00
Tom Greenwood
3d335cb1ed
vp8dec: Improve logging when vpx_codec_peek_stream_info fails
...
Decode failures and missing keyframes should get different debug
output.
https://bugzilla.gnome.org/show_bug.cgi?id=697232
2013-04-04 11:48:53 +02:00
Tom Greenwood
4d0542220e
vp8enc: Fix for divide by zero when using 0/1 framerate
...
https://bugzilla.gnome.org/show_bug.cgi?id=695709
2013-03-25 10:05:25 +01:00
Sebastian Dröge
0726b71ceb
ext/sys: Fix some compilation errors caused by circular includes
2012-12-12 17:35:04 +00:00
Sebastian Dröge
9ad88d265c
vp8enc: Don't leak GstVideoCodecFrames that cause the creation of invisible frames
...
Fixes bug #682714 .
2012-11-12 13:01:23 +01:00
Sebastian Dröge
dc5db0e980
vp8dec: Fix last commit
2012-11-12 10:31:59 +01:00
Sebastian Dröge
ef2cc91eb9
vp8dec: Also destroy decoder in set_format() if it was created already
...
Fixes a memory leak.
2012-11-12 10:11:32 +01:00
Sebastian Dröge
bd0ef7fec3
vp8dec: Don't clear input state in reset()
...
The input state is still valid after flushing until
new caps arrive.
Fixes bug #688092 .
2012-11-12 10:11:32 +01:00
Debarshi Ray
8a4a6b770f
vp8dec: Don't give up so easily if failed to decode a frame
...
https://bugzilla.gnome.org/show_bug.cgi?id=687436
2012-11-09 16:43:58 +01:00
Tim-Philipp Müller
230cf41cc9
Fix FSF address
...
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:07:18 +00:00
Sebastian Dröge
f0640f205c
vp8dec: Immediately return if opening the decoder failed
...
Instead of ignoring any errors.
2012-11-02 09:34:25 +01:00
Debarshi Ray
3c216600f5
vp8dec: Short circuit gst_vp8_dec_handle_frame if keyframe is missing
...
https://bugzilla.gnome.org/show_bug.cgi?id=687376
2012-11-02 09:34:08 +01:00
Oleksij Rempel
83a47cdd0e
vp8enc: set DECODE_ONLY flag on invisible AltRef frames
...
https://bugzilla.gnome.org/show_bug.cgi?id=654216
2012-10-23 16:14:43 +01:00
Tim-Philipp Müller
9dcdc413a7
jpeg, png, vpx: use gst_element_class_set_static_metadata()
...
Avoids some string copies.
2012-10-17 17:03:39 +01:00
Sebastian Dröge
7ceef442a7
vp8enc: And this time fix the default target-bitrate value for real
2012-10-15 15:36:04 +02:00
Sebastian Dröge
1962384cff
vp8enc: Fix default target-bitrate value
2012-10-15 15:32:22 +02:00
Edward Hervey
e39fd693d7
vp8enc: Disable GLIB deprecation warnings
...
GValueArray has been deprecated since 2.32 ... but there's no usable
replacement for it.
See https://bugzilla.gnome.org/show_bug.cgi?id=667228
2012-09-25 14:47:25 +02:00
Sebastian Dröge
ee295d3fd5
vp8enc: Correctly finish frames
...
Previously we would always get the same frame if multiple frames are pending,
leaking memory of the previous frames and breaking timestamps.
2012-09-17 09:48:56 +02:00
Sebastian Dröge
3e86ea8fb5
vp8enc: Allow changing bitrate and other parameters during playback
...
Fixes bug #648276 .
2012-09-17 09:40:41 +02:00
Sebastian Dröge
4815036708
vp8enc: Store configuration in the vpx_codec_enc_cfg_t struct instead of duplicating all variables
...
Also protect encoder with a mutex.
2012-09-17 09:29:26 +02:00
Sebastian Dröge
8ed85c7538
vp8enc: Update documentation to reflect new property names
...
...and also link to the WebM encoder parameters website.
2012-09-16 16:03:06 +02:00
Sebastian Dröge
acd0824cf6
vp8enc: Make some property names more readable
2012-09-16 15:58:51 +02:00
Sebastian Dröge
2a4e3d2110
vpx: Rename vp8 plugin to vpx
...
This is using libvpx, which can support more codecs than just VP8
and will likely support future codecs.
2012-09-16 15:33:57 +02:00