Captura de 1080p a 30 fps desde logitech c920 con openCV 2.4.3

Estoy intentando capturar el flujo de video de mi Logitech C920 en OpenCV. Con Labview puedo acceder a una transmisión MJPG a 30 fps 1080p. En Opencv estoy limitado a 5fps o 640x480.

Aquí está el código relevante para la configuración de la cámara:

this->camRef.set(CV_CAP_PROP_FRAME_WIDTH, 1920);
this->camRef.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);
this->camRef.set(CV_CAP_PROP_FOURCC,CV_FOURCC('M','J','P','G'));

Todos estos devuelven 1, pero obtengo un flujo de 5 fps de 1080p que corresponde al flujo de YUY2.
Si añado la siguiente línea:

this->camRef.set(CV_CAP_PROP_FPS, 30);

Esto devuelve 0. Obtengo una transmisión de 30 fps a 640x480. Para mí, parece que la configuración MJPG no se acepta, pero no sé qué hacer o cómo solucionarlo.

EDITAR: Lo siguiente bloquea el programa.

 this->camRef.read(this->image);
 std::cout<< this->camRef.get(CV_CAP_PROP_FOURCC)                            << std::endl;
 std::cout<< this->camRef.set(CV_CAP_PROP_FRAME_WIDTH, config.width)         << std::endl;
 std::cout<< this->camRef.set(CV_CAP_PROP_FRAME_HEIGHT, config.height)       << std::endl;
 std::cout<< this->camRef.set(CV_CAP_PROP_FOURCC,CV_FOURCC('M','J','P','G')) << std::endl;
 std::cout<< this->camRef.get(CV_CAP_PROP_FOURCC)                            << std::endl;

Luego en mi código de ejecución tengo lo siguiente:

void camera::run()
{
    while(true)
    {
        if(this->camRef.read(this->image) == 0)
        {
           if(this->capture)
            {
                cv::imwrite(fileName,this->image);
                this->count++;
            }
        }
        msleep(15);
    }
}

EDIT2: La solución es configurar el códec fourCC antes de configurar la altura y el ancho de la cámara.

Respuestas a la pregunta(3)

Su respuesta a la pregunta