Mercurial > libavcodec.hg
view mem.c @ 587:4d41fe7eb780 libavcodec
b frame direct mode bugfix (bug found by CM <chenm001 at 163 dot com>)
author | michaelni |
---|---|
date | Wed, 31 Jul 2002 08:01:29 +0000 |
parents | e28763300864 |
children | 0ed44dd02bbf |
line wrap: on
line source
/* * 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); }