Stian Selnes
85f297d648
videoencoder: Fix leak when pre_push does not return OK
...
https://bugzilla.gnome.org/show_bug.cgi?id=761951
2016-02-13 10:09:45 -03:00
Thibault Saunier
7d35a07f1a
Revert "videoencoder: Release video frame when ->handle return ERROR or DROPPED"
...
This reverts commit 63517d0ed3
.
It was wrong ref counting wise and we decided to deprecated DROPPED
return value
https://bugzilla.gnome.org/show_bug.cgi?id=760666
2016-01-20 09:50:17 +02:00
Thibault Saunier
63517d0ed3
videoencoder: Release video frame when ->handle return ERROR or DROPPED
...
https://bugzilla.gnome.org/show_bug.cgi?id=760666
2016-01-16 08:53:35 +01:00
Sebastian Dröge
64301f1005
video(en|de)coder: Return TRUE when we consumed a tag event without creating a new event
...
Fixes spurious flow errors that especially break gst-validate.
2015-08-18 16:28:42 +03:00
Tim-Philipp Müller
c21a972421
videoencoder: fix tag handling
...
Merge upstream tags with encoder tags and update whenever
any of those changes.
https://bugzilla.gnome.org/show_bug.cgi?id=679768
2015-08-18 12:44:04 +01:00
Sebastian Dröge
f5eebb27a2
{audio,video}{en,de}oder: Also copy POOL metas and make sure to copy over metas when creating subbuffers
...
POOL meta just means that this specific instance of the meta is related to a
pool, a copy should be made when reasonable and the flag should just not be
set in the copy.
2015-07-01 10:58:07 +02:00
Sebastian Dröge
ceef2cc12d
videoencoder: Add transform_meta() vfunc with default implementation
...
The default implementation copies all metadata without tags, and metadata
with only the video tag. Same behaviour as in GstVideoFilter.
https://bugzilla.gnome.org/show_bug.cgi?id=742385
2015-06-30 10:40:09 +02:00
Tim-Philipp Müller
5df6cc074f
videoencoder: fix gtk-doc chunk for new function
2015-06-13 13:41:35 +01:00
Matej Knopp
dc7b254805
videoencoder: Add gst_video_encoder_set_min_pts()
...
For streams with reordered frames this can be used to ensure that there
is enough time to accomodate first DTS, which may be less than first PTS
https://bugzilla.gnome.org/show_bug.cgi?id=740575
2015-06-12 17:17:25 -04:00
Jan Schmidt
7c1da700c4
video: Add multiview/stereo support
...
Add flags and enums to support multiview signalling in
GstVideoInfo and GstVideoFrame, and the caps serialisation and
deserialisation.
videoencoder: Copy multiview settings from reference input state
Add gst_video_multiview_* support API and GstVideoMultiviewMeta meta
https://bugzilla.gnome.org/show_bug.cgi?id=611157
2015-06-11 12:05:00 +10:00
Song Bing
992101f82a
videoencoder: Keep sticky events around when doing a soft reset
...
The current code will first discard all frames, and then tries to copy
all sticky events from the (now discarded) frames. Let's change the order.
https://bugzilla.gnome.org/show_bug.cgi?id=746865
2015-03-27 09:46:28 +01:00
Luis de Bethencourt
fedc1dba1a
videoencoder: unused value
...
Value set in ret is immediately overwritten in the next line outside of the if
block. Run reset but don't store return.
CID #1226470
2015-03-09 11:25:47 +00:00
Thiago Santos
7e39a51a50
audio: video: fix a few GI annotations
...
transfer-full -> transfer full
@Since -> Since
2015-02-19 15:51:42 -03:00
Sebastian Dröge
8547594727
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 17:53:49 +02:00
Sebastian Dröge
aa645b11f1
video{enc,dec}oder: Don't reset latency all the time and handle max=GST_CLOCK_TIME_NONE correctly
...
max=NONE means that *this* element has no maximum latency. If upstream had a
maximum latency we must not override it with NONE.
2015-02-03 12:24:01 +01:00
Mark Nauwelaerts
04d447a825
videoencoder: fix comment typo
2015-01-10 13:02:59 +01:00
Sebastian Dröge
87d6c265a8
video{en,de}coder: Call reset() before the start() vfunc
...
This makes sure that the element is in the same state before start() is called
the very first time and every future call after the element was used already.
Also it ensure that we always have a clean state before start(), cleaned the
same way in every case.
2014-12-22 11:38:20 +01:00
Sebastian Dröge
098b42f36b
video{en,de}coder: Reset the codec after calling the stop() vfunc
...
The stop() vfunc might mess with some of our fields we have just
reset, which could cause memory leaks or invalid state taken over
to later.
Also the stop() vfunc, or anything called until it from another thread,
might want to be able to use the fields that were just resetted and
become confused because of that.
In the decoder we already had a workaround for things like this happening,
this workaround is not needed anymore.
2014-12-22 11:33:14 +01:00
Thiago Santos
17a7fac1a1
video: audio: fix GI annotations for proxy caps function
...
Add the annotations to parameters that can be null and also for stating
the ownership of the returned caps
2014-12-17 19:15:24 -03:00
Thiago Santos
f24075887f
videodecoder: implement caps query
...
Refactor the encoder's caps query proxying function to a common place
and use it in the videodecoder to proxy downstream restrictions.
The new function is private to the gstvideo lib.
https://bugzilla.gnome.org/show_bug.cgi?id=741263
2014-12-17 19:15:23 -03:00
Matej Knopp
9d349d8831
videoencoder: don't complain about PTS != DTS on keyframes
...
It is valid for streams with b-frames
https://bugzilla.gnome.org/show_bug.cgi?id=740556
2014-11-22 16:12:16 -05:00
Sebastian Dröge
7b428a8bcb
videoencoder: Stop storing if we received EOS
...
This was never reset when going from PAUSED->READY and resulted
in encoders being not reusable after EOS. They just rejected any
buffer because they received EOS in their previous life.
The flag wasn't used anywhere except for rejecting buffers after
EOS, and this is now handled by GstPad directly.
2014-10-04 23:09:19 +03:00
Aurélien Zanelli
9297fe9ba0
videoencoder: release frame in finish_frame when no output state is configured
...
Otherwise, frame is leaked.
https://bugzilla.gnome.org/show_bug.cgi?id=737706
2014-10-01 12:53:45 +03: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
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
Nicolas Dufresne
ce50fc221e
videoencoder: Don't delay set_format
...
This prevent implementing allocation query, as the format need to be
known in order to determin the size and number of buffers needed.
Note: This may lead to few regressions that will need fixing
https://bugzilla.gnome.org/show_bug.cgi?id=732288
2014-07-25 14:12:02 -04:00
Thibault Saunier
2843f358d9
videoencoder: Keep still meaningfull pending events on FLUSH_STOP
...
Only EOS and segment should be deleted in that case.
https://bugzilla.gnome.org/show_bug.cgi?id=709868
2014-06-03 13:03:19 +02:00
Thiago Santos
da54836a33
videoencoder: push tags and events before eos
...
if any tags or events are pending, push them before pushing eos
2014-01-29 12:33:59 -03:00
Sebastian Dröge
3e61449c86
videoencoder: Release the allocator on hard resets
2013-12-17 17:10:19 +01:00
Sebastian Dröge
729e3c8a10
videoencoder: Add sink_query() src_query() virtual functions
...
Based on the videodecoder change by Nicolas Dufresne and applied
here for consistency.
https://bugzilla.gnome.org/show_bug.cgi?id=720103
2013-12-09 16:34:19 +01:00
Julien Isorce
79ef75888c
videodec/enc: clear reconfigure flag if negotiate succeeds
...
So that it avoids to send an allocation query twice.
One from an early call to gst_video_encoder_negotiate from a
subclass, then one from gst_video_encoder_allocate_output_frame.
Which means that previously gst_video_encoder_negotiate was not
clearing the GST_PAD_FLAG_NEED_RECONFIGURE even on success.
Fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=719684
2013-12-05 15:19:16 +00:00
Sebastian Dröge
820d7d7798
videoencoder: Return not-negotiated if we don't have caps when the first buffer arrives
...
Otherwise things like filesrc ! jpegenc ! fakesink just crash with
a segmentation fault because subclasses expect caps to be there.
2013-12-05 11:26:55 +01:00
Sebastian Dröge
35ee4b056b
videodecoder/videoencoder: Mark pads as requiring reconfiguration again if negotiation fails
...
Otherwise we might end up in non-optimal configuration, especially
when a flush happened during reconfiguration.
2013-09-12 09:35:00 +02:00
Matej Knopp
d03feedf4c
videoencoder: Check for invalid stop position before calculating a duration from it
...
https://bugzilla.gnome.org/show_bug.cgi?id=707332
2013-09-03 09:50:56 +02:00
Andoni Morales Alastruey
688505de88
videoencoder: fix forwarding of GstForceKeyUnit events
...
Use the frame id to match the output forced keyframe with
the event that forced it.
https://bugzilla.gnome.org/show_bug.cgi?id=706885
2013-08-27 15:11:33 +02:00
Sebastian Dröge
b0e4b5f69a
videoencoder: Make sure to return TRUE if the same caps are set again
2013-08-25 10:26:30 +02:00
Sebastian Dröge
f678411c6e
videoencoder: Only set the caps when they actually changed
2013-08-23 19:20:03 +02:00
Sebastian Dröge
146bb1a153
video{en,de}coder: Add new flush vfunc as a replacement for reset
2013-08-15 13:26:39 +02:00
Sebastian Dröge
9df036c216
video{en,de}coder: Revert to old ::reset() behaviour and deprecate it
2013-08-15 13:26:38 +02:00
Sebastian Dröge
047abdc944
videodecoder/encoder: Call reset() always between start() and stop() and never outside
2013-07-26 10:22:32 +02:00
Sebastian Dröge
9259ee6729
videoencoder/decoder: Call reset() before start() too
2013-07-25 14:25:31 +02:00
Sebastian Dröge
c24995c31c
videoencoder: There's no point in resetting the encoder when the caps change
...
The subclass will be called with set_format() and there it can drain
if necessary and reset whatever is necessary. This is the same behaviour
as for the video decoder.
2013-07-25 10:53:14 +02:00
Sebastian Dröge
291b05b40a
videoencoder: Reset internal state and segments on FLUSH_STOP
...
https://bugzilla.gnome.org/show_bug.cgi?id=656007
2013-07-25 10:46:04 +02:00
Sebastian Dröge
7074fff7b4
videoencoder: Refactor GstVideoEncoder::reset() handling a bit
...
Let gst_video_encoder_reset() call it as would be intuitive and
only call it indirectly from gst_video_encoder_drain(). Now it
actually makes sense.
2013-07-25 10:43:08 +02:00
Mathieu Duponchelle
798ee17675
videoencoder: Send all pending events with type < CAPS before sending caps.
...
https://bugzilla.gnome.org/show_bug.cgi?id=703196
2013-07-01 11:15:21 +02:00
Sebastian Dröge
85eac2c31c
video(enc|dec)oder: Don't return not-negotiated if flushing
...
If the pad is flushing after a failed negotiation, return
GST_FLOW_FLUSHING instead from finish_frame().
https://bugzilla.gnome.org/show_bug.cgi?id=701763
2013-06-30 18:17:47 +02:00
Sebastian Dröge
c5e9df4b51
videoencoder: Don't require an output state to be set before allocating output buffers
2013-05-25 16:08:06 +02:00
Sebastian Dröge
0c2c909497
video: Always provide a buffer in gst_video_(enc|dec)oder_allocate_output_buffer()
...
We have no way of tell the caller of the exact error (e.g. if we're flushing),
so will have to wait until the caller uses API that returns a GstFlowReturn,
for example when pushing this buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=700006
2013-05-24 16:54:46 +02:00
Sebastian Dröge
2cc6a62b31
videoencoder: Make sure to push any pre-caps events before the caps are set
2013-05-09 16:05:59 +02:00
Sebastian Dröge
3e4aec6e7b
video: Make sure to push pre-caps events before the caps event
...
https://bugzilla.gnome.org/show_bug.cgi?id=699894
2013-05-08 15:50:34 +02:00