/* * 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 #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); }