[FFmpeg-cvslog] ffplay: detect when the created overlay buffers are not valid for the wanted overlay height

Marton Balint git at videolan.org
Sat Jun 1 23:58:45 CEST 2013


ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Wed May 29 23:21:14 2013 +0200| [30d724bdfde53ebe1cc7e714ba65e45f7ed38baa] | committer: 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: Marton Balint <cus at passwd.hu>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=30d724bdfde53ebe1cc7e714ba65e45f7ed38baa
---

 ffplay.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/ffplay.c b/ffplay.c
index 125b7c2..03ee51e 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -1504,6 +1504,7 @@ display:
 static void alloc_picture(VideoState *is)
 {
     VideoPicture *vp;
+    int64_t bufferdiff;
 
     vp = &is->pictq[is->pictq_windex];
 
@@ -1515,7 +1516,8 @@ static void alloc_picture(VideoState *is)
     vp->bmp = SDL_CreateYUVOverlay(vp->width, vp->height,
                                    SDL_YV12_OVERLAY,
                                    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
          * overlay hardware is unable to support the requested size. */
         fprintf(stderr, "Error: the video system does not support an image\n"



More information about the ffmpeg-cvslog mailing list