When retrieving frames current API only allows to define wether
the API should block without any timeout or not block at all.
This allows to specify a block timeout via the
MPP_SET_OUTPUT_BLOCK_TIMEOUT control operation.
Change-Id: Id35ad3d48f72881184009f830c406c3a655e1a90
Signed-off-by: LongChair <LongChair@hotmail.com>
Signed-off-by: Randy Li <randy.li@rock-chips.com>
The thread status may be changed before mpp_port_dequeue,
so it is necessary to check it.
Change-Id: Ibe6f33cb7a5ac88bd93da3b0a15d9e0a271d825b
Signed-off-by: timkingh.huang <timkingh.huang@rock-chips.com>
1. Add video codec information and kernel driver device detection code for all
supported chips.
2. Add video codec type and device name detection test
Change-Id: I275c0e616acd80c9a4ad2fee00588479e47a92db
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
if outside doesn't set init qp value, mpp will estimate one init qp
according to resolution and bitrate.
Change-Id: If5415f6a3bfa3f2981ffd4eb044614bf9b035d2f
Signed-off-by: Jung Zhao <jung.zhao@rock-chips.com>
1. Interface change:
Separate normal config into three basic config and several runtime config:
Three basic config -
a. rate control config
b. preprocess config
c. video codec protocol config
More flexible rate control interfaces are provided.
More codec configure interfaces are provided.
Change flag with bitmap is provided for further optimization.
2. Remove old codec config from controller and left rate control module only
Encoder controller only handle user rate control requirement and bit allocation.
Hal hardware encoder only handle qp calculation according given target bit.
Remove all old codec code.
3. Move codec process to hal
Different hardware will share same codec process function in common protocol
directory. And different hardware api will register to same api set. Codec
header generation is moved to separate hal directory.
4. Encoder will return length by task
Encoder will NOT get stream information feedback from controller. All
information required by encoder will be all stored in Task.
5. Add mpp_rc for rate control
Move some common rate control utils to mpp_base.
6. Update mpi_enc_test and mpi_rc_test with new interface
Change-Id: Iebb5e276a48f547167e1bed4673f21cc2f0c8ad5
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Signed-off-by: Lin Kesheng <lks@rock-chips.com>
1. Do not do map when MppBuffer alloc or import. Only map when user requires a
user pointer. This will save a lot of vma resource especially when buffer is
very large.
2. Fix error in mpp_dec thread which use info.ptr directly.
3. Use external fd on import (have risk of external user close fd on hw work)
Change-Id: I28225f6ba28afa3e9475e605bf971348dcef185a
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
1. Use allocator std to replace default normal allocator on all OS.
2. Use wrapper to simplify mpp_allocator.
Change-Id: I13314a9eec3c5b39bc5ad8ddb3033ac2da79ba8f
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Add caller parameter to all mpp_buffer functions.
Change-Id: Ibebd2a31b302988fe1ed480de575189ce57e41a5
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Add new dts node 'vpu_combo' for rk312x,rk3368 video codec devices
compatibility.
Change-Id: I81326d478788ddddfb42e9fe0f4596ab84183934
Signed-off-by: Alpha Lin <alpha.lin@rock-chips.com>
Ion file handle can have a fd_flag equal to 0. So we need to remove the
condition fd_flag == 0 in funciton os_allocator_ion_import.
Change-Id: I0393cf1f69d358308903fc7461efc36158f42358
Signed-off-by: hh <hh@rock-chips.com>
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
1. check input fd is valid
2. dup new fd while imported fd is 0
Change-Id: Ic20d070d1a29e7d37c4f1e75cbef89263c5bc3a9
Signed-off-by: Lin Kesheng <lks@rock-chips.com>
1. read src frame with real width and height of picture,
rather than virtual ones.
2. configure correct hor_stride & ver_stride for hardware
3. support yuv420/420sp for mpi_enc_test demo and video
app, and is compatible for old interface
Change-Id: I1fc23dc2954577b28e25b80a4dcdd1536d45d622
Signed-off-by: Lin Kesheng <lks@rock-chips.com>
1. When run the 32bit library without mmap64 it will fail due to lack of mmap64
symbol. So we do a runtime detection.
2. Fix runtime error of missing getpagesize. Use sysconf(_SC_PAGESIZE) instead.
Change-Id: I6dbeb6d55175a1ebb48d314f3dc691cd029710d1
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
In order to avoid misunderstanding change mpp_err to mpp_log
Change-Id: Id4a0591a0eeb7975fcdf1979b9d45c9b8d076370
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
1. fix compiling error of previous commit
2. can enable drm on x86 pc linux platform
Change-Id: I06271fe0efcaa7de2531c7fb3e21bf9c75781beb
Signed-off-by: Jung Zhao <jung.zhao@rock-chips.com>
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
use fromdos to change file type, remove ^M in code.
Change-Id: I000202dc51fcff57cc0771455baebea595115b1d
Signed-off-by: Lin Kesheng <lks@rock-chips.com>
x86_64 is for simulation debug. It is just for working flow test.
Change-Id: I2d1cb50e52a104e58f6eaf3b27fd9dcf41b9ada6
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
1. enable drm allocator in android
2. modify size calculating when alloc
Todo: wait for new interface of kernel to decide
use whether drm or ion as allocator
Change-Id: Ia6791d91d113b238be77088ae747012fb786d683
Signed-off-by: Jung Zhao <jung.zhao@rock-chips.com>