If fd is a pipe, then the pointer must be NULL. If fd ist not a pipe and the pointer is NULL, then the bytes are read from the current offset. (http://linux.die.net/man/2/splice) So it should work.
I tried the example at the link below - the same problem.
Maybe splice is not supported by the OMAP or the Kernel (I'm using 22.214.171.124) - I don't know...