You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.8KB

  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. /* you can redefine av_malloc and av_free in your project to use your
  24. memory allocator. You do not need to suppress this file because the
  25. linker will do it automatically */
  26. /* memory alloc */
  27. void *av_malloc(int size)
  28. {
  29. void *ptr;
  30. #if defined ( ARCH_X86 ) && defined ( HAVE_MEMALIGN ) && 0
  31. ptr = memalign(64,size);
  32. /* Why 64?
  33. Indeed, we should align it:
  34. on 4 for 386
  35. on 16 for 486
  36. on 32 for 586, PPro - k6-III
  37. on 64 for K7 (maybe for P3 too).
  38. Because L1 and L2 caches are aligned on those values.
  39. But I don't want to code such logic here!
  40. */
  41. #else
  42. ptr = malloc(size);
  43. #endif
  44. if (!ptr)
  45. return NULL;
  46. /* NOTE: this memset should not be present */
  47. memset(ptr, 0, size);
  48. return ptr;
  49. }
  50. /* NOTE: ptr = NULL is explicetly allowed */
  51. void av_free(void *ptr)
  52. {
  53. /* XXX: this test should not be needed on most libcs */
  54. if (ptr)
  55. free(ptr);
  56. }