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
Sebastian Dröge
e4b7ffcc1b
omxvideodec: Implement draining of the component and use it
...
This makes sure that all buffers are decoded and pushed downstream
before flushing the ports and losing some buffers.
2011-11-01 16:23:22 +01:00
Sebastian Dröge
2f2c17a1b5
omxvideodec: Fix deadlock if ::reset is called before finding the corresponding frame of a decoded buffer
2011-11-01 16:23:22 +01:00
Sebastian Dröge
f93a45fb66
omxaudioenc: Forward downstream flow returns to upstream
2011-11-01 15:10:12 +01:00
Sebastian Dröge
21faf556ff
omxvideoenc: Forward downstream flow returns to upstream
2011-11-01 15:10:01 +01:00
Sebastian Dröge
3b4260e54f
omxvideodec: Forward downstream flow returns to upstream
2011-11-01 13:58:38 +01:00
Sebastian Dröge
f631097284
omx: Add minimal README file
2011-10-25 14:24:59 +02:00
Sebastian Dröge
10a5680692
omxvideodec: Fix deadlock caused by calling reset while the loop function does something with the base video codec stream lock
2011-10-20 15:21:07 +02: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
cf6f14d03c
omxvideodec: Move locking at the correct place
2011-10-20 14:30:38 +02:00
Sebastian Dröge
72fa93956b
omx: Remove QCOM hack to reset nOffset in EmptyBufferDone
...
This is now done in a generic way that does not require any
hacks because it will work without any side effects on any
OMX implementation.
2011-10-14 10:27:47 +02:00
Sebastian Dröge
2750a8869b
omx: Reset nOffset to 0 in EmptyBufferDone if nFilledLen is 0
...
Some OMX implementations don't reset nOffset when the complete
buffer is emptied but instead only reset nFilledLen. We reset
nOffset to 0 if nFilledLen == 0, which is safe to do because
the offset *must* be 0 if the buffer is not filled at all.
Seen in QCOM's OMX implementation.
2011-10-14 10:26:21 +02:00