util.cpp
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is MPEG4IP.
  13.  * 
  14.  * The Initial Developer of the Original Code is Cisco Systems Inc.
  15.  * Portions created by Cisco Systems Inc. are
  16.  * Copyright (C) Cisco Systems Inc. 2000, 2001.  All Rights Reserved.
  17.  * 
  18.  * Contributor(s): 
  19.  *              Bill May        wmay@cisco.com
  20.  */
  21. #include "systems.h"
  22. #ifndef _WINDOWS
  23. #include <time.h>
  24. #include <sys/time.h>
  25. #include <unistd.h>
  26. #include <stdarg.h>
  27. #endif
  28. #include "util.h"
  29. #if _WIN32 && _DEBUG
  30. #include "SDL.h"
  31. #include "SDL_thread.h"
  32. SDL_mutex *outex;
  33. static int initialized = 0;
  34. static void init_local_mutex (void)
  35. {
  36. outex = SDL_CreateMutex();
  37. initialized = 1;
  38. }
  39. static void lock_mutex(void)
  40. {
  41. SDL_mutexP(outex);
  42. static void unlock_mutex(void)
  43. {
  44. SDL_mutexV(outex);
  45. }
  46. #endif
  47. void error_message (const char *fmt, ...)
  48. {
  49.   va_list ap;
  50. #if _WIN32 && _DEBUG
  51.         char msg[512];
  52. if (initialized) init_local_mutex();
  53. lock_mutex();
  54.         va_start(ap, fmt);
  55. _vsnprintf(msg, 512, fmt, ap);
  56.         va_end(ap);
  57.         OutputDebugString(msg);
  58. OutputDebugString("n");
  59. unlock_mutex();
  60. #else
  61.   struct timeval thistime;
  62.   char buffer[80];
  63.   gettimeofday(&thistime, NULL);
  64.   // To add date, add %a %b %d to strftime
  65.   strftime(buffer, sizeof(buffer), "%X", localtime(&thistime.tv_sec));
  66.   printf("%s.%03ld-mp4live: ", buffer, thistime.tv_usec / 1000);
  67.   va_start(ap, fmt);
  68.   vprintf(fmt, ap);
  69.   va_end(ap);
  70.   printf("n");
  71. #endif
  72. }
  73. bool PrintDebugMessages = false;
  74. void debug_message (const char *fmt, ...)
  75. {
  76.   if (!PrintDebugMessages) {
  77.     return;
  78.   }
  79.   va_list ap;
  80. #if _WIN32 && _DEBUG
  81.        char msg[512];
  82.    if (initialized) init_local_mutex();
  83. lock_mutex();
  84.         va_start(ap, fmt);
  85. _vsnprintf(msg, 512, fmt, ap);
  86.         va_end(ap);
  87.         OutputDebugString(msg);
  88. OutputDebugString("n");
  89. unlock_mutex();
  90. #else
  91.   struct timeval thistime;
  92.   char buffer[80];
  93.   gettimeofday(&thistime, NULL);
  94.   // To add date, add %a %b %d to strftime
  95.   strftime(buffer, sizeof(buffer), "%X", localtime(&thistime.tv_sec));
  96.   printf("%s.%03ld-debug-mp4live: ", buffer, thistime.tv_usec / 1000);
  97.   va_start(ap, fmt);
  98.   vprintf(fmt, ap);
  99.   va_end(ap);
  100.   printf("n");
  101. #endif
  102. }
  103. void lib_message(int loglevel, const char* lib, const char* fmt, ...)
  104. {
  105. va_list ap;
  106. // TEMP
  107. debug_message(fmt, ap);
  108. }
  109. #ifdef _WINDOWS
  110. #include <sys/timeb.h>
  111. int gettimeofday (struct timeval *t, void *foo)
  112. {
  113. struct _timeb temp;
  114. _ftime(&temp);
  115. t->tv_sec = temp.time;
  116. t->tv_usec = temp.millitm * 1000;
  117. return (0);
  118. }
  119. char *strsep (char **sptr, const char *delim)
  120. {
  121. char *start, *ret;
  122. start = ret = *sptr;
  123. if ((ret == NULL) || ret == '') {
  124.    return (NULL);
  125. }
  126. while (*ret != '' &&
  127.    strchr(delim, *ret) == NULL) {
  128. ret++;
  129. }
  130. if (*ret == '') {
  131. *sptr = NULL;
  132. } else {
  133.     *ret = '';
  134.     ret++;
  135.     *sptr = ret;
  136. }
  137. return (start);
  138. }
  139. #endif