You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Add a ff_h264_free_context function and call it from the H.264 parser.
This ensures that the parser will no longer leak memory for all SPS/PPS it encounters. Originally committed as revision 18406 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		| @@ -8083,10 +8083,8 @@ int main(void){ | ||||
| #endif /* TEST */ | ||||
|  | ||||
|  | ||||
| static av_cold int decode_end(AVCodecContext *avctx) | ||||
| av_cold ff_h264_free_context(H264Context *h) | ||||
| { | ||||
|     H264Context *h = avctx->priv_data; | ||||
|     MpegEncContext *s = &h->s; | ||||
|     int i; | ||||
|  | ||||
|     av_freep(&h->rbsp_buffer[0]); | ||||
| @@ -8098,6 +8096,14 @@ static av_cold int decode_end(AVCodecContext *avctx) | ||||
|  | ||||
|     for(i = 0; i < MAX_PPS_COUNT; i++) | ||||
|         av_freep(h->pps_buffers + i); | ||||
| } | ||||
|  | ||||
| static av_cold int decode_end(AVCodecContext *avctx) | ||||
| { | ||||
|     H264Context *h = avctx->priv_data; | ||||
|     MpegEncContext *s = &h->s; | ||||
|  | ||||
|     ff_h264_free_context(h); | ||||
|  | ||||
|     MPV_common_end(s); | ||||
|  | ||||
|   | ||||
| @@ -569,4 +569,9 @@ const uint8_t *ff_h264_decode_nal(H264Context *h, const uint8_t *src, int *dst_l | ||||
|  */ | ||||
| int ff_h264_decode_rbsp_trailing(H264Context *h, const uint8_t *src); | ||||
|  | ||||
| /** | ||||
|  * frees any data that may have been allocated in the H264 context like SPS, PPS etc. | ||||
|  */ | ||||
| av_cold ff_h264_free_context(H264Context *h); | ||||
|  | ||||
| #endif /* AVCODEC_H264_H */ | ||||
|   | ||||
| @@ -306,6 +306,7 @@ static void close(AVCodecParserContext *s) | ||||
|     ParseContext *pc = &h->s.parse_context; | ||||
|  | ||||
|     av_free(pc->buffer); | ||||
|     ff_h264_free_context(h); | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user