mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-24 12:09:55 +00:00
lavc: add avcodec_free_frame().
Since an AVFrame now has malloced members (extended_data), it must have a destructor.
This commit is contained in:
parent
b437cec143
commit
a42aadabc6
@ -13,6 +13,10 @@ libavutil: 2011-04-18
|
||||
|
||||
API changes, most recent first:
|
||||
|
||||
2012-09-23 - xxxxxxx - lavc 54.28.0 - avcodec.h
|
||||
Add avcodec_free_frame(). This function must now
|
||||
be used for freeing an AVFrame.
|
||||
|
||||
2012-09-12 - xxxxxxx - lavu 51.41.0 - audioconvert.h
|
||||
Added AV_CH_LOW_FREQUENCY_2 channel mask value.
|
||||
|
||||
|
@ -3257,7 +3257,7 @@ int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src);
|
||||
|
||||
/**
|
||||
* Allocate an AVFrame and set its fields to default values. The resulting
|
||||
* struct can be deallocated by simply calling av_free().
|
||||
* struct must be freed using avcodec_free_frame().
|
||||
*
|
||||
* @return An AVFrame filled with default values or NULL on failure.
|
||||
* @see avcodec_get_frame_defaults
|
||||
@ -3271,6 +3271,18 @@ AVFrame *avcodec_alloc_frame(void);
|
||||
*/
|
||||
void avcodec_get_frame_defaults(AVFrame *frame);
|
||||
|
||||
/**
|
||||
* Free the frame and any dynamically allocated objects in it,
|
||||
* e.g. extended_data.
|
||||
*
|
||||
* @param frame frame to be freed. The pointer will be set to NULL.
|
||||
*
|
||||
* @warning this function does NOT free the data buffers themselves
|
||||
* (it does not know how, since they might have been allocated with
|
||||
* a custom get_buffer()).
|
||||
*/
|
||||
void avcodec_free_frame(AVFrame **frame);
|
||||
|
||||
/**
|
||||
* Initialize the AVCodecContext to use the given AVCodec. Prior to using this
|
||||
* function the context has to be allocated with avcodec_alloc_context3().
|
||||
|
@ -659,6 +659,21 @@ AVFrame *avcodec_alloc_frame(void)
|
||||
return frame;
|
||||
}
|
||||
|
||||
void avcodec_free_frame(AVFrame **frame)
|
||||
{
|
||||
AVFrame *f;
|
||||
|
||||
if (!frame || !*frame)
|
||||
return;
|
||||
|
||||
f = *frame;
|
||||
|
||||
if (f->extended_data != f->data)
|
||||
av_freep(&f->extended_data);
|
||||
|
||||
av_freep(frame);
|
||||
}
|
||||
|
||||
int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
|
||||
{
|
||||
int ret = 0;
|
||||
|
@ -27,7 +27,7 @@
|
||||
*/
|
||||
|
||||
#define LIBAVCODEC_VERSION_MAJOR 54
|
||||
#define LIBAVCODEC_VERSION_MINOR 27
|
||||
#define LIBAVCODEC_VERSION_MINOR 28
|
||||
#define LIBAVCODEC_VERSION_MICRO 0
|
||||
|
||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||
|
Loading…
Reference in New Issue
Block a user