Commit graph

86 commits

Author SHA1 Message Date
Sebastian Dröge e56cff5f2a omxvideoenc: Fix minor race condition when draining after upstream signalled EOS 2011-11-10 15:01:36 +01:00
Sebastian Dröge 56bcfc0397 omxvideoenc: Improve EOS handling
If downstream return UNEXPECTED we should still signal the
drain cond because nothing will trigger this again later.
2011-11-10 14:56:11 +01:00
Sebastian Dröge abd399ecbc omxvideoenc: Improve debugging of EOS and draining 2011-11-10 14:54:17 +01:00
Sebastian Dröge de7d237851 omxvideoenc: No need to signal the drain cond when going from READY to PAUSED
Also the component is not started in READY.
2011-11-10 14:41:50 +01:00
Sebastian Dröge fb5d700ec9 omxvideoenc: Release the video codec stream lock before acquiring an input buffer
Otherwise the srcpad task might block on this lock and
no buffers ever become available again.
2011-11-08 12:47:00 +01:00
Sebastian Dröge 2d6239678f omxvideoenc: Don't try to drain the component after EOS
And don't send EOS twice in any case. This most likely
will cause the component to not output it again and
is not necessary anyway.
2011-11-08 11:10:52 +01:00
Sebastian Dröge ae6616ad0d omxvideoenc: Minor code refactoring 2011-11-08 08:31:43 +01:00
Sebastian Dröge 0b301021de omxvideoenc: Free pending frames after draining the component 2011-11-07 14:00:35 +01:00
Sebastian Dröge 636cdd31bf omxvideoenc: Make handling and usage of the base video codec frames threadsafe 2011-11-07 11:07:01 +01:00
Sebastian Dröge 9a6cea5af3 omxvideoenc: Fix deadlock between srcpad stream lock and ::reset() 2011-11-07 11:05:29 +01:00
Sebastian Dröge a80ca97ec3 omxvideoenc: Free all pending frames after draining the component 2011-11-07 10:58:44 +01:00
Sebastian Dröge 3a17d11109 omxvideoenc: Only drain the component a single time and only after processing started 2011-11-04 09:44:04 +01:00
Sebastian Dröge ef67a43702 omxvideoenc: Better handling of encoder parameters
Only set them if necessary and allow to use the component
defaults.
2011-11-02 13:50:14 +01:00
Sebastian Dröge 08fabd6a07 omxvideoenc: Make unsupported bitrate/quantizer settings less fatal 2011-11-02 13:22:50 +01:00
Sebastian Dröge 7ebef2941b omxvideoenc: If no stride was set for the OMX input port assume GStreamer stride
This is not really correct but there's nothing else we could do.
2011-11-02 10:39:10 +01:00
Sebastian Dröge 8eaf25c10e omxvideoenc: Implement draining of the component and use it
This makes sure that all buffers are encoded and pushed downstream
before flushing the ports and losing some buffers.
2011-11-01 16:41:46 +01:00
Sebastian Dröge 21faf556ff omxvideoenc: Forward downstream flow returns to upstream 2011-11-01 15:10:01 +01:00
Sebastian Dröge 6689faa661 omxvideoenc: Fix deadlock caused by calling reset while the loop function does something with the base video codec stream lock 2011-10-20 15:20:47 +02:00
Sebastian Dröge ac8085dce9 omxvideoenc: If one parameter/configuration is not supported don't skip the next 2011-10-10 10:38:29 +02:00
Sebastian Dröge e364088596 omxvideoenc: Switch to Idle first and wait before switching to Loaded and deallocating buffers
Allocating buffers before the Idle state is reached can lead to crashes.
2011-09-28 10:35:37 +02:00
Sebastian Dröge d5452a53b0 omxvideoenc: Add some more checks for correct OMX buffer sizes 2011-09-23 17:04:14 +02:00
Sebastian Dröge f0fe1148b7 omx: Wait until the Executing state is reached before calling OMX_FillThisBuffer()
This correctly works around the QCOM race condition that happens when calling
FTB after setting the new state and before reaching it.
2011-09-14 10:16:41 +02:00
Sebastian Dröge 9eb39ceef2 omxvideoenc: Release basevideocodec stream lock while waiting for a buffer
This prevents deadlocks if no empty input buffers are available and
releasing input buffers requires the loop function to handle some
output buffers first.
2011-08-19 09:23:58 +02:00
Sebastian Dröge 75c843670f omxvideoenc: Use "video/x-raw-yuv" as sink template caps instead of strict I420 caps 2011-08-10 10:24:48 +02:00
Sebastian Dröge 8e422b7cc2 omxvideoenc: Set the state back to StateLoaded even if an error happened 2011-08-10 09:56:30 +02:00
Sebastian Dröge 714ba59b11 omxvideoenc: Don't fail if setting the bitrate or profile is not supported by the component
Also always set/get the profile, even if there are no peer caps.
2011-08-02 15:14:37 +02:00
Sebastian Dröge 4329821a0b omxvideoenc: Add support for forcing the next frame to be a keyframe 2011-07-28 12:58:25 +02:00
Sebastian Dröge e7b421c131 omxvideoenc: Add support for setting bitrate/quantization related parameters 2011-07-28 12:52:24 +02:00
Sebastian Dröge decf765502 omxvideoenc: Don't output 0-byte buffers 2011-07-28 12:16:38 +02:00
Sebastian Dröge 8ac445abd8 omxvideo{enc,dec}: Only set/unset flushing state on ports if they were created already 2011-07-25 13:19:06 +02:00
Sebastian Dröge ae7ed44e6b omxvideoenc: Try harder to deallocate the buffers after errors happened 2011-07-25 10:47:28 +02:00
Sebastian Dröge 7350dcc8cd omxvideoenc: Add initial support for stride conversion 2011-07-21 11:15:14 +02:00
Sebastian Dröge 644fa35789 omxvideoenc: Add support for setting codec_data on the srcpad caps 2011-07-21 07:53:25 +02:00
Sebastian Dröge 182a488f49 omxvideoenc: Free/drop GstVideoFrames that resulted in an empty buffer 2011-07-21 07:44:34 +02:00
Sebastian Dröge c0d304f819 omxvideoenc: Remove obsolete TODO comment 2011-07-21 07:31:05 +02:00
Sebastian Dröge 2343decb3c omxvideoenc: Add video encoder base class and MPEG4 video encoder
Unfortunately requires lots of hacks again to work properly with
Bellagio.
2011-07-20 11:08:18 +02:00