Movimento por um único quadro no CMTime e AVFoundation

Estou tentando reproduzir um vídeo com o AVFoundation. Estou usando o código a seguir para um botão que avança a reprodução em um quadr

Funciona intermitentemente, em algumas execuções ele faz a coisa certa e avança um quadro, mas na maioria das vezes terei que pressionar o botão 3 ou 4 vezes antes de avançar um quadr

Isso me faz pensar que é algum tipo de problema de precisão, mas não consigo descobrir o que é. Cada vez que é executado, o novo CMTime parece estar avançando na mesma quantidad

Minha outra teoria é que isso pode ser causado pelo fato de o currentTime não estar definido como um limite de quadro exato na minha taxa de quadros (causada pela busca pelo vídeo). Mas não sei como "encaixar" no quadro mais próximo na minha taxa de quadro

AVAssetTrack *videoTrack = ...;
Float64 frameRate = [videoTrack nominalFrameRate];

CMTime currentTime = [self.playerItem currentTime];
CMTime oneFrame = CMTimeMakeWithSeconds(1.0 / frameRate, currentTime.timescale);
CMTime added = CMTimeAdd(currentTime, oneFrame);

[self.player seekToTime:added toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];

Obrigado pela ajuda

questionAnswers(2)

yourAnswerToTheQuestion