Added FlacBinarySearchSeeker, which supports seeking in a FLAC stream by searching for individual frames within the file using binary search.
Github: #1808.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=196587198
Fix suppressing initial "state changed to paused" listener invocations
for new added tasks that are immediately started.
Notify listeners for loaded actions queued state if they are not started
immediately.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=196542693
The lint error suppression only works locally and not for external developers
who still see the lint error and need to suppress it themselves.
This changes 'implementation' to 'compileOnly' in gradle to prevent the
dependency from being exported. Also removes the local lint suppression.
Issue:#4234
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=196251407
This makes way for reusing EGLSurfaceTexture in other places, such as metadata
and frame retriever.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=196240576
Also only listen to requirements when actually necessary, else we can
put the service into the foreground when it needn't be there.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195597750
This type of flicker was visible (at least on my S8) whenever starting
the demo app process (from being properly killed) when other notifications
(e.g. completed download notification) was present.
This change passes whether the service was started as foreground through
the intent, and only applies the show-notification-on-stop hack if it
was. It's only necessary to start as foreground if your app is not already
in the foreground, so it's not necessary to do this from activity/ui
components.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195594930
If an app wants to reconcile its own state with that of a DownloadManager,
it's helpful to know when the DownloadManager has finished restoring any
previously persisted tasks.
Also suppress initial "state changed to paused" listener invocations for
tasks that are immediately started.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195594881
- Start before stop
- Release near bottom
- Private after public
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195570480
Also convert them to exposing periods and track groups, like
regular MediaSources do. This gets us much closer to being
able to use standard track selection components during offline
initialization. The helper is responsible for reverse mapping
selected tracks onto physical streams when generating the
download action. This is trivial except for the HLS case, which
is a TODO for now.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195500826
This may be preferable for using custom binary data,
and it's still easy to store Strings if needed.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195486817
The old event listener on AdsMediaSource is deprecated, in favor of
reporting in the normal way (via MediaSourceEventListener).
Add AdLoadException with information on what ad/ads failed to load.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195426144
- Support handling metadata queries (a.k.a get TrackGroupArray, which contains
Format and associated Metadata) from MetadataRetriever.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195401204
Upstream components may incorrectly clear the interrupted flag and not
propagate an exception when the caching thread is interrupted due to
cancellation. Pass a settable flag down to CacheUtil.cache and check it
frequently so it's not necessary to rely on the interrupted flag.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195371244
This avoids the interrupted flag being lost if the exception
is handled as an IOException.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195366244
- Made parts of DownloadActions public that were previously hidden.
This is necessary so that when an app is listening to the
DownloadManager, it can tell something about the tasks.
- Simplified DownloadActivity some more. The helpers may migrate
into their corresponding modules at some point, and also be
converted to return structured TrackGroupArrays rather than a
flat list of Formats.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195269824
This includes only the (hopefully) non-debatable changes for the DASH module
and all needed changes for call into the core library.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=195097791
A single master version prevents app developers from providing
custom download functionality (because they can't increment the
version). It's also error prone to expect someone modifying the
DASH action to remember to update the ActionFile master version.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194981886
Ad load errors will be forwarded as media source load errors in the future
and other ad events are not actually player related to warrant reporting
them as part of playback analytics.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194936656
This was adding a lot of code, and the multiple use cases
for Downloader was pretty confusing (in particular the
ordering of method calls was unclear). It's also not
performant (e.g. it requires loading/parsing manifest(s)
and initialization segments from disk).
In practice I think apps will need to keep a record of
what's offlined in their app's database (or equivalent),
which they can update by registering as a listener on
DownloadManager. This will be done for the demo app in
a subsequent change.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194932876
- It's much cleaner to split completed/error notification methods.
- Make error notification show the content title in the demo app.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194920507
It's no longer necessary to stash a reference to the
error yourself. This also correctly handles the case
where setPlayer is called with a player that's already
in an error state.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194828387
This change is intended to resolve overloading of "Download",
where a DownloadTask could be an actual download task, or a
remove task.
Also cleaned up some documentation.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194815058
- Redefine Scheduler interface to better describe what implementations
do. The previous version was too general, in that it allowed concrete
DownloadService implementations to pass different Requirements to
the base class and to the Scheduler. It's also difficult to see how
that version could ever support dynamic updates to Requirements, which
is probably a feature we'll need to add quite soon.
- Fix a (probably theoretical) problem where static fields in
DownloadService assumed only a single concrete implementation.
- Stop using PlatformScheduler pre-API-21 in demo app, because it will
fail.
- Define default Requirements that require network.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194785751
- It's wasted effort
- DataSpec reconstruction fails because creating a DataSpec with 0
length isn't allowed.
- Also better document DataSink open/close, to be like DataSource.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194778132
This replaces the existing listeners and provides some additional meta data
for each event.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194770421
- Add ACCESS_NETWORK_STATE to core library. It seems fairly fundamental. We should
also be using it elsewhere (e.g. to fail fast if there's no network).
- Add annotation to force apps using PlatformScheduler to declare RECEIVE_BOOT_PERMISSION
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194763051
- When calculating the downloaded percentage in DASH, there was no
way to disambiguate between 0 of 0 segments being downloaded because
there are no cached indexes (i.e. 0% downloaded) and 0 of 0 segments
being downloaded because the index defines 0 segments (i.e. 100%
downloaded).
- Also replace use of NaN with a named constant.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194453202
Supports extracting data from AMR container format for both narrow and wide
band formats. Also added AmrExtractor as one of the default extractor to be
used in DefaultExtractorsFactory.
GitHub: #2527.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194407507
When we play downloaded content, we rely on the manifest filters
to produce a manifest that contains only the content that was
downloaded. It makes sense just to use the same filters during
download too, so we don't have to worry about any implementation
differences.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=194380704