Commit graph

13596 commits

Author SHA1 Message Date
Wim Taymans
07d1d7ba38 video: improve YUV -> RGB conversion
Reorganize orc instructions to free up some registers.
We can reuse the ORC code to implement the generic AYUV->ARGB matrix.
2014-09-26 18:14:11 +02:00
Wim Taymans
2977ef5281 videotestsrc: storel is better then copyl
It is better to use storel to splat the variable into the destination.
ORC doesn't know when a variable is last written to so it can't yet optimize
away the copy operation.
2014-09-26 16:44:09 +02:00
Luis de Bethencourt
a4e9e1fe1b videoscale: avoid recalculating values
Avoid recalculating values used multiple times as base of index. Plus some style
fixes.

https://bugzilla.gnome.org/show_bug.cgi?id=737400
2014-09-26 15:31:55 +01:00
Ravi Kiran K N
f16cf75194 videoscale: support lanczos method for NV formats
Support lanczos scaling method for NV12 and NV21 formats.
Scale the 'Y' plane and scale 'NV' plane.
Implementation for submethods - int16, int32, float and double

https://bugzilla.gnome.org/show_bug.cgi?id=737400
2014-09-26 13:05:18 +01:00
Tim-Philipp Müller
70d729aa8c video: update disted orc backup files 2014-09-25 15:19:46 +01:00
Wim Taymans
98c42dc5e4 video: convertor -> converter 2014-09-24 16:19:30 +02:00
Wim Taymans
b2fd20c416 video: move videoconvert code to video library
Move the conversion code used in videoconvert to the video library
and expose a simple but generic API to do arbitrary conversion. It can
currently do colorspace conversion but the plan is to add videoscale to
it as well.

See https://bugzilla.gnome.org/show_bug.cgi?id=732415
2014-09-24 15:59:39 +02:00
Wim Taymans
0c40b83ed4 video-color: add gst_video_color_matrix_get_Kr_Kb()
Move the function to get the color matrix coefficients from
videoconvert to the video library.
2014-09-24 15:59:39 +02:00
Thiago Santos
8242676dc2 audiosink: compensate for segment restart with clock's time_offset
When playing chained data the audio ringbuffer is released and
then acquired again. This makes it reset the segbase/segdone
variables, but the next sample will be scheduled to play in
the next position (right after the sample from the previous media)
and, as the segdone is at 0, the audiosink will wait the duration
of this previous media before it can write and play the new data.

What happens is this:
pointer at 0, write to 698-1564, diff 698, segtotal 20, segsize 1764, base 0

it will have to wait the length of 698 samples before being able to write.

In a regular sample playback it looks like:
pointer at 677, write to 696-1052, diff 19, segtotal 20, segsize 1764, base 0

In this case it will write to the next available position and it
doesn't need to wait or fill with silence.

This solution is borrowed from pulsesink that resets the clock to
start again from 0, which makes it reset the time_offset to the time
of the last played sample. This is used to correct the place of
writing in the ringbuffer to the new start (0 again)

https://bugzilla.gnome.org/show_bug.cgi?id=737055
2014-09-24 10:22:54 -03:00
Ognyan Tonchev
00b43badc7 videopool: add missing annotation for gst_video_buffer_pool_new()
https://bugzilla.gnome.org/show_bug.cgi?id=737072
2014-09-24 11:02:42 +03:00
Sebastian Dröge
5adff2e65a videoscale Use stride instead of width in more places 2014-09-23 23:12:19 +03:00
Sanjay NM
db296c5924 videoscale: Use width instead of stride in buffer offset calculation
https://bugzilla.gnome.org/show_bug.cgi?id=736944
2014-09-23 23:08:54 +03:00
Stefan Sauer
5f0aad6f42 audioencoder: reshuffle code in error handling
Move the assert to the error handling block at the end of the function so the
the logging is still triggered. Reword the logging slightly and add another
comment to hint what went wrong.

Fixes #737138
2014-09-23 11:56:33 +02:00
Stefan Sauer
cabe5746fb videoencoder: log the timestamps if we are unhappy about them
When complaining about the DTS!=PTS on keyframes log the actualy timestamps.
2014-09-22 20:16:31 +02:00
Wim Taymans
5edb36415a tests: add orc test for videoconvert 2014-09-22 10:42:47 +02:00
Sebastian Dröge
3e14b0edd6 gst-play: Fix format string compiler warning
gst-play.c:92:28: error: format string is not a string literal
      [-Werror,-Wformat-nonliteral]
  len = g_vasprintf (&str, format, args);
                           ^~~~~~
2014-09-22 10:40:01 +03:00
Edward Hervey
03707d0162 example/overlay: Specify minimum gdk version
Avoids deprecation warnings (such as for gtk_widget_set_double_buffered()
which became deprecated from 3.14)
2014-09-22 08:44:08 +02:00
Tim-Philipp Müller
87cef8befc gst-play: add --quiet option to suppress output 2014-09-19 18:29:54 +01:00
Thiago Santos
3ecb8bea22 basetextoverlay: Do not fail the negotiation if query fails
The allocation query failure doesn't mean that the negotiation
has failed as the element can allocate buffers itself.

