AE: clean out old GetDelay
authorRainer Hochecker <fernetmenta@online.de>
Sat, 21 Jun 2014 07:10:01 +0000 (09:10 +0200)
committerRainer Hochecker <fernetmenta@online.de>
Sat, 21 Jun 2014 12:03:56 +0000 (14:03 +0200)
18 files changed:
xbmc/cores/AudioEngine/Interfaces/AESink.h
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
xbmc/cores/AudioEngine/Sinks/AESinkALSA.h
xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp
xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.h
xbmc/cores/AudioEngine/Sinks/AESinkDARWINIOS.h
xbmc/cores/AudioEngine/Sinks/AESinkDARWINOSX.h
xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp
xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.h
xbmc/cores/AudioEngine/Sinks/AESinkNULL.cpp
xbmc/cores/AudioEngine/Sinks/AESinkNULL.h
xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp
xbmc/cores/AudioEngine/Sinks/AESinkOSS.h
xbmc/cores/AudioEngine/Sinks/AESinkPi.cpp
xbmc/cores/AudioEngine/Sinks/AESinkPi.h
xbmc/cores/AudioEngine/Sinks/AESinkProfiler.cpp
xbmc/cores/AudioEngine/Sinks/AESinkProfiler.h
xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h

index 21ab842..e0ef40d 100644 (file)
@@ -47,12 +47,6 @@ public:
   virtual void Deinitialize() = 0;
 
   /*
-    This method returns the time in seconds that it will take
-    for the next added packet to be heard from the speakers.
-  */
-  virtual double GetDelay() = 0;
-
-  /*
     This method returns the total time in seconds of the cache.
   */
   virtual double GetCacheTotal() = 0;
@@ -76,10 +70,7 @@ public:
    * @brief Return a timestamped status structure with delay and sink info
    * @param status structure filled with sink status
   */
-  virtual void GetDelay(AEDelayStatus& status)
-  {
-    status.SetDelay(GetDelay());
-  }
+  virtual void GetDelay(AEDelayStatus& status) = 0;
 
   /*
     Drain the sink
index 8cbf6e5..e0a13ed 100644 (file)
@@ -497,10 +497,13 @@ void CAESinkALSA::Stop()
   snd_pcm_drop(m_pcm);
 }
 
-double CAESinkALSA::GetDelay()
+void CAESinkALSA::GetDelay(AEDelayStatus& status)
 {
   if (!m_pcm)
-    return 0;
+  {
+    status.SetDelay(0);
+    return;
+  }
   snd_pcm_sframes_t frames = 0;
   snd_pcm_delay(m_pcm, &frames);
 
@@ -512,7 +515,7 @@ double CAESinkALSA::GetDelay()
     frames = 0;
   }
 
-  return (double)frames * m_formatSampleRateMul;
+  status.SetDelay((double)frames * m_formatSampleRateMul);
 }
 
 double CAESinkALSA::GetCacheTotal()
index c165254..2b2b7bb 100644 (file)
@@ -43,7 +43,7 @@ public:
   virtual void Deinitialize();
 
   virtual void         Stop            ();
-  virtual double       GetDelay        ();
+  virtual void         GetDelay        (AEDelayStatus& status);
   virtual double       GetCacheTotal   ();
   virtual unsigned int AddPackets      (uint8_t **data, unsigned int frames, unsigned int offset);
   virtual void         Drain           ();
index 6685737..4fddd5f 100644 (file)
@@ -142,10 +142,13 @@ void CAESinkAUDIOTRACK::Deinitialize()
   m_at_jni = NULL;
 }
 
-double CAESinkAUDIOTRACK::GetDelay()
+void CAESinkAUDIOTRACK::GetDelay(AEDelayStatus& status)
 {
   if (!m_at_jni)
-    return 0.0;
+  {
+    status.SetDelay(0);
+    return;
+  }
 
   // In their infinite wisdom, Google decided to make getPlaybackHeadPosition
   // return a 32bit "int" that you should "interpret as unsigned."  As such,
@@ -154,7 +157,7 @@ double CAESinkAUDIOTRACK::GetDelay()
 
   double delay = (double)(m_frames_written - head_pos) / m_format.m_sampleRate;
 
-  return delay;
+  status.SetDelay(delay);
 }
 
 double CAESinkAUDIOTRACK::GetLatency()
index 682b053..e512554 100644 (file)
@@ -40,7 +40,7 @@ public:
   virtual bool Initialize(AEAudioFormat &format, std::string &device);
   virtual void Deinitialize();
 
-  virtual double       GetDelay        ();
+  virtual void         GetDelay        (AEDelayStatus& status);
   virtual double       GetLatency      ();
   virtual double       GetCacheTotal   ();
   virtual unsigned int AddPackets      (uint8_t **data, unsigned int frames, unsigned int offset);
index 55e7457..efd1900 100644 (file)
@@ -45,7 +45,6 @@ public:
   virtual bool Initialize(AEAudioFormat &format, std::string &device);
   virtual void Deinitialize();
 
-  virtual double       GetDelay        () { return 0.0; /* unused dummy */ }
   virtual void         GetDelay(AEDelayStatus& status);
   virtual double       GetCacheTotal   ();
   virtual unsigned int AddPackets      (uint8_t **data, unsigned int frames, unsigned int offset);
