Commit graph

1028 commits

Author SHA1 Message Date
aquilescanta
b6b97a8683 Expose cue settings parser
This CL exposes the cue settings parser in order to allow its usage from the MP4Webvtt extractor. Also fixes a few mistakes from the previous related CL.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=112145806
2016-01-14 17:13:32 +00:00
olly
6b9a1b16f1 Fix issues playing FLV content.
* AudioTagPayloadReader was strangely parsing an audioSpecificConfig
  itself, using the parsed values to build a new audioSpecificConfig,
  then passing the newly constructed instance to be parsed by
  CodecSpecificDataUtil. Unfortunately the translation was lossy ;).
* Treat Duration=0 as an unknown duration.

Issue #1137
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=112143569
2016-01-14 17:13:32 +00:00
olly
bc1d76a3eb Fix ParsableByteArray.readLine + discard BOM at start of line.
- I think \r and \n are handled the wrong way around?
- We only expect to encounter a BOM sequence at the start of a
  file, but it feels fine to automatically discard it in all
  cases for simplicity. A BOM sequence doesn't mean anything in
  UTF-8. See https://en.wikipedia.org/wiki/Byte_order_mark. Note
  that I think the advice not to remove it on that page relates
  only to the case where the file is being edited + saved.

Issue #1136
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=112143407
2016-01-14 17:13:32 +00:00
andrewlewis
5ef1123391 Clarify @param bufferSizeContribution documentation.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=112127698
2016-01-14 17:13:32 +00:00
olly
59cf3e02f5 HlsChunkSource: Expose stuff for WebVtt/Variant selection.
Issue: #151
Issue: #676
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111945466
2016-01-14 17:13:32 +00:00
olly
2a9eeaa893 Fix HlsSampleSource use of LoadControl.
There are multiple issues with HlsSampleSource's use of
LoadControl that become apparent when you attempt to use
the same LoadControl for loads by another source.

* In the "limbo" state HlsSampleSource doesn't start any
  new loads, but doesn't update the LoadControl to tell
  it that it doesn't want to load anything either. This
  can prevent another source from starting the loads that
  it needs to make to complete preparation, causing
  playback to become stuck.
* The LoadControl isn't updated properly when the EOS is
  reached. This can cause playback to become stuck near
  the end of the media.
* If HlsSampleSource is released from being in the "limbo"
  state, it doesn't unregister itself with the control.

Issue: #151
Issue: #676
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111942009
2016-01-14 17:13:32 +00:00
olly
43fcb36924 Use APPLICATION_M3U8 as the mimeType for media playlists.
Given we need to do this in HlsPlaylistParser in the normal
case (i.e. not MEDIA_TAG), we may as well just be consistent
and do it everywhere.

Issue: #151
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111941335
2016-01-14 17:13:32 +00:00
eguven
8c8794878d Fixed demo-misc-vp9-opus-sw DASH check
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111839055
2016-01-14 17:13:32 +00:00
andrewlewis
b7d5ce366a Add a comment to explain the input size calculation.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111833857
2016-01-14 17:13:31 +00:00
rileya
c6cdf7e083 Add limited support for edit lists in fragmented MP4s.
Currently only supports a single offset to the full media timeline
(indicated by a duration of 0). This is most often used to fix the
non-zero starting presentation timestamp introduced when B-frames
are present.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111816916
2016-01-14 17:13:31 +00:00
cblay
aec9657c76 Internal refactor.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111746825
2016-01-14 17:13:08 +00:00
olly
ab9e3bac46 Introduce HlsTrackSelector.
This is equivalent to DashTrackSelector and SmoothStreamingTrackSelector.
This is a step toward allowing HlsChunkSource to expose multiple tracks,
which is a requirement for supporting WebVtt.

This change also enables WebVtt extractor instantiation.

