Commit Graph
270 Commits
Author SHA1 Message Date
prakash d5edb9b824 msm: vidc: Add support for VUI_DISPLAY_INFO
This is needed to get color primaries, transfer and matrix values from
avc devoder.

Issue: FP2P-432
Issue: FP2P-435
Change-Id: Id1d375c9f6e1c05fc9b8336162bb11cc12d6dea2
2021-10-10 23:46:47 +02:00
Francescodario Cuzzocrea 85baa390bf misc: Import SM-G900H kernel source code
* Samsung Package Version: G800HXXU1CRJ1
    * CAF Tag: LA.BF.1.1.3-00110-8x26.0
2019-08-02 15:14:10 +02:00
Ashray Kulkarni 84db5770d7 msm: vidc: add driver support to enable operating rate
Add support for enabling operating rate in encoder. This will enable
support for high fps/timelapse recording and still maintain 30fps
timestamp deltas between two input frames.

Change-Id: I1f59db533b61e6f42d8b7768396057f6ec5b690d
Signed-off-by: Ashray Kulkarni <ashrayk@codeaurora.org>
2015-08-13 20:30:13 +05:30
Ashray Kulkarni 0c21242188 msm: vidc: Enable session priority support.
Add support for setting priority to each video session in driver.

Change-Id: Iec9fa69ee42959a93d18fdb59eff1f12c53de235
Signed-off-by: Ashray Kulkarni <ashrayk@codeaurora.org>
2015-08-13 20:30:00 +05:30
Manikanta Sivapala 70878ac750 msm: vidc: add new control for limiting i/p buffer size
Take the minimum of the size calculated by driver using
max width and height supported and the size set by client
for input buffers. Change interface to get input and
output buffer sizes.

Change-Id: Ia3eb4cc7ae7bb38e2650fff1b694623e2aab62ef
Signed-off-by: Manikanta Sivapala <msivap@codeaurora.org>
2014-08-06 11:31:36 +05:30
Linux Build Service Account 8db6478417 Merge "msm: vidc: Add support for different errors" 2014-05-12 03:34:55 -07:00
Linux Build Service Account 1a7d3619bf Merge "msm: vidc: Add AFD and CC metadata support to extradata" 2014-05-09 08:16:41 -07:00
Jayasena Sangaraboina 45365f95a4 msm: vidc: Add AFD and CC metadata support to extradata
Add support and control for setting Active format
description and closed caption meta data in the
extradata. FW parses metadata and adds it to the
extradata. Client can use control to parse extradata
for the metadata information.

Change-Id: I79fb71e635927c95e0792862c9dea7d96f58e895
Signed-off-by: Jayasena Sangaraboina <jsanga@codeaurora.org>
2014-05-05 12:50:11 -07:00
Deepak Verma 082f2e63df msm: vidc: Add support for different errors
When hardware is overloaded or when max number of clients are
reached in driver or firmware, hardware error is sent to video
client. This change is to replace hardware error with actual
errors.

CRs-fixed: 575852
Change-Id: I07e599f894a3716a3dc4fed5eb7c987311f5bdde
Signed-off-by: Deepak Verma <dverma@codeaurora.org>
2014-05-04 20:17:00 -07:00
Ashray Kulkarni aa0eb970bb msm: vidc: Add support for setting initial qp
Adds support to set initial qp, thereby allowing the client to set
initial qp for I,P, and B frames.

Change-Id: Ie956651bde85e800d97a0007769af9aec8ca16a4
Signed-off-by: Ashray Kulkarni <ashrayk@codeaurora.org>
2014-03-27 12:48:12 -07:00
Arun Menon 4796f9b1ea msm: vidc: detect mbaff information from firmware
Firmware will set the FBD flags if mbaff interface
is detected for decoded video bitstream. Previously
the mbaff information was parsed in the v4l2 video
client, but now firmware parses and sends the information.