index 040dc30..4227e8b 100644 (file)
@@ -38,7 +38,6 @@ public:
   virtual bool Initialize(AEAudioFormat &format, std::string &device);
   virtual void Deinitialize();
 
-  virtual double       GetDelay        () { return 0.0; /* unused dummy */ }
   virtual void         GetDelay(AEDelayStatus& status);
   virtual double       GetCacheTotal   ();
   virtual unsigned int AddPackets      (uint8_t **data, unsigned int frames, unsigned int offset);
index dca0b96..aff9c06 100644 (file)
@@ -424,18 +424,20 @@ void CAESinkDirectSound::Drain()
   UpdateCacheStatus();
 }
 
-double CAESinkDirectSound::GetDelay()
+void CAESinkDirectSound::GetDelay(AEDelayStatus& status)
 {
   if (!m_initialized)
-    return 0.0;
+  {
+    status.SetDelay(0);
+    return;
+  }
 
   /* Make sure we know how much data is in the cache */
   if (!UpdateCacheStatus())
     m_isDirtyDS = true;
 
   /** returns current cached data duration in seconds */
-  double delay = (double)m_CacheLen / (double)m_AvgBytesPerSec;
-  return delay;
+  status.SetDelay((double)m_CacheLen / (double)m_AvgBytesPerSec);
 }
 
 double CAESinkDirectSound::GetCacheTotal()
index 94ef524..b0cfca8 100644 (file)
@@ -39,7 +39,7 @@ public:
 
   virtual void         Stop               ();
   virtual void         Drain              ();
-  virtual double       GetDelay           ();
+  virtual void         GetDelay           (AEDelayStatus& status);
   virtual double       GetCacheTotal      ();
   virtual unsigned int AddPackets         (uint8_t **data, unsigned int frames, unsigned int offset);
   static  std::string  GetDefaultDevice   ();
index 840baeb..ba229c5 100644 (file)
@@ -75,10 +75,10 @@ void CAESinkNULL::Deinitialize()
   StopThread();
 }
 
-double CAESinkNULL::GetDelay()
+void CAESinkNULL::GetDelay(AEDelayStatus& status)
 {
   double sinkbuffer_seconds_to_empty = m_sinkbuffer_sec_per_byte * (double)m_sinkbuffer_level;
-  return sinkbuffer_seconds_to_empty;
+  status.SetDelay(sinkbuffer_seconds_to_empty);
 }
 
 double CAESinkNULL::GetCacheTotal()
index 08ca767..8b39466 100644 (file)
@@ -34,7 +34,7 @@ public:
   virtual bool Initialize(AEAudioFormat &format, std::string &device);
   virtual void Deinitialize();
 
-  virtual double       GetDelay        ();
+  virtual void         GetDelay        (AEDelayStatus& status);
   virtual double       GetCacheTotal   ();
   virtual unsigned int AddPackets      (uint8_t **data, unsigned int frames, unsigned int offset);
   virtual void         Drain           ();
index 8fb7db4..f55872a 100644 (file)
@@ -372,16 +372,22 @@ void CAESinkOSS::Stop()
 #endif
 }
 
-double CAESinkOSS::GetDelay()
+void CAESinkOSS::GetDelay(AEDelayStatus& status)
 {
   if (m_fd == -1)
-    return 0.0;
+  {
+    status.SetDelay(0);
+    return;
+  }
   
   int delay;
   if (ioctl(m_fd, SNDCTL_DSP_GETODELAY, &delay) == -1)
-    return 0.0;
+  {
+    status.SetDelay(0);
+    return;
+  }
 
-  return (double)delay / (m_format.m_frameSize * m_format.m_sampleRate);
+  status.SetDelay((double)delay / (m_format.m_frameSize * m_format.m_sampleRate));
 }
 
 unsigned int CAESinkOSS::AddPackets(uint8_t **data, unsigned int frames, unsigned int offset)
index 3c2d4f9..17cc062 100644 (file)
@@ -37,7 +37,7 @@ public:
   virtual void Deinitialize();
 
   virtual void         Stop            ();
