Releases: warren-bank/Android-ExoPlayer-AirPlay-Receiver
Releases · warren-bank/Android-ExoPlayer-AirPlay-Receiver
v1.0.12
WIP: add dialog to adjust the synchronization of text captions status: ======= * works great - is not yet feature complete * this as-not-yet-modified version of 'MultiFieldTimePickerDialog' - does not: * support negative values * implement NumberPicker.OnValueChangeListener - for any change, immediately call: notifyDateSet() => mListener.onTimeSet(hr, min, sec, ms) - would allow the user to see the updates in realtime and tweak the values interactively alongside video playback based on: ========= https://github.com/chromium/chromium/raw/80.0.3987.137/content/public/android/java/src/org/chromium/content/browser/picker/MultiFieldTimePickerDialog.java https://github.com/chromium/chromium/raw/80.0.3987.137/content/public/android/java/src/org/chromium/content/browser/picker/InputDialogContainer.java https://github.com/chromium/chromium/raw/80.0.3987.137/content/public/android/java/res/layout/multi_field_time_picker_dialog.xml
v1.0.11
add the ability to pre-process audio playlists * this is actually a really good feature * it's also designed in a way that's very easy to extend, which would enable pre-processing more URL patterns - for each URL pattern interceptor: * asked whether it should apply to a requested URL * if so, it implements a line parser that extracts URLs from text * currently, two URL pattern interceptors are implemented - .m3u audio playlists - .html files * this includes URLs that imply a directory index will be returned from the web server in .html format * current implementation only parses audio files from <a> tags - includes logic to dedupe duplicate audio files * when the same audio file is available in multiple formats, applies a ranking of format preference and only returns one URL for the audio file in the most favorable format notes: ====== * this feature had previously been implemented in the javascript SPA - depended upon a CORS proxy to bypass browser security rules to be able to download the playlist URL (ex: m3u, html) * now this feature is available to all clients automagically, and there are no cross-origin concerns * I left the javascript implementation in the SPA for reference sake, but all relevent code has been commented out
v1.0.10
add the ability to time-shift text captions by an offset (microsecs) tested successfully on: * VOD with captions in external files that get side-loaded * live streams with embedded (chunked) captions
v1.0.9
increase size of ExoPlayer video buffer by 50% when RAM > 1.5GB
v1.0.8
fix issue #2: [Android 4.1.x - 4.4.x] some video URLs don't load
v1.0.7
update the behavior of playback when screen is turned off - previously * all playback would stop when screen was turned off * no media could begin while screen was in the off state - now: * if the current playlist item has a video track - pause when the screen is turned off - resume when the screen is turned back on * if the current playlist item is audio-only - allow playback to continue when the screen is turned off - allow playback to begin while screen in in the off state - for both cases: * set a partial wakelock to prevent deep sleep * remove the partial wakelock when screen is turned back on additional tweaks: * spacebar key toggles pause/resume - useful with an air-mouse on a set-top box
v1.0.6
v1.0.6 - text captions * ability to sideload an external subtitles text file with video * button on controls overlay that opens a dialog - tabbed UI: video tracks, audio tracks, text tracks * can select one of the available options, or disable * HTTP endpoint to toggle captions on/off * SPA provides easy access to all HTTP endpoint functionality
v1.0.5
fixed a timing issue when replacing the queue with a new video. all operations that modify the queue are asynchronous, and accept a callback function (ie: Runnable). previously, no callbacks were used. the queue was cleared and a new item was immediately added. this usually worked, but it's a race condition; sometimes the new video wouldn't appear. this commit changes the order of operations, and adds a callback. 1) new video is added to end of existing queue 2) wait for callback 3) clear all elements in queue EXCEPT the last video result: works great. no race condition. new video always loads.
v1.0.4
add permissive CORS response header * for the SPA web app: - requests are sent one-way to the server - responses are ignored * commands are issued * nothing meaningful is communicated back - lack of a CORS response header results in: * the browser blocking data in the response * a warning logged to the javascript console - adding this header: * makes no functional difference * prevents the log messages * for other web clients: - there are AirPlay endpoints that return metadata - if any of this data is queried, this CORS header will permit the client to read it
v1.0.2
README