Change-Id: Ic557cdb7bf49aab3eb29a3f3aa3e363bf7223a36
Signed-off-by: Arun Menon <avmenon@codeaurora.org>
2014-03-12 11:53:00 -07:00
Arun Menon 1c9fb3a452 msm: vidc: add control to enable Hierarchical P num layers
This change will enable firmware to perform Hierarchical
video encoding for P frames. Hierarchical video encoding is
used to improve error resilience and temporal scalability.
The encoded frames are logically organized in to multiple
layers with frames in one layer referencing only frames
from lower layers. The lowest layer, i.e. base layer, is
the only exception.

Change-Id: Ie30e6d075b76b3337ec895584cf1f3be9f4bb6c6
Signed-off-by: Arun Menon <avmenon@codeaurora.org>
2014-01-31 14:04:59 -08:00
Deva Ramasubramanian fbd85b747c msm: vidc: Add support for MBI extradata
Macro Block Information extradata (if enabled) allows interested
clients to query for metadata about each macroblock.

Change-Id: Icfee32770018338e28ae149e1ccb654f5a48cbec
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
2014-01-31 14:04:59 -08:00
Jorge Solano Altamirano 135d303e2c [media] v4l2: Add enums to request frame bits info as extra-data
This option is intended to be used to request as extra-data
the size in bits from frame header and frame itself.

Change-Id: I207045cda8c8038981bcf4548eb3d221502a67e1
Signed-off-by: Jorge Solano Altamirano <jsolano@codeaurora.org>
2014-01-31 14:04:57 -08:00
Jorge Solano Altamirano 97330aae23 [media] v4l2: Add enum for frame level QP extra-data
This option is intended to be used to request as extra-data
the frame level QP.

Change-Id: Icaf88bd5a48ac394d1ed7ded8dc320cfeebc2765
Signed-off-by: Jorge Solano Altamirano <jsolano@codeaurora.org>
2014-01-31 14:04:56 -08:00
Ashray Kulkarni 745bc09e10 msm: vidc: add LTR support for video encoder
Enable LTR support for VP8 codec to add robust error resilience.

Change-Id: I3b87c5cdaef836a6d02d5b9fe71b7165b7f13581
Signed-off-by: Ashray Kulkarni <ashrayk@codeaurora.org>
2014-01-31 10:51:50 -08:00
Jia Meng ef72dae48d msm: vidc: added v4l2 control to set the color of concealed MBs.
The conceal color is set to be green by default, while some users
required it to be black.
Set it to be configurable by adding this v4l2 control.

Change-Id: I25565ee837c011f5875ce91bde23a169fbdb0709
Signed-off-by: Jia Meng <jmeng@codeaurora.org>
2013-12-20 13:20:46 +08:00
Jorge Solano Altamirano c32a4dcc07 [media] v4l2: Add VP8 QP min and max controls
The QP range is specific to every codec. These controls enable
VP8 drivers to define the supported range.

Change-Id: I7990aea15034776a33ae54699add244d694bf4ca
CRs-Fixed: 578892
Signed-off-by: Jorge Solano Altamirano <jsolano@codeaurora.org>
2013-12-08 22:55:19 -08:00
Praneeth Paladugu 725fc79b98 msm: vidc: Add support for decoder downscaling
Venus FW supports downscaling for decoder. Venus
FW sends the supported downscaled ratios. Driver
needs to make sure that the scaling is inside the
supported range. This change adds support for decoder
downscaling.

Change-Id: I919e563a6ba64751b3355658bcdbcec9d9ef17eb
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
2013-10-21 19:04:49 -07:00
Praneeth Paladugu bf74bb1412 msm: vidc: Add support for encoder deinterlacing
Venus FW supports deinterlacing for encoder. FW doesn't
support deinterlacing along rotation. Driver needs to
make sure that rotation and deinterlacing are not called
together. This change adds encoder deinterlacing support.

