| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change semaphore wait logic to handle codec config buffers
properly. Due to quick context switch between msg and async
threads, component is unnecessarily waiting for input buffer
which is already returned by driver. Following points are
taken into consideration while code modification
1. Do not use semaphore for counting/condition check, instead
use m_queued_codec_config_count under atomic operation.
2. Use semaphore just once to wait for all EBD's with codec
config flag.
3. Post semaphore only if we get all EBD's back from driver.
4. Move component state to flush deferred, to avoid
unnecessary sem_post operation, as it will mess-up with
semaphore counter state.
Change-Id: Ie3b0dd9e3479e5e2831233bc31a5abd35140750d
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For AVI/DIVX clips containing B-Vops and NC, timestamps provided
by client must be queued.
If the timestamps generated after arbitrary parsing are queued,
there will be duplicate timestamps for B and P; and valid
timestamps carried by NC frames will be dropped and lead to
back and forth predicted timstamps.
Change-Id: I3e8bdb57a3acb64fddb41ce116a4bca4e87ee343
CRs-Fixed: 768656
Conflicts:
mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
Change-Id: I9fcdd493cbc4c5054577d6ca9ac8ab8e59470e65
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and let the firmware handle skipping or repeating such
frames based on the codec and information in the stream.
(Eg. For DivX, Drop NC followed by packed PB and repeat
previous frame otherwise)
Revert "mm-video: vidc: Possibly send not-coded-VOPs to the driver"
This reverts commit 63f1ef65ce794ee45a753f888515885500beee03.
CRs-Fixed: 776899
Change-Id: I34afccc85b7bac06ad9a51354518013593e7d161
|
|
|
|
|
|
|
|
|
|
|
| |
The timestamp adjustment logic only bothered adjusting if
abs(delta) > 2ms. Hence, if the successive timestamp was less than the
previous timestamp by more than 2ms, the adjustment never occured.
This commit forces the adjustment to occur if the timestamp appears to
be going backwards.
Change-Id: I9552a34c48be9813d1300a91126f10691d3d8bf7
|
|
|
|
|
|
|
|
|
|
|
| |
Streamoff is being skipped if client sends commands loaded ->
idle -> allocate output buffers -> loaded -> free output buffers ->
get buffer requirements and results in failure. Do streamoff
while client frees the output buffer to resolve the issue.
Do not streamoff when dynamic buffer mode is enabled.
Restricting streamoff if driver flush is inprogress.
Change-Id: Ib0d11397da7597673fb02eca4be0ef87a96d8a4d
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Due to random context switch between msg thread and async thread
codec_config buffer count is getting modified in wrong sequence.
In following context switch sequence, IOCTL(codec_config ETBP)
-> reset counter in async thread (EBD for codec_config) ->
increment codec_config in ETBP, counter value results to 1, it
should be 0 as EBD for codec_config buffer is received, this
resuls in unnecessary deferred flush. Adding additional logs to
track counter related issues in future.
Change-Id: I5ec99bfe15a8a38375487367920b7073b337d9a9
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently flush command is deferred when codec-config ETB's are sent
to driver. Component msg thread is blocked for every 2 seconds until
codec-config buffers are consumed. The semaphore that unblocks msg
thread is set in EBD which is also executed by msg thread. So msg
thread is blocked for 2 seconds for CODEC_CONFIG buffers. This might
introduce frame drops. Hence move this semaphore release code to async
thread.
CRs-Fixed: 764704
Change-Id: I9400354efdabfce2f7feebec9197244f234aa5e5
|
|
|
|
|
|
|
|
|
|
|
|
| |
When OMX client reconfigures, buffer requirement should be called
again, else ETB will fail as the buffers are not prepared.
Release driver buffers when all component buffers are released.
This is needed as component may transition back to idle state
from loaded state, and prepare_buf will fail if the buffers
are not unregistered from driver.
Change-Id: I02762574277a36f7ba334843b91cb77953cad5c9
|
|
|
|
|
|
| |
This reverts commit e2980c0798a86aa9d613d0500eae0d702ed89d43.
Change-Id: Ic89e8fd275e5afcdab0bd79b991edac26a38de8b
|
|\
| |
| |
| | |
git://codeaurora.org/platform/hardware/qcom/media into cm-12.0
|
| |\
| | |
| | |
| | | |
into LA.BF.1.1_rb1.16
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Streaoff is being skipped if client sends commands loaded ->
idle -> allocate output buffers -> loaded -> free output buffers ->
get buffer requirements and results in failure. Do streamoff
while client frees the first output buffer to resolve the issue.
Do not streamoff when dynamic buffer mode is enabled.
Change-Id: I45edd58d827b5706990d8bdf359661bd8eb691de
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
Currently debug logs are not coming under conditional
statements if flower brackets are not used. Amend debug
log macros to print the logs without the need of any
flower brackets.
Change-Id: I0db3316774695fed481a137672b8d22a03fe85f4
|
| |\
| | |
| | |
| | | |
buffer""
|
|\ \ \
| | |/
| |/|
| | | |
git://codeaurora.org/platform/hardware/qcom/media into cm-12.0
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit ae7a781db6d9b01bca4c38aa32e36d8a1e232ff7.
Video component is not expected to call stream_off when
freeing output buffers in dynamic buffer mode.
The proper fix is 4fe451dc21600bb345b422f53d0f785dab1a92be.
Change-Id: I60ba6e6332279f326cbccc4dd7a3aef89379dc07
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Sometimes when port reconfiguration is under progress
hybrid decoder calls fillbuffer when emptybuffer arrives
which results in failures.
Resolve the problem by skipping fillbufer in port reconfiguration.
Change-Id: If900acbde8887d41134103b42f764d8018bd82e6
|
| |\| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If a flush arrives while codec-config buffers are in the ETB queue,
both flush and ETB are sent to the video driver which can cause
corruption in output frames. Move flush waiting logic so that flush
is deferred until the headers are consumed
Change-Id: Id0647bfc749ac7e4af975530ac82210cc93023f2
CRs-Fixed: 703100
|
| |\ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Previously the buffer state bitmap (which indicates if the given buffer
at an index is free or allocated) was unsigned int, which was typically
32 bits. However if the client wants more than 32 buffers, the state
can't be held within the 32-bit bitmap. Hence change it to uint64_t.
Change-Id: I8403c1331352bb96570577362a46444600d88448
|
| |\ \ \
| | | |/
| | |/| |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In case flush arrives while codec-config buffers are sent
to codec, defer sending flush till codec config buffers
are consumed. This fixes CTS tests which issue flush
right after configure(i.e after queueing headers).
Change-Id: I8cfcaecacc79da8d2c75a521b2a616a20aa69099
|
| |\ \ \ |
|
| | | |/
| | |/|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
No detail error log printed in some places when returning
error in fill_this_buffer.
CRs-fixed: 691490
Change-Id: I3ec2570c25b1e49e6906909e7cadc33201290a24
|
| |\ \ \ |
|
| | |/ /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In arbitrary mode when eos NAL is appened at the end, while
coalscing with destination buffer, the actual timestamp is
overwritten with LLONG_MAX. This will lead to error log and
setting the flag V4L2_QCOM_BUF_TIMESTAMP_INVALID in driver,
which is not needed.
Change-Id: I87a63c4cb9d8259280b781cdd553050580809e8e
|
| |\ \ \ |
|
| | | |/
| | |/|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Setting the component role for the "OMX.qcom.video.decoder.divx4"
component triggered an incorrect claiming that the component wasn't
recognised. This is a valid component.
Change-Id: Ib58ef8d74dcaaf6bde4bc4a07adca400822e0a11
CRs-Fixed: 759443
|
| |\ \ \ |
|
| | |/ /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Streaoff is being skipped if client sends commands loaded ->
idle -> allocate output buffers -> loaded -> free output buffers ->
get buffer requirements and results in failure.
Do streamoff while client frees the first output buffer to
resolve the issue.
Change-Id: I6e0391a22069219e54002d238bc6e347d1147aeb
|
| |\ \ \
| | |_|/
| |/| | |
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | | |
Add extern defintion for JOC format
CRs-Fixed: 761339
Change-Id: I7e007f8bbce18479986def3526986b5f1b6e9c05
|
| |\ \
| | |/
| |/| |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
Update buffer geometry dimensions using stride and snanline.
Earlier it was updated conditionally to handle downscalar case.
Now component is fetching all updated dimensions in case of
crop event, so stride and scanline can be used for the same.
Change-Id: If44a6df8498bff2ce39c9428b3708adbee7b8542
|
|\|
| |
| |
| | |
git://codeaurora.org/platform/hardware/qcom/media into cm-12.0
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Set the defaults for processing not coded VOPs based on the specs of
each codec.
CRs-Fixed: 714038
Change-Id: I8577cbe54efe1f12c1c0d59f75ed18c38755bc92
|
| |\| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Previously we were dropping the not coded VOPs in the component because
the legacy hardware didn't support decoding it. Since the hardware now
supports decoding N-C-VOPs, send it to the hardware if the client
insists on it being decoded. A side effect of this is FBDs which have
duplicate YUVs and timestamps. The client is expected deal with this
side effect.
CRs-Fixed: 714038
Change-Id: I44aa4f1f26568cf59cc76751802b8aa2373fcb69
|
| |\ \
| | |/
| |/| |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
On port reconfig, c2d is torn down & reopened. This can trigger a
race condition with any c2d call in the component context. Hold
the c2d lock while querying filled length to avoid this race
condition.
Change-Id: Icac85d41e5e39b510728537a980c7096d016358c
|
| |\ |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
When in display order, timestamps should never step backwards during
normal playback, but this may occur if timestamp adjustment
overestimates the frame interval. In such cases, return the previous
timestamp again.
Change-Id: If04d2fc98eed517ceda2300a1463dc65d641348f
|
| |
| |
| |
| | |
Change-Id: Ica2cdf9f6572ec18f396d25758cbb2be1359ac0b
|
|\|
| |
| |
| |
| |
| | |
git://codeaurora.org/platform/hardware/qcom/media into cm-12.0
Change-Id: I640ea7f80f6d6507ae0d7ad13501f67eb01ed5c0
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Whenever the client flushes and reconfigures the hevc hybrid decoder,
buffer requirement is not called again, this makes the driver buffer
queue empty and ETB will fail. So, adding it.
Change-Id: I0fb290f245ad28b932d45d484d518a9027f05962
|
| |\ \ |
|