Issue: #151
Issue: #676
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111698833
2016-01-14 17:08:25 +00:00
olly
00f8deda3d Introduce PtsTimestampAdjusterProvider for HLS WebVTT.
This allows the same adjusters to be used by multiple
HlsChunkSource instances. This is necessary because
WebVTT chunks will be loaded by a second chunk source
to the one loading audio/video. In both cases the same
timestamp adjustments will need to be applied.

Each source may transition from one discontinuity sequence
to the next at a slightly different time, so it's necessary
to maintain a separate adjuster for each sequence.

An adjuster can only be initialized correctly using audio/video
and not WebVTT, because the start time in a WebVTT file in
HLS doesn't necessarily correspond to the chunk start time,
which means the timestamp offset calculated by the adjuster
could end up being incorrect. Hence sources providing WebVTT
chunks will set isMasterSource to false. Lovely, right :(?

Issue: #151
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111693126
2016-01-14 17:08:25 +00:00
olly
b9ec51dbed SmoothStreaming track selector feature parity with DASH.
This gives DefaultSmoothStreamingTrackSelector feature parity
with DefaultDashTrackSelector. Note that the code duplication
across these classes will go away eventually, when we rework
track selection as described in Github Issue #1121.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111688784
2016-01-14 17:08:25 +00:00
olly
00e903b32e Don't pass maxWidth/Height for non-video streams.
This is a no-op change for clarity only. maxWidth/maxHeight
don't mean anything for AAC/MP3, so it makes sense to pass
MediaFormat.NO_VALUE in all cases.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111619832
2016-01-07 22:52:51 +00:00
aquilescanta
651996983b Refactored the Webvtt parsing classes
Moved the behaviors related to Cue's to the WebvttCueParser class.
This way, the parsing methods will be more easily accessible to
other classes, such as the MP4Webvtt parser. This class also has
some methods that require state to avoid repetitive avoidable
allocations. The method visibility is subject to changes in
further CLs.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111616824
2016-01-07 22:52:34 +00:00
olly
0aa4d3d209 Remove dead code.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111613354
2016-01-07 22:47:58 +00:00
andrewlewis
664c80da15 Set a max input size for VP8 and VP9.
Issue: #1090
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111607802
2016-01-07 22:47:58 +00:00
olly
cc1f3e5cac Clean up parser exception a little + add descriptions.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111515406
2016-01-06 17:43:02 +00:00
olly
27e11f1f1a Workaround flushing issues on S-3 JB MR2.
Targeting to all API level 19 devices using the OMX.SEC.avc.dec
decoder is probably the right thing to do. It shouldn't have
negative implications if we apply the workaround on devices that
don't really need it, except to slow down seeking slightly due
to decoder re-allocation. Given we're talking about JB, I think
the priority should be to "make sure it works".

Issue: #951
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111514406
2016-01-06 17:43:02 +00:00
olly
9e3e61901e Remove stray line break (ineffectively busy).
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111507159
2016-01-06 17:43:02 +00:00
olly
1892779535 Increment frame timestamps (TS/H.262).
We normally expect each frame to come in its own PES packet,
but it seems that this is not always the case. This change
uses the frame rate in the stream to increment the frame
timestamp in the case of multiple frames contained within
a single PES.

Note that since we don't expect 100s of frames in a single
PES, or anything close to that really, the rounding errors
that may accumulate due to use of a frame duration should be
fine.

Issue: #1112
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111499052
2016-01-06 17:43:02 +00:00
andrewlewis
d740bf9f23 Handle edit lists with one 0 duration edit.
Issue: #1102
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111497855
2016-01-06 17:43:02 +00:00
eguven
69a42b60f8 Implement ID3 Metadata support for audio only HLS.
Issue: #862
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111403855
2016-01-05 14:52:51 +00:00
aquilescanta
1e4f2f6a1f Refactored WebvttCueParser methods to be static
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111402555
2016-01-05 14:52:44 +00:00
andrewlewis
7c103ca5f8 Using ExtractorInput.peek* instead of BufferingInput.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111394118
2016-01-05 14:52:39 +00:00
aquilescanta
681df4e4aa Refactored the SubtitleParser's parse() signature
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111326567
2016-01-05 14:52:30 +00:00
olly
9bcd1069b1 Blacklist CIPVorbisDecoder.
Issue: #1111
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111326378
2016-01-04 20:59:22 +00:00
olly
18a39f3350 Add ability to not offset in PtsTimestampAdjuster.
Issue: #1078
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111325745
2016-01-04 20:59:15 +00:00
andrewlewis
890dd5afb5 Add a peekFully overload with allowEndOfInput.
This is in preparation for removing BufferingInput,
and using peeking instead.

Also add tests for peeking with allowEndOfInput and
resetPeekPosition.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111318236
2016-01-04 20:59:06 +00:00
olly
030f26fd2d Fix an unsafe check in FragmentedMp4Extractor.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=111315463
2016-01-04 20:58:58 +00:00
aquilescanta
c31473c596 Work around for the Choreographer's resource leak.
This CL adds a class responsible for managing the lifecycle
of a single Choreographer to be shared among all
VideoFrameReleaseTimeHelper instances.

Issue: #1066
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=110839824
2016-01-04 20:58:39 +00:00
aquilescanta
33a2b2d0c5 Added test cases to the MP4Webvtt parser
This CL is prepares the ground for refactoring the Webvtt parser,
so as to use the common parsing algorithms in both parsers. In order
to do this, the Webvtt Parser will be refactored. As a side note, many
more test cases will be added once the new subtitle features are
implemented. Some useful test cases have also been left for a following
CL, to allow an easy code review.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=110466914
2016-01-04 20:58:04 +00:00
olly
dd497b1259 Don't check a framerate if we don't have one.
Seems (marginally) nicer than making one up :). I didn't
realize there was a method that didn't require a framerate
to be passed!
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=110456874
2016-01-04 20:57:58 +00:00
Ian Bird
2b1816c1f2 Skip substream id field when parsing EAC3 sync frame format 2016-01-04 08:59:36 +00:00
Ian Bird
e33345e5b8 Add support to identify (E)AC3 streams via TS descriptor tag 2016-01-04 08:58:57 +00:00
Oliver Woodman
b9607321fe Simplify DefaultExtractorInput 2015-12-17 12:15:09 +00:00
Oliver Woodman
cf13280590 Allow onOutputFormatChanged to throw ExoPlaybackException 2015-12-17 12:14:26 +00:00
olly
7fbffc873c Expose control over decoder selection.
This allows implementation and injection of custom MediaCodecSelector
instances. By injecting a custom selector, it's possible for applications
to exert more control over which decoder(s) they instantiate. For example,
applications can force use of a software decoder.

GitHub Issue #938
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=110369810
2015-12-16 20:41:51 +00:00
eguven
f16b8baf75 ExtractorInput new skip methods to make skip methods analogous to the three read methods.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=110155932
2015-12-16 20:41:51 +00:00
Oliver Woodman
009b454b69 Add InputStream to byte[] method to Util. 2015-12-16 20:33:50 +00:00
Oliver Woodman
7f8ddeac39 Added little endian methods to ParsableByteArray. 2015-12-16 20:33:04 +00:00
Oliver Woodman
50d5cbea70 Don't treat network_PID as program_map_PID.
Issue: #1068
Issue: #1001
2015-12-16 19:57:14 +00:00
yauhen
7fce590db2 blacklisted broken mp3 decoder on api lower than 20 2015-12-14 17:50:54 +03:00
eguven
a1d5626fe7 Fixed DefaultExtractorInput.read(...) to allow to read bytes in the peek buffer
when the dataSource reaches to the end.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=110131793
2015-12-14 10:39:55 +00:00
aquilescanta
80bd91e636 Add "Webvtt embedded in MP4" support
Issue: #689
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=110003312
2015-12-14 10:39:45 +00:00
andrewlewis
63dc769bff Improve seeking in MP3 files with XING headers.
Fix behavior of getTimeUs when seeking after the last entry in the table of
contents. Round correctly in getPosition, clipping to the stream duration based
on the input length (if known), falling back to the stream size from the header.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=109993852
2015-12-14 10:39:45 +00:00
aptly-io
cd1b991c48 Allow multiple identical but intermittent spans
Multiple identical TTML fontStyles or fontWeights or textDecorations
on the content for a specific moment were rendered as if there's only
one decoration (span).
That's because SpannableStringBuilder.setSpan(span, start, end, flag)
found an earlier set span (the static allocated span's reference
is the same each time) and only refreshed this first span's start and
end values instead of adding a new span at its (new) different range.
This patch removes the static data members;
this makes the newly allocated span objects distinguishable.
A correct implementation is favoured over worries about memory
consumption.
2015-12-14 10:39:45 +00:00
andrewlewis
36ea0f8acd Fix Seeker.getTimeUs for positions before the first frame.
Issue: #1038
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=109906628
2015-12-14 10:39:45 +00:00
olly
345e4ec74e Bump version to 1.5.3.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=109698010
2015-12-08 18:00:46 +00:00
Oliver Woodman
bdc7633f5a Cleanup in TsExtractor. 2015-12-08 17:17:30 +00:00
olly
84307eff50 Document ChunkSampleSource constructors.
Issue: #1030
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=109674800
2015-12-08 16:15:41 +00:00
ojw28
c0b19ed72b Merge pull request #1007 from alex3d/large-pmt
Fixed large PMT packet parsing
2015-12-08 11:39:12 +00:00
olly
fb7ddb722c Minor tweaks to AudioTrack playback params logic.
- Use allowDefaults to fix crash if params are passed without
  the speed being explicitly set.