Change-Id: I97545e48190720af243a62b395efdf6a1a1fd15d
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
2013-10-21 18:56:59 -07:00
Arun Menon 5721687dc2 msm: vidc: flush Dynamic Buffers held in driver
A dynamic buffer whose reference is pending
with f/w and queued back by client, will be
held in the driver. During flush, f/w will
release the reference, but driver should not
queue back the buffer to f/w.

Change-Id: If6fea08645a186691d49beaaf7a51a75f4b3121e
Signed-off-by: Arun Menon <avmenon@codeaurora.org>
2013-10-11 15:11:47 -07:00
Arun Menon 83399dcd74 msm: vidc: handle release ref events for Dynamic Buffers
For dynamic output buffers, firmware can hold on to a
output buffer reference after releasing it to
driver. The buffer is marked as read only and sent
back to client. The driver maintains the reference
of this buffer and decrements it when firmware
sends the release reference event. The client is
notified of the release reference event.

Change-Id: Ie3c014af255e09f6dac9b3b853c9994b97d830b6
Signed-off-by: Arun Menon <avmenon@codeaurora.org>
2013-10-11 15:11:47 -07:00
Arun Menon 734f040759 msm: vidc: handle mappings for Dynamic Buffer mode
For dynamic buffer mode, map and register each
buffer during qbuf before sending to firmware,
instead of doing it during prepare_buf. Based on
the buffer ref count, the FBD from the firmware is
unmapped and released back to client or queued back
to firmware.

Change-Id: I91aaf80f0177bcf2e18d3d26b41f5ea131334579
Signed-off-by: Arun Menon <avmenon@codeaurora.org>
2013-10-11 15:11:46 -07:00
Arun Menon ff08555f36 msm: vidc: add set ctrl for Dynamic Buffer mode
The video driver will support Dynamic Buffer mode
for capture port. With Static Buffer mode, all the
output buffers are pre-registered with firmware
before stream-on. In dynamic buffer mode, there will
be no pre-registeration of output buffers with
firmware. This mode is primarily for streaming
use case, to save on video start-up latency.

Change-Id: Iafb9541bd185a474b169dfe17a5a278b930bdad6
Signed-off-by: Arun Menon <avmenon@codeaurora.org>
2013-10-11 15:11:44 -07:00
Maheshwar Ajja 6dcfe01f84 [media] v4l2: Introduce V4L2_QCOM_BUF_FLAG_EOS
Add V4L2_QCOM_BUF_FLAG_EOS in an effort to rename V4L2_BUF_FLAG_EOS,
as this is a vendor extension. Once all clients migrate to the QCOM
variant, V4L2_BUF_FLAG_EOS will be removed.

Change-Id: I3f50d787e8e674f101f4a6e8bfc80237aeea0702
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2013-09-25 00:28:23 -07:00
Maheshwar Ajja 25e27daf8f msm: vidc: add 4cc for hevc hybrid decoder
Change needed to support hevc hybrid decoder
in v4l2 video driver.

Change-Id: I830ccc7c180a3b09d8046873f9fa1daf195f6b65
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
2013-09-20 13:37:23 +05:30
Praneeth Paladugu cffe62af3c msm: vidc: Add support for H.264 LEVEL 5.2
For high resolutions and bit rates, H.264 spec
defined new level. This change adds support to
pass LEVEL 5.2 to FW.

Change-Id: I2298989734450a4f5eee285326afacc4a0836b41
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
2013-09-03 05:31:37 -07:00
Jorge Solano Altamirano fe8ec457ef msm: vidc: Add VP8 version set-up via Profile and Level
VP8 specification does not define level or profile concept but
specify a version. The OpenMax IL version 1.1.2 specify a single
profile and multiple levels for VP8 codec, the levels are indeed the
version numbers. The way of setting the codec version using level
field comes from the definitions at OpenMax IL. Since is a single
profile, level value is use to set-up the version but FW expects the
version value to be pass in the profile field, for that reason
incoming level is copy to FW profile.

