ios avcapturesession cmtime

ios - Intentando entender CMTime



avcapturesession (1)

Una estructura CMTime representa un período de tiempo que se almacena como número racional (consulte Referencia de CMTime ). CMTime tiene un value y un campo de timescale , y representa el value/timescale seconds del tiempo value/timescale seconds .

CMTimeMake es una función que devuelve una estructura CMTime , por ejemplo:

CMTime t1 = CMTimeMake(1, 10); // 1/10 second = 0.1 second CMTime t2 = CMTimeMake(2, 1); // 2 seconds CMTime t3 = CMTimeMake(3, 4); // 3/4 second = 0.75 second CMTime t4 = CMTimeMake(6, 8); // 6/8 second = 0.75 second

Los últimos dos valores de tiempo t3 y t4 representan el mismo valor de tiempo, por lo tanto

CMTimeCompare(t3, t4) == 0

Si configura el videoMinFrameDuration de una AVCaptureSession no hace la diferencia si establece

connection.videoMinFrameDuration = CMTimeMake(1, 20); // or connection.videoMinFrameDuration = CMTimeMake(2, 40);

En ambos casos, el intervalo de tiempo mínimo entre cuadros se establece en 1/20 = 0.05 segundos.

He visto algunos examples of CMTime (Tres enlaces separados), pero todavía no lo entiendo. Estoy usando una sesión AVCaptureSession con AVCaptureVideoDataOutput y quiero establecer la velocidad de fotogramas máxima y mínima de la salida. Mi problema es que simplemente no entiendo la estructura CMTime.

Aparentemente CMTimeMake (value, timeScale) debería darme marcos de valores cada 1 / timeScale segundos para un total de valor / timeScale segundos, ¿o estoy obteniendo ese error?

¿Por qué no está documentado en alguna parte para explicar lo que hace?

Si realmente funciona así, ¿cómo conseguiría que tenga una cantidad indefinida de marcos?

Si es realmente simple, lo siento, pero nada ha hecho clic todavía.