- 18 Dec, 2019 16 commits
-
-
This indicates the extractor has output a Format with a specified maxInputSize that's too small. Failing in FakeTrackOutput ensures this doesn't happen during Extractor tests. PiperOrigin-RevId: 285776069
olly committed -
Manual rollback of https://github.com/google/ExoPlayer/commit/b3f485d7d9c08e39574b72a949166ee4834c3b24 It's technically possible to output a seekable SeekMap with unknown duration. This can occur if the media defines seek points but doesn't define either the overall duration or the duration of the media from the last seek point to the end. PiperOrigin-RevId: 285769121
olly committed -
- Make extractor output samples that are uniformly distributed with respect to time, with a target of ~10 samples per second. The old approach could in theory put every frame into its own sample, which would be very inefficient downstream because we'd need to pass them individually to MediaCodec. It could also put data corresponding to a long duration of time into a single sample (e.g. if the sample rate of the content is low), which is bad downstream because we decide whether to set the decodeOnly flag on a per sample basis. More generally, the new approach is more predictable :). - Stop using the WavSeekMap to get sample timestamps, and instead calculate them directly from the number of frames output. It's more obviously correct, particularly for data formats like IMA ADPCM where we'll need to adjust the data prior to output. PiperOrigin-RevId: 285750010
olly committed -
In MatroskaExtractor, if the last cue time exceeds the duration specified in the header, then we end up generating a negative duration chunk as the last item in the SeekMap. We should probably not do this, so drop it instead. Note: Matroska does have a CueDuration element, but it's not used in the one problematic file I've found. PiperOrigin-RevId: 285738418
olly committed -
Currently, resetting the internal state related to the codec in done in 4 places in MediaCodecRenderer: 1. In the constructor to set some sensible initial default. 2. In flushOrReleaseCodec to reset state after flushing 3. In releaseCodec to reset state to default values for a released codec. 4. In initCodec to reset state to defaul values for a new codec. There are actuall only two types of state reset operations: 1. Resetting state for a released codec, so that a new codec isn't influenced by previous codecs. 2. Resetting state after flushing an existing codec. This is a subset of (1). So to simplify the class, this change moves all state resets to two methods corresponding to the two cases above. PiperOrigin-RevId: 285731913tonihei committed -
These are transitively provided by testutil's build.gradle. This makes the core module consistent with the others like ui, hls, dash PiperOrigin-RevId: 285729566
ibaker committed -
These aren't used from any other Gradle files PiperOrigin-RevId: 285723602
ibaker committed -
PiperOrigin-RevId: 285716982
andrewlewis committed -
PiperOrigin-RevId: 285449865
olly committed -
PiperOrigin-RevId: 285422885
olly committed -
PiperOrigin-RevId: 285407744
olly committed -
PiperOrigin-RevId: 285405910
olly committed -
This is in preparation for adding an internal-only change near these lines. PiperOrigin-RevId: 285403671
andrewlewis committed -
These are not useful for estimating the network speed and should be ignored. PiperOrigin-RevId: 285400948
tonihei committed -
The DedicatedThreadAsyncMediaCodecAdapter is an asynchronous MediaCodecAdapter that routes callback to a separate Thread. PiperOrigin-RevId: 285397368
christosts committed -
This may happen for example when trying to load unfinished live media chunks that can only be loaded at real-time playback speed. The flag can be used by the sources to indicate that network transfer will knowingly be throttled, such that transfer listeners like the bandwidth meter can take this information into account. PiperOrigin-RevId: 285397100
tonihei committed
-
- 13 Dec, 2019 12 commits
-
-
Also change IcyInfo.rawMetatadata from String to byte[] ICY doesn't specify the character encoding, and there are streams not using UTF-8 (issue:#6753). It seems the default of at least one server is ISO-8859-1 so let's support that as a fallback: https://github.com/savonet/liquidsoap/issues/411#issuecomment-288759200 Also update IcyDecoder to skip strings it doesn't recognise at all instead of decoding invalid characters. The feed from issue:#6753 now decodes accents correctly: EventLogger: ICY: title="D Pai - Le temps de la rentrée", url="null" PiperOrigin-RevId: 285388522
ibaker committed -
This is a useful test to see if it works well in a real situation. PiperOrigin-RevId: 285386471
ibaker committed -
We previously used Locale.fromLanguageTag and then toLanguageTag to automatically filter out invalid tags and to replace deprecated tags. However, this only works for API 21+. This change does no longer rely on the platform methods and instead: 1. Keeps invalid tags as they are. This may help if developers rely on non-spec-complaint language tags (for example, #6681). 2. Adds a list of deprcated tags and their modern replacements to our code 3. Normalizes some short codes that have been superseded by macrolanguage codes by their macrolanguage equivalent. Issue:#6681 PiperOrigin-RevId: 285384841tonihei committed -
Document that limit() is respected, but position() and arrayOffset() are assumed to be zero. PiperOrigin-RevId: 285384613
ibaker committed -
This has been broken since https://github.com/google/ExoPlayer/commit/c3d6be3afdd7c0ca68dba15e443bc64aa3f61073 and broken for ICY (where I noticed the problem) since https://github.com/google/ExoPlayer/commit/5695bae9d8fde5e156fd38fa552e266c5611c71f. ICY symptom is that we see no repeated metadata, because the Icy-MetaData:1 header doesn't make it to the server so we never get back icy-metaint. PiperOrigin-RevId: 285379234
ibaker committed -
The presentationTimeOffsetMs may be C.TIME_UNSET for VOD content and shouldn't be used in calculations for the windowStartTime. PiperOrigin-RevId: 285363095
tonihei committed -
Retrieve the sample number in the extractor instead of passing a holder to FlacBinarySearchSeeker. This change makes the code easier to understand and is required to implement the seeking from the seek table. PiperOrigin-RevId: 285241862
kimvde committed -
- Create PcmOutputWriter for PCM. - In a future change an ImaAdPcmOutputWriter will be introduced for IMA ADPCM support. PiperOrigin-RevId: 285238246
olly committed -
- WavHeader is now immutable and contains only values parsed out of the WAVE FMT chunk. It no longer contains a C.PcmEncoding encoding, or mutable data bounds. - WavHeaderReader now parses the WAVE header chunks without any additional logic (e.g. validating the block alignment value, which is format type dependent). - The SeekMap part of WavHeader is split out into WavSeekMap. PiperOrigin-RevId: 285232498
olly committed -
This returns the current offset to the live edge. The calculation is non-intuitive enough to provide this convenience method. PiperOrigin-RevId: 285171090
tonihei committed -
This was verified as a no-op change in a prod experiment. PiperOrigin-RevId: 285167972
olly committed -
This avoids needing to jump through type paremeter hoops to create a sub-classable Cue.Builder. Cue should have a standard set of fields, because it will be consumed by renderers that don't know what type it is. The existing subclass fields are only used inside their respective packages, so can be part of a wrapper object instead. This lays the groundwork for converting Cue's multiple constructors into a Builder pattern. PiperOrigin-RevId: 284992135
ibaker committed
-
- 11 Dec, 2019 12 commits
-
-
Oliver Woodman committed
-
r2.11.0
Oliver Woodman committed -
Oliver Woodman committed
-
Change FakeAdaptiveMediaPeriod back to this style for consistency. PiperOrigin-RevId: 284967667
olly committed -
Remove all generic arrays from this class. FakeAdaptiveMediaPeriod.java:171: warning: [rawtypes] found raw type: ChunkSampleStream return new ChunkSampleStream[length]; ^ missing type arguments for generic class ChunkSampleStream<T> where T is a type-variable: T extends ChunkSource declared in class ChunkSampleStream PiperOrigin-RevId: 284761750ibaker committed -
Keyframe was rendered rather than skipped when performing an exact seek to a non-zero position close to the start of the stream. PiperOrigin-RevId: 284798460
samrobinson committed -
PiperOrigin-RevId: 284792946
christosts committed -
Change FakeAdaptiveMediaPeriod back to this style for consistency. PiperOrigin-RevId: 284967667
olly committed -
PiperOrigin-RevId: 284965120
ibaker committed -
PiperOrigin-RevId: 284961417
olly committed -
PiperOrigin-RevId: 284952647
kimvde committed -
PiperOrigin-RevId: 284951651
samrobinson committed
-