Hardware will only scale to a certain ratio from the original buffer put using XvShmPutImage(). For intel hardware, this seems to be a maximum of 9x.
For example, play the following video:
and try to scale it to fullscreen.
As Xv knows the original size of the video, (should know) the maximum ratio the hardware can scale at, and the target size, so it should prescale the image before passing it on to the hardware.
This seems to work as expected when using the "textured video" Xv overlay.