- Allow null to be passed to clear previously set params.
- Clarify in doc that the passed params shouldn't be modified
  after they're passed.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=109591580
2015-12-07 19:55:21 +00:00
andrewlewis
20e3ca73ec Don't use CIPMP3Decoder.
Issue: #1000
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=109318738
2015-12-07 19:54:56 +00:00
andrewlewis
46481fabcc Mark AudioTrackUtilV23 overriding methods with @Override.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=109093558
2015-12-02 17:02:03 +00:00
aquilescanta
6570ef0e48 Add support for AudioTrack pitch/speed alteration on API 23.
Issue #26
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=108958826
2015-12-02 17:00:29 +00:00
alex3d
f752a023c8 Fixed large (>ts packet) PMT parsing 2015-11-30 19:41:14 +03:00
Oliver Woodman
a6bfe02d24 Add additional Widevine samples + improve errors.
* Add additional Widevine samples.
* Improve error messaging in demo app around decoders.
* Display toasts for playback errors related to missing insecure
  decoders, missing secure decoders, decoder instantiation failure
  and decoder query failure.
* Remove checks from SampleChooserActivity, since the above largely
  covers off this problem.
2015-11-27 16:40:31 +00:00
Oliver Woodman
c2df814b58 Add special WebvttExtractor for HLS.
This is the main component required to enable WebVTT subtitles in HLS.
It passes through each WebVTT file as a sample, and derives the correct,
adjusted timestamp for each of them on the way through.

Not yet wired up because we need to properly share the same
PtsTimestampAdjuster everywhere, and also stop instantiating new instances
of the adjuster. The adjuster will also need to correctly handle
discontinuities, since we'll no longer be creating new instances of it.

Issue: #151
2015-11-27 16:03:37 +00:00
Oliver Woodman
1a9b2be551 WebVTT styling.
- parse webvtt cue
- remove all tags from string (supported or not)
- apply spans for b, i and u
- honor class names in tags to properly parse the cue but do not apply styles for them
2015-11-27 16:02:30 +00:00
Oliver Woodman
cdb6ac4073 Added a isLocalFileUrlOrPath(Uri) method to remove manual checks
Also replaced the manual checks with a call to this method
2015-11-27 15:59:25 +00:00
Oliver Woodman
c667feca4b Get the physical display resolution if possible.
Issue: #800
2015-11-27 15:58:11 +00:00
Oliver Woodman
c62e535cf0 Make HLS behind-live-window behavior consistent.
- Propagate BehindLiveWindowException if we fall off the back
  of an HLS live stream.
