Commit 30d724bd authored by Marton Balint's avatar Marton Balint

ffplay: detect when the created overlay buffers are not valid for the wanted overlay height

Fixes cases when the picture height was bigger than the maximum supported
overlay height...
Signed-off-by: 's avatarMarton Balint <cus@passwd.hu>
parent 87917a32
...@@ -1504,6 +1504,7 @@ display: ...@@ -1504,6 +1504,7 @@ display:
static void alloc_picture(VideoState *is) static void alloc_picture(VideoState *is)
{ {
VideoPicture *vp; VideoPicture *vp;
int64_t bufferdiff;
vp = &is->pictq[is->pictq_windex]; vp = &is->pictq[is->pictq_windex];
...@@ -1515,7 +1516,8 @@ static void alloc_picture(VideoState *is) ...@@ -1515,7 +1516,8 @@ static void alloc_picture(VideoState *is)
vp->bmp = SDL_CreateYUVOverlay(vp->width, vp->height, vp->bmp = SDL_CreateYUVOverlay(vp->width, vp->height,
SDL_YV12_OVERLAY, SDL_YV12_OVERLAY,
screen); screen);
if (!vp->bmp || vp->bmp->pitches[0] < vp->width) { bufferdiff = vp->bmp ? FFMAX(vp->bmp->pixels[0], vp->bmp->pixels[1]) - FFMIN(vp->bmp->pixels[0], vp->bmp->pixels[1]) : 0;
if (!vp->bmp || vp->bmp->pitches[0] < vp->width || bufferdiff < vp->height * vp->bmp->pitches[0]) {
/* SDL allocates a buffer smaller than requested if the video /* SDL allocates a buffer smaller than requested if the video
* overlay hardware is unable to support the requested size. */ * overlay hardware is unable to support the requested size. */
fprintf(stderr, "Error: the video system does not support an image\n" fprintf(stderr, "Error: the video system does not support an image\n"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment