[mythtv] AC3 passthrough and timestretch problems

John P Poet jppoet at gmail.com
Mon May 5 14:29:06 UTC 2008


On Mon, May 5, 2008 at 7:25 AM, Dan Wilga
<mythtv-dev2 at dwilga-linux1.amherst.edu> wrote:
> At 6:34 PM -0600 5/2/08, John P Poet wrote:
>  >On Fri, May 2, 2008 at 6:06 PM, John P Poet <jppoet at gmail.com> wrote:
>  >>  On Fri, May 2, 2008 at 12:19 AM, Mark Spieth <mark at digivation.com.au> wrote:
>  >>   > could you also try this one please. this is my prefferred fix.
>  >>   >  remove the other patch.
>  >>   >
>  >>   >  thanks
>  >>   >
>  >>   > mark
>  >>   >
>  >>   >  --- audiooutputbase.cpp (revision 17223)
>  >>   >  +++ audiooutputbase.cpp (working copy)
>  >>   >  @@ -121,7 +121,8 @@
>  >>   >   void AudioOutputBase::SetStretchFactorLocked(float
>  >>laudio_stretchfactor)
>  >>   >   {
>  >>   >      effdspstretched = (int)((float)effdsp / laudio_stretchfactor);
>  >>   >  -    if (audio_stretchfactor != laudio_stretchfactor)
>  >>   >  +    if ((audio_stretchfactor != laudio_stretchfactor) ||
>  >>   >  +        (pSoundStretch == NULL))
>  >>   >      {
>  >>   >          audio_stretchfactor = laudio_stretchfactor;
>  >>   >          if (pSoundStretch)
>  >>
>  >>
>  >>   Yes, that also works.
>  >
>  >Oops.  Unfortunately, mythfrontend randomly segfaults with this patch
>  >applied.  I will re-test with your original patch.
>
>  Hm. I also started to get random MFE crashes after applying this
>  patch, but I assumed it was not related. They happen at irregular
>  intervals, one to two minutes after playback starts.
>
>  Now that I see Mark & Daniel have committed several revisions based
>  on three different issues, I'll try various combinations of them
>  tonight, and try to do a backtrace if there's still a problem.
>  --
>  Dan Wilga                                                        "Ook."


I don't think Daniel actually committed the fix for my segfaults,
related to this.  Mark figured out that the following is needed:

--- libs/libmyth/audiooutputbase.cpp    (revision 17246)
+++ libs/libmyth/audiooutputbase.cpp    (working copy)
@@ -1040,6 +1045,11 @@

                    bdiff = kAudioRingBufferSize - amount;
                    org_waud += amount;
+                    if (org_waud >= kAudioRingBufferSize)
+                    {
+                        VERBOSE(VB_IMPORTANT, QString("org_waud >=
kAudioRingBufferSize %1 %2").arg(org_waud).arg(amount));
+                        org_waud -= kAudioRingBufferSize;
+                    }
                }
            }
            else
@@ -1069,6 +1079,11 @@
                        org_waud += nSamples * audio_bytes_per_sample;
                        nSamplesToEnd -= nSamples;
                    }
+                    if (org_waud >= kAudioRingBufferSize)
+                    {
+                        VERBOSE(VB_IMPORTANT, QString("org_waud >=
kAudioRingBufferSize %1 %2
%3").arg(org_waud).arg(nSamples).arg(audio_bytes_per_sample));
+                        org_waud -= kAudioRingBufferSize;
+                    }

                    newLen += nSamples * audio_bytes_per_sample;
                    len -= nSamples * audio_bytes_per_sample;

Are you running TRUNK or FIXES?  The above is for TRUNK, but I can
send you one for FIXES if you need it.

John
-- 
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?


More information about the mythtv-dev mailing list