Commit graph

641 commits

Author SHA1 Message Date
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
Lauri Lehtinen c86d662b23 basecamerabinsrc: Handle errors from preview pipeline
Implements a message handling function to preview pipeline bus.
If GST_MESSAGE_ERROR is seen, considers preview pipeline unable
to do its job and posts an error message to application.

Sets pipeline element to NULL so that subsequent calls to post_preview
and set_caps functions just returns without pushing anything to the
disposed preview pipeline. Leaves further actions to the application.
2011-05-16 18:08:39 -03:00
Lauri Lehtinen 802028081c basecamerabinsrc: Protection for previewpipeline when setting new preview caps
Implements a state indicating flag to preview pipeline,
so that new caps are not set if the pipeline is processing a
preview. The caps are set as pending and applied when the
next preview post is called.

In this case a wait was implemented in the post_preview function,
so that new preview image buffer will wait until the other previews
have been posted to the application and the new caps can be used
safely.
2011-05-16 18:08:39 -03: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