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@passwd.hu>
This commit is contained in:
		
							parent
							
								
									87917a3283
								
							
						
					
					
						commit
						30d724bdfd
					
				
							
								
								
									
										4
									
								
								ffplay.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								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"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user