misc.cpp
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:2k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. // VirtualDub - Video processing and capture application
  2. // Copyright (C) 1998-2001 Avery Lee
  3. //
  4. // This program is free software; you can redistribute it and/or modify
  5. // it under the terms of the GNU General Public License as published by
  6. // the Free Software Foundation; either version 2 of the License, or
  7. // (at your option) any later version.
  8. //
  9. // This program is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. // GNU General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU General Public License
  15. // along with this program; if not, write to the Free Software
  16. // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17. #include <ctype.h>
  18. #include <wtypes.h>
  19. #include <mmsystem.h>
  20. #include "misc.h"
  21. long __declspec(naked) MulDivTrunc(long a, long b, long c) {
  22. __asm {
  23. mov eax,[esp+4]
  24. imul dword ptr [esp+8]
  25. idiv dword ptr [esp+12]
  26. ret
  27. }
  28. }
  29. int NearestLongValue(long v, const long *array, int array_size) {
  30. int i;
  31. for(i=1; i<array_size; i++)
  32. if (v*2 < array[i-1]+array[i])
  33. break;
  34. return i-1;
  35. }
  36. bool isEqualFOURCC(FOURCC fccA, FOURCC fccB) {
  37. int i;
  38. for(i=0; i<4; i++) {
  39. if (tolower((unsigned char)fccA) != tolower((unsigned char)fccB))
  40. return false;
  41. fccA>>=8;
  42. fccB>>=8;
  43. }
  44. return true;
  45. }
  46. FOURCC toupperFOURCC(FOURCC fcc) {
  47. return(toupper((unsigned char)(fcc>>24)) << 24)
  48. | (toupper((unsigned char)(fcc>>16)) << 16)
  49. | (toupper((unsigned char)(fcc>> 8)) <<  8)
  50. | (toupper((unsigned char)(fcc    ))      );
  51. }