Since an AVFrame now has malloced members (extended_data), it must have a destructor.tags/n1.0
| @@ -13,6 +13,10 @@ libavutil: 2011-04-18 | |||||
| API changes, most recent first: | 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 | 2012-09-12 - xxxxxxx - lavu 51.41.0 - audioconvert.h | ||||
| Added AV_CH_LOW_FREQUENCY_2 channel mask value. | 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 | * 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. | * @return An AVFrame filled with default values or NULL on failure. | ||||
| * @see avcodec_get_frame_defaults | * @see avcodec_get_frame_defaults | ||||
| @@ -3271,6 +3271,18 @@ AVFrame *avcodec_alloc_frame(void); | |||||
| */ | */ | ||||
| void avcodec_get_frame_defaults(AVFrame *frame); | 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 | * Initialize the AVCodecContext to use the given AVCodec. Prior to using this | ||||
| * function the context has to be allocated with avcodec_alloc_context3(). | * function the context has to be allocated with avcodec_alloc_context3(). | ||||
| @@ -659,6 +659,21 @@ AVFrame *avcodec_alloc_frame(void) | |||||
| return frame; | 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 attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options) | ||||
| { | { | ||||
| int ret = 0; | int ret = 0; | ||||
| @@ -27,7 +27,7 @@ | |||||
| */ | */ | ||||
| #define LIBAVCODEC_VERSION_MAJOR 54 | #define LIBAVCODEC_VERSION_MAJOR 54 | ||||
| #define LIBAVCODEC_VERSION_MINOR 27 | |||||
| #define LIBAVCODEC_VERSION_MINOR 28 | |||||
| #define LIBAVCODEC_VERSION_MICRO 0 | #define LIBAVCODEC_VERSION_MICRO 0 | ||||
| #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | ||||