iphonevideocamerapreset

canSetSessionPreset:AVCaptureSessionPreset1920x1080 returns 'yes' on iPhone 4


I want to check if the iPhone the user has supports full HD video capturing. I found out, that I should ask the AV session, if

avSession = [[AVCaptureSession alloc] init];
    [avSession beginConfiguration];
    if ([avSession canSetSessionPreset:AVCaptureSessionPreset1920x1080]) {
        avSession.sessionPreset = AVCaptureSessionPreset1920x1080;
        NSLog(@"FULLHD");
    } else {
        avSession.sessionPreset = AVCaptureSessionPreset1280x720;
        NSLog(@"HDREADY");
    }
    [avSession commitConfiguration];

This works fine on iPhone 5 (which indeed supports full HD capturing), but on iPhone 4 tries too to set the preset, but clearly fails. What am I doing wrong?

Thanks in advance, Matthias


Solution

  • Did you call canSetSettingPreset after add an input to the capture session?

    [captureSession addInput:captureInput]; // <--- you should add an input before canSetSessionPreset
    [captureSession addOutput:captureOutput];
    
    
    if( [captureSession canSetSessionPreset:AVCaptureSessionPreset1280x720] == YES ) {
        captureSession.sessionPreset = AVCaptureSessionPresetiFrame1280x720;
    } else {
        captureSession.sessionPreset = AVCaptureSessionPreset640x480;
    }