avcodec/qoidec: implement FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM
This commit is contained in:
		
							parent
							
								
									f21899db7d
								
							
						
					
					
						commit
						3c16f9eb0d
					
				| @ -28,19 +28,18 @@ | ||||
| static int qoi_decode_frame(AVCodecContext *avctx, AVFrame *p, | ||||
|                             int *got_frame, AVPacket *avpkt) | ||||
| { | ||||
|     const uint8_t *buf = avpkt->data; | ||||
|     int ret, buf_size = avpkt->size; | ||||
|     int width, height, channels, space, run = 0; | ||||
|     uint8_t index[64][4] = { 0 }; | ||||
|     uint8_t px[4] = { 0, 0, 0, 255 }; | ||||
|     GetByteContext gb; | ||||
|     uint8_t *dst; | ||||
|     uint64_t len; | ||||
|     int ret; | ||||
| 
 | ||||
|     if (buf_size < 20) | ||||
|     if (avpkt->size < 20) | ||||
|         return AVERROR_INVALIDDATA; | ||||
| 
 | ||||
|     bytestream2_init(&gb, buf, buf_size); | ||||
|     bytestream2_init(&gb, avpkt->data, avpkt->size); | ||||
|     bytestream2_skip(&gb, 4); | ||||
|     width  = bytestream2_get_be32(&gb); | ||||
|     height = bytestream2_get_be32(&gb); | ||||
| @ -61,6 +60,9 @@ static int qoi_decode_frame(AVCodecContext *avctx, AVFrame *p, | ||||
|     default: return AVERROR_INVALIDDATA; | ||||
|     } | ||||
| 
 | ||||
|     if (avctx->skip_frame >= AVDISCARD_ALL) | ||||
|         return avpkt->size; | ||||
| 
 | ||||
|     if ((ret = ff_thread_get_buffer(avctx, p, 0)) < 0) | ||||
|         return ret; | ||||
| 
 | ||||
| @ -109,7 +111,7 @@ static int qoi_decode_frame(AVCodecContext *avctx, AVFrame *p, | ||||
| 
 | ||||
|     *got_frame   = 1; | ||||
| 
 | ||||
|     return buf_size; | ||||
|     return avpkt->size; | ||||
| } | ||||
| 
 | ||||
| const FFCodec ff_qoi_decoder = { | ||||
| @ -118,5 +120,6 @@ const FFCodec ff_qoi_decoder = { | ||||
|     .p.type         = AVMEDIA_TYPE_VIDEO, | ||||
|     .p.id           = AV_CODEC_ID_QOI, | ||||
|     .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS, | ||||
|     .caps_internal  = FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM, | ||||
|     FF_CODEC_DECODE_CB(qoi_decode_frame), | ||||
| }; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user