KMP CIImage processing delay

I have a kotlin multiplatform project that is having issues with processing CIImages that are passed from swift down to the kotlin defined processing functions. for every frame I get from the camera in swift, I create a CIImage and pass it to kotlin for processing. But I noticed that when I send the images to the function in kotlin, there are massive delays between some of the print statements. it will send ~16 images, and then hang for ~8 seconds. Then send another ~12 images and hangs again, and so on. This pattern continues on forever.

Kotlin setup:
I have defined a function which accepts a CIImage as a parameter and prints out a debug statement to show it has been called.

fun processCIImage(data: CIImage) {
        println("ci image received")
    }

Swift setup:

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
        DispatchQueue.main.async {
            limiter.run {
                guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }
                let image = CIImage(cvPixelBuffer: imageBuffer)
                Core().processCIImage(data: image)
            }
        }
    }

I created this limiter class to print out the delta time between calls. This is the output I get when running this code and calling the kotlin function `Core().processCIImage(data: CIImage):

frame: 1, delta: 0, fps: 0
ci image received
frame: 2, delta: 0.024065458332188427, fps: 83.10522665835221
ci image received
frame: 3, delta: 0.03552083333488554, fps: 50.34648167632929
ci image received
frame: 4, delta: 0.03438262501731515, fps: 42.56698422551812
ci image received
frame: 5, delta: 0.033966916671488434, fps: 39.081824639169994
ci image received
frame: 6, delta: 0.03307925001718104, fps: 37.26336790113378
ci image received
frame: 7, delta: 0.033804458333179355, fps: 35.93031827049075
ci image received
frame: 8, delta: 0.03049333329545334, fps: 35.50593928933542
ci image received
frame: 9, delta: 0.03332808334380388, fps: 34.7970318084095
ci image received
frame: 10, delta: 0.03309083334170282, fps: 34.277840175472114
ci image received
frame: 11, delta: 0.0333632500260137, fps: 33.836072430536596
ci image received
frame: 12, delta: 0.033703124965541065, fps: 33.444377180257106
ci image received
frame: 13, delta: 0.03013116668444127, fps: 33.42501643782435
ci image received
frame: 14, delta: 0.040016749990172684, fps: 32.638064841930586
ci image received
frame: 15, delta: 0.033750750008039176, fps: 32.41855378547333
ci image received
frame: 16, delta: 7.665449666674249, fps: 1.9684681140138913
ci image received
frame: 17, delta: 0.033328666642773896, fps: 2.0829562973828506
ci image received
frame: 18, delta: 0.03318166668759659, fps: 2.1965526793762424
ci image received
frame: 19, delta: 0.031978208338841796, fps: 2.3095708677426714
ci image received
frame: 20, delta: 0.033464291656855494, fps: 2.4212779729051275
ci image received
frame: 21, delta: 0.0331010416848585, fps: 2.5321932320722174
ci image received
frame: 22, delta: 0.03338695829734206, fps: 2.642138414725332
ci image received
frame: 23, delta: 0.033686083334032446, fps: 2.751105634213186
ci image received
frame: 24, delta: 0.03312862501479685, fps: 2.859388285405123
ci image received
frame: 25, delta: 0.033793416689150035, fps: 2.966585332114358
ci image received
frame: 26, delta: 0.0331356666283682, fps: 3.0731652080705274
ci image received
frame: 27, delta: 0.03307195834349841, fps: 3.178937225347891
ci image received
frame: 28, delta: 0.03333212499273941, fps: 3.283788442220316
ci image received
frame: 29, delta: 0.03370475000701845, fps: 3.3876757902522026
ci image received
frame: 30, delta: 0.03295904165133834, fps: 3.4910511026142457
ci image received
frame: 31, delta: 9.532600041711703, fps: 1.7102504178312385
ci image received
frame: 32, delta: 0.03300095832673833, fps: 1.7622114340012962
ci image received
frame: 33, delta: 0.03341129166074097, fps: 1.8139430006741595
ci image received
frame: 34, delta: 0.033299374976195395, fps: 1.8654963718997424
ci image received
frame: 35, delta: 0.033299916656687856, fps: 1.9168616571311767
ci image received
frame: 36, delta: 0.03337029169779271, fps: 1.9680323306104146
ci image received
frame: 37, delta: 0.03349929163232446, fps: 2.0190024509039723
ci image received
frame: 38, delta: 0.033282625023275614, fps: 2.0698109514338787
ci image received
frame: 39, delta: 0.032878041674848646, fps: 2.1204822491341817
ci image received
frame: 40, delta: 0.03380879166070372, fps: 2.170863059530636
ci image received
frame: 41, delta: 0.033442541665863246, fps: 2.2211033890413874
ci image received
frame: 42, delta: 0.03317870834143832, fps: 2.271194441789495
ci image received
frame: 43, delta: 0.03304187499452382, fps: 2.321123171350348
ci image received
frame: 44, delta: 0.03362212498905137, fps: 2.370799972093702
ci image received
frame: 45, delta: 0.03322691668290645, fps: 2.4203485425099416
ci image received

the 16th frame took 7.6 seconds to get called. And this continues on what seems like an inconsistent pattern of delays. As soon as I remove the function call to kotlin Core().processCIImage(data: image) the print statements all execute normally with no delays.

Any thoughts on what this might be caused by?