This is needed to get color primaries, transfer and matrix values from
avc devoder.
Issue: FP2P-432
Issue: FP2P-435
Change-Id: Id1d375c9f6e1c05fc9b8336162bb11cc12d6dea2
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>
Add support for setting priority to each video session in driver.
Change-Id: Iec9fa69ee42959a93d18fdb59eff1f12c53de235
Signed-off-by: Ashray Kulkarni <ashrayk@codeaurora.org>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Change needed to support hevc hybrid decoder
in v4l2 video driver.
Change-Id: I830ccc7c180a3b09d8046873f9fa1daf195f6b65
Signed-off-by: Maheshwar Ajja <majja@codeaurora.org>
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>
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>
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>
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>
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>
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>
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>
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>
This commit allows encoder clients to choose Constrained High
profile when encoding.
Change-Id: I0860367022bcdfab7d1a410b985f1a95fc6361cc
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
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>
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>
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>
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>
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>
Changes required to support decode of HEVC
bitstreams
Change-Id: Ic0e18815af2547e42fcc3e26c2fa93355061d31f
Signed-off-by: Arun Menon <menon@codeaurora.org>
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>