fix: Fix maxImages have been acquired error in Frame Processor (#2430)
				
					
				
			* fix: maxImages when frameprocessor error * fix: Use `try`/`finally` for safety --------- Co-authored-by: Marc Rousavy <me@mrousavy.com>
This commit is contained in:
		@@ -110,20 +110,22 @@ class VideoPipeline(
 | 
			
		||||
        Log.i(TAG, "ImageReader::onImageAvailable!")
 | 
			
		||||
        val image = reader.acquireNextImage() ?: return@setOnImageAvailableListener
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
        // TODO: Get correct orientation and isMirrored
 | 
			
		||||
        val frame = Frame(image, image.timestamp, Orientation.PORTRAIT, isMirrored)
 | 
			
		||||
        frame.incrementRefCount()
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
          frameProcessor?.call(frame)
 | 
			
		||||
 | 
			
		||||
          if (hasOutputs) {
 | 
			
		||||
            // If we have outputs (e.g. a RecordingSession), pass the frame along to the OpenGL pipeline
 | 
			
		||||
            imageWriter!!.queueInputImage(image)
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          frame.decrementRefCount()
 | 
			
		||||
        } catch (e: Throwable) {
 | 
			
		||||
          Log.e(TAG, "Failed to call Frame Processor!", e)
 | 
			
		||||
          Log.e(TAG, "FrameProcessor/ImageReader pipeline threw an error!", e)
 | 
			
		||||
          throw e
 | 
			
		||||
        } finally {
 | 
			
		||||
          frame.decrementRefCount()
 | 
			
		||||
        }
 | 
			
		||||
      }, CameraQueues.videoQueue.handler)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user