Commit graph

669 commits

Author SHA1 Message Date
Sebastian Dröge
30d2f970f9 omxvideodec: Make srcpad caps setting threadsafe 2011-11-10 15:17:41 +01:00
Sebastian Dröge
f0775fac6f omxaudioenc: Make the srcpad task and the sinkpad streaming thread handling threadsafe 2011-11-10 15:10:14 +01:00
Sebastian Dröge
b62ffe1ada omxaudioenc: Always flush the ports and make sure no processing is happening in ::flush
This fixes a race condition that happened when seeking
very often in a short period of time.
2011-11-10 15:03:05 +01:00
Sebastian Dröge
fbe171ee2c omxvideoenc: Always flush the ports and make sure no processing is happening in ::reset
This fixes a race condition that happened when seeking
very often in a short period of time.
2011-11-10 15:02:22 +01:00
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
05e4b48855 omxaudioenc: 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:19 +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
1b7742ca98 omxaudioenc: Improve debugging of EOS and draining 2011-11-10 14:54:33 +01:00
Sebastian Dröge
abd399ecbc omxvideoenc: Improve debugging of EOS and draining 2011-11-10 14:54:17 +01:00
Sebastian Dröge
b36db47cba omxvideodec: Log if acquiring buffer for EOS failed 2011-11-10 14:51:06 +01:00
Sebastian Dröge
3412ecf538 omxvideodec: The component is not started in READY 2011-11-10 14:42:13 +01:00
Sebastian Dröge
8c1aee4171 omxaudioenc: 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
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
6e41e31e6c omxvideodec: Always flush the ports and make sure no processing is happening in ::reset
This fixes a race condition that happened when seeking
very often in a short period of time.
2011-11-09 15:46:39 +01:00
Sebastian Dröge
60a6c1b49f omxvideodec: Fix minor race condition when draining after upstream signalled EOS 2011-11-09 15:45:20 +01:00
Sebastian Dröge
92c26f684a omxvideodec: Improve EOS handling
If downstream return UNEXPECTED we should still signal the
drain cond because nothing will trigger this again later.
2011-11-09 15:44:11 +01:00
Sebastian Dröge
c026bee8c6 omxvideodec: Improve debugging of EOS and draining 2011-11-09 15:43:32 +01:00
Sebastian Dröge
59faafc30b omxvideodec: The component is not started already when going from READY to PAUSED 2011-11-09 15:42:46 +01:00
Sebastian Dröge
6c2cca3e94 omxvideodec: No need to signal the drain cond when going from READY to PAUSED 2011-11-09 15:42:13 +01:00
Sebastian Dröge
b66fd610d6 omx: Always reset buffer flags for output ports, even in flushing/error state 2011-11-09 15:41:02 +01:00
Sebastian Dröge
cf22a12156 omxvideodec: Improve debugging in case of QoS-related frame drops 2011-11-09 09:00:57 +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
b45197c0d7 omxaudioenc: Release the audio encoder 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
3da6d8bfa3 omxvideodec: 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
17d0751887 omxaudioenc: 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:57 +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
9251e0004c omxvideodec: 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:08:06 +01:00
Sebastian Dröge
b10c2cfc72 omxvideodec: Implement dropping of too late frames via QoS 2011-11-08 09:09:28 +01:00
Sebastian Dröge
093a27fea3 omxaudioenc: Minor code refactoring 2011-11-08 08:31:58 +01:00
Sebastian Dröge
ae6616ad0d omxvideoenc: Minor code refactoring 2011-11-08 08:31:43 +01:00
Sebastian Dröge
d4eb77fa2b omxvideodec: Make sure to always release buffers back to OMX 2011-11-08 08:31:32 +01:00
Sebastian Dröge
1d071c05dc omx: Also properly release buffers when in error state 2011-11-08 08:24:49 +01:00
Jonas Larsson
0682012181 omx: Properly release buffers during flushing
We can't pass them back to OMX_FillThisBuffer() or OMX_EmptyThisBuffer()
but instead of doing nothing we have to put them back into our queue.
Otherwise the buffer is leaked and we will have too few buffers in
the future.
2011-11-08 08:24:49 +01:00
Sebastian Dröge
9151617d39 omxvideodec: Free pending frames after draining component 2011-11-07 14:00:47 +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
95b06504f9 omxvideoenc: Make handling and usage of the base video codec frames threadsafe 2011-11-07 11:04:27 +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
be1f75d2f4 omxvideodec: Always free all pending frames when caps changes require reconfiguration 2011-11-07 10:58:24 +01:00
Sebastian Dröge
0c0aa78373 omxaudioenc: Only drain the component a single time and only after processing started 2011-11-04 09:44:04 +01:00
Sebastian Dröge
d5371b9208 omxvideodec: Only drain the component a single time and only after processing started 2011-11-04 09:44:04 +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
fa6881c1cc omx: Reset buffer flags to 0 after it was consumed by the component or the element
Some implementations don't reset the flags and the standard is not
really clear on the expected behaviour. Let's just always reset the
flags as they're not valid at this point anymore.
2011-11-04 09:04:16 +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
ec9dde48e5 omxvideodec: If no stride was set for the OMX output port assume GStreamer stride
This is not really correct but there's nothing else we could do.
2011-11-02 10:39: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
1ef38751c7 omxaudioenc: 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:46:09 +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