home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wvis0626.zip / warpvision_20020626.zip / libavcodec / mem.c < prev    next >
C/C++ Source or Header  |  2002-06-24  |  2KB  |  61 lines

  1. /*
  2.  * default memory allocator for libavcodec
  3.  * Copyright (c) 2002 Fabrice Bellard.
  4.  *
  5.  * This library is free software; you can redistribute it and/or
  6.  * modify it under the terms of the GNU Lesser General Public
  7.  * License as published by the Free Software Foundation; either
  8.  * version 2 of the License, or (at your option) any later version.
  9.  *
  10.  * This library is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  * Lesser General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU Lesser General Public
  16.  * License along with this library; if not, write to the Free Software
  17.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  */
  19. #include "avcodec.h"
  20. #ifdef HAVE_MALLOC_H
  21. #include <malloc.h>
  22. #endif
  23.  
  24. /* you can redefine av_malloc and av_free in your project to use your
  25.    memory allocator. You do not need to suppress this file because the
  26.    linker will do it automatically */
  27.  
  28. /* memory alloc */
  29. void *av_malloc(int size)
  30. {
  31.     void *ptr;
  32. #if defined ( ARCH_X86 ) && defined ( HAVE_MEMALIGN ) && 0
  33.     ptr = memalign(64,size);
  34.     /* Why 64? 
  35.        Indeed, we should align it:
  36.          on 4 for 386
  37.          on 16 for 486
  38.      on 32 for 586, PPro - k6-III
  39.      on 64 for K7 (maybe for P3 too).
  40.        Because L1 and L2 caches are aligned on those values.
  41.        But I don't want to code such logic here!
  42.      */
  43. #else
  44.     ptr = malloc(size);
  45. #endif
  46.     if (!ptr)
  47.         return NULL;
  48.     /* NOTE: this memset should not be present */
  49.     memset(ptr, 0, size);
  50.     return ptr;
  51. }
  52.  
  53. /* NOTE: ptr = NULL is explicetly allowed */
  54. void av_free(void *ptr)
  55. {
  56.     /* XXX: this test should not be needed on most libcs */
  57.     if (ptr)
  58.         free(ptr);
  59. }
  60.  
  61.