Basically speaking, the API for cleanly generate screenshot filename based on currently played name and time is not available yet.
In a bit more detail, the variable mpctx->filename is not passed to the vf.c which then not passed to vf_screenshot.c. My current hack involves moving mpctx to global variable and use it in vf_screenshot.c when generating filename. It works but really hack-ish. At least my directory now contains informative screenshot filename instead of shot####.png (which isn’t quite compressed png either).
And no, I don’t know C.