Change-Id: I1ddc47b7a25efd1d31bed18e54c2b576427d1564
Signed-off-by: Jorge Solano Altamirano <jsolano@codeaurora.org>
2013-08-07 10:53:52 -07:00
Linux Build Service Account e2516124ec Merge "msm: vidc: Add support to process EBD flags" 2013-07-23 13:10:30 -07:00
Linux Build Service Account 7b8db47288 Merge "msm: wfd: Allow client to provide a tolerance for an acceptable FPS" 2013-07-22 20:26:18 -07:00
Deva Ramasubramanian 1263125221 msm: wfd: Allow client to provide a tolerance for an acceptable FPS
In cases the driver's frameskipping is unacceptable, provide a tuning
parameter that controls the skip frequency.  fpsvariance is the
percentage for the fps that the driver can overshoot by, which allows
for the driver to skip fewer frames.  fpsvariance == 0 forces the driver
to strictly observe the fps, whereas fpsvariance == 100, allows the
driver to completely ignore the fps, allowing to run in a free-running
mode.

Change-Id: Ic25da25807008416246287e2d804d9bd64165320
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
2013-07-19 16:10:42 -07:00
Praneeth Paladugu 76443c8cf4 msm: vidc: Add support to process EBD flags
FW returns UNSUPPORTED_INPUT flags in EBD message if
the bitstream is not supported by Venus FW. This needs
to be informed to client to handle the session properly.

Change-Id: Ib5048f6edb69511c2f4ab6cbf481e11302de00fb
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
2013-07-17 14:02:03 -07:00
Linux Build Service Account 8c48412f59 Merge "msm: vidc: Handle FBD's with ARF flag" 2013-07-16 10:45:15 -07:00
Praneeth Paladugu 0196ccf959 msm: vidc: Handle FBD's with ARF flag
For VP8 some frames are used only for decoding and not for display.
FW sends FBD with DROP_FRAME flag set for this frames.These are queued
to driver by setting DROP_FRAME flag. Clients can decide how to handle
these FBD's.

Change-Id: I278637871e4fdeef8b4089b5e04596de88a543ad
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
2013-07-12 11:01:25 -07:00
Jorge Solano Altamirano 917d4b8244 msm: vidc: Add support for ring buffer and frame assembly
Add capabilities to optimize input buffers memory usage by using a
single ring buffer and at the same time provide to firmware a
contiguous buffer to handle frame assembly internally avoiding memory
copies.

Change-Id: I37badbb86b6990c9bf47a86042290c0a1052b68c
Signed-off-by: Jorge Solano Altamirano <jsolano@codeaurora.org>
2013-07-08 10:21:31 -07:00
Linux Build Service Account 1ce21e5bdb Merge "[media] v4l: Fix conflicting values of two controls" 2013-06-27 18:03:21 -07:00
Deva Ramasubramanian ab84eadb3c [media] v4l: Fix conflicting values of two controls
Due to an errant conflict resolution, V4L2_CID_MPEG_VIDC_VIDEO_H264_\
VUI_TIMING_INFO and V4L2_CID_MPEG_VIDC_VIDEO_SYNC_FRAME_DECODE share
the same constant value.  This commit assigns a new constant to
VUI_TIMING_INFO.

Change-Id: I34170dc1e5de9d5d0ff37d56112cf2b59ea7eefc
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
2013-06-25 10:40:40 -07:00
Linux Build Service Account 38023eeb51 Merge "msm: vidc: Add support for Constrained High Profile" 2013-06-19 13:30:14 -07:00
Deva Ramasubramanian 60a472d3b2 msm: vidc: Add support for V4L2_CID_MPEG_VIDC_SET_PERF_LEVEL
V4L2_CID_MPEG_VIDC_SET_PERF_LEVEL allows for clients to request higher
than normal performance from the core.

