Merge "camera: Add offline post processor service support"
This commit is contained in:
committed by
Gerrit - the friendly Code Review server
commit
b8e4183b95
43
camera/postproc/1.0/IPostProcService.hal
Normal file
43
camera/postproc/1.0/IPostProcService.hal
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above
|
||||||
|
* copyright notice, this list of conditions and the following
|
||||||
|
* disclaimer in the documentation and/or other materials provided
|
||||||
|
* with the distribution.
|
||||||
|
* * Neither the name of The Linux Foundation. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||||
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package vendor.qti.hardware.camera.postproc@1.0;
|
||||||
|
|
||||||
|
import @1.0::types;
|
||||||
|
import @1.0::IPostProcSession;
|
||||||
|
import @1.0::IPostProcServiceCallBacks;
|
||||||
|
|
||||||
|
interface IPostProcService {
|
||||||
|
/** API to get list of postproc types supported */
|
||||||
|
getPostprocTypes() generates (vec<PostProcType> proctypes);
|
||||||
|
/** API to get capabilities of a particular postprocessor. */
|
||||||
|
getCapabilities(PostProcType postprocenum) generates (PostProcCapabilities encCapabilities);
|
||||||
|
/** API to create postproc instance */
|
||||||
|
createPostProcessor(CreateParams createParams, IPostProcServiceCallBacks callback) generates (IPostProcSession postprocinstance);
|
||||||
|
};
|
||||||
37
camera/postproc/1.0/IPostProcServiceCallBacks.hal
Normal file
37
camera/postproc/1.0/IPostProcServiceCallBacks.hal
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above
|
||||||
|
* copyright notice, this list of conditions and the following
|
||||||
|
* disclaimer in the documentation and/or other materials provided
|
||||||
|
* with the distribution.
|
||||||
|
* * Neither the name of The Linux Foundation. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||||
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package vendor.qti.hardware.camera.postproc@1.0;
|
||||||
|
|
||||||
|
import @1.0::types;
|
||||||
|
|
||||||
|
/** These functions needs to be implemented by Client and register Callback pointer */
|
||||||
|
interface IPostProcServiceCallBacks {
|
||||||
|
notifyResult(Error error, PostProcResult result);
|
||||||
|
};
|
||||||
41
camera/postproc/1.0/IPostProcSession.hal
Normal file
41
camera/postproc/1.0/IPostProcSession.hal
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above
|
||||||
|
* copyright notice, this list of conditions and the following
|
||||||
|
* disclaimer in the documentation and/or other materials provided
|
||||||
|
* with the distribution.
|
||||||
|
* * Neither the name of The Linux Foundation. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||||
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package vendor.qti.hardware.camera.postproc@1.0;
|
||||||
|
|
||||||
|
import @1.0::types;
|
||||||
|
import @1.0::IPostProcServiceCallBacks;
|
||||||
|
|
||||||
|
interface IPostProcSession {
|
||||||
|
/** API to provide parameters for postprocessing. requestId given will be used in notifyresult in callback API.
|
||||||
|
It is expected that client will keep this value to associate which handle to free. */
|
||||||
|
process(ProcessRequestParams postprocParam) generates (uint32_t requestId, Error error);
|
||||||
|
/** API to abort all the encode requests in Queue */
|
||||||
|
abort() generates (Error error);
|
||||||
|
};
|
||||||
168
camera/postproc/1.0/types.hal
Normal file
168
camera/postproc/1.0/types.hal
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above
|
||||||
|
* copyright notice, this list of conditions and the following
|
||||||
|
* disclaimer in the documentation and/or other materials provided
|
||||||
|
* with the distribution.
|
||||||
|
* * Neither the name of The Linux Foundation. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||||
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package vendor.qti.hardware.camera.postproc@1.0;
|
||||||
|
|
||||||
|
/** Camera metadata is provided as byte array. */
|
||||||
|
typedef vec<uint8_t> CameraMetadata;
|
||||||
|
|
||||||
|
/** This is generic Error enum */
|
||||||
|
enum Error : int32_t
|
||||||
|
{
|
||||||
|
/** Success */
|
||||||
|
NONE = 0,
|
||||||
|
/** StreamId out of range */
|
||||||
|
BAD_STREAMID = 1,
|
||||||
|
/** Maximum Sessions are in Queue */
|
||||||
|
MAX_SESSIONS = 2,
|
||||||
|
/** Handle pointer is invalid */
|
||||||
|
INVALID_HANDLE = 3,
|
||||||
|
/** postproc Session Create Failed */
|
||||||
|
SESSION_NOT_INIT = 4,
|
||||||
|
/** Malloc failed */
|
||||||
|
MALLOC_FAIL = 5,
|
||||||
|
/** Post Processor failed */
|
||||||
|
POSTPROC_FAIL = 6,
|
||||||
|
/** Device is in bad state */
|
||||||
|
DEVICE_BAD_STATE = 7,
|
||||||
|
/** CB Pointer is invalid */
|
||||||
|
INVALID_CALLBACK_PTR = 8,
|
||||||
|
/** PostProc Aborted */
|
||||||
|
ABORT = 9,
|
||||||
|
/** Unsupported Resolution */
|
||||||
|
UNSUPPORTED_RESOLUTION = 10,
|
||||||
|
};
|
||||||
|
|
||||||
|
/** PostProcessor types supported by the service */
|
||||||
|
enum PostProcType : int32_t
|
||||||
|
{
|
||||||
|
/** YUV2Jpeg Conversion */
|
||||||
|
JPEG = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* This struct contains WxH parameters */
|
||||||
|
struct Resolution
|
||||||
|
{
|
||||||
|
/** Width */
|
||||||
|
uint32_t width;
|
||||||
|
/** Height */
|
||||||
|
uint32_t height;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** This struct contains JPEG postproc capabilities.
|
||||||
|
Dynamic update of resolution is supported. */
|
||||||
|
struct JpegCapabilities
|
||||||
|
{
|
||||||
|
/** Max number of streams supported */
|
||||||
|
uint32_t maxStreamsSupported;
|
||||||
|
/** Max Resolution supported */
|
||||||
|
Resolution maxResoultion;
|
||||||
|
/** Min Resolution supported */
|
||||||
|
Resolution minResolution;
|
||||||
|
/** Gralloc Formats supported */
|
||||||
|
vec<uint32_t> formats;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** This structure contains generic PostProc capabilities info.
|
||||||
|
This will be updated based on different postproc features supported */
|
||||||
|
struct PostProcCapabilities
|
||||||
|
{
|
||||||
|
/** JPEG stream capabilities */
|
||||||
|
JpegCapabilities jpegStream;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** This struct contains Input and output Buffer generic properties */
|
||||||
|
struct BufferParams
|
||||||
|
{
|
||||||
|
/** Gralloc Format for handle */
|
||||||
|
uint32_t format;
|
||||||
|
/** Width */
|
||||||
|
uint32_t width;
|
||||||
|
/** Height */
|
||||||
|
uint32_t height;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** This struct contains parameters for postproc initialization */
|
||||||
|
struct CreateParams
|
||||||
|
{
|
||||||
|
/** Postproc type value */
|
||||||
|
PostProcType postProcTypeVal;
|
||||||
|
/** Parameters for input */
|
||||||
|
vec<BufferParams> input;
|
||||||
|
/** Parameters for output */
|
||||||
|
vec<BufferParams> output;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Client can dynamically choose to update resolution for JPEG encode.
|
||||||
|
If Client choose to use same resolution, then same parameters as CreateParams can be used */
|
||||||
|
struct HandleParams
|
||||||
|
{
|
||||||
|
/** Gralloc Format for handle */
|
||||||
|
uint32_t format;
|
||||||
|
/** Width */
|
||||||
|
uint32_t width;
|
||||||
|
/** Height */
|
||||||
|
uint32_t height;
|
||||||
|
/** handle pointer */
|
||||||
|
handle bufHandle;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** This structure contains parameters given during postproc process request */
|
||||||
|
struct ProcessRequestParams
|
||||||
|
{
|
||||||
|
/** Array of input handles */
|
||||||
|
vec<HandleParams> input;
|
||||||
|
/** Arry of output handles. */
|
||||||
|
vec<HandleParams> output;
|
||||||
|
/** Stream id, This indicates which index parameters provided during Init to use for encoding. */
|
||||||
|
uint32_t streamId;
|
||||||
|
/** Metadata related to Camera */
|
||||||
|
CameraMetadata metadata;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** JPEG PostProc Result structure */
|
||||||
|
struct JpegResult
|
||||||
|
{
|
||||||
|
/** Encoded frame size */
|
||||||
|
uint32_t frameSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** This is generic result structure.
|
||||||
|
Based on PostProcType, corresponding result structre will be used. */
|
||||||
|
struct PostProcResult
|
||||||
|
{
|
||||||
|
/** requestId given to client as part of process API */
|
||||||
|
uint32_t requestId;
|
||||||
|
/** stream */
|
||||||
|
uint32_t streamId;
|
||||||
|
/** Postproc Type Value */
|
||||||
|
PostProcType postProcTypeVal;
|
||||||
|
/** JPEG Result structure */
|
||||||
|
JpegResult jpegResult;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user