Skip to content

Releases: warren-bank/Android-ExoPlayer-AirPlay-Receiver

v1.0.12

13 Mar 21:41
Compare
Choose a tag to compare
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

13 Mar 14:54
Compare
Choose a tag to compare
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

10 Mar 10:01
Compare
Choose a tag to compare
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

08 Mar 15:47
Compare
Choose a tag to compare
increase size of ExoPlayer video buffer by 50% when RAM > 1.5GB

v1.0.8

07 Mar 14:34
Compare
Choose a tag to compare
fix issue #2: [Android 4.1.x - 4.4.x] some video URLs don't load

v1.0.7

06 Mar 21:07
Compare
Choose a tag to compare
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

29 Feb 00:02
Compare
Choose a tag to compare
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

27 Feb 20:34
Compare
Choose a tag to compare
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

27 Feb 13:49
Compare
Choose a tag to compare
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

26 Feb 16:48
Compare
Choose a tag to compare
README