Well... next steps are to reverse engineer the movie section; for example, enabling bitrate may troubleshoot buffer issues.
Here's the code which should do the same as Smeangol's description (not tested). Since you have the camera in your hands (and you can do tests much faster than I could via instant messaging), play with this code and improve it.
void run_test()
{
gui_stop_menu();
msleep(1000);
set_shooting_mode(SHOOTMODE_MOVIE);
msleep(1000);
call("MovieStart");
msleep(3000);
call("MovieEnd");
msleep(1000);
set_shooting_mode(SHOOTMODE_M);
}
void xx_test(void* priv)
{
gui_stop_menu();
task_create("run_test", 0x1c, 0, run_test, 0);
}