dd doesn't require either if= or of=. It'll read from stdin (or pipe) if you omit if= and it'll write to stdout happily if you omit of=.
From the man page:
if=FILE - read from FILE instead of stdin.
of=FILE - write to FILE instead of stdout.
So you can do:
cat x.iso | dd oflag=direct bs=4096kB | /dev/sdc