iOS Vid, eo: ¿son posibles más de 4 AVAssetReaders simultáneos?

Me gustaría renderizar múltiples videos H264 mp4 en múltiples vistas al mismo tiempo. El objetivo es leer alrededor de 8 videos cortos, cada uno con un tamaño de 100x100 píxeles y permitirles mostrar su contenido en múltiples posiciones en la pantalla, simultáneamente.

Imagine 24 cuadros en la pantalla, cada uno mostrando un video del grupo de 8 videos.

MoviePlayer no funciona, ya que solo muestra un video a pantalla completa. Un AVPlayer con múltiples AVPlayerLayers es limitado, porque solo La capa creada más recientemente mostrará su contenido en la pantalla (de acuerdo con la documentación y mis pruebas).

Entonces, escribí una breve clase de video y creé una instancia para cada archivo .mp4 en mi paquete, usando AVAssetReader para leer su contenido. En la actualización, cada videograma se recupera, se convierte en un UIImage y se muestra, de acuerdo con la velocidad de fotogramas del video. Además, estas imágenes se almacenan en caché para un acceso rápido en bucle.

- (id) initWithAsset:(AVURLAsset*)asset withTrack:(AVAssetTrack*)track
{
    self = [super init];
    if (self)
    {
        NSDictionary* settings = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA], (NSString*)kCVPixelBufferPixelFormatTypeKey, nil];

        mOutput = [[AVAssetReaderTrackOutput alloc] initWithTrack:track outputSettings:settings];
        mReader = [[AVAssetReader alloc] initWithAsset:asset error:nil];

        [mReader addOutput:mOutput];

        BOOL status = [mReader startReading];
    }

    return self;
}


- (void) update:(double)elapsed
{
  CMSampleBufferRef buffer = [mOutput copyNextSampleBuffer];

  if (buffer) 
  {
    UIImage* image = [self imageFromSampleBuffer:sampleBuffer];
  }

  [...]
}

En realidad, esto funciona bastante bien, pero solo para 4 videos. El quinto nunca aparece. Primero pensé en problemas de memoria, pero lo probé en los siguientes dispositivos:

iphone 3gIphone iPadIpad

uve el mismo comportamiento en cada dispositivo: 4 videos reproduciéndose en un bucle suave, sin diferencias.

Si hubiera sido un problema de memoria, habría esperado que al menos el iPad 2 mostrara 5 o 6 videos (debido a su mejor hardware) o que el 3GS mostrara solo 1 o un bloqueo en alguna parte.

Sin embargo, el simulador muestra todos los videos.

Debugging en el dispositivo muestra que

BOOL status = [mReader startReading]; 

devuelve falso para el video 5,6,7 y 8.

Entonces, ¿hay algún tipo de configuración de hardware (o restricción) que no permita más de 4 AVAssetReaders simultáneos? Porque, realmente no puedo explicar este comportamiento. No creo que todos los dispositivos tengan exactamente la misma cantidad de memoria de video.

Respuestas a la pregunta(3)

Su respuesta a la pregunta