- Consolidate seekPositionUs and playbackPositionUs into a
  single parameter.

Issue: #765
2015-11-27 15:57:20 +00:00
Oliver Woodman
4bb8bea952 Subtitle renditions can be represented by Variant instances.
This will make it easier to use HlsChunkSource with WebVTT HLS
media playlists.
2015-11-25 17:07:40 +00:00
Oliver Woodman
761b8137eb Use API level 23 constants. 2015-11-25 17:05:59 +00:00
Oliver Woodman
72f093c4f6 WebVTT parser improvements.
* Split findNextCueHeader and validateWebVttHeader into static methods.
  This is a step toward WebVTT in HLS, where we'll need to re-use these
  to peek at the top of the WebVTT file (they'll be moved into a util
  class).
* Made parser robust against bad cue headers + added a test.
* Removed spurious looking assertion in WebvttSubtitle.
2015-11-25 17:05:20 +00:00
Oliver Woodman
963e604ffd Misc cleanup.
- Remove some unnecessary condition checking.
- Rename variable to a better name.
2015-11-25 17:03:57 +00:00
Oliver Woodman
1fc32d56c8 check maximum consecutively dropped frames in video tests 2015-11-25 17:01:21 +00:00
Oliver Woodman
ddaa9092ec Parse the sequence number at discontinuities.
This is required to match up segments in one playlist (e.g. VTT)
to those in another (e.g. Audio/Video).
2015-11-25 17:00:18 +00:00
Oliver Woodman
6f62b499c5 Merge seek/playback positions in ChunkSource interface. 2015-11-25 16:50:30 +00:00
Oliver Woodman
f11a204b4a Remove caption parser strict modes.
They don't seem particularly useful; they don't technically force
strict compliance, but rather just catch a few token things in
each case. Furthermore, for playback, probably the right thing to
do is to always turn strict mode off.
2015-11-25 16:49:25 +00:00
Oliver Woodman
4fbe4fc7d5 Throw correct exception. 2015-11-25 16:48:45 +00:00
Oliver Woodman
042bd2ff82 Clean up WebvttParser somewhat. 2015-11-25 16:47:52 +00:00
Oliver Woodman
7e2fffe74d Make sure we use the correct mimeType with DRM initialization data.
We were previously using the container format of the media being
played as the mimeType generating key requests, but this is not
always correct. As an example, where a manifest contains webm streams
but specifies initialization data using cenc:pssh elements in the
manifest, the media has a webm mimeType, but the DRM initialization
data has an mp4 mimeType.
2015-11-25 16:47:05 +00:00
Oliver Woodman
ad7237b5d0 Handle E-AC-3 audio in HLS. 2015-11-25 16:45:37 +00:00
Oliver Woodman
9fd575e1be Allow Representations to have custom cache keys. 2015-11-25 16:44:43 +00:00
Oliver Woodman
632ccc6c20 Simplify passthrough playback rate calculation.
This change also fixes pre-M DTS HD passthrough playback on NVIDIA Shield.
2015-11-25 16:43:56 +00:00
Oliver Woodman
b8e7e1077e Fix bad pixel w:h ratio calculation in H262 reader.
It appears the spec calculation gives the h:w pixel ratio, where-as
we want w:h. It's pretty easy to convince oneself that this way round
is correct. Consider a video that's 100px by 100px, and setting
aspectRatioCode=3 to achieve this. The pixelWidthHeightRatio needs to
be 16/9 and not 9/16 :).