-  virtual double       GetDelay        ();
+  virtual void         GetDelay        (AEDelayStatus& status);
   virtual double       GetCacheTotal   () { return 0.0; } /* FIXME */
   virtual unsigned int AddPackets      (uint8_t **data, unsigned int frames, unsigned int offset);
   virtual void         Drain           ();
index 811ea0d..161b798 100644 (file)
@@ -275,13 +275,16 @@ bool CAESinkPi::IsCompatible(const AEAudioFormat &format, const std::string &dev
   return compatible;
 }
 
-double CAESinkPi::GetDelay()
+void CAESinkPi::GetDelay(AEDelayStatus& status)
 {
   OMX_PARAM_U32TYPE param;
   OMX_INIT_STRUCTURE(param);
 
   if (!m_Initialized)
-    return 0.0;
+  {
+    status.SetDelay(0);
+    return;
+  }
 
   param.nPortIndex = m_omx_render.GetInputPort();
 
@@ -293,7 +296,7 @@ double CAESinkPi::GetDelay()
       CLASSNAME, __func__, omx_err);
   }
   double sinkbuffer_seconds_to_empty = m_sinkbuffer_sec_per_byte * param.nU32 * m_format.m_frameSize;
-  return sinkbuffer_seconds_to_empty;
+  status.SetDelay(sinkbuffer_seconds_to_empty);
 }
 
 double CAESinkPi::GetCacheTime()
@@ -318,7 +321,9 @@ unsigned int CAESinkPi::AddPackets(uint8_t **data, unsigned int frames, unsigned
   OMX_BUFFERHEADERTYPE *omx_buffer = NULL;
   while (sent < frames)
   {
-    double delay = GetDelay();
+    AEDelayStatus status;
+    GetDelay(status);
+    double delay = status.GetDelay();
     double ideal_submission_time = AUDIO_PLAYBUFFER - delay;
     // ideal amount of audio we'd like submit (to make delay match AUDIO_PLAYBUFFER)
     int timeout = 1000;
@@ -365,10 +370,12 @@ unsigned int CAESinkPi::AddPackets(uint8_t **data, unsigned int frames, unsigned
 
 void CAESinkPi::Drain()
 {
-  int delay = (int)(GetDelay() * 1000.0);
+  AEDelayStatus status;
+  GetDelay(status);
+  int delay = (int)(status.GetDelay() * 1000.0);
   if (delay)
     Sleep(delay);
-  CLog::Log(LOGDEBUG, "%s:%s delay:%dms now:%dms", CLASSNAME, __func__, delay, (int)(GetDelay() * 1000.0));
+  CLog::Log(LOGDEBUG, "%s:%s delay:%dms now:%dms", CLASSNAME, __func__, delay, (int)(status.GetDelay() * 1000.0));
 }
 
 void CAESinkPi::EnumerateDevicesEx(AEDeviceInfoList &list, bool force)
index b8cbb33..0c30561 100644 (file)
@@ -40,7 +40,7 @@ public:
   virtual void Deinitialize();
   virtual bool IsCompatible(const AEAudioFormat &format, const std::string &device);
 
-  virtual double       GetDelay        ();
+  virtual void         GetDelay        (AEDelayStatus& status);
   virtual double       GetCacheTime    ();
   virtual double       GetCacheTotal   ();
   virtual unsigned int AddPackets      (uint8_t **data, unsigned int frames, unsigned int offset);
index 2023fb4..be58cac 100644 (file)
@@ -55,9 +55,9 @@ void CAESinkProfiler::Deinitialize()
 {
 }
 
-double CAESinkProfiler::GetDelay()
+void CAESinkProfiler::GetDelay(AEDelayStatus& status)
 {
-  return 0.0f;
+  status.SetDelay(0);
 }
 
 unsigned int CAESinkProfiler::AddPackets(uint8_t **data, unsigned int frames, unsigned int offset)
index 4c4bcb4..284b803 100644 (file)
@@ -35,7 +35,7 @@ public:
   virtual bool Initialize  (AEAudioFormat &format, std::string &device);
   virtual void Deinitialize();
 
-  virtual double       GetDelay        ();
+  virtual void         GetDelay        (AEDelayStatus& status);
   virtual double       GetCacheTotal   () { return 0.0; }
   virtual unsigned int AddPackets      (uint8_t **data, unsigned int frames, unsigned int offset);
   virtual void         Drain           ();
index 2b43b3b..6ef299b 100644 (file)
@@ -38,7 +38,6 @@ public:
     virtual bool Initialize  (AEAudioFormat &format, std::string &device);
     virtual void Deinitialize();
 
-    virtual double       GetDelay()  { return 0.0; }
     virtual void         GetDelay(AEDelayStatus& status);
     virtual double       GetCacheTotal               ();
     virtual unsigned int AddPackets                  (uint8_t **data, unsigned int frames, unsigned int offset);