Instead, only fail if the pads are flushing and the allocation
query failed.

https://bugzilla.gnome.org/show_bug.cgi?id=735844
2014-09-18 12:40:17 -03:00
Sanjay NM
6babe786f7 videoscale: Added NV support for 4Tap resize
https://bugzilla.gnome.org/show_bug.cgi?id=736845
2014-09-18 13:31:08 +03:00
Andrei Sarakeev
2133a98eb1 playbin: Don't leak input-selector sinkpads
https://bugzilla.gnome.org/show_bug.cgi?id=736861
2014-09-18 12:52:02 +03:00
Sebastian Dröge
3592bd577c audiodecoder: Simplify code a bit 2014-09-18 12:40:26 +03:00
Ognyan Tonchev
d9e67777e0 streamsplitter: do not leak events when flushing them
https://bugzilla.gnome.org/show_bug.cgi?id=736796
2014-09-18 12:40:22 +03:00
Ognyan Tonchev
2fff66b071 audioencoder: do not leak events when flushing them
https://bugzilla.gnome.org/show_bug.cgi?id=736796
2014-09-18 12:40:19 +03:00
Ognyan Tonchev
29f548a7cd videodecoder: do not leak events when flushing them
https://bugzilla.gnome.org/show_bug.cgi?id=736796
2014-09-18 12:40:15 +03:00
Ognyan Tonchev
d8260cdb89 videoencoder: do not leak events when flushing them
https://bugzilla.gnome.org/show_bug.cgi?id=736796
2014-09-18 12:40:08 +03:00
Ognyan Tonchev
5a3ebef605 audiodecoder: extend flush_events test to check for event leaks
https://bugzilla.gnome.org/show_bug.cgi?id=736788
2014-09-17 14:12:24 +03:00
Ognyan Tonchev
c674a0aa64 audiodecoder: Don't leak events
https://bugzilla.gnome.org/show_bug.cgi?id=736788
2014-09-17 14:11:34 +03:00
Ognyan Tonchev
add8f02703 audiocdsrc: do not leak uid after parsing TOC select event
https://bugzilla.gnome.org/show_bug.cgi?id=736739
2014-09-17 09:50:17 +03:00
Ravi Kiran K N
cf98138c7e typefind: correct the condition for irap flag
https://bugzilla.gnome.org/show_bug.cgi?id=736779
2014-09-17 09:41:36 +03:00
Sebastian Dröge
52e97f59ba playsink: Add audio/videoconvert in front of the audio/video-filters
audioresample and videoscale is something the application will have to do if
required, but we can at least help here by adding the
audioconvert/videoconvert elements.

https://bugzilla.gnome.org/show_bug.cgi?id=735748
2014-09-16 21:42:46 +03:00
Sebastian Dröge
269f642c45 video-frame: Don't ref buffers twice when mapping 2014-09-16 01:07:18 +03:00
Sebastian Dröge
2a35a881b0 app: Add FIXME comment for making the instance/class structs private 2014-09-16 00:43:37 +03:00
Tim-Philipp Müller
ab58a9af2f appsrc: fix recent ABI breakage caused by GstAppSrc structure size increase
Also fixes 'make check'.

https://bugzilla.gnome.org/show_bug.cgi?id=728379
2014-09-15 21:52:14 +01:00
Ognyan Tonchev
787b3fa7ec videodecoder: do not leak pool and allocator in error case
https://bugzilla.gnome.org/show_bug.cgi?id=736679
2014-09-15 10:43:23 -04:00
Sebastian Dröge
3a7cdcdfc9 videofilter: Use new GST_VIDEO_FRAME_MAP_FLAG_NO_REF
https://bugzilla.gnome.org/show_bug.cgi?id=736118
2014-09-12 14:41:01 +03:00
Sebastian Dröge
40a293d44d video-frame: Add GST_VIDEO_FRAME_MAP_FLAG_NO_REF
This makes sure that the buffer is not reffed another time when
storing it in the GstVideoFrame, keeping it writable if it was
writable.

https://bugzilla.gnome.org/show_bug.cgi?id=736118
2014-09-12 14:39:16 +03:00
Sebastian Dröge
f711288c7c videofilter: Unref buffers before calling the transform_frame functions
GstVideoFrame has another reference, so the buffer looks unwriteable,
meaning that we can't attach any metas or anything to it

