mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 20:42:49 +08:00 
			
		
		
		
	ff_get_buffer(): allocate the frame for max(coded,display) dimensions
Needed e.g. for h264 cropping to work properly.
This commit is contained in:
		| @@ -555,10 +555,8 @@ int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) | ||||
|  | ||||
|     switch (avctx->codec_type) { | ||||
|     case AVMEDIA_TYPE_VIDEO: | ||||
|         if (!frame->width) | ||||
|             frame->width               = avctx->width; | ||||
|         if (!frame->height) | ||||
|             frame->height              = avctx->height; | ||||
|         frame->width  = FFMAX(avctx->width, avctx->coded_width); | ||||
|         frame->height = FFMAX(avctx->height, avctx->coded_height); | ||||
|         if (frame->format < 0) | ||||
|             frame->format              = avctx->pix_fmt; | ||||
|         if (!frame->sample_aspect_ratio.num) | ||||
| @@ -702,6 +700,9 @@ do {                                                                    \ | ||||
|  | ||||
|         av_buffer_unref(&dummy_buf); | ||||
|  | ||||
|         frame->width  = avctx->width; | ||||
|         frame->height = avctx->height; | ||||
|  | ||||
|         return 0; | ||||
|  | ||||
| fail: | ||||
| @@ -712,7 +713,14 @@ fail: | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|     return avctx->get_buffer2(avctx, frame, flags); | ||||
|     ret = avctx->get_buffer2(avctx, frame, flags); | ||||
|  | ||||
|     if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { | ||||
|         frame->width  = avctx->width; | ||||
|         frame->height = avctx->height; | ||||
|     } | ||||
|  | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
| int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Anton Khirnov
					Anton Khirnov