mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-03 14:32:16 +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:
parent
c81185a183
commit
15861962a7
@ -8083,10 +8083,8 @@ int main(void){
|
|||||||
#endif /* TEST */
|
#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;
|
int i;
|
||||||
|
|
||||||
av_freep(&h->rbsp_buffer[0]);
|
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++)
|
for(i = 0; i < MAX_PPS_COUNT; i++)
|
||||||
av_freep(h->pps_buffers + 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);
|
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);
|
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 */
|
#endif /* AVCODEC_H264_H */
|
||||||
|
@ -306,6 +306,7 @@ static void close(AVCodecParserContext *s)
|
|||||||
ParseContext *pc = &h->s.parse_context;
|
ParseContext *pc = &h->s.parse_context;
|
||||||
|
|
||||||
av_free(pc->buffer);
|
av_free(pc->buffer);
|
||||||
|
ff_h264_free_context(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user