summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* mm-video-v4l2: vidc: vdec: handle codec config ETB's properlystable/cm-12.0-caf-8974-YNG4Nstable/cm-12.0-caf-8974-YNG3Cstable/cm-12.0-caf-8974-YNG1TAstable/cm-12.0-caf-8974-YNG1Tcm-12.0-caf-8974Pushkaraj Patil2015-02-252-13/+11
| | | | | | | | | | | | | | | | | | | 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
* mm-video-v4l2: vdec: insert timestamps qeued by client in TS queuePraveen Chavan2015-02-251-1/+1
| | | | | | | | | | | | | | | | | 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
* mm-video-v4l2: vdec: Always send NC VOPS to the driverc_sridur2015-02-253-47/+1
| | | | | | | | | | | | | 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
* mm-video: vidc: Adjust timestamp if actual ts < previous tsDeva Ramasubramanian2015-02-251-3/+2
| | | | | | | | | | | 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
* mm-video-v4l2: vdec: streamoff while freeing first output bufferBalamurugan Alagarsamy2015-02-251-0/+8
| | | | | | | | | | | 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
* mm-video-v4l2: vidc: move codec_config buffer counter incrementPushkaraj Patil2015-02-251-4/+6
| | | | | | | | | | | | | 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
* mm-video-v4l2: vidc: move pending flush sem release in async threadPushkaraj Patil2015-02-251-13/+14
| | | | | | | | | | | | | 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
* mm-video-v4l2: vdec: Request buffer for input port after client reconfiguresBalamurugan Alagarsamy2015-01-191-1/+14
| | | | | | | | | | | | 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
* Revert "mm-video-v4l2: vdec: streamoff while freeing first output buffer"Balamurugan Alagarsamy2015-01-191-9/+0
| | | | | | This reverts commit e2980c0798a86aa9d613d0500eae0d702ed89d43. Change-Id: Ic89e8fd275e5afcdab0bd79b991edac26a38de8b
* Merge branch 'LA.BF.1.1_rb1.16' of ↵Steve Kondik2014-12-132-6/+18
|\ | | | | | | git://codeaurora.org/platform/hardware/qcom/media into cm-12.0
| * Merge "mm-video-v4l2: vdec: streamoff while freeing first output buffer" ↵Linux Build Service Account2014-12-101-0/+9
| |\ | | | | | | | | | into LA.BF.1.1_rb1.16
| | * mm-video-v4l2: vdec: streamoff while freeing first output bufferMaheshwar Ajja2014-12-101-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | mm-video-v4l2: vidc: Amend debug log macrosMaheshwar Ajja2014-12-101-6/+9
| |/ | | | | | | | | | | | | | | | | 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
| * Merge "Revert "mm-video-v4l2: vdec: streamoff while freeing first output ↵Linux Build Service Account2014-12-041-8/+0
| |\ | | | | | | | | | buffer""
* | \ Merge branch 'LA.BF.1.1_rb1.14' of ↵Steve Kondik2014-12-125-24/+85
|\ \ \ | | |/ | |/| | | | git://codeaurora.org/platform/hardware/qcom/media into cm-12.0
| * | Revert "mm-video-v4l2: vdec: streamoff while freeing first output buffer"Maheshwar Ajja2014-12-021-8/+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
| * Merge "mm-video-v4l2: vdec: skip fillbuffer in port reconfiguration"Linux Build Service Account2014-11-281-1/+4
| |\
| | * mm-video-v4l2: vdec: skip fillbuffer in port reconfigurationBalamurugan Alagarsamy2014-11-271-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | Merge "mm-video-v4l2: vidc: move flush waiting logic to appropriate place"Linux Build Service Account2014-11-281-12/+17
| |\|
| | * mm-video-v4l2: vidc: move flush waiting logic to appropriate placeSrinu Gorle2014-11-271-12/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | Merge "mm-video: vidc: Make buffer state bitmap 64 bits"Linux Build Service Account2014-11-282-7/+10
| |\ \
| | * | mm-video: vidc: Make buffer state bitmap 64 bitsDeva Ramasubramanian2014-11-272-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | | Merge "mm-video: vidc: defer flush until headers are consumed"Linux Build Service Account2014-11-282-1/+37
| |\ \ \ | | | |/ | | |/|
| | * | mm-video: vidc: defer flush until headers are consumedDeva Ramasubramanian2014-11-272-1/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | | Merge "mm-video: vidc: add the log when returning error in ftb"Linux Build Service Account2014-11-283-6/+22
| |\ \ \
| | * | | mm-video: vidc: add the log when returning error in ftbJia Meng2014-11-273-6/+22
| | | |/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | No detail error log printed in some places when returning error in fill_this_buffer. CRs-fixed: 691490 Change-Id: I3ec2570c25b1e49e6906909e7cadc33201290a24
| * | | Merge "mm-video: vidc: Avoid setting invalid timestamp of eos NAL"Linux Build Service Account2014-11-281-1/+2
| |\ \ \
| | * | | mm-video: vidc: Avoid setting invalid timestamp of eos NALBalamurugan Alagarsamy2014-11-271-1/+2
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | | Merge "mm-video: Recognise "OMX.qcom.video.decoder.divx4" when setting role"Linux Build Service Account2014-11-271-1/+2
| |\ \ \
| | * | | mm-video: Recognise "OMX.qcom.video.decoder.divx4" when setting roleDeva Ramasubramanian2014-11-251-1/+2
| | | |/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | | Merge "mm-video-v4l2: vdec: streamoff while freeing first output buffer"Linux Build Service Account2014-11-271-0/+8
| |\ \ \
| | * | | mm-video-v4l2: vdec: streamoff while freeing first output bufferMaheshwar Ajja2014-11-271-0/+8
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | | Merge "audio E_AC3_JOC definition"Linux Build Service Account2014-11-271-0/+1
| |\ \ \ | | |_|/ | |/| |
| | * | audio E_AC3_JOC definitionHaynes Mathew George2014-11-271-0/+1
| | |/ | | | | | | | | | | | | | | | | | | Add extern defintion for JOC format CRs-Fixed: 761339 Change-Id: I7e007f8bbce18479986def3526986b5f1b6e9c05
| * | Merge "mm_video: vidc: Update buffer geometry with stride and scanline"Linux Build Service Account2014-11-271-7/+2
| |\ \ | | |/ | |/|
| | * mm_video: vidc: Update buffer geometry with stride and scanlinePushkaraj Patil2014-11-261-7/+2
| |/ | | | | | | | | | | | | | | | | 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
* | Merge branch 'LA.BF.1.1_rb1.12' of ↵Steve Kondik2014-11-293-3/+29
|\| | | | | | | git://codeaurora.org/platform/hardware/qcom/media into cm-12.0
| * Merge "mm-video: vidc: Ignore not coded VOPs only for DIVX content"Linux Build Service Account2014-11-211-0/+4
| |\
| | * mm-video: vidc: Ignore not coded VOPs only for DIVX contentDeva Ramasubramanian2014-11-211-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | Set the defaults for processing not coded VOPs based on the specs of each codec. CRs-Fixed: 714038 Change-Id: I8577cbe54efe1f12c1c0d59f75ed18c38755bc92
| * | Merge "mm-video: vidc: Possibly send not-coded-VOPs to the driver"Linux Build Service Account2014-11-213-1/+19
| |\|
| | * mm-video: vidc: Possibly send not-coded-VOPs to the driverDeva Ramasubramanian2014-11-213-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | Merge "mm-video-v4l2: vdec: Retain lock while querying C2D filled length"Linux Build Service Account2014-11-211-1/+2
| |\ \ | | |/ | |/|
| | * mm-video-v4l2: vdec: Retain lock while querying C2D filled lengthLeena Winterrowd2014-11-201-1/+2
| |/ | | | | | | | | | | | | | | | | 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
| * Merge "mm-video-v4l2: vidc: Enforce non-negative timestamp deltas"Linux Build Service Account2014-11-191-1/+6
| |\
| | * mm-video-v4l2: vidc: Enforce non-negative timestamp deltasLeena Winterrowd2014-11-191-1/+6
| |/ | | | | | | | | | | | | | | | | 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
* | media: Avoid collision with FFMPEG pluginSteve Kondik2014-11-211-0/+4
| | | | | | | | Change-Id: Ica2cdf9f6572ec18f396d25758cbb2be1359ac0b
* | Merge branch 'LA.BF.1.1_rb1.11' of ↵Steve Kondik2014-11-213-95/+164
|\| | | | | | | | | | | git://codeaurora.org/platform/hardware/qcom/media into cm-12.0 Change-Id: I640ea7f80f6d6507ae0d7ad13501f67eb01ed5c0
| * Merge " mm-video: vdec: hevc: hybrid: Call request buffer after configure"Linux Build Service Account2014-11-121-2/+5
| |\
| | * mm-video: vdec: hevc: hybrid: Call request buffer after configureBalamurugan Alagarsamy2014-11-101-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | 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
| * | Merge "mm-video-v4l2: vdec: fix invalid stride and scanlines issue"Linux Build Service Account2014-11-111-3/+5
| |\ \