Ticket #4764: mythtv_ac3.54-v2.patch

File mythtv_ac3.54-v2.patch, 4.1 KB (added by danielk, 4 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; }