mirror of https://github.com/FFmpeg/FFmpeg.git
put memory functions in a separate file so that the user can redefinite them without modifying the library
Originally committed as revision 684 to svn://svn.ffmpeg.org/ffmpeg/trunkpull/126/head
parent
773cefc602
commit
d01fe86dac
1 changed files with 60 additions and 0 deletions
@ -0,0 +1,60 @@ |
||||
/*
|
||||
* default memory allocator for libavcodec |
||||
* Copyright (c) 2002 Fabrice Bellard. |
||||
* |
||||
* This library is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU Lesser General Public |
||||
* License as published by the Free Software Foundation; either |
||||
* version 2 of the License, or (at your option) any later version. |
||||
* |
||||
* This library is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
||||
* Lesser General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Lesser General Public |
||||
* License along with this library; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
||||
*/ |
||||
#include "avcodec.h" |
||||
#ifdef HAVE_MALLOC_H |
||||
#include <malloc.h> |
||||
#endif |
||||
|
||||
/* you can redefine av_malloc and av_free in your project to use your
|
||||
memory allocator. You do not need to suppress this file because the |
||||
linker will do it automatically */ |
||||
|
||||
/* memory alloc */ |
||||
void *av_malloc(int size) |
||||
{ |
||||
void *ptr; |
||||
#if defined ( ARCH_X86 ) && defined ( HAVE_MEMALIGN ) && 0 |
||||
ptr = memalign(64,size); |
||||
/* Why 64?
|
||||
Indeed, we should align it: |
||||
on 4 for 386 |
||||
on 16 for 486 |
||||
on 32 for 586, PPro - k6-III |
||||
on 64 for K7 (maybe for P3 too). |
||||
Because L1 and L2 caches are aligned on those values. |
||||
But I don't want to code such logic here! |
||||
*/ |
||||
#else |
||||
ptr = malloc(size); |
||||
#endif |
||||
if (!ptr) |
||||
return NULL; |
||||
/* NOTE: this memset should not be present */ |
||||
memset(ptr, 0, size); |
||||
return ptr; |
||||
} |
||||
|
||||
/* NOTE: ptr = NULL is explicetly allowed */ |
||||
void av_free(void *ptr) |
||||
{ |
||||
/* XXX: this test should not be needed on most libcs */ |
||||
if (ptr) |
||||
free(ptr); |
||||
} |
||||
|
Loading…
Reference in new issue