https://bugzilla.gnome.org/show_bug.cgi?id=736118
2014-09-12 14:27:44 +03:00
Garg
47e303269d audiobasesink: Fix deadlock caused by holding object lock while calling clock functions
Issue:
During a PAUSED->PLAYING transition when we are rendering an audio buffer in AudioBaseSink
we make adjustments to the sink's provided clock i.e. fix clock calibration using the external
pipeline clock, within "gst_audio_base_sink_sync_latency function inside gstaudiobasesink.c".
For the calibration adjustment we need to get the sink clock time using "gst_audio_clock_get_time".
But before calling "gst_audio_clock_get_time" we acquire the Object Lock on the Sink. If sink is
a pulsesink, "gst_audio_clock_get_time" internally calls "gst_pulsesink_get_time" which needs to
acquire Pulse Audio Main Loop Lock before querying Pulse Audio for its stream time using
"pa_stream_get_time". Please see "gst_pulsesink_get_time in pulsesink.c".

So the situation here is we have acquired the Object lock on Sink and need PA Main Loop Lock.
Now Pulse Audio Main Thread itself might be in the process of posting a stream status
message after Paused to Playing transition which in turn acquires the PA Main loop lock and
needs the Object Lock on Pulse Sink. This causes a deadlock with the earlier render thread.

Fix:
Do not acquire the object Lock on Sink before querying the time on PulseSink clock. This is
similar to the way we have used get_time at other places in the code. Acquire it after the
get_time call. This way PA Main loop will be able to post its stream status message by
acquiring the Sink Object lock and will eventually release its Main Loop lock needed for
gst_pulsesink_get_time to continue.

https://bugzilla.gnome.org/show_bug.cgi?id=736071
2014-09-12 14:21:19 +03:00
Nicola Murino
646352e959 appsrc: Add example that shows gst_app_src_push_sample() usage 2014-09-12 14:12:28 +03:00
Nicola Murino
617f72b526 appsrc: Add push_sample() convenience function for easy appsink -> appsrc use
https://bugzilla.gnome.org/show_bug.cgi?id=728379
2014-09-12 14:07:49 +03:00
Tim-Philipp Müller
7e78fe0d1e xvimagesink: only try to set XV_ITURBT_709 port attribute if it exists
Don't try to set port attribute that's not advertised by the
adaptor. Fixes videotestsrc ! xvimagesink aborting with

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  151 (XVideo)
  Minor opcode of failed request:  13 ()

on intel HD4600 graphics with kernel 3.16, xserver 1.15,
intel driver 2.21.15.
2014-09-11 22:58:16 +01:00
Thiago Santos
3657929e1f decodebin: protect buffering message handling
Use the object lock to avoid concurrent processing which leads
to small disasters (assertions or crashes)
2014-09-11 17:16:18 -03:00
Ognyan Tonchev
0ea1b559bf rtspconnection: ignore timeout in session request header
The timeout parameter is only allowed in a session response header
but some clients, like Honeywell VMS applications, send it as part
of the session request header. Ignore everything from the semicolon
to the end of the line when parsing session id.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=736267
2014-09-09 11:37:26 +02:00
George Kiagiadakis
a2122f04ec playbin: filter out buffering messages when switching uri
When switching URI from about-to-finish, playbin starts decoding the new
URI and the queue2 inside uridecodebin starts emitting buffering messages
immediately. However, the queue(s) inside playsink still have buffers to
play and the pipeline doesn't need to pause for buffering, so we should
not send those buffering messages up to the application, otherwise there
is an audible glitch caused by pausing the pipeline for a very short time.

https://bugzilla.gnome.org/show_bug.cgi?id=727255
2014-09-05 12:44:27 -03:00
Kipp Cannon
684cf44ee3 audioresample: don't skip input samples
when downsampling, the output buffer can be filled before all the input
samples are consumed.  this is correct:  when downsampling, several input
samples are needed for each output sample, so when only a small number of
input samples are available the number of output samples produced can be 0.

the resampler, however, was discarding those extra input samples instead of
clocking them into its filter history for the next iteration.  this patch
fixes this by removing the check that the output buffer is full.  the code
now always loops until all input samples are consumed, and relies on the
calling code to have provided a suitably sized location for the output.
note that there are already other checks in place in the calling code to
ensure that this is the case.

https://bugzilla.gnome.org/show_bug.cgi?id=732908
2014-09-05 11:17:43 +03:00
Arnaud Vrac
f47c2442fe basetextoverlay: get framerate from previously parsed video info 2014-09-05 11:09:30 +03:00
Arnaud Vrac
267a8c24af basetextoverlay: do not ask for a bufferpool when checking for composition meta 2014-09-05 11:08:59 +03:00
Arnaud Vrac
76ce112994 basetextoverlay: schedule reconfigure on source pad when negotiation fails
The source pad might be flushing while negotiating, resulting in
set_caps or the ALLOCATION query failing. In this case set the
reconfigure flag on the source pad so that negotiation is retried on the
next buffer.
2014-09-05 11:08:49 +03:00
Arnaud Vrac
ef5823cc9b basetextoverlay: just forward the seek event to sink pads like other events
https://bugzilla.gnome.org/show_bug.cgi?id=735844
2014-09-05 11:08:04 +03:00