Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
cce3e0a4
Commit
cce3e0a4
authored
Oct 27, 2013
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move av_fast_{m,re}alloc from lavc to lavu.
parent
aa241229
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
71 additions
and
48 deletions
+71
-48
APIchanges
doc/APIchanges
+3
-0
avcodec.h
libavcodec/avcodec.h
+4
-21
utils.c
libavcodec/utils.c
+6
-26
version.h
libavcodec/version.h
+3
-0
mem.c
libavutil/mem.c
+33
-0
mem.h
libavutil/mem.h
+21
-0
version.h
libavutil/version.h
+1
-1
No files found.
doc/APIchanges
View file @
cce3e0a4
...
@@ -13,6 +13,9 @@ libavutil: 2012-10-22
...
@@ -13,6 +13,9 @@ libavutil: 2012-10-22
API changes, most recent first:
API changes, most recent first:
2013-11-xx - xxxxxxx - lavu 52.18.0 - mem.h
Move av_fast_malloc() and av_fast_realloc() for libavcodec to libavutil.
2013-10-xx - xxxxxxx - lavc 55.27.0 - avcodec.h
2013-10-xx - xxxxxxx - lavc 55.27.0 - avcodec.h
Deprecate AVCodecContext.error_rate, it is replaced by the 'error_rate'
Deprecate AVCodecContext.error_rate, it is replaced by the 'error_rate'
private option of the mpegvideo encoder family.
private option of the mpegvideo encoder family.
...
...
libavcodec/avcodec.h
View file @
cce3e0a4
...
@@ -36,6 +36,10 @@
...
@@ -36,6 +36,10 @@
#include "libavutil/dict.h"
#include "libavutil/dict.h"
#include "libavutil/frame.h"
#include "libavutil/frame.h"
#include "libavutil/log.h"
#include "libavutil/log.h"
#if FF_API_FAST_MALLOC
// to provide fast_*alloc
#include "libavutil/mem.h"
#endif
#include "libavutil/pixfmt.h"
#include "libavutil/pixfmt.h"
#include "libavutil/rational.h"
#include "libavutil/rational.h"
...
@@ -4197,27 +4201,6 @@ AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f);
...
@@ -4197,27 +4201,6 @@ AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f);
/* memory */
/* memory */
/**
* Reallocate the given block if it is not large enough, otherwise do nothing.
*
* @see av_realloc
*/
void
*
av_fast_realloc
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
);
/**
* Allocate a buffer, reusing the given one if large enough.
*
* Contrary to av_fast_realloc the current buffer contents might not be
* preserved and on error the old buffer is freed, thus no special
* handling to avoid memleaks is necessary.
*
* @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer
* @param size size of the buffer *ptr points to
* @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and
* *size 0 if an error occurred.
*/
void
av_fast_malloc
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
);
/**
/**
* Allocate a buffer with padding, reusing the given one if large enough.
* Allocate a buffer with padding, reusing the given one if large enough.
*
*
...
...
libavcodec/utils.c
View file @
cce3e0a4
...
@@ -55,37 +55,17 @@ static int (*lockmgr_cb)(void **mutex, enum AVLockOp op);
...
@@ -55,37 +55,17 @@ static int (*lockmgr_cb)(void **mutex, enum AVLockOp op);
static
void
*
codec_mutex
;
static
void
*
codec_mutex
;
static
void
*
avformat_mutex
;
static
void
*
avformat_mutex
;
void
*
av_fast_realloc
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
)
#if FF_API_FAST_MALLOC && CONFIG_SHARED && HAVE_SYMVER
FF_SYMVER
(
void
*
,
av_fast_realloc
,
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
),
"LIBAVCODEC_55"
)
{
{
if
(
min_size
<
*
size
)
return
av_fast_realloc
(
ptr
,
size
,
min_size
);
return
ptr
;
min_size
=
FFMAX
(
17
*
min_size
/
16
+
32
,
min_size
);
ptr
=
av_realloc
(
ptr
,
min_size
);
/* we could set this to the unmodified min_size but this is safer
* if the user lost the ptr and uses NULL now
*/
if
(
!
ptr
)
min_size
=
0
;
*
size
=
min_size
;
return
ptr
;
}
}
void
av_fast_malloc
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
)
FF_SYMVER
(
void
,
av_fast_malloc
,
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
),
"LIBAVCODEC_55"
)
{
{
void
**
p
=
ptr
;
av_fast_malloc
(
ptr
,
size
,
min_size
);
if
(
min_size
<
*
size
)
return
;
min_size
=
FFMAX
(
17
*
min_size
/
16
+
32
,
min_size
);
av_free
(
*
p
);
*
p
=
av_malloc
(
min_size
);
if
(
!*
p
)
min_size
=
0
;
*
size
=
min_size
;
}
}
#endif
void
av_fast_padded_malloc
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
)
void
av_fast_padded_malloc
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
)
{
{
...
...
libavcodec/version.h
View file @
cce3e0a4
...
@@ -112,5 +112,8 @@
...
@@ -112,5 +112,8 @@
#ifndef FF_API_MAX_BFRAMES
#ifndef FF_API_MAX_BFRAMES
#define FF_API_MAX_BFRAMES (LIBAVCODEC_VERSION_MAJOR < 56)
#define FF_API_MAX_BFRAMES (LIBAVCODEC_VERSION_MAJOR < 56)
#endif
#endif
#ifndef FF_API_FAST_MALLOC
#define FF_API_FAST_MALLOC (LIBAVCODEC_VERSION_MAJOR < 56)
#endif
#endif
/* AVCODEC_VERSION_H */
#endif
/* AVCODEC_VERSION_H */
libavutil/mem.c
View file @
cce3e0a4
...
@@ -35,6 +35,7 @@
...
@@ -35,6 +35,7 @@
#endif
#endif
#include "avutil.h"
#include "avutil.h"
#include "common.h"
#include "intreadwrite.h"
#include "intreadwrite.h"
#include "mem.h"
#include "mem.h"
...
@@ -344,3 +345,35 @@ void av_memcpy_backptr(uint8_t *dst, int back, int cnt)
...
@@ -344,3 +345,35 @@ void av_memcpy_backptr(uint8_t *dst, int back, int cnt)
*
dst
=
*
src
;
*
dst
=
*
src
;
}
}
}
}
void
*
av_fast_realloc
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
)
{
if
(
min_size
<
*
size
)
return
ptr
;
min_size
=
FFMAX
(
17
*
min_size
/
16
+
32
,
min_size
);
ptr
=
av_realloc
(
ptr
,
min_size
);
/* we could set this to the unmodified min_size but this is safer
* if the user lost the ptr and uses NULL now
*/
if
(
!
ptr
)
min_size
=
0
;
*
size
=
min_size
;
return
ptr
;
}
void
av_fast_malloc
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
)
{
void
**
p
=
ptr
;
if
(
min_size
<
*
size
)
return
;
min_size
=
FFMAX
(
17
*
min_size
/
16
+
32
,
min_size
);
av_free
(
*
p
);
*
p
=
av_malloc
(
min_size
);
if
(
!*
p
)
min_size
=
0
;
*
size
=
min_size
;
}
libavutil/mem.h
View file @
cce3e0a4
...
@@ -237,6 +237,27 @@ void av_freep(void *ptr);
...
@@ -237,6 +237,27 @@ void av_freep(void *ptr);
*/
*/
void
av_memcpy_backptr
(
uint8_t
*
dst
,
int
back
,
int
cnt
);
void
av_memcpy_backptr
(
uint8_t
*
dst
,
int
back
,
int
cnt
);
/**
* Reallocate the given block if it is not large enough, otherwise do nothing.
*
* @see av_realloc
*/
void
*
av_fast_realloc
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
);
/**
* Allocate a buffer, reusing the given one if large enough.
*
* Contrary to av_fast_realloc the current buffer contents might not be
* preserved and on error the old buffer is freed, thus no special
* handling to avoid memleaks is necessary.
*
* @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer
* @param size size of the buffer *ptr points to
* @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and
* *size 0 if an error occurred.
*/
void
av_fast_malloc
(
void
*
ptr
,
unsigned
int
*
size
,
size_t
min_size
);
/**
/**
* @}
* @}
*/
*/
...
...
libavutil/version.h
View file @
cce3e0a4
...
@@ -37,7 +37,7 @@
...
@@ -37,7 +37,7 @@
*/
*/
#define LIBAVUTIL_VERSION_MAJOR 52
#define LIBAVUTIL_VERSION_MAJOR 52
#define LIBAVUTIL_VERSION_MINOR 1
7
#define LIBAVUTIL_VERSION_MINOR 1
8
#define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment