avcodec/cuviddec: backport extradata fixes
This commit is contained in:
		
							parent
							
								
									af2a430bb1
								
							
						
					
					
						commit
						8a2acdc6da
					
				| @ -795,7 +795,7 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx) | ||||
|     CUcontext cuda_ctx = NULL; | ||||
|     CUcontext dummy; | ||||
|     uint8_t *extradata; | ||||
|     uint32_t extradata_size; | ||||
|     int extradata_size; | ||||
|     int ret = 0; | ||||
| 
 | ||||
|     enum AVPixelFormat pix_fmts[3] = { AV_PIX_FMT_CUDA, | ||||
| @ -949,20 +949,21 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx) | ||||
|         const AVCodecParameters *par = avctx->internal->bsf->par_out; | ||||
|         extradata = par->extradata; | ||||
|         extradata_size = par->extradata_size; | ||||
|     } else if (avctx->extradata_size > 0) { | ||||
|     } else { | ||||
|         extradata = avctx->extradata; | ||||
|         extradata_size = avctx->extradata_size; | ||||
|     } | ||||
| 
 | ||||
|     ctx->cuparse_ext = av_mallocz(sizeof(*ctx->cuparse_ext) | ||||
|             + FFMAX(extradata_size - sizeof(ctx->cuparse_ext->raw_seqhdr_data), 0)); | ||||
|             + FFMAX(extradata_size - (int)sizeof(ctx->cuparse_ext->raw_seqhdr_data), 0)); | ||||
|     if (!ctx->cuparse_ext) { | ||||
|         ret = AVERROR(ENOMEM); | ||||
|         goto error; | ||||
|     } | ||||
| 
 | ||||
|     ctx->cuparse_ext->format.seqhdr_data_length = avctx->extradata_size; | ||||
|     memcpy(ctx->cuparse_ext->raw_seqhdr_data, extradata, extradata_size); | ||||
|     if (extradata_size > 0) | ||||
|         memcpy(ctx->cuparse_ext->raw_seqhdr_data, extradata, extradata_size); | ||||
|     ctx->cuparse_ext->format.seqhdr_data_length = extradata_size; | ||||
| 
 | ||||
|     ctx->cuparseinfo.pExtVideoInfo = ctx->cuparse_ext; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user