Change-Id: I0cd4e56854f35bacd2aa26146e990e0537b3909f
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
2013-06-06 17:29:16 -07:00
Deva Ramasubramanian c723b227cc msm: vidc: Add support for Constrained High Profile
This commit allows encoder clients to choose Constrained High
profile when encoding.

Change-Id: I0860367022bcdfab7d1a410b985f1a95fc6361cc
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
2013-06-06 13:48:23 -07:00
Deva Ramasubramanian bd88e06ebf [media] v4l: Remove vendor specific extension for performance mode
Remove unused control introduced by QCOM for setting performance mode
for the WFD driver. The WFD driver now uses
V4L2_CID_MPEG_VIDC_SET_PERF_LEVEL.

Change-Id: I10c6350209e5910ee3b63b74b51c2ac6a48bb115
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
2013-05-31 12:21:55 -07:00
Linux Build Service Account e738a01a83 Merge "msm: vidc: Add support to send DATA_CORRUPT flag to client" 2013-05-08 22:20:05 -07:00
Praneeth Paladugu 75fc8fd202 msm: vidc: Add support to send DATA_CORRUPT flag to client
When FW did error concealment it sets DATA_CORRUPT flag in
FBD message. This information need to be updated with client
so that client can decide not to display frame.
This change implements the functionality.

Change-Id: I6071427e33612b2786ba1fcbf075b06e7152c1c9
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
2013-05-08 15:37:28 -07:00
Linux Build Service Account 807b416af8 Merge "msm: vidc: Add support for ISDB-T full seg" 2013-05-08 15:10:46 -07:00
Praneeth Paladugu 8efc27358e msm: vidc: Add support for ISDB-T full seg
ISDB-T full seg feature needs ASPECT_RATIO, SEQDISP
and DATA_CORRUPT extradata types for MPEG2 codec.
Add support to convey this information to client.

Change-Id: I94b3e00bfc0a5a45433ac30942d6235ecca0dde4
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
2013-05-08 11:45:10 -07:00
Ashray Kulkarni 5bbe39360f msm: vidc: Add support for IDR flag in v4l2 and video driver
I-frame and IDR-frame for v4l2 clients was same, there was no way to
differentiate them. Adding separate flag for IDR helps clients
differentiate I from IDR.

CRs-fixed: 471371 473864
Change-Id: I4a945d9ad256bfb305a11aace91245f99e241798
Signed-off-by: Ashray Kulkarni <ashrayk@codeaurora.org>
2013-05-07 18:01:16 -07:00
Praneeth Paladugu 0014770f69 msm: vidc: Add support to send DECODEONLY flag to client
For some CODECS, some frames are used only for decoding but
not for display. This information needs to be conveyed through
DECODEONLY flag. Add support to send this flag to client.

Change-Id: I878677bdf98692288887bb3c70e645b13f4abc85
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
2013-05-01 15:12:55 -07:00
Linux Build Service Account d0869a8a44 Merge "msm: vidc: add HEVC kernel definitions" 2013-03-19 23:10:55 -07:00
Arun Menon 05198c6273 msm: vidc: add HEVC kernel definitions
Changes required to support decode of HEVC
bitstreams

Change-Id: Ic0e18815af2547e42fcc3e26c2fa93355061d31f
Signed-off-by: Arun Menon <menon@codeaurora.org>
2013-03-19 15:41:25 -07:00
Ashray Kulkarni 97c94410f9 msm: vidc: Add support for slice delivery mode
Add support to enable slice delivery mode feature. Driver will now be
getting one slice in each buffer. This mode is valid only for h264 and
when slicing is MB based. This will improve the performance in
streaming scenario as client can start streaming each slice instead
of waiting for the entire frame.

Change-Id: Iffc03a951f94a543a905cad4c15ad08b6b5718af
Signed-off-by: Ashray Kulkarni <ashrayk@codeaurora.org>
2013-03-19 02:04:27 -07:00