[libcamera-devel,v2,8/9] android: camera_device: Remove single buffer restriction.

Message ID 20200702213654.2129054-9-kieran.bingham@ideasonboard.com
State Superseded
Headers show
Series
  • android: Multi-stream support
Related show

Commit Message

Kieran Bingham July 2, 2020, 9:36 p.m. UTC
A capture request is no longer limited to a single output buffer.
Remove the limitation, but (for now) keep the check to ensure that
at least one buffer is always provided.

This 'should never happen' so could be a LOG(Fatal) or removed.

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
 src/android/camera_device.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Niklas Söderlund July 2, 2020, 11:33 p.m. UTC | #1
Hi Kieran,

Thanks for your work.

On 2020-07-02 22:36:53 +0100, Kieran Bingham wrote:
> A capture request is no longer limited to a single output buffer.
> Remove the limitation, but (for now) keep the check to ensure that
> at least one buffer is always provided.
> 
> This 'should never happen' so could be a LOG(Fatal) or removed.

I would remove this last line from the commit message, with that fixed

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

> 
> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> ---
>  src/android/camera_device.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index eea8c8c50352..4681fd8af90b 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -1046,7 +1046,7 @@ static FrameBuffer *newFrameBuffer(const buffer_handle_t camera3buffer)
>  
>  int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Request)
>  {
> -	if (camera3Request->num_output_buffers != 1) {
> +	if (camera3Request->num_output_buffers < 1) {
>  		LOG(HAL, Error) << "Invalid number of output buffers: "
>  				<< camera3Request->num_output_buffers;
>  		return -EINVAL;
> -- 
> 2.25.1
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Laurent Pinchart July 3, 2020, 12:41 a.m. UTC | #2
Hi Kieran,

Thank you for the patch.

On Thu, Jul 02, 2020 at 10:36:53PM +0100, Kieran Bingham wrote:
> A capture request is no longer limited to a single output buffer.
> Remove the limitation, but (for now) keep the check to ensure that
> at least one buffer is always provided.
> 
> This 'should never happen' so could be a LOG(Fatal) or removed.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> ---
>  src/android/camera_device.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index eea8c8c50352..4681fd8af90b 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -1046,7 +1046,7 @@ static FrameBuffer *newFrameBuffer(const buffer_handle_t camera3buffer)
>  
>  int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Request)
>  {
> -	if (camera3Request->num_output_buffers != 1) {
> +	if (camera3Request->num_output_buffers < 1) {
>  		LOG(HAL, Error) << "Invalid number of output buffers: "
>  				<< camera3Request->num_output_buffers;

As num_output_buffers is unsigned, it can only be 0 here. I'd write

 		LOG(HAL, Error) << "No output buffers provided";

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

>  		return -EINVAL;
Kieran Bingham July 3, 2020, 11:07 a.m. UTC | #3
Hi Laurent,

On 03/07/2020 01:41, Laurent Pinchart wrote:
> Hi Kieran,
> 
> Thank you for the patch.
> 
> On Thu, Jul 02, 2020 at 10:36:53PM +0100, Kieran Bingham wrote:
>> A capture request is no longer limited to a single output buffer.
>> Remove the limitation, but (for now) keep the check to ensure that
>> at least one buffer is always provided.
>>
>> This 'should never happen' so could be a LOG(Fatal) or removed.
>>
>> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
>> ---
>>  src/android/camera_device.cpp | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
>> index eea8c8c50352..4681fd8af90b 100644
>> --- a/src/android/camera_device.cpp
>> +++ b/src/android/camera_device.cpp
>> @@ -1046,7 +1046,7 @@ static FrameBuffer *newFrameBuffer(const buffer_handle_t camera3buffer)
>>  
>>  int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Request)
>>  {
>> -	if (camera3Request->num_output_buffers != 1) {
>> +	if (camera3Request->num_output_buffers < 1) {
>>  		LOG(HAL, Error) << "Invalid number of output buffers: "
>>  				<< camera3Request->num_output_buffers;
> 
> As num_output_buffers is unsigned, it can only be 0 here. I'd write
> 
>  		LOG(HAL, Error) << "No output buffers provided";


Good point, would you also change the conditional to:

  if (!camera3Request->num_output_buffers) {

or
  if (camera3Request->num_output_buffers == 0) {

in that case?



> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> 
>>  		return -EINVAL;
>
Laurent Pinchart July 3, 2020, 11:08 a.m. UTC | #4
Hi Kieran,

On Fri, Jul 03, 2020 at 12:07:57PM +0100, Kieran Bingham wrote:
> On 03/07/2020 01:41, Laurent Pinchart wrote:
> > On Thu, Jul 02, 2020 at 10:36:53PM +0100, Kieran Bingham wrote:
> >> A capture request is no longer limited to a single output buffer.
> >> Remove the limitation, but (for now) keep the check to ensure that
> >> at least one buffer is always provided.
> >>
> >> This 'should never happen' so could be a LOG(Fatal) or removed.
> >>
> >> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> >> ---
> >>  src/android/camera_device.cpp | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> >> index eea8c8c50352..4681fd8af90b 100644
> >> --- a/src/android/camera_device.cpp
> >> +++ b/src/android/camera_device.cpp
> >> @@ -1046,7 +1046,7 @@ static FrameBuffer *newFrameBuffer(const buffer_handle_t camera3buffer)
> >>  
> >>  int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Request)
> >>  {
> >> -	if (camera3Request->num_output_buffers != 1) {
> >> +	if (camera3Request->num_output_buffers < 1) {
> >>  		LOG(HAL, Error) << "Invalid number of output buffers: "
> >>  				<< camera3Request->num_output_buffers;
> > 
> > As num_output_buffers is unsigned, it can only be 0 here. I'd write
> > 
> >  		LOG(HAL, Error) << "No output buffers provided";
> 
> 
> Good point, would you also change the conditional to:
> 
>   if (!camera3Request->num_output_buffers) {

Yes, I think this is best.

> 
> or
>   if (camera3Request->num_output_buffers == 0) {
> 
> in that case?
> 
> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > 
> >>  		return -EINVAL;

Patch

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index eea8c8c50352..4681fd8af90b 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -1046,7 +1046,7 @@  static FrameBuffer *newFrameBuffer(const buffer_handle_t camera3buffer)
 
 int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Request)
 {
-	if (camera3Request->num_output_buffers != 1) {
+	if (camera3Request->num_output_buffers < 1) {
 		LOG(HAL, Error) << "Invalid number of output buffers: "
 				<< camera3Request->num_output_buffers;
 		return -EINVAL;