Issue: #965
2015-11-25 16:42:12 +00:00
Oliver Woodman
57ee90a96c Clean up AudioTrack. 2015-11-17 16:29:42 +00:00
Oliver Woodman
a4f1e3ce53 Don't re-buffer when AudioTrack underruns occur. 2015-11-17 16:27:53 +00:00
Oliver Woodman
e65f726458 Allow video format filtering without viewport constraint. 2015-11-17 16:06:43 +00:00
Oliver Woodman
80e829d7d1 Fix some warnings. 2015-11-17 16:03:10 +00:00
Oliver Woodman
8234a25110 Add H262 support for TS.
Built on top of https://github.com/google/ExoPlayer/pull/915.
2015-11-17 16:01:28 +00:00
Oliver Woodman
b1e4283058 Some cleanup to TS H264/H265 readers. 2015-11-17 15:55:57 +00:00
Oliver Woodman
d96fe37c05 Don't use getClass().getSimpleName() where it's pointless to do so 2015-11-17 15:52:58 +00:00
Oliver Woodman
bcbfe9f708 Add AMR-NB and AMR-WB support to ExoPlayer 2015-11-17 15:52:16 +00:00
Oliver Woodman
b293cf2a76 Parse QuickTime variant audio sample entries.
Issue: #958
2015-11-17 15:50:20 +00:00
Oliver Woodman
f8d2229f52 Fix build break 2015-11-17 15:43:48 +00:00
Oliver Woodman
a3f894b86b Add support for extracting E-AC-3 in Matroska files. 2015-11-17 15:43:24 +00:00
Oliver Woodman
5de7638f74 Handle laggy manifest servers. Don't reprocess discarded manifests twice. 2015-11-17 15:42:40 +00:00
Oliver Woodman
b27dc9b7dc Clean up E-AC-3 naming. 2015-11-17 15:41:30 +00:00
Oliver Woodman
269757cb3e Clean up MP4/FMP4 shouldParse methods. 2015-11-17 15:38:54 +00:00
Oliver Woodman
3cbb1fa1b9 Tweak error string 2015-11-17 15:32:25 +00:00
ebascel
1f309f7edf Check for valid periods in DASH MPD after parsing. 2015-11-13 14:44:50 +01:00
Miquel Beltran
0089987055 Added missing MimeTypes to Smooth Streaming manifest parser 2015-11-03 16:51:05 +01:00
Oliver Woodman
a679e39ab7 Limit max line length to 100 chars. 2015-10-30 12:02:34 +00:00
Andrew Lewis
c53495e7e2 Check all descriptors for a registration_descriptor.
Issue: #898
2015-10-29 16:37:48 +00:00
Andrew Lewis
b64986ce82 Blacklist bad decoders 2015-10-29 16:28:00 +00:00
ojw28
ffc925f194 Merge pull request #885 from RikHeijdens/parse-hls-name-label
Parse HLS NAME label from the MasterPlaylist
2015-10-28 22:04:32 +00:00
Rik Heijdens
d49d3e2cd3 Changed formatName to something more concise
And fixed the indentation
2015-10-28 16:58:06 -04:00
Rik Heijdens
4a77d1a44e Remove unnecessary getter 2015-10-28 11:14:05 -04:00
Rik Heijdens
022c1ad6dd Store HLS trackname in the Variant class instead of Format class 2015-10-28 11:10:58 -04:00
Rik Heijdens
1c1f5af5d2 Changed the use of the name variable 2015-10-28 11:02:44 -04:00
Oliver Woodman
b9224160a3 Use equals rather than == for string equality 2015-10-28 13:42:40 +00:00
Oliver Woodman
4237e3d391 Cleanup following #884 II 2015-10-27 21:06:38 +00:00
Oliver Woodman
02cc495f1c Cleanup following #884 2015-10-27 21:03:16 +00:00
Oliver Woodman
f4b07ab147 Resolve conflicts 2015-10-27 20:37:54 +00:00
Oliver Woodman
cda5b20353 Bump version to 1.5.2 2015-10-27 20:15:37 +00:00
Oliver Woodman
4422e8a015 Further cleanup to FLV extractor 2015-10-27 18:23:00 +00:00
Oliver Woodman
f91ea9039d Read AC-3 and HEVC signaled by private registration_descriptor.
Issue: #898
2015-10-27 18:20:53 +00:00
Oliver Woodman
195c0c8884 Fix parsing of multi-channel AAC audio specific config in MP4 and ADTS.
Previously, when spectral band replication (SBR) or parametric
stereo (PS) was in use in an MPEG-4 stream, the channel configuration
chosen was likely incorrect. The channel configuration was *always*
incorrect for 7.1 audio (gave 7 channels instead of 8).
2015-10-26 15:34:29 +00:00
Oliver Woodman
9246fbbe7d Add exception type for manifest load errors. 2015-10-26 15:33:53 +00:00
Oliver Woodman
f3113e7055 Use MediaCodecUtil.IsSizeAndRateSupportedV21 where available. 2015-10-26 15:32:49 +00:00
Oliver Woodman
a74fd17e92 Handle curle braces in SystemID UUID.
Issue: #863
2015-10-26 15:31:09 +00:00
Oliver Woodman
21c1b8ca06 Add basic handling for edit lists in MP4 streams.
Issue: #874
2015-10-26 15:29:10 +00:00
Oliver Woodman
b03278f2bf Don't assume representations are video in first two DashChunkSource constructors. 2015-10-26 15:28:10 +00:00
Oliver Woodman
4d9dd3f6e6 Remove spurious blank line 2015-10-26 15:26:05 +00:00
Oliver Woodman
941ca3f304 Add readShort to ParsableByteArray 2015-10-26 15:25:46 +00:00
Oliver Woodman
b766253116 m 2015-10-26 15:23:06 +00:00
Oliver Woodman
14c190310c Fix broken Javadoc 2015-10-26 15:19:10 +00:00
Oliver Woodman
c59fc47565 Throw ParserException from parsers when a parse exception occurs. 2015-10-26 15:18:53 +00:00
Oliver Woodman
13aaa5a5db Use C.MICROS_PER_SECOND more consistently. 2015-10-26 15:16:56 +00:00
Oliver Woodman
daa5835915 Timestamp HEVC samples based on the first NALU's timestamp.
Issue: #893
2015-10-26 15:15:42 +00:00
Rik Heijdens
ec65fe952c Fixed code indentation 2015-10-26 09:59:19 -04:00
Oliver Woodman
02d42753ec A couple of final tweaks 2015-10-26 11:56:25 +00:00
Oliver Woodman
cdad156bae Further tweaks to ScriptTagPayloadReader 2015-10-26 11:52:23 +00:00
Oliver Woodman
dff17f244c Some probably correct tweaks to ScriptTagPayloadReader 2015-10-26 11:14:34 +00:00
Oliver Woodman
950cc70003 Purely stylistic changes to FLV extractor 2015-10-26 10:44:19 +00:00
Oliver Woodman
fb75b65a70 Fix compile error. 2015-10-26 10:24:30 +00:00
ojw28
f133524c2f Merge pull request #828 from jeoliva/flv-experiment
FLV (H.264 + AAC) support
2015-10-26 10:17:53 +00:00
Rik Heijdens
282a3fe818 Converted trackId into String 2015-10-23 09:56:00 -04:00
joli
3e36f529f8 FLV Support - Added Video Reader and parsing improvements 2015-10-22 23:50:46 +02:00
Rik Heijdens
1b469f422f Synced with upstream 2015-10-20 15:52:35 -04:00
Rik Heijdens
1d31521710 Merge branch 'dev' of github.com:/google/ExoPlayer into mediaformat-id-dash
Syncing my fork
2015-10-20 15:49:45 -04:00
Rik Heijdens
10f3be6d50 Hls NAME parsing changes
-   NAME is optionial now in the Hls Manifest
-   Use the id field in Format to store the NAME instead of
    a field in Variant to mimic DASH's behaviour
    (see the DASH Id PR, which is not merged yet at this time).
