<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/537ebef2b70cd662e7cdad0cdd2cc2c71b5155c7">https://github.com/macports/macports-ports/commit/537ebef2b70cd662e7cdad0cdd2cc2c71b5155c7</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 537ebef2b70cd662e7cdad0cdd2cc2c71b5155c7
</span>Author: Sergey Fedorov <barracuda@macos-powerpc.org>
AuthorDate: Sat Jun 22 07:15:00 2024 +0800

<span style='display:block; white-space:pre;color:#404040;'>    gstreamer1-gst-plugins-good: update and minimize legacy patch
</span>---
 gnome/gstreamer1-gst-plugins-good/Portfile         |   7 +-
 ...udio-Interpolate-clock-by-counting-elapse.patch | 217 ---------------------
 .../files/patch-coreaudio.diff                     |  18 ++
 3 files changed, 19 insertions(+), 223 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/gnome/gstreamer1-gst-plugins-good/Portfile b/gnome/gstreamer1-gst-plugins-good/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 73a7781e95b..2594a415342 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/gnome/gstreamer1-gst-plugins-good/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/gnome/gstreamer1-gst-plugins-good/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -68,12 +68,7 @@ if {${os.platform} eq "darwin" && ${os.major} < 11} {
</span>                     snowleopard-memmem.patch
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Temporary fix until the upstream addresses the breakage.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3439
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.platform} eq "darwin" && ${os.major} < 15} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    0001-Revert-osxaudio-Interpolate-clock-by-counting-elapse.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-coreaudio.diff
</span> 
 post-patch {
     reinplace "s|/usr/bin/env python3|${python.bin}|" \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/gnome/gstreamer1-gst-plugins-good/files/0001-Revert-osxaudio-Interpolate-clock-by-counting-elapse.patch b/gnome/gstreamer1-gst-plugins-good/files/0001-Revert-osxaudio-Interpolate-clock-by-counting-elapse.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 45391e34a8a..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/gnome/gstreamer1-gst-plugins-good/files/0001-Revert-osxaudio-Interpolate-clock-by-counting-elapse.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,217 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 378e3f09dd4ab80f6e46732fff1ca52463cdd017 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Sun, 31 Mar 2024 06:42:42 +0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Revert "osxaudio: Interpolate clock by counting elapsed
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- time since render calls"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This reverts commit 461f943b52346073fbcd227f22c50afcebe51b00.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- .../sys/osxaudio/gstosxaudiosink.c            |   6 --
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- .../sys/osxaudio/gstosxaudiosrc.c             |   6 --
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- .../sys/osxaudio/gstosxcoreaudio.c            | 100 +-----------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- .../sys/osxaudio/gstosxcoreaudio.h            |  12 ---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4 files changed, 1 insertion(+), 123 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git subprojects/gst-plugins-good/sys/osxaudio/gstosxaudiosink.c subprojects/gst-plugins-good/sys/osxaudio/gstosxaudiosink.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 4b48e0dd59..578ccf4949 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- sys/osxaudio/gstosxaudiosink.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ sys/osxaudio/gstosxaudiosink.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -546,13 +546,7 @@ gst_osx_audio_sink_io_proc (GstOsxAudioRingBuffer * buf,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       gst_audio_ring_buffer_clear (GST_AUDIO_RING_BUFFER (buf), readseg);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       /* we wrote one segment */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      CORE_AUDIO_TIMING_LOCK (buf->core_audio);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       gst_audio_ring_buffer_advance (GST_AUDIO_RING_BUFFER (buf), 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      /* FIXME: Update the timestamp and reported frames in smaller increments
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--       * when the segment size is larger than the total inNumberFrames */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      gst_core_audio_update_timing (buf->core_audio, inTimeStamp,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          inNumberFrames);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      CORE_AUDIO_TIMING_UNLOCK (buf->core_audio);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       buf->segoffset = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git subprojects/gst-plugins-good/sys/osxaudio/gstosxaudiosrc.c subprojects/gst-plugins-good/sys/osxaudio/gstosxaudiosrc.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 75793bb692..e4ef409ae2 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- sys/osxaudio/gstosxaudiosrc.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ sys/osxaudio/gstosxaudiosrc.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -397,13 +397,7 @@ gst_osx_audio_src_io_proc (GstOsxAudioRingBuffer * buf,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           writeseg, ts);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       /* we wrote one segment */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      CORE_AUDIO_TIMING_LOCK (buf->core_audio);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       gst_audio_ring_buffer_advance (GST_AUDIO_RING_BUFFER (buf), 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      /* FIXME: Update the timestamp and reported frames in smaller increments
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--       * when the segment size is larger than the total inNumberFrames */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      gst_core_audio_update_timing (buf->core_audio, inTimeStamp,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          inNumberFrames);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      CORE_AUDIO_TIMING_UNLOCK (buf->core_audio);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       buf->segoffset = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git subprojects/gst-plugins-good/sys/osxaudio/gstosxcoreaudio.c subprojects/gst-plugins-good/sys/osxaudio/gstosxcoreaudio.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 758a4622e5..6c5115d693 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- sys/osxaudio/gstosxcoreaudio.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ sys/osxaudio/gstosxcoreaudio.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -35,20 +35,10 @@ G_DEFINE_TYPE (GstCoreAudio, gst_core_audio, G_TYPE_OBJECT);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "gstosxcoreaudiohal.c"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--static void
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--gst_core_audio_finalize (GObject * object)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  GstCoreAudio *core_audio = GST_CORE_AUDIO (object);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  g_mutex_clear (&core_audio->timing_lock);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  G_OBJECT_CLASS (gst_core_audio_parent_class)->finalize (object);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static void
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- gst_core_audio_class_init (GstCoreAudioClass * klass)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  GObjectClass *object_klass = G_OBJECT_CLASS (klass);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  object_klass->finalize = gst_core_audio_finalize;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static void
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -64,8 +54,6 @@ gst_core_audio_init (GstCoreAudio * core_audio)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   core_audio->hog_pid = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   core_audio->disabled_mixing = FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  g_mutex_init (&core_audio->timing_lock);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gboolean
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -214,94 +202,8 @@ gboolean
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- gst_core_audio_get_samples_and_latency (GstCoreAudio * core_audio,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     gdouble rate, guint * samples, gdouble * latency)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  uint64_t now_ns = AudioConvertHostTimeToNanos (AudioGetCurrentHostTime ());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  gboolean ret = gst_core_audio_get_samples_and_latency_impl (core_audio, rate,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return gst_core_audio_get_samples_and_latency_impl (core_audio, rate,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       samples, latency);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (!ret)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  CORE_AUDIO_TIMING_LOCK (core_audio);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  uint32_t samples_remain = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  uint64_t anchor_ns =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      AudioConvertHostTimeToNanos (core_audio->anchor_hosttime);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (core_audio->is_src) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    int64_t captured_ns =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        core_audio->rate_scalar * (int64_t) (now_ns - anchor_ns);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    /* src, the anchor time is the timestamp of the first sample in the last
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--     * packet received, and we increment up from there, unless the device gets stopped. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (captured_ns > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      if (core_audio->io_proc_active) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        samples_remain = (uint32_t) (captured_ns * rate / GST_SECOND);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        samples_remain = core_audio->anchor_pend_samples;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      /* Time went backward. This shouldn't happen for sources, but report something anyway */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      samples_remain =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          (uint32_t) (-captured_ns * rate / GST_SECOND) +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          core_audio->anchor_pend_samples;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    GST_DEBUG_OBJECT (core_audio,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        "now_ns %" G_GUINT64_FORMAT " anchor %" G_GUINT64_FORMAT " elapsed ns %"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        G_GINT64_FORMAT " rate %f captured_ns %" G_GINT64_FORMAT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        " anchor_pend_samples %u samples_remain %u", now_ns, anchor_ns,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        now_ns - anchor_ns, rate, captured_ns, core_audio->anchor_pend_samples,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        samples_remain);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    /* Sink, the anchor time is the time the most recent buffer will commence play out,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--     * and we count down to 0 for unplayed samples beyond that */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    int64_t unplayed_ns =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        core_audio->rate_scalar * (int64_t) (anchor_ns - now_ns);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (unplayed_ns > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      samples_remain =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          (uint32_t) (unplayed_ns * rate / GST_SECOND) +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          core_audio->anchor_pend_samples;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      uint32_t samples_played = (uint32_t) (-unplayed_ns * rate / GST_SECOND);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      if (samples_played < core_audio->anchor_pend_samples) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        samples_remain = core_audio->anchor_pend_samples - samples_played;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    GST_DEBUG_OBJECT (core_audio,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        "now_ns %" G_GUINT64_FORMAT " anchor %" G_GUINT64_FORMAT " elapsed ns %"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        G_GINT64_FORMAT " rate %f unplayed_ns %" G_GINT64_FORMAT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        " anchor_pend_samples %u", now_ns, anchor_ns, now_ns - anchor_ns, rate,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        unplayed_ns, core_audio->anchor_pend_samples);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  CORE_AUDIO_TIMING_UNLOCK (core_audio);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  GST_DEBUG_OBJECT (core_audio, "samples = %u latency %f", samples_remain,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      *latency);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  *samples = samples_remain;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  return TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--void
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--gst_core_audio_update_timing (GstCoreAudio * core_audio,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    const AudioTimeStamp * inTimeStamp, unsigned int inNumberFrames)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  AudioTimeStampFlags target_flags =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      kAudioTimeStampSampleHostTimeValid | kAudioTimeStampRateScalarValid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if ((inTimeStamp->mFlags & target_flags) == target_flags) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    core_audio->anchor_hosttime = inTimeStamp->mHostTime;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    core_audio->anchor_pend_samples = inNumberFrames;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    core_audio->rate_scalar = inTimeStamp->mRateScalar;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    GST_DEBUG_OBJECT (core_audio,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        "anchor hosttime_ns %" G_GUINT64_FORMAT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        " scalar_rate %f anchor_pend_samples %u",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        AudioConvertHostTimeToNanos (core_audio->anchor_hosttime),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        core_audio->rate_scalar, core_audio->anchor_pend_samples);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- gboolean
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git subprojects/gst-plugins-good/sys/osxaudio/gstosxcoreaudio.h subprojects/gst-plugins-good/sys/osxaudio/gstosxcoreaudio.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 1a1eed6eea..3416db6539 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- sys/osxaudio/gstosxcoreaudio.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ sys/osxaudio/gstosxcoreaudio.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -77,9 +77,6 @@ G_BEGIN_DECLS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- typedef struct _GstCoreAudio GstCoreAudio;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- typedef struct _GstCoreAudioClass GstCoreAudioClass;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#define CORE_AUDIO_TIMING_LOCK(core_audio) (g_mutex_lock(&(core_audio->timing_lock)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#define CORE_AUDIO_TIMING_UNLOCK(core_audio) (g_mutex_unlock(&(core_audio->timing_lock)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct _GstCoreAudio
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   GObject object;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -110,11 +107,6 @@ struct _GstCoreAudio
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   AudioStreamBasicDescription original_format, stream_format;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   AudioDeviceIOProcID procID;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  GMutex timing_lock;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  uint64_t anchor_hosttime;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  uint32_t anchor_pend_samples;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  float rate_scalar;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct _GstCoreAudioClass
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -151,10 +143,6 @@ gboolean gst_core_audio_get_samples_and_latency              (GstCoreAudio * cor
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                               guint *samples,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                               gdouble *latency);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--void gst_core_audio_update_timing                            (GstCoreAudio * core_audio,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                                              const AudioTimeStamp * inTimeStamp,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                                              unsigned int inNumberFrames);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void  gst_core_audio_set_volume                              (GstCoreAudio *core_audio,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                               gfloat volume);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/gnome/gstreamer1-gst-plugins-good/files/patch-coreaudio.diff b/gnome/gstreamer1-gst-plugins-good/files/patch-coreaudio.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..50bbbc8bcce
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/gnome/gstreamer1-gst-plugins-good/files/patch-coreaudio.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- sys/osxaudio/gstosxcoreaudio.c 2024-06-20 19:54:15.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ sys/osxaudio/gstosxcoreaudio.c 2024-06-22 07:10:09.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -303,6 +303,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gst_core_audio_update_timing (GstCoreAudio * core_audio,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const AudioTimeStamp * inTimeStamp, unsigned int inNumberFrames)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   AudioTimeStampFlags target_flags =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       kAudioTimeStampSampleHostTimeValid | kAudioTimeStampRateScalarValid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -318,6 +319,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         core_audio->anchor_hosttime_ns,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         core_audio->rate_scalar, core_audio->anchor_pend_samples);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gboolean
</span></pre><pre style='margin:0'>

</pre>