Guest User

Untitled

a guest
Jul 16th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. static double timing_sleep(double time_frame)
  2. {
  3. int x=0,y=0;
  4. double t=time_frame;
  5. if(time_frame>1)
  6. {
  7. printf("time_frame too big: %f\n",time_frame);
  8. time_frame=0.04;
  9. }
  10.  
  11. #ifdef HAVE_RTC
  12. if (rtc_fd >= 0){
  13. // -------- RTC -----------
  14. current_module="sleep_rtc";
  15. while (time_frame > 0.000) {
  16. unsigned long rtc_ts;
  17. if (read(rtc_fd, &rtc_ts, sizeof(rtc_ts)) <= 0)
  18. mp_msg(MSGT_CPLAYER, MSGL_ERR, MSGTR_LinuxRTCReadError, strerror(errno));
  19. time_frame -= GetRelativeTime();
  20. }
  21. } else
  22. #endif
  23. {
  24. // assume kernel HZ=100 for softsleep, works with larger HZ but with
  25. // unnecessarily high CPU usage
  26. double margin = softsleep ? 0.0011 : 0.0;
  27. unsigned int sleep_time;
  28. sleep_time=(time_frame - margin)*1000000;
  29. current_module = "sleep_timer";
  30. // printf("timing_sleep run ");
  31. while (time_frame > margin) {
  32. usec_sleep(sleep_time);
  33. y++;
  34. time_frame -= GetRelativeTime();
  35. if(time_frame<0.0021 || time_frame>t) break;
  36. }
  37. //printf("-end\n");
  38. if (softsleep){
  39. //printf("sleep_soft run\n");
  40. current_module = "sleep_soft";
  41. if (time_frame < 0)
  42. {
  43. mp_msg(MSGT_AVSYNC, MSGL_WARN, MSGTR_SoftsleepUnderflow);
  44. printf("SoftsleepUnderflow: %f\n",time_frame);
  45. }
  46. while (time_frame > margin) {
  47. usec_sleep(1000000 * (time_frame - margin));
  48. time_frame -= GetRelativeTime();
  49. y++;
  50. }
  51.  
  52. while (time_frame > 0.0000005)
  53. {
  54. x++;
  55. time_frame-=GetRelativeTime(); // burn the CPU
  56. if(x>20000) break;
  57. }
  58. //printf("-end\nsleep_soft run ");
  59. }
  60. }
  61. if(time_frame >0.0000005 || time_frame<-0.1 || x>20000 || y>1)
  62. {
  63. printf("orig: %f timeframe: %f x: %i y: %i\n",t,time_frame,x,y);
  64. }
  65.  
  66. if(time_frame<-0.01 || time_frame>0.01)
  67. {
  68. time_frame=0.001;
  69. GetRelativeTime();
  70. }
  71.  
  72. return time_frame;
  73. }
Add Comment
Please, Sign In to add comment