2015-10-20 15:01:44 -04:00
Rik Heijdens
eb282639c5 Parse NAME label from HLS Master Playlist
The HlsPlaylistParser now parses the "NAME" property
from the MasterHlsPlaylist and saves it in the Variant
2015-10-20 14:51:31 -04:00
Rik Heijdens
42351d3127 Added id property to MediaFormat
Added the property 'id' to the MediaFormat class
 which serves as an identifier for the track.

DASH Representations will have the "id's" from their
Media Presentation Description mapped to the id property
 in the MediaFormat class that will represent the track.

We needed this for an use case where we wanted to read the 'id'
value from the DASH representation and present it to the user
in order for the user to select the right track.
2015-10-20 14:21:41 -04:00
Oliver Woodman
0545c58dee Bump version to 1.5.1 2015-10-14 12:12:03 +01:00
Oliver Woodman
6d44ec560e Skip to the sample/auxiliary data offset in fragmented MP4 streams.
The sample data position is the sum of the data offset and the base data offset.
The base data offset is either specified in the stream, or defaults to the first
byte position in the moof box. (We only support one traf per moof currently, so
the offset does not need to be assigned for later track fragments.) The data
position can optionally be offset by a data position read from the trun.

The auxiliary information offset is calculated in the same way, but using an
offset read from the saio box.

