Ticket #4764: mythtv_ac3.54-v2.patch

File mythtv_ac3.54-v2.patch, 4.1 KB (added by danielk, 16 years ago)

updated patch

  • libs/libmythtv/avformatdecoder.cpp

     
    40024002            digInfo.sample_rate = 48000;
    40034003            digInfo.sample_size = 4;
    40044004        }
     4005#if 0
    40054006        if (audioOut.channels > (int) max_channels)
    40064007        {
    40074008            audioOut.channels = (int) max_channels;
    40084009            audioOut.sample_size = audioOut.channels * 2;
    40094010            codec_ctx->channels = audioOut.channels;
    40104011        }
     4012#endif
    40114013        VERBOSE(VB_AUDIO, LOC + "Audio format changed digital passthrough " +
    40124014                QString("%1\n\t\t\tfrom %2 ; %3\n\t\t\tto   %4 ; %5")
    40134015                .arg(digInfo.toString())
  • libs/libmyth/audiooutputbase.h

     
    5656    virtual void Drain(void);
    5757
    5858    virtual int GetAudiotime(void) const;
     59    virtual int GetAudioBufferedTime(void) const;
    5960
    6061    // Send output events showing current progress
    6162    virtual void Status(void);
  • libs/libmyth/audiooutputalsa.cpp

     
    8080    }
    8181    else
    8282    {
    83         fragment_size = 6144; // nicely divisible by 2,4,6,8 channels @ 16-bits
    84         buffer_time = 500000; // 500 ms
    85         period_time = buffer_time / 4;  // 4 interrupts per buffer
     83        fragment_size = 1536 * audio_channels * audio_bits / 8;
     84        period_time = 25000;  // in usec, interrupt period time
     85        // in usec, for driver buffer alloc (64k max)
     86        buffer_time = period_time * 16;
    8687    }
    8788
    8889    if (audio_bits == 8)
  • libs/libmyth/audiooutputbase.cpp

     
    683683    pthread_mutex_unlock(&audio_buflock);
    684684}
    685685
     686int AudioOutputBase::GetAudioBufferedTime(void) const
     687{
     688     return audbuf_timecode - GetAudiotime();
     689}
     690
    686691bool AudioOutputBase::AddSamples(char *buffers[], int samples,
    687692                                 long long timecode)
    688693{
     
    704709        len += (pSoundStretch->numUnprocessedSamples() +
    705710                (int)(pSoundStretch->numSamples()/audio_stretchfactor))*abps;
    706711
    707     if (((len > afree) || ((audbuf_timecode - GetAudiotime()) > 2000)) && !blocking)
     712    if ((len > afree) && !blocking)
    708713    {
    709714        VERBOSE(VB_AUDIO|VB_TIMESTAMP, LOC + QString(
    710715                "AddSamples FAILED bytes=%1, used=%2, free=%3, timecode=%4")
     
    773778                (int)(pSoundStretch->numSamples()/audio_stretchfactor))*abps;
    774779    }
    775780
    776     if (((len > afree) || (audiotime && ((audbuf_timecode - GetAudiotime()) > 2000))) && !blocking)
     781    if ((len > afree) && !blocking)
    777782    {
    778783        VERBOSE(VB_AUDIO|VB_TIMESTAMP, LOC + QString(
    779784                "AddSamples FAILED bytes=%1, used=%2, free=%3, timecode=%4")
  • libs/libmyth/audiooutputdigitalencoder.cpp

     
    2626#define MAX_AC3_FRAME_SIZE 6144
    2727
    2828AudioOutputDigitalEncoder::AudioOutputDigitalEncoder(void) :
     29    audio_bytes_per_sample(0),
    2930    av_context(NULL),
    3031    outbuf(NULL),
    3132    outbuf_size(0),
  • libs/libmyth/audiooutput.h

     
    5353
    5454    virtual int GetAudiotime(void) const = 0;
    5555
     56    /// report amount of audio buffered in milliseconds.
     57    virtual int GetAudioBufferedTime(void) const { return 0; }
     58
    5659    virtual void SetSourceBitrate(int ) { }
    5760
    5861    QString GetError(void)   const { return lastError; }