in the end, Get Video Frame expects two output parameters, the string containing the thumbnail to send to the caller, and an integer specifying the format.
In the case of Xine Player, xine-lib is linked, and the xine-lib API has facilities to take a picture of the displayed surface, and return it.
I merely suggested scrot because you can run scrot, it writes a file of the exact size specified by the width and height parameters, and you can use PlutoUtils::ReadFileIntoBuffer to send the resulting file to a buffer, for which a pointer can be returned.
-Thom