vídeo congela no comutador da câmera com o AVFoundation

Fiz um aplicativo com um recurso para capturar e salvar vídeo. Eu usei o AVFoundation para isso e AVCam da Apple tem sido meu guia.

Espero poder esclarecer:
Tudo funciona bem até eu lançar o videoViewController que lida com o AVCamCaptureManager pela primeira vez (na AVCam, seria AVCamViewController). Depois disso, quando eu crio novamente, o vídeo congela logo após a troca da câmera. Mesmo executar novamente não ajudará, nem limpará nem reinicializará o dispositivo. (Às vezes, uma das coisas ajuda, mas não é uma regra

Libro o videoViewController quando não for necessário para economizar memóri

O código para mudar a câmera é basicamente o mesmo da AVCam:

NSError *error;
AVCaptureDeviceInput *newVideoInput;
AVCaptureDevicePosition position = currentVideoInput.device.position;

if (position == AVCaptureDevicePositionBack)
    newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:frontFacingCamera error:&error];
else if (position == AVCaptureDevicePositionFront)
    newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error];

if (newVideoInput != nil) {
    [session beginConfiguration];
    [session removeInput:currentVideoInput];
    if ([session canAddInput:newVideoInput]) {
        [session addInput:newVideoInput];
        [self setVideoInput:newVideoInput];
} else {
    [session addInput:currentVideoInput];
}
    [session commitConfiguration];
    [newVideoInput release];
} else if (error) {
    NSLog(@"%@",[error localizedDescription]);
}

Code com o qual demiti o videoView

[self.videoViewController.view removeFromSuperview];
self.videoViewController = nil;

Minha "solução alternativa" atual é simplesmente deixar como está, mesmo que eu não precis

lguém pode explicar por que isso está acontecendo e como resolvê-l

EDIT: resolvido
omo W Dyson apontou em sua resposta, eu deveria ter parado a sessão antes de liberar meu videoViewController da seguinte forma:

[[[self.videoViewController captureManager] session] stopRunning];
[self.videoViewController.view removeFromSuperview];
self.videoViewController = nil;

Obrigado W. Dyson.