mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
Add avsubtitle_free function.
Originally committed as revision 24185 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
c426562cbf
commit
e1d7c8831c
@ -12,6 +12,10 @@ libavutil: 2009-03-08
|
||||
|
||||
API changes, most recent first:
|
||||
|
||||
2010-07-11 - r24185 - lavc 52.82.0 - avsubtitle_free()
|
||||
Add a function for free the contents of a AVSubtitle generated by
|
||||
avcodec_decode_subtitle.
|
||||
|
||||
2010-07-08 - r24101 - lavu 50.21.0 - pixdesc.h
|
||||
Rename read/write_line() to av_read/write_image_line().
|
||||
|
||||
|
13
ffplay.c
13
ffplay.c
@ -677,18 +677,7 @@ static void blend_subrect(AVPicture *dst, const AVSubtitleRect *rect, int imgw,
|
||||
|
||||
static void free_subpicture(SubPicture *sp)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < sp->sub.num_rects; i++)
|
||||
{
|
||||
av_freep(&sp->sub.rects[i]->pict.data[0]);
|
||||
av_freep(&sp->sub.rects[i]->pict.data[1]);
|
||||
av_freep(&sp->sub.rects[i]);
|
||||
}
|
||||
|
||||
av_free(sp->sub.rects);
|
||||
|
||||
memset(&sp->sub, 0, sizeof(AVSubtitle));
|
||||
avsubtitle_free(&sp->sub);
|
||||
}
|
||||
|
||||
static void video_image_display(VideoState *is)
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include "libavutil/avutil.h"
|
||||
|
||||
#define LIBAVCODEC_VERSION_MAJOR 52
|
||||
#define LIBAVCODEC_VERSION_MINOR 81
|
||||
#define LIBAVCODEC_VERSION_MINOR 82
|
||||
#define LIBAVCODEC_VERSION_MICRO 0
|
||||
|
||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||
@ -3548,13 +3548,22 @@ attribute_deprecated int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtit
|
||||
* due to a potentially very different allocation pattern.
|
||||
*
|
||||
* @param avctx the codec context
|
||||
* @param[out] sub The AVSubtitle in which the decoded subtitle will be stored.
|
||||
* @param[out] sub The AVSubtitle in which the decoded subtitle will be stored, must be
|
||||
freed with avsubtitle_free if *got_sub_ptr is set.
|
||||
* @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero.
|
||||
* @param[in] avpkt The input AVPacket containing the input buffer.
|
||||
*/
|
||||
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
|
||||
int *got_sub_ptr,
|
||||
AVPacket *avpkt);
|
||||
|
||||
/**
|
||||
* Frees all allocated data in the given subtitle struct.
|
||||
*
|
||||
* @param sub AVSubtitle to free.
|
||||
*/
|
||||
void avsubtitle_free(AVSubtitle *sub);
|
||||
|
||||
int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata,
|
||||
int *data_size_ptr,
|
||||
uint8_t *buf, int buf_size);
|
||||
|
@ -689,6 +689,26 @@ int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
|
||||
return ret;
|
||||
}
|
||||
|
||||
void avsubtitle_free(AVSubtitle *sub)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < sub->num_rects; i++)
|
||||
{
|
||||
av_freep(sub->rects[i]->pict.data[0]);
|
||||
av_freep(sub->rects[i]->pict.data[1]);
|
||||
av_freep(sub->rects[i]->pict.data[2]);
|
||||
av_freep(sub->rects[i]->pict.data[3]);
|
||||
av_freep(sub->rects[i]->text);
|
||||
av_freep(sub->rects[i]->ass);
|
||||
av_freep(sub->rects[i]);
|
||||
}
|
||||
|
||||
av_freep(sub->rects);
|
||||
|
||||
memset(sub, 0, sizeof(AVSubtitle));
|
||||
}
|
||||
|
||||
av_cold int avcodec_close(AVCodecContext *avctx)
|
||||
{
|
||||
/* If there is a user-supplied mutex locking routine, call it. */
|
||||
|
Loading…
Reference in New Issue
Block a user