Issue: #837
Issue: #861
2015-10-14 11:51:16 +01:00
Oliver Woodman
aa647745a2 No-op re-orderings. 2015-10-12 17:59:14 +01:00
Oliver Woodman
20e05a31b2 Do TTML color parsing directly in Exoplayer.
- Added TtmlColorParser to workaround JellyBean issues with named colors.
- Support rgb and rgba expressions as well.
2015-10-12 17:57:10 +01:00
Oliver Woodman
bcb9f8282d Enable SmoothFrameTimeHelper by default.
Context:
- Currently, playback is significantly more juddery with it disabled,
  particularly on AndroidTV.
- We should be able to do the "best" job of this internally, so injection
  doesn't buy anything useful. If someone has a better implementation for
  adjusting the frame release, they should improve the core library.
2015-10-12 12:32:10 +01:00
Oliver Woodman
9b4e9723e5 Don't use SEC VP8 decoder on Galaxy S3s.
The only Samsung devices with names starting "d2" that we're aware of
are Galaxy S3 variants, and also one Samsung Galaxy Pocket Neo d2aio
SAMSUNG-SGH-I747Z. This change speculatively includes that device too because
its name is very similar to SAMSUNG-SGH-I747 which is known to be affected.

Issue: #548
2015-10-12 12:28:14 +01:00
Oliver Woodman
c4235d0e8d Ignore tfdt boxes for SmoothStreaming playbacks.
Issue #838
2015-10-12 12:26:58 +01:00
Oliver Woodman
7905506681 On Sony Bravia devices check for 4k panel.
Documentation: https://developer.sony.com/develop/tvs/android-tv/design-guide/

On API 23 we should also check Display.Mode (where supported).

Issue: #800
2015-10-12 12:25:58 +01:00
Oliver Woodman
952bd4e73c Don't calculate a maximum input size for H.264 on Sony 4k TV.
Issue: #800
2015-10-12 12:24:48 +01:00
Oliver Woodman
a764b359e8 Add support for DTS passthrough on supporting devices before API 23.
NVIDIA Shield before API 23 supports DTS passthrough, so this change inlines the
constant value.
2015-10-12 12:21:16 +01:00
Oliver Woodman
a5ebb49a1a Set the maximum input size based on the sample table for MP4s. 2015-10-12 12:20:15 +01:00
Oliver Woodman
3682141ee1 webm_extractor: Re-sync to next level 1 element on invalid data
Try re-sync'ing to the next level 1 element when invalid data is found. This
corrects the behavior for test case 4 in the mkv test suite.

Partially Fixes Issue #631
2015-10-12 12:18:12 +01:00