Repository navigation
fix(app): audio pipeline stability, cookie login, discovery filtering, and feed performance - #351
Merged
Merged
Conversation
…ash on read-only buffers - Revert default of forceSoftwareVolume to false to restore hardware UAC volume control - Guard scalePcmInPlace against read-only buffers to permanently avoid ReadOnlyBufferException - Isolate software PCM scaling in ExclusiveUsbOutput to newly allocated write chunks - Reset pendingVolume to 1.0f across track transitions to eliminate zero-volume traps - Fallback to 24-bit container alt setting if initial alt setting fails on UAC2 DACs
…nt volume mismatch
…t blocked device keys
…utput initialization order
…ut detector to Poweramp signal path
…aw header support
… unit test stub failure
…are direct pipeline
…io queues on feed, and optimize feed load
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Comprehensive update resolving audio pipeline stability, YouTube Music authentication, Discovery recommendation quality, Feed queue behavior, and Feed loading performance.
1. Discovery Recommendation Engine
isAlreadyListenedfiltering inDiscoverRepositorychecking across user history (recentTracksRaw,topTracksRaw,ytMusicRecentRaw,ytMusicLikedRaw,ytMusicFeedRaw, and saved playlist keys) by key and normalizedartist|title.DISCOVER_ARTIST_CAP = 1(was 3) so batches do not repeatedly surface the same artist.ytMusicFeedRawlistening history tracks directly into discover candidates.2. Smart Feed Queues & Radio Continuation
Quick Picks,Because you listen to,Fresh Finds, orChartsnow callsviewModel.playTrack(track, ..., startRadio = true). This generates an intelligent 25+ track context-aware radio queue instead of playing a static 5–10 track slice.playTracksQueue,shuffleTracksQueue,playRecentQueue, andplayGeneratedQueuewithenableRadioContinuation = true. When the queue nears its end,MusicPlayercontinuously extends the queue with contextually related tracks.3. Feed Performance & Balance
fetchArtistPagecalls inartistReleases(saving 2–4s per load), consumingmatchedReleasesdirectly from the parallelfetchNewReleasesquery.artistEntityCache: ConcurrentHashMap<String, FeedArtist>inFeedRepositoryto avoid duplicatesearchArtistscalls across feed refreshes.discoveryDef.await()withwithTimeoutOrNull(3000L)to prevent slow graph queries from holding up feed rendering.FeedViewModelwithout waiting for network reloads.4. YouTube Music Cookie Login (Matching Desktop)
CookieNormalizer.kt(direct port of DesktopInnerTubeMusicApi.normalizeCookies): supports rawCookieheaders, Netscapecookies.txtformat, JSON exports from browser extensions (Cookie-Editor, EditThisCookie), and multiline text.CookieLoginDialog.ktwith clipboard paste helper, real-time validation error alerts, and seamless connection.YouTubeLoginScreen.ktandSettingsScreen.kt.CookieNormalizerTest.kt.5. Audio Pipeline & Bit-Perfect Playback
handOffCrossfade()by keepinghandleAudioFocus = falseon the standby player so ExoPlayer doesn't fight LastWave's manual focus management.SignalPath.ktso software gain override does not disqualify bit-perfect mode when sample rate and bit depth match the DAC wire format.forceSoftwareVolumedefault tofalseand guarded againstReadOnlyBufferExceptioncrashes on read-only MediaCodec buffers.