You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	move decoder initialization in separate function, earlier failure detection
Originally committed as revision 15929 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		| @@ -774,16 +774,17 @@ static int svq3_decode_slice_header(H264Context *h) | |||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| static int svq3_decode_frame(AVCodecContext *avctx, | static int svq3_decode_init(AVCodecContext *avctx) | ||||||
|                              void *data, int *data_size, |  | ||||||
|                              const uint8_t *buf, int buf_size) |  | ||||||
| { | { | ||||||
|     MpegEncContext *const s = avctx->priv_data; |     MpegEncContext *const s = avctx->priv_data; | ||||||
|     H264Context *const h = avctx->priv_data; |     H264Context *const h = avctx->priv_data; | ||||||
|     int m, mb_type; |     int m; | ||||||
|     unsigned char *extradata; |     unsigned char *extradata; | ||||||
|     unsigned int size; |     unsigned int size; | ||||||
|  |  | ||||||
|  |     if (decode_init(avctx) < 0) | ||||||
|  |         return -1; | ||||||
|  |  | ||||||
|     s->flags  = avctx->flags; |     s->flags  = avctx->flags; | ||||||
|     s->flags2 = avctx->flags2; |     s->flags2 = avctx->flags2; | ||||||
|     s->unrestricted_mv = 1; |     s->unrestricted_mv = 1; | ||||||
| @@ -880,6 +881,17 @@ static int svq3_decode_frame(AVCodecContext *avctx, | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static int svq3_decode_frame(AVCodecContext *avctx, | ||||||
|  |                              void *data, int *data_size, | ||||||
|  |                              const uint8_t *buf, int buf_size) | ||||||
|  | { | ||||||
|  |     MpegEncContext *const s = avctx->priv_data; | ||||||
|  |     H264Context *const h = avctx->priv_data; | ||||||
|  |     int m, mb_type; | ||||||
|  |  | ||||||
|     /* special case for last picture */ |     /* special case for last picture */ | ||||||
|     if (buf_size == 0) { |     if (buf_size == 0) { | ||||||
|         if (s->next_picture_ptr && !s->low_delay) { |         if (s->next_picture_ptr && !s->low_delay) { | ||||||
| @@ -1030,7 +1042,7 @@ AVCodec svq3_decoder = { | |||||||
|     CODEC_TYPE_VIDEO, |     CODEC_TYPE_VIDEO, | ||||||
|     CODEC_ID_SVQ3, |     CODEC_ID_SVQ3, | ||||||
|     sizeof(H264Context), |     sizeof(H264Context), | ||||||
|     decode_init, |     svq3_decode_init, | ||||||
|     NULL, |     NULL, | ||||||
|     decode_end, |     decode_end, | ||||||
|     svq3_decode_frame, |     svq3_decode_frame, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user