Tim-Philipp Müller
c75922b96b
basevideodecoder: fix weird event list handling
...
Get rid of weird code that copies a list manually, taking
ownership of the elements and then frees the old list. Instead,
just take over the old list entirely. (If the intent was to
reverse the list, one could use g_list_reverse() instead).
Then, push events in the list out from last to first (since they
were prepended as they came in) instead of just pushing out the
last in the list and leaking the others.
2011-11-22 20:04:13 +00:00
Sebastian Dröge
022cdfc5d3
basevideoencoder: Only call ::reset once in READY->PAUSED
2011-11-17 10:34:07 -08:00
Wim Taymans
940de5b195
add parent to pad functions
2011-11-17 15:53:42 +01:00
Wim Taymans
6d92ecac75
add parent to query function
2011-11-16 17:30:38 +01:00
Wim Taymans
85afc77dea
_query_peer_*() -> _peer_query_*()
2011-11-15 17:55:50 +01:00
Wim Taymans
03713e5045
change getcaps to query
2011-11-15 16:34:13 +01:00
Thijs Vermeir
e40ca78278
fix documentation typo
2011-11-09 12:00:05 +01:00
Wim Taymans
0d0444e0fa
remove query types
2011-11-09 11:55:14 +01:00
Wim Taymans
8e5579c594
video: port somewhat to 0.11
...
In 0.11 this should be done differently
2011-11-04 11:24:53 +01:00
Wim Taymans
f4c283a9cc
Merge branch 'master' into 0.11
2011-11-04 11:01:42 +01:00
Olivier Crête
9f76573bda
surfaceconverter: Remove duplicated forward declaration
...
It seems that some compilers don't like duplicated typedefs.
2011-11-03 17:17:10 -04:00
Wim Taymans
3f6e6053c6
videoenc: fix compiler warning
2011-11-03 16:57:29 +01:00
Wim Taymans
65d306e1f7
video: fix for metadata API change
2011-11-03 16:57:17 +01:00
Edward Hervey
c8561e7e1b
libs/video: Finish porting to 0.11
2011-11-03 13:57:20 +01:00
Nicolas Dufresne
149c058209
video: Add GstVideoContext interface
...
This interface will be used to implement video context sharing. Those
context could be X11 Display, VaDisplay, etc.
2011-11-03 10:41:55 +01:00
Nicolas Dufresne
2808290592
video: Abstract surface API for HW accelerated codecs
2011-11-03 10:33:11 +01:00
Tim-Philipp Müller
93ed9cd687
Merge remote-tracking branch 'origin/master' into 0.11
2011-10-31 14:51:32 +00:00
Alessandro Decina
16ce440e7f
basevideoencoder: handle failures in start() and stop()
2011-10-31 11:38:58 +01:00
Wim Taymans
4381a0a3a2
basevideodecoder: more porting
2011-10-05 12:53:07 +02:00
Wim Taymans
6b59788bb1
video: start porting some base classes
2011-10-04 14:27:32 +02:00
Vincent Penquerc'h
8a044de701
basevideoenc: do not try to calculate latency from an unknown framerate
...
It'll divide by zero, and latency is unknown for an unknown framerate.
Fixes an assert in the schroenc test.
https://bugzilla.gnome.org/show_bug.cgi?id=657419
2011-09-05 12:08:00 +02:00
Vincent Penquerc'h
f3cb4439cf
basevideoencoder: fix element leak
...
and this concludes an hour of yelling at the bloody test failing,
only to track down the problem not being in the test.
https://bugzilla.gnome.org/show_bug.cgi?id=657368
2011-08-26 10:25:46 +02:00
Sebastian Dröge
8c743fbc0f
basevideo: Fix locking, especially if both pads have different streaming threads
2011-08-18 10:23:32 +02:00
Sebastian Dröge
a081501a90
basevideo: Don't call g_type_class_peek_parent() in class_init
...
This is already done by the GObject boilerplate macro
2011-08-18 10:15:20 +02:00
Sebastian Dröge
d576e23aa4
basevideoencoder: Proxy the width/height/framerate/PAR constraints of downstream caps to upstream
...
This allows to specify constraints on the compressed downstream caps
by muxers or capsfilters, which will then be forwarded to upstream
and allows video converters to fulfill the constraints.
Code based on Mark Nauwelaerts audio encoder base class.
2011-08-12 12:25:03 +02:00
Sebastian Dröge
92c3aaa6e5
basevideoencoder: Remove old ::getcaps() comment
2011-08-12 12:13:45 +02:00
Sebastian Dröge
4a76d3a978
basevideoencoder: Remove ::get_caps() vfunc
...
Subclasses can set the caps more efficiently and this only
caused additional indirections.
2011-08-12 12:06:23 +02:00
Sebastian Dröge
6e4e4e107c
basevideodecoder: Use the cached video frame size instead of recalculating it
2011-08-09 10:43:55 +02:00
Sebastian Dröge
ce0655c275
basevideoencoder: Make access to the list of frames threadsafe
2011-08-03 09:41:20 +02:00
Sebastian Dröge
976d372f9b
basevideoencoder: Allow finishing of frames with no src_buffer to drop/free the GstVideoFrame
2011-07-21 08:09:11 +02:00
Sebastian Dröge
e5be8aa8ff
basevideoencoder: Only get caps from the subclass if they were not set yet by the subclass
2011-07-21 08:09:11 +02:00
Sebastian Dröge
b2525a3044
basevideoencoder: Delay sending of serialized sink events until finish_frame()
2011-07-21 08:09:11 +02:00
Sebastian Dröge
f011e59943
basevideoencoder: Add ::reset vfunc and handle ::reset/::finish the same way as in the decoder
2011-07-21 08:09:10 +02:00
Sebastian Dröge
2dbd24ca84
basevideoencoder: Use a temporary GstVideoState until the subclass accepted the caps
...
Also store the caps in the GstVideoState and assume a PAR of 1/1 instead
of 0/1 if no PAR is specified in the caps.
2011-07-19 12:52:31 +02:00
Sebastian Dröge
83c4e8814e
basevideodecoder: First inform subclass about resetting before resetting/freeing all internal state
...
The subclass might want to access the old state.
2011-07-11 12:59:07 +02:00
Sebastian Dröge
a59246c1d1
basevideodecoder: Track present position on discont before resetting it
2011-07-11 12:36:42 +02:00
Sebastian Dröge
08823f80d6
basevideodecoder: Also protect the list of pending frames from concurrent access when pushing all pendings events
2011-07-11 11:52:48 +02:00
Sebastian Dröge
81f4c9e8bf
basevideocodec: Protect access to the list of pending frames with the object lock
...
This is required if ::finish_frame() and all buffer output happens
on a different thread than the sinkpad streaming thread.
2011-07-11 11:28:40 +02:00
Sebastian Dröge
caed64c720
basevideodecoder: Set the correct lists to NULL after freeing
2011-07-11 09:35:25 +02:00
Sebastian Dröge
584859488b
basevideodecoder: Work with a copy of the GstVideoState in setcaps until the caps are accepted
...
Also fix a refcount problem with the codec_data.
2011-07-11 09:19:28 +02:00
Sebastian Dröge
e61d3d1a0c
basevideo: Move the utils from the codec header to its own header
2011-07-09 11:40:17 +02:00
Sebastian Dröge
5f55a74571
basevideo: Use GSlice for allocating GstVideoFrame and don't duplicate code in the decoder base class
2011-07-09 11:09:12 +02:00
Sebastian Dröge
f341386b64
basevideodecoder: Don't reorder serialized src events
...
And allow to drop EOS by the subclass if ::finish returns
DROPPED. This requires that the subclass sends EOS manually later.
Fixes bug #653544 .
2011-07-09 11:04:18 +02:00
Sebastian Dröge
525875727a
basevideo: Add the caps to the GstVideoState and clean up caps/codec_data properly
...
Having access to the caps in ::set_format can be useful if
non-standard caps fields like the h264 alignment must be accessed.
2011-07-09 11:02:01 +02:00
Sebastian Dröge
fc93c66d3b
basevideo: Add destroy notify for the coder_hook to prevent memory leaks
...
Fixes bug #654293 .
2011-07-09 11:00:28 +02:00
David Schleef
929603d56c
basevideodecoder: Better handling of invalid par
2011-06-04 14:09:29 -07:00
Debarshi Ray
03bb5dc8ba
Remove unused but set variables
...
This is needed to satisfy the new -Wunused-but-set-variable added in
GCC 4.6: http://gcc.gnu.org/gcc-4.6/changes.html
2011-05-30 22:52:03 +10:00
Mark Nauwelaerts
9b6e819247
basevideodecoder: handle missing framerate when calculating timestamp
2011-05-16 20:32:24 +02:00
Mark Nauwelaerts
cfe85ad780
basevideodecoder: debug code style fixes
2011-05-16 20:32:24 +02:00
Mark Nauwelaerts
2f6af91f09
basevideodecoder: tune parsing sink caps into video state
...
... to provide subclass with more information w.r.t. original caps.
2011-05-16 20:32:24 +02:00
Mark Nauwelaerts
380a443be4
basevideodecoder: video state reference to codec_data is not refcounted
...
... but rather implicitly valid as long as sink caps are not modified.
2011-05-16 20:32:24 +02:00
Mark Nauwelaerts
a1825bd5e2
basevideodecoder: improve glitch resilience
...
Provide a replacement for GST_ELEMENT_ERROR to avoid aborting at the first
atom out of place, while on the other hand not failing indefinitely.
2011-05-16 20:32:24 +02:00
Mark Nauwelaerts
1588ed321c
basevideodecoder: reverse playback support
2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
1d99e8eafa
basevideodecoder: use basevideocodec discont field
2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
1b151caf11
basevideodecoder: really and only set src pad caps whenever requested
...
... since subclass is expected to be wise enough to know when to do so.
2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
550237347b
basevideodecoder: add some sanity enforcing
2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
f72658435b
basevideodecoder: add documentation
...
... and remove some more stray unused code and methods.
2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
04f4a583dd
basevideocodec: fully free video frame
2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
a085acb586
basevideodecoder: streamline discont, flush and reset handling
...
... which is not to say there is no room for further tweaking ...
2011-05-16 20:32:23 +02:00
Mark Nauwelaerts
444b169188
basevideodecoder: add some header commentary
2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
cfc65b14b1
basevideodecoder: remove (almost) unused fields
...
... and also some more unused code.
2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
f591361d2f
basevideodecoder: invoke subclass start method at state change and use set_format
...
While this changes API slightly (e.g. actually uses set_format now), which is OK
for unstable API, it has following merits:
* symmetric w.r.t. stop at state change
* in line with other base class practice
* otherwise no subclass method at state change (global activation time)
Moreover, subclassese are either unaffected or trivially adjusted accordingly.
2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
04a34b4ab7
basevideodecoder: fixup tweak
2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
39fb2fa74a
basevideodecoder: add and tweak debug statements
2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
fc705cf8fd
basevideodecoder: arrange for limited legacy seeking support
...
In particular, tweak src query and event handling to provide for
byte <-> time conversion.
2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
3bd16a48b4
basevideo: cater for format conversion
2011-05-16 20:32:22 +02:00
Mark Nauwelaerts
5af2f6f40e
videocodec: remove unused fields and code
2011-05-16 20:32:21 +02:00
Mark Nauwelaerts
4311909a53
basevideodecoder: fix copy-and-paste variable misnomer
2011-05-16 20:32:21 +02:00
Mark Nauwelaerts
7862d9ed35
basevideodecoder: subsume skip_frame into finish_frame
2011-05-16 20:32:21 +02:00
Mark Nauwelaerts
0230143cb8
basevideodecoder: remove unused code
2011-05-16 20:32:21 +02:00
Mark Nauwelaerts
8defa8cb49
basevideodecoder: code cleanup and debug style fixes
2011-05-16 20:32:21 +02:00
Mark Nauwelaerts
576fb1b4cb
basevideoencoder: pass along buffer discont flag
2011-05-16 20:32:21 +02:00
Mark Nauwelaerts
ef4bceabbb
basevideoencoder: implement preset interface
2011-05-16 20:32:21 +02:00
Mark Nauwelaerts
5a8bc266c8
basevideoencoder: add documentation and related cosmetics
2011-05-16 20:32:21 +02:00
Mark Nauwelaerts
d15b8c7ad3
basevideoencoder: provide proper upstream flow return handling
2011-05-16 20:32:21 +02:00
Mark Nauwelaerts
d0753dec9b
basevideoencoder: enhance set_caps
...
Specifically, only invoke set_format if incoming format really changed,
and finish current format if so (and if any current).
2011-05-16 20:32:20 +02:00
Mark Nauwelaerts
d68288b597
basevideoencoder: elaborate finish to draining
2011-05-16 20:32:20 +02:00
Mark Nauwelaerts
4b5623d687
basevideoencoder: invoke subclass start method at state change
...
While this changes order w.r.t. set_format, which is OK for unstable API,
it has following merits:
* symmetric w.r.t. stop at state change
* in line with other base class practice
* little benefit in invoking 2 subclass virtual methods (set_format and start)
in immediate succession; all actions in the second could be done in the first
whereas subclass has no chance to do anything 'global' at activation time
Moreover, current -bad subclass relevant methods either trivially commute
or are either trivially adjusted accordingly.
2011-05-16 20:32:20 +02:00
Mark Nauwelaerts
d567fa2834
basevideoencoder: enable clipping by default
2011-05-16 20:32:20 +02:00
Mark Nauwelaerts
3f0824b699
basevideoencoder: reset more state
2011-05-16 20:32:20 +02:00
Mark Nauwelaerts
02a065e406
basevideoencoder: header cosmetic and doc fixes
2011-05-16 20:32:20 +02:00
Mark Nauwelaerts
b0c982db5b
basevideocodec: remove redundant caps field
...
... as it is already at hand as the src pad's negotiated caps.
2011-05-16 20:32:20 +02:00
Mark Nauwelaerts
8aa9d83eb4
basevideoencoder: remove unused code
2011-05-16 20:32:19 +02:00
Mark Nauwelaerts
294cecbc69
basevideoencoder: add event virtual method to allow subclass event handling
2011-05-16 20:32:19 +02:00
Mark Nauwelaerts
16c6a49bd4
basevideoencoder: improve GstForceKeyUnit event handling
2011-05-16 20:32:19 +02:00
Mark Nauwelaerts
adbbe36408
basevideocodec: debug style fixes
2011-05-16 20:32:19 +02:00
Mark Nauwelaerts
1659e7dfcf
basevideocodec: remove unused code cluttering up the place
...
Also minor debug style fixes.
2011-05-16 20:32:19 +02:00
Mark Nauwelaerts
72a32afc65
basevideoencoder: simplify negotiated checking
...
... by avoiding some extraneous (un)ref'ing.
2011-05-16 20:32:19 +02:00
Mark Nauwelaerts
dd118538e9
basevideoencoder: code cleanup and some debug
...
Also add some minor locking and remove unused bits.
2011-05-16 20:32:19 +02:00
Andoni Morales Alastruey
85703b8886
basevideencoder: Fix use after free after state change transition
2011-05-14 12:08:40 +02:00
David Schleef
50e1a73bbc
basevideoencoder: Don't allow buffers after EOS
...
Fixes #647852 .
2011-04-24 19:40:08 -07:00
David Schleef
4f432e09fa
basevideo: Don't duplicate code in basevideocodec
...
Both basevideoencoder and basevideocodec were setting
system_frame_number, leading to confusion. Fixes #647853 .
2011-04-24 19:40:08 -07:00
David Schleef
aa02a4074f
basevideo: Check if caps are set directly
...
Fixes #647854 .
2011-04-24 19:40:08 -07:00
Tim-Philipp Müller
fb67a0d126
basevideo: fix unused-but-set-variable warnings with gcc 4.6
2011-04-14 16:49:18 +01:00
David Schleef
293b0f7757
basevideo: Fix negotiation errors
2011-04-01 13:54:02 -07:00
David Schleef
83d6a5099b
basevideo: Add function to allocate src buffer
2011-04-01 13:54:02 -07:00
David Schleef
3ada35cc0e
basevideo: merge utils header into basevideocodec
2011-03-23 21:33:49 -07:00
David Schleef
5b90c31ca2
basevideocodec: remove parser in favor of baseparse
2011-02-20 12:16:08 -08:00
Sebastian Dröge
44da64d86b
basevideodecoder: Initialize some variables to make gcc 4.6 happy
2011-01-27 17:29:12 +01:00
David Schleef
fe50055715
basevideo: Move common fields/functions to basecodec
2010-10-15 16:30:57 -07:00