Currently FlacDecoder/FlacExtractor always perform resampling to 16bit. In some
case (with 24bit audio), this might lower the audio quality if the system
supports 24bit audio.
Since AudioTrack implementation supports resampling, we will remove the
resampling step, and return an output with the same bits-per-sample as the original stream.
User can choose to re-sample to 16bit in AudioTrack if necessary.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167494350
- Fix Ogg extractor to work without sniffing.
- Fix extractors to handle seek() before init().
- Add tests for both issues.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=163992343
In the latest NDK version (r15) compilation fails because 'memset' isn't defined. Included cstring header.
Issue: #2977
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=160139022
This allows binding by track type in ChunkExtractorWrapper, which
allows the EMSG and 608 tracks to be enabled on FragmentedMp4Extractor
in DefaultDashChunkSource. ChunkExtractorWrapper currently binds these
to DummyTrackOutputs.
Note: I wanted to pass the mimeType instead, since it's a more specific,
but unfortunately there's at least one place where it's not known at the
point of invoking track() (FlvExtractor).
Issue #2176
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146471082
- Add proguard rules for libraries/extensions into .aar files
- Add proguard rules to retain CEA608/708 decoder constructors
- Remove lots of default config from gradle files
- Remove disabling of abort on lint error
- Enable optimizations on release builds of demo app
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144350233
This requires knowing the seek time in Extractor.seek, so that it's possible to
pick the latest synchronization sample at/before the seek time for each track
(rather than the earliest synchronization sample after the seek position).
Also remove the STATE_AFTER_SEEK state which should no longer be needed.
Issue: #2167
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=141432598
If/when we add the ability to query version information,
such methods will go into FlacLibrary for consistency with
the other extensions. The difference for Flac is that
since the decoder JNI is used by the extractor too, it
needs splitting into a separate from from FlacDecoder.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=132904665
- Also make some of the naming more concise + misc style cleanup.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=132899979
1. Rename "extensions" package to "decoder". It's used by both
text and (should be used by) metadata, so it's no longer just
for extensions.
2. Move Buffer objects move into the decoder package.
3. Rename SubtitleParser and MetadataParser to SubtitleDecoder
and MetadataDecoder respectively, since they extend Decoder.
Ditto for all subclasses.
4. Subtitle and Metadata decoders now throw their own exception
types rather than ParserException.
5. Move MediaCodec classes into a mediacodec package, with the
exception of the concrete audio and video renderers.
6. Create an audio package to hold the two audio renderer classes
plus related util classes.
7. Create a video package to hold the one video renderer class
plus related util classes.
After this change the following nice properties hold:
1. Want a video renderer? Look in the video package. Ditto for
audio, text and metadata.
2. All TrackRenderer implementations use a decoder of some kind
to decode buffers received from the source, so we have
consistent terminology there.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=127326805
It doesn't look like TrackSelectionPolicy is going to be
useful other than with DefaultTrackSelector, and it's kinda
confusing dealing with both "selector" and "policy"
terminology. This change does the following:
DefaultTrackSelector -> selector.MappingTrackSelector
DefaultTrackSelectionPolicy -> selector.DefaultTrackSelector
TrackSelectionPolicy -> [deleted]
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=127196326
- The package is renamed to avoid conflicts with v1, should any
app wish to include both v1 and v2 for a period of time. This is
similar to the approach used by some other open source projects
(e.g. okhttp).
- Copyright year is updated everywhere for completeness.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=126895326
It looks like the manifests are essentially pointless,
but various tools are unhappy if I delete them.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=124976509
These methods call read(...) method which may throw these exceptions.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=124332828
Added a new method TestUtil.consumeTestData() to emulate
the exact behaviour and modified OggExtractorFileTests to
use it. Rest of the test will be fixed in follow up CLs.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=123320538
This field will allow us to flexibly add information provided by the container
or streaming manifests related to the tracks that must be selected.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=122559858
1. AudioDecoderTrackRenderer now reports decoder initialization
and AudioTrack underruns.
2. AudioDecoderTrackRenderer can now render more than one output
buffer per call to doSomeWork, to be consistent with
MediaCodecAudioTrackRenderer. This may also prevent audio
underruns in the case that audio is fragmented into many small
buffers.
3. AudioDecoderTrackRenderer now has an overridable method that
receives the audio session id, to be consistent with
MediaCodecAudioTrackRenderer.
4. Fix unsafe event notification in LibvpxVideoTrackRenderer.
5. Vpx and AudioDecoder extensions now increment the CodecCounter
inputBufferCount field correctly.
6. Decoders now have names :).
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=122250009
The FFmpeg extension can support various different MIME types, so pass the
whole format to configure the decoder.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=122246589
- This means DrmInitData is propagated through sample queues (i.e.
is effectively attached to every sample, so we can see when it
changes when reading from the queue).
- It also allows different DrmInitData per track, which is possible
in muxed MKV/WebM, and per Representation for DASH, although we
wont be able to seamlessly adapt in the latter case.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=121821928