Commit graph

1251 commits

Author SHA1 Message Date
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
Oliver Woodman
6bf817f107 Workaround EOS propagation for all devices with RK decoder.
As per the end of the related issue, it's likely that all devices
running the affected API levels + decoder are affected by the same
issue.

Issue #464
2015-10-12 12:12:43 +01:00
ojw28
98426a782f Merge pull request #857 from IanDBird/dev-truehd
Add support for TrueHD audio codec in WebMExtractor
2015-10-12 12:03:31 +01:00
Ian Bird
e933e2d49f Add support for MPEG2 video codec in WebMExtractor 2015-10-09 14:38:39 +01:00
Ian Bird
ee8a00b68a Add support for TrueHD audio codec in WebMExtractor 2015-10-09 14:12:48 +01:00
Ian Bird
6a5cd68892 Make MediaCodecUtil.getMediaCodecInfo public 2015-10-09 12:33:01 +01:00
joli
8ddc73511e FLV Support - Added Audio and Script Data readers 2015-09-29 17:20:38 +02:00
Oliver Woodman
62ce0ff009 Fix indentation. 2015-09-29 11:40:59 +01:00
Oliver Woodman
d8934e2751 Make mapping from position to time more accurate in XING MP3 streams.
This change keeps the proportion offset * 256 as a floating point value rather
than rounding it before linear interpolation, which will increase precision
slightly when seeking in streams with XING headers.

In practice, this won't make much of a difference because precise seeking in VBR
MP3s with XING headers seems not to be possible without reading the entire file,
due to the fact that the (uneven) distribution of bits is represented by a fixed
number of table of contents entries.
2015-09-29 11:37:40 +01:00
Oliver Woodman
15da18d900 Fix format selection bug.
Issue: #825
2015-09-29 11:36:26 +01:00
Oliver Woodman
427cb34aca Bump version to 1.5.0 2015-09-28 20:56:28 +01:00
Oliver Woodman
dce74f4209 Add onDrmKeysLoaded back again (oops) 2015-09-28 20:24:46 +01:00
Oliver Woodman
e96e618046 Clean up expansion of sample buffers.
- The old approach was technically incorrect, because the checks
were "capacity < sampleSize" and hence neglected the fact that
the buffer position may be greater than 0 (e.g. if the caller
wants to prefix the sample with some additional data).

- Also proactively throw an exception if the buffer is too small,
rather than wait for the failure when we actually do the write.
2015-09-28 20:23:45 +01:00
Oliver Woodman
15c2f9c328 Explicitly set max input size for H264 decoders.
This works around an issue where some devices, such as the Acer Iconia,
don't allocate large enough input buffers for H264.

Issue: #616
Issue: #714
2015-09-28 12:38:35 +01:00
Oliver Woodman
decb7f58c7 Expose container track identifier via MediaFormat.
Issue: #770
2015-09-28 12:36:28 +01:00
Oliver Woodman
979fd083b4 Don't invoke adaptiveTrack with 0 or 1 representations.
0 will crash. 1 is pointless.
2015-09-28 12:34:19 +01:00
Oliver Woodman
e8895c8746 Fix AudioTrack EOS handling in ExoPlayer. 2015-09-28 12:25:30 +01:00
Oliver Woodman
15052052ee Clean up TrackRenderer TODOs 2015-09-28 12:24:35 +01:00
Oliver Woodman
b81ac8cdc2 Added robustness for chunk removal.
Issue #812
2015-09-28 12:24:13 +01:00
Oliver Woodman
42416b82db Fixed issue in which DashChunkSource didn't make use of the most recent
manifest.
2015-09-28 12:22:54 +01:00
Oliver Woodman
c3e0d34aa1 Fixed int overflow issue with callbacks on very long-running streams. 2015-09-28 12:22:12 +01:00
Oliver Woodman
e4e02f9189 Further improve WebVTT parser according to WebVTT spec 2015-09-28 12:20:27 +01:00
Oliver Woodman
71f542f7c2 If a parser really wants to throw a runtime exception, don't crash. 2015-09-28 12:16:26 +01:00
Oliver Woodman
e652019bb3 Tweak new drm listener method. Fix demo app 2015-09-28 11:59:10 +01:00
Patrik Åkerfeldt
95db1eacd1 Add onKeysLoaded callback
This adds a callback for when DRM keys have been loaded.
2015-09-25 10:03:00 +02:00
Oliver Woodman
765d1659be Return "seeked to" position immediately after seek. 2015-09-18 18:25:25 +01:00
Oliver Woodman
c1b8352e33 Stylistic tweaks. 2015-09-18 18:25:07 +01:00
Oliver Woodman
da97e30e33 Support mp3 media segments in HLS.
Issue #804
2015-09-18 18:23:50 +01:00
Oliver Woodman
c960636d28 Stylistic cleanup. 2015-09-18 18:23:28 +01:00
Oliver Woodman
cf27b83e8a Implement handlesTrack using MediaCodecUtil. 2015-09-18 18:22:40 +01:00
Oliver Woodman
3538e57797 Work around incorrect timestamp handling on Sony Xperia E.
Also include more Sony Xperia Z devices in the MP3 workaround.
2015-09-18 18:20:47 +01:00
Oliver Woodman
6ef8c3a61b Avoid loading the first HLS segment twice.
Issue: #788
2015-09-18 18:20:12 +01:00
Oliver Woodman
8a723706d6 Provide more flexibility for setting caption font size.
- Respect any padding set on SubtitleLayout.
- Allow specification of absolute, fractional and fractional-ignoring-padding
  text sizes.
2015-09-18 18:19:28 +01:00
ojw28
d6801389de Merge pull request #807 from castlabs/feature/parse_audio_channels_only_for_mpeg_dash
Parse audioChannels only when on mpeg-dash
2015-09-18 11:58:28 +01:00
Miquel Beltran
ff6455aadb Parse audioChannels only when on mpeg-dash
Only parse the @value as Int when the schemeIdUri is urn:mpeg:dash:23003:3:audio_channel_configuration:2011
2015-09-18 11:48:34 +02:00
ojw28
de68c982ab Merge pull request #795 from jeoliva/webvtt-parser-improvements
Improve WebVTT parser according to WebVTT spec
2015-09-17 16:34:33 +01:00
ojw28
1be3f9dcbc Merge pull request #796 from souji1103/dev
Prevent ArrayIndexOutOfBoundsException when proguard is enabled
2015-09-17 15:15:59 +01:00
joli
925795cb4f Improve WebVTT parser according to WebVTT spec
- Line parameter
  - Added support for value and line alignment attributes.
  - Support negative numbers when line is an absolute number (not a
percentage).
- Position parameter
  - Added support for value and position alignment attributes
- Added support for WebVTT comment blocks
- Percentage values now accept decimal numbers (as webvtt spec states)
- Added new WebVTT tests for testing all new implemented features
2015-09-16 21:09:44 +02:00
souji
e2ed741ddd prevented excess loop, reading pes header 2015-09-16 09:04:04 +09:00
Oliver Woodman
d7697176ed Include language in audio formats.
Issue: #437
2015-09-15 13:45:54 +01:00
Oliver Woodman
b6f15a17e0 TTML improvements.
- do not denormalize styles at parsing time but only put normalized style info
into TtmlNode tree. Resolve styles on demand when Cues are requested for a
given timeUs.
- create TtmlRenderUtil to have static render functions separate
- added unit test for TtmlRenderUtil
- adjusted testing strategy for unit test to check resolved style on Spannables after rendering
2015-09-15 13:44:52 +01:00
Oliver Woodman
908e4dfd5d Search for synch' when sniffing ADTS and check four frames.
Issue: #791
2015-09-15 13:43:42 +01:00
Oliver Woodman
721956710f Remove MediaFormat.create methods that don't take a duration. 2015-09-15 13:43:12 +01:00
Oliver Woodman
e7926145c6 Fix overflow for DASH live streams using large timescales.
Issue: #789
2015-09-15 13:42:16 +01:00
Oliver Woodman
ab46d263ad Use decoders with names that don't start "OMX.".
There is no guarantee codec names start with this prefix in >= L.

Issue: #782
2015-09-15 13:41:42 +01:00
Oliver Woodman
e6e1e2c1d1 Tweaking TTML parsing logic. 2015-09-10 19:03:40 +01:00
Oliver Woodman
04342f2b76 Don't use toLowerCase :).
It can do weird things if the device has an unusual default Locale.
Util.toLowerInvariant uses the US Locale, which does the right thing
in this case.
2015-09-10 18:31:08 +01:00
Oliver Woodman
eeb73a86ea Improve sniffer behavior for fragmented MP4.
- Allow a moof box to exceed the search size.
- Return immediately after reading an ftyp box with no compatible types.

Issue: #784
2015-09-10 18:30:47 +01:00
Oliver Woodman
6f9019a4e3 Use DTS to set timestamp adjustment where available.
Partial fix for #778
2015-09-10 18:30:13 +01:00
Oliver Woodman
1f3bd97a2d Add non-strict SubRip parsing (enabled by default). 2015-09-10 18:29:36 +01:00
Oliver Woodman
ede7a69d95 Change DTS MIME type to vnd.dts. 2015-09-10 18:28:50 +01:00
Oliver Woodman
ab66dfa7c2 Parsing embedded TTML styling. 2015-09-10 18:27:03 +01:00
Oliver Woodman
e48851d8cc Share PTS timestamp adjustment across format changes.
When switching format in HLS, we instantiate a new extractor, which
adjusts TS presentation timestamps so that they align properly with
the start of the first segment in the new format. Some HLS streams
appear to have slightly misalignment that causes a glitch when using
this approach.

It's better to re-use the same timestamp adjustment across formats,
and only reset it when seeking or when there's an actual discontinuity.
This is because the HLS spec guarantees PTS timestamp alignment across
different formats.

We'll also need something like PtsTimestampAdjuster to share between
separated audio and WebVTT tracks, which also contain PTS timestamps
that are aligned, and will need to share a common adjustment.

Issue: #692
2015-09-10 18:23:57 +01:00
Oliver Woodman
7d38d2ef3c CuePainter fixes for caption styling.
- Don't allow "nothing has changed" optimization in the case
  that only styling has changed (TextUtils.equals will return
  true in this case, but we shouldn't optimize).
- Add functionality to suppress embedded styling; seems useful
  to have.
- Added "this." for clarity.
2015-09-10 18:22:44 +01:00
Oliver Woodman
68f2dc5998 Remove MultiTrackChunkSource (multi track now supported directly). 2015-09-10 18:22:07 +01:00
Oliver Woodman
e6ca2df514 Fix end-of-stream for live streams.
Issue: #764
2015-09-10 18:21:21 +01:00
Oliver Woodman
89fcafec5b Correctly set a format duration. 2015-09-10 18:20:07 +01:00
Oliver Woodman
820433de06 Call stop() to fully play out remaining audio!
Issue: #707
2015-09-10 18:19:09 +01:00
Oliver Woodman
9bcc00f369 Fix reported buffered position for HLS across format switches. 2015-09-10 18:16:42 +01:00
Oliver Woodman
a7ba393d54 When multiple BaseURL elements are present, prefer the first one.
Issue: #771
2015-09-10 18:16:23 +01:00
Oliver Woodman
4a29be498b Correctly use "current-manifest-live" v.s. "stream-is-live"
When a live stream ends, what typically happens is that the manifest
is refreshed and the refreshed version is not marked as live/dynamic.
When this happens we:

1. Don't want the duration of the track to change.
2. Still want to consider the possibility that we may have fallen behind
   the live window.
3. Don't want to allow futher manifest refreshes.

This change uses the right thing in the right place.
2015-09-10 18:15:15 +01:00
Oliver Woodman
143a4deee8 If no buffers were queued, handle EoS directly.
Issue: #707
2015-09-10 18:12:32 +01:00
Oliver Woodman
59a789b340 Include missing durations in AC3/DTS formats. 2015-09-10 18:11:18 +01:00
Ian Bird
4b69fad6b7 Ignore extra returns in Subrip parsing 2015-09-09 11:56:10 +01:00
Oliver Woodman
5c0745cedf Add some generally useful error propagation logic for HLS.
Issue #765
2015-09-07 13:59:55 +01:00
Oliver Woodman
5d1052f6ec Allow specifying the AudioTrack's stream type.
Issue: #755
2015-09-07 13:58:54 +01:00
Oliver Woodman
ab2aac9d3f Infer mime types from DASH manifest. 2015-09-07 13:58:31 +01:00
Oliver Woodman
9592a8a4ff Fix IFR parsing 2015-09-07 13:57:45 +01:00
Oliver Woodman
8c3f93d6bf Start to fix media mime types.
- Admit we don't know the mime type (using unknown mime types) rather
  than passing the container mime type.
- Pass the correct mime type for opus, vp9 and vp8, and remove the incorrect
  container checks in the corresponding extensions.
2015-09-07 13:56:54 +01:00
Oliver Woodman
4104a8def9 Handle raw TTML in DASH correctly. 2015-09-07 13:55:35 +01:00
Oliver Woodman
7a0f00ce41 No-op setting volume to current volume. 2015-09-01 14:23:35 +01:00
Oliver Woodman
3c65df92c2 Allow multiple sources for text.
Issue #753
2015-09-01 14:23:10 +01:00
Oliver Woodman
ecd48da1de Multi-track support for DASH.
- With this change, you can select from the individual video formats in
the demo app, as well as the regular "auto" (adaptive) track.
- DashRendererBuilder no longer needs to create MultiTrackChunkSource
instances for the multiple tracks to be exposed.
2015-09-01 14:22:18 +01:00
Oliver Woodman
6cf261aed7 Move default SmoothStreaming track selection to library. 2015-09-01 14:20:23 +01:00
Oliver Woodman
4b2991267e Some renaming to make format use slightly clearer. 2015-09-01 14:19:40 +01:00
Oliver Woodman
fae6c65367 Be robust against manifests that don't define top level duration explicitly.
I think such manifests are invalid, and I haven't seen any examples,
but given it's trivial to fill in the duration if the periods define
durations, it seems worth being robust.
2015-09-01 14:19:06 +01:00
Oliver Woodman
2f4c96781d Refactor handling of period start times and durations.
- It's not possible to determine a period's duration just from the
corresponding Period element in a DASH manifest. It's necessary
to look at the start time of the next period (or the duration of the
manifest for the last period) to determine how long a period is. We
don't currently do this in the parser, and hence set duration incorrectly.
We also set period start times incorrectly because we don't set it to
equal to sum of the durations of prior periods in the case where it's
not explicitly defined.

- We're currently propagating these (incorrect) values all over the place
through data-structures that we build when parsing the Period element.

- This CL removes this redundancy, storing only the start time of each
period in Period elements, and not propagating it elsewhere. It's then
used when required in DashChunkSource.
2015-09-01 14:18:28 +01:00
Oliver Woodman
cb85dc25aa Clean up max dimension handling. 2015-09-01 14:17:21 +01:00
Oliver Woodman
a953e7217f Fix naming/documentation for SmoothStreaming. 2015-09-01 14:16:02 +01:00
Oliver Woodman
a704b3d338 Tweak video renderer. 2015-09-01 14:15:20 +01:00
Oliver Woodman
f8824ac390 Support dynamic TimeRange for DASH live. 2015-09-01 14:14:10 +01:00
Oliver Woodman
d5f8d1a1b1 Don't crash updating a representation without an index. 2015-09-01 14:13:22 +01:00
Oliver Woodman
ebeafe23c0 Refactor multi-period Period updates.
The main change here is to add PeriodHolder.updatePeriod, which is
analogous to RepresentationHolder.updateRepresentation.
2015-09-01 14:12:52 +01:00
Oliver Woodman
b55a80dbf9 Fixed potential issue in which a live-edge latency greater than the duration of the manifest would result in the latest available time being lower than the earliest available time. 2015-09-01 14:12:22 +01:00
Oliver Woodman
476cefa7cc Remove extra constructors. 2015-09-01 14:11:50 +01:00
Oliver Woodman
96734144ba Extract DTS samples in DASH, MP4 and Matroska. 2015-09-01 14:07:28 +01:00
Oliver Woodman
bca2d16cc1 Specify locale when using String.format. 2015-09-01 14:06:16 +01:00
Oliver Woodman
adf82c7f5e Correctly read mimeType for ISO 13818-7 objectTypeIndication values.
Issue: #731
2015-09-01 14:05:43 +01:00
Oliver Woodman
83568ca52f Support MKV embedded SubRip captions. 2015-09-01 14:04:58 +01:00
Oliver Woodman
009d4d0c2c Fix retries if failure occurrs when reading seek map.
The following sequence was problematic:

1. See start of a cluster having not output a seek map. Decide
   to seek for the cues. Enter CUES_STATE_BUILDING state.
2. Error occurs before seek map is output.
3. ExtractorSampleSource isn't prepared yet, so restarts from the
   start of the stream.
4. See start of the same cluster having not output a seek map.
   This time cuesState is CUES_STATE_BUILDING, so we just carry
   on. We then fill the buffer with sample data, despite the
   source not being prepared, at which point we get stuck.

It's unclear to me why cuesState needed three states, so I've rm'd
the BUILDING state. Step (4) above will now do the same thing as
in step (1). If the failure repeats, we'll eventually fail, which
is WAI.
2015-09-01 14:03:45 +01:00
Oliver Woodman
b3ba7e16c1 Close DefaultHttpDataSource connections quietly. 2015-09-01 14:02:16 +01:00
Oliver Woodman
10badcc430 Support multi-track in MKV/WebM extractor.
Issue: #514
2015-09-01 14:01:43 +01:00
Oliver Woodman
e07c35815e Don't move to next subtitle too soon.
Second time lucky. We should just move to the next subtitle
when it's started. Simples.
2015-09-01 14:01:06 +01:00
Oliver Woodman
530aa265ff Fix playback of MKV audio tracks that use default channel/frequency vals.
Also do some significant cleanup to the extractor.
2015-09-01 14:00:37 +01:00
Oliver Woodman
64c0e5c997 Use XING headers without size/table of contents.
These MP3s are unseekable but allow calculating the VBR duration correctly.

Treat streams as live only if they are unseekable and lack a duration.

Issue: #713
2015-09-01 13:59:34 +01:00
Oliver Woodman
6799d6dad0 Fixed issue where calling valueAt on a SparseArray with an index greater than the size of the SparseArray would sometimes return the class' internal DELETED object and cause a ClassCastException. 2015-09-01 13:58:57 +01:00
Oliver Woodman
7bf1d89168 Fixed overlapping captions. 2015-09-01 13:58:22 +01:00
Oliver Woodman
9231520ee8 Some misc cleanup.
- Remove unused method in DashChunkSource.
- Remove inputEncoding parameter for subtitle parsers. We're
  ignoring it in all but one of the parsers, and for the one
  that does use it, it'll only ever receive null, since that's
  all we're passing.
- Make TextTrackRenderer advance to the next subtitle even if
  the current one hasn't finished, in the case that they overlap.
  This shouldn't ever really happen, but it seems best to trust
  the start time of the new sample rather than the last event
  time of the previous one.
2015-09-01 13:57:51 +01:00
Oliver Woodman
8e9aadc5e5 Workaround for vorbis EOS flush bug (23361053).
I'm assuming this will be fixed in API level 24.
2015-09-01 13:56:10 +01:00
Oliver Woodman
879da81218 Expose more sensible HLS track information.
- Video track is always marked as adaptive, the resolution is
  stripped out (since it's otherwise just set to whatever the
  resolution of the first selected variant is), and the max
  dimensions are set.

Issue #514
2015-09-01 13:55:02 +01:00
Oliver Woodman
0efaec59b8 Implemented limited support for multi-period DASH manifests.
Limitation: Successive periods must expose the same adaptation
sets and representations.

GitHub Issue: #557
2015-09-01 13:54:00 +01:00
Oliver Woodman
f69f948991 Fixed issue in which ContainerMediaChunk would throw an NPE for self-initializing chunks. 2015-09-01 13:52:30 +01:00
Patrik Åkerfeldt
c373800492 Enable override of open/close in StreamingDrmSessionManager
Make it so that extensions of StreamingDrmSessionManager may override open/close.
2015-08-27 09:20:57 +02:00
Oliver Woodman
25fe9db5d1 Set the sync flag on all audio samples in WebM.
Issue: #690
2015-08-19 16:35:32 +01:00
Oliver Woodman
cde1c27e2b Make Opus codec-specific data match the platform.
Issue: #690
2015-08-19 16:34:59 +01:00
Oliver Woodman
02f1efd118 Add bitrate to MediaFormat.
Issue: #514
2015-08-19 16:34:20 +01:00
Oliver Woodman
ff201db981 Allow renderers to pull tracks from multiple sample sources.
This is needed for several use cases:

- ExtractorSampleSource with option to play both embedded and out-of-band
  subtitles.
- HLS multi-audio and out-of-band-webvtt.
2015-08-19 16:33:01 +01:00
Oliver Woodman
ea7caf4f91 Bit of a hack to pass through original MediaFormat from FrameworkSampleSource. 2015-08-19 16:32:33 +01:00
Oliver Woodman
c9d9808013 Make getRendererEnabled behavior the same as it used to be, until it's removed. 2015-08-19 16:32:01 +01:00
Oliver Woodman
679fa8de03 Only use passthrough for passthrough MIME types. 2015-08-19 16:31:28 +01:00
Oliver Woodman
e770e5c24b Multi-track - The (nearly) final step.
- Migrate demo app to use new APIs.
- Add multi-track support for ExtractorSampleSource case.
- Add multi-track support for SmoothStreaming use case.

The final step is to add support back for the DASH use case and
delete MultiTrackChunkSource. This is blocked on multi-period support
landing, in order to prevent a horrendous merge conflict. We also
need to update HLS to expose sensible track information.

Issue: #514
2015-08-19 16:29:30 +01:00
hori-ryota
3714751b95 Fixed bug of AES URI Pattern for hls 2015-08-19 18:22:33 +09:00
Oliver Woodman
3b9ca40b05 Add ISO 14496-30 embedded TTML (stpp) subtitle support.
Issue: #689
2015-08-17 17:15:53 +01:00
Oliver Woodman
38f2413290 Allow ChunkSource an opportunity to fail preparation.
When ChunkSource implementations implement multi-track for DASH and SS,
format selection will move inside of ChunkSource. If we, for example, fail
to query the decoder to determine which tracks are playable, we need an
opportunity to fail (i.e. say we're not prepared, so that maybeThrowError
is called, from which we can throw).

This may go away in the future if we remove the distinct preparation step
and treat tracks/formats as things that can change dynamically, but for now
this is what we have.

Issue #514.
2015-08-17 17:14:21 +01:00
Oliver Woodman
d49d5a1765 Fix reading HEVC in MPEG TS.
Fix reading the first slice flag, which before could cause a read out of bounds
if the NAL unit started at the end of the buffer.

Handle non-VCL NAL units by flushing a pending sample when starting to read one.
2015-08-17 17:13:23 +01:00
Oliver Woodman
37ebec6e82 Skip more than one ID3 header.
Issue: 713
2015-08-17 17:12:33 +01:00
Oliver Woodman
90f9f7314d Allow MediaFormat to express that it's adaptive (not yet used).
Also:
- Better document MediaFormat.
- Document getFormat to indicate what it's good (and not good) for.
2015-08-17 17:11:37 +01:00
Oliver Woodman
6e527c550f Expose new multi-track APIs in the ExoPlayer interface + plumb
multi-track support upstream to the ChunkSource interface.

This change does not yet make use of the newly exposed APIs. This
will come in a subsequent CL.

Issue #514.
2015-08-17 17:09:55 +01:00
Oliver Woodman
bf77f3b289 Simplify subtitle parsing.
- Currently all subtitles we parse contain timestamps relative to the sample
  timestamp, however we add the sample timestamp in inconsistent ways (sometimes
  in the Subtitle, sometimes in the SubtitleParser). This change converges on
  a single approach. It also paves the way for passing absolute offsets to use
  instead, and being able to apply them in a consistent way in a single place
  (PlayableSubtitle). This functionality will be required for ISO 14496-30 TTML
  embedded subtitles.

Issue: #689
2015-08-13 20:36:50 +01:00
Oliver Woodman
fbf590fdf6 Fix reading PCM configuration in HEVC SPS. 2015-08-13 20:35:52 +01:00
Oliver Woodman
6b44c6e6b1 Fix single sample loading + seeking in HLS.
Issue #587
2015-08-13 20:32:09 +01:00
Oliver Woodman
d3995eaa7a Fix rotation handling as far as is possible.
Issue: #91
2015-08-13 11:18:15 +01:00
Oliver Woodman
8db1331021 Propagate MediaFormat instead of TrackInfo.
Issue #514.
2015-08-11 18:23:22 +01:00
Oliver Woodman
f7ffeb75cf Parse pixel aspect ratio from SPS for use when there's no pasp atom.
Issue: #697
2015-08-11 18:18:19 +01:00
Oliver Woodman
69466adbe3 Remove unused exception class. 2015-08-11 18:17:33 +01:00
Oliver Woodman
02c7525ff7 Remove custom VTT logic. 2015-08-11 18:16:56 +01:00
Oliver Woodman
dbaeecc4da Improve DASH manifest parsing.
- Parse all attributes that may exist in either the AdaptationSet or
  in the child Representation elements at both levels.
- Correctly infer TYPE_TEXT for Representation elements whose mimeType
  is application/mp4 and whose codecs attribute indicates a known text
  codec type.

Issue: #689
2015-08-11 18:12:43 +01:00
Oliver Woodman
d6152dc36a Use MediaFormat.language in hashCode and equals. 2015-08-11 18:11:35 +01:00
Oliver Woodman
7d306ae593 Add language to MediaFormat + parse it from mdhd box.
+ Move conversion from framework -> exo format to FrameworkSampleSource.
+ Improve MediaFormat conversion test.
2015-08-11 18:10:46 +01:00
Oliver Woodman
b2206866f0 Use audio passthrough if possible, falling back to on-device codecs.
Remove MPEG TS stream filtering based on AudioCapabilities.

Pass AudioCapabilities to MediaCodecAudioTrackRenderer so it can choose between
passthrough/raw and decoding for AC-3 tracks.
2015-08-11 18:08:23 +01:00
Oliver Woodman
6085d185fa Internal plumbing for multi-track support.
- Generalize rendererEnabledFlags to be selected track indices through
  ExoPlayerImpl/ExoPlayerImplInternal.
- Selecting an out-of-bound track index (e.g. -1) is equivalent to
  disabling a renderer prior to the generalization.
- A prepared TrackRenderer that exposes 0 tracks is equivalent to a
  TrackRenderer in the STATE_IGNORE state prior to the generalization.

Issue #514.
2015-08-11 18:06:21 +01:00
Oliver Woodman
13f4a3e3bd Common base class for SampleSource based TrackRenderers.
This will allow multi-track support when consuming from a SampleSource to
be added in a single class, rather than in 6. Prep for Issue #514.
2015-08-11 18:04:00 +01:00
Oliver Woodman
150b3cdb19 Call AudioTrack.flush() before AudioTrack.release().
On NVIDIA Shield, recreated passthrough AudioTracks have incorrect playback head
positions, due to shared state with the previously destroyed passthrough
AudioTrack. Calling AudioTrack.flush() before AudioTrack.release() ensures this
state is cleared.

This is a safe change so I have not made it a device-specific workaround. The
combined time for flush and release is less than 10 ms (with flush normally
taking less than two ms).
2015-08-11 18:00:42 +01:00
Oliver Woodman
f129812b70 Clean up AudioCapabilities. 2015-08-11 17:59:24 +01:00
Oliver Woodman
adf98b0fcc Make seekTo(currentPosition) a no-op in ExoPlayer.
- Also avoid boxing when passing the seek position to the background
  thread.

Issue: #654
2015-08-11 17:55:19 +01:00
Oliver Woodman
ce26e601ed Fix typo in H265Reader.
See H.265/HEVC specification subsection 7.3.4.
2015-08-11 17:47:02 +01:00
Oliver Woodman
ab3f623767 Workaround broken devices.
Issue #464
Issue #665
2015-08-07 17:28:03 +01:00
Oliver Woodman
a7d843f90d Increment version to 1.4.2 2015-08-04 16:07:54 +01:00
Oliver Woodman
039cddd6c0 Don't require comma in EXTINF tags 2015-08-04 13:50:15 +01:00
Oliver Woodman
d3ce56f9bc Fix commented code 2015-08-03 15:18:23 +01:00
Oliver Woodman
574e554e01 Make classes/methods final to prevent uncontrolled extension. 2015-08-03 15:18:09 +01:00
Oliver Woodman
ed51b58242 Fix backoff for SingleSampleSource. 2015-07-30 17:16:19 +01:00
Oliver Woodman
5f51a4ff83 Cleanup - Make RollingSampleBuffer append methods more consistent. 2015-07-30 17:13:24 +01:00
Oliver Woodman
0d42032ada Aes128DataSource should be final. 2015-07-30 10:05:54 +01:00
Oliver Woodman
a56c00268d Remove ability to disable frame accurate seek.
Everything I've seen that uses ExoPlayer sets it to true, and
setting it to false is poorly supported / likely to result in
bad initial A/V sync after each seek.
2015-07-30 10:05:04 +01:00
Oliver Woodman
e90ad9c47d Make Aes128DataSource private to the HLS package.
Issue: #662
2015-07-29 22:35:48 +01:00
Oliver Woodman
1f0e6a5c46 Simplify subtitle loading with a SingleSampleSource.
Issue: #587
2015-07-29 21:58:59 +01:00
Oliver Woodman
98ecc209be Improvements to Mp4Extractor and FragmentedMp4Extractor.
- Make Mp4Extractor more robust when resuming from read failures.
- Made FragmentedMp4Extractor handle atoms with extended sizes.

Issue #652
2015-07-29 21:49:19 +01:00
Oliver Woodman
2f0aec43ec Don't print warning if we get a SeekMap when reading DASH chunks.
Both FragmentedMp4Extractor and WebmExtractor now invoke seekMap() with
SeekMap.UNSEEKABLE if there isn't an index in the stream, so DASH playbacks
will end up printing this warning every 5 seconds or so. This is obviously
not desirable, so this CL just removes the warning! The alternative would
have been to print a warning if the value is anything other than UNSEEKABLE,
but it doesn't really seem worth it.
2015-07-29 21:48:17 +01:00
Oliver Woodman
08dc691ff7 Allow playback of unseekable fmp4 media.
This is useful to allow playback of individual segments from a
DASH stream as regular fmp4 files. These segments don't typically
contain a segment index. For playback to start, we need to invoke
seekMap with the UNSEEKABLE index. We do this if we haven't seen
a segment index when we encounter an mdat box (if one were present,
it would have been located earlier than this point).
2015-07-27 16:20:40 +01:00
Oliver Woodman
9e0ca9e7f0 Add support for reading MPEG 4 SP in matroska streams.
Issue: #641
2015-07-23 14:50:57 +01:00
Oliver Woodman
03305c92cf Modified timing of manifest fetches to compensate for drift due to fetch time. 2015-07-23 13:44:52 +01:00
Oliver Woodman
7ea199638e Content/Asset data sources - Handle >2^31 byte files correctly.
Issue #641
2015-07-23 13:44:11 +01:00
Oliver Woodman
b57b80f723 Multiple small fixes for subtitles/mp4.
1. [Cleanup] Remove unused Track types, including TYPE_TIME_CODE.
2. Add subtitle track type, which is different to the existing text type.
3. Set duration on the media formats for text and subtitle tracks. This
   was causing the player to report unknown media duration for mp4 files
   containing such tracks.
4. Make TextTrackRenderer do the right thing when not started.

Issue: #635
2015-07-23 13:43:48 +01:00
Oliver Woodman
b44de0d250 Improve sniffer error reporting.
- Make UnrecognizedInputFormatException public so the app can more easily handle
  it when it is propagated to onPlayerError.
- Format the description using the simple class names for the extractors.
- Don't retry loading after it's thrown, but just throw immediately.
2015-07-23 13:14:06 +01:00
Oliver Woodman
4c1fb0c977 Don't catch API 19 exception from newInstance. 2015-07-23 13:12:57 +01:00
Oliver Woodman
a44a78c72d Fix some HEVC and H.263 nits. 2015-07-23 13:12:01 +01:00
Oliver Woodman
9dc1bfbbe7 Support POST requests with DefaultHttpDataSource/DataSpec 2015-07-23 13:10:59 +01:00
Oliver Woodman
6b03e6a17c Fix MP4+MKV sniffing to handle empty atoms / EBML elements.
Issue: #641
2015-07-22 18:46:46 +01:00
ojw28
648f224d98 Merge pull request #639 from IanDBird/mkv-hevc
Add support for HEVC video in Matroska files
2015-07-22 16:14:11 +01:00
ood_tsen
cf2e539a31 add support s263 2015-07-22 21:08:38 +08:00
Oliver Woodman
85e0bca33d Add support for choosing an extractor based on sniffing the container.
- ExtractorSampleSource takes an array of extractors to test for suitability.
- Extractors now implement a sniff() method that returns whether they can
  extract samples in the input stream's format.
- Switch demo app samples to use format detection.

Issue: #438
2015-07-21 17:39:38 +01:00
Oliver Woodman
87daa912d7 Remove dead code (failed==false in all cases) 2015-07-21 17:36:07 +01:00
Oliver Woodman
3b34b0682c Handle the last MP3 sample being truncated without throwing.
Issue: #599
2015-07-21 17:35:09 +01:00
Oliver Woodman
ed2b65654c Cleanup UdpDataSource. 2015-07-21 17:34:37 +01:00
Ian Bird
646b39622f Add support for HEVC video in Matroska files 2015-07-21 15:24:35 +01:00
Oliver Woodman
a2f10399e7 Improve error propagation 2015-07-21 10:07:49 +01:00
Oliver Woodman
5df6854fea Noop tweak to DefaultHttpDataSource 2015-07-21 10:05:22 +01:00
Oliver Woodman
e7950555d3 Generalize MulticastDataSource to UdpDataSource 2015-07-21 10:05:04 +01:00
Oliver Woodman
eb4920bb2a Better compatibility with MKV test streams.
1. Fix seeking in test2.mkv by handling non-default timescale
   after duration.
2. Fix handling of missing cues in test6.mkv by allowing playback
   to continue (but all seeks will reset to t=0).

Issue #631
2015-07-21 10:01:15 +01:00
Oliver Woodman
7bc1241e06 Reflect subtitle parsers. 2015-07-21 09:59:22 +01:00
Oliver Woodman
6082bb6769 Always use timed video frame release on V21+. 2015-07-21 09:58:38 +01:00
Oliver Woodman
508e1cabe1 Always null inputStream, even if closing it failed. 2015-07-21 09:57:51 +01:00
Oliver Woodman
d8c874f7d8 Correct grammar 2015-07-17 12:01:32 +01:00
Oliver Woodman
0279a9f791 Bump version to 1.4.1 2015-07-17 11:49:48 +01:00
Oliver Woodman
119c473606 Temporary fix to prevent premature failures during HLS playbacks II. 2015-07-17 11:48:42 +01:00
Oliver Woodman
7c2d635565 Minor fixes for Javadoc warnings 2015-07-16 21:48:14 +01:00
Oliver Woodman
8a7d68da6c Don't render empty cues 2015-07-16 20:22:35 +01:00
Oliver Woodman
ebe9ae6b13 In continueBuffering, return whether a particular track has samples.
Issue: #595
2015-07-16 19:30:14 +01:00
Oliver Woodman
17c1b630b8 Bump version to 1.4.0 2015-07-16 18:26:50 +01:00
Oliver Woodman
67b4775681 Temporary fix to prevent premature failures during HLS playbacks 2015-07-16 17:59:41 +01:00
Oliver Woodman
85256bef41 Add support for MP3 audio in Matroska files.
GitHub issue: #589
2015-07-15 19:55:35 +01:00
Oliver Woodman
79db618ba6 Add support for header stripping in Matroska streams.
Issue: #589
2015-07-15 18:53:32 +01:00
Oliver Woodman
6c2b3c875d Handle unbounded ranges in DASH manifests. 2015-07-15 18:52:57 +01:00
Oliver Woodman
2b0f68a0ab Rm Timescale from AudioTrack. Not required. 2015-07-15 11:27:10 +01:00
Oliver Woodman
72d42fbc9f Fix an issue where retrying WebM extraction failed.
The ID_SEGMENT can only be read once, as seeing the element a second time is
assumed to indicate that the file contains multiple segment elements (which is
not supported).

This change allows the element to be read twice if it is at the same position,
so that retrying loading from the start can succeed.
2015-07-15 11:15:21 +01:00
Oliver Woodman
4282d7c22b Update MediaCodecTrackRenderer.
1. Workaround for decoders that fail to handle the END_OF_STREAM flag.
2. Revert processing of final output buffer if it's non-empty. This
   introduced another bug (#596)

Reverts: b88012f51f
Issue: #417
Issue: #596
2015-07-15 11:11:41 +01:00
Oliver Woodman
884e7a4170 Optimize captions.
SubtitleLayout no longer trigger re-layouts of the view hierarchy.
Instead, the SubtitleLayout just invalidates itself. This is made
possible by making SubtitleLayout a regular View that draws each Cue
directly onto the canvas, rather than having SubtitleLayout be a
ViewGroup with a child View for each Cue.
2015-07-15 11:10:53 +01:00
Oliver Woodman
c1e1497d13 Change how subtitles are laid out in the demo app.
The SubtitleLayout is now properly aligned with the surface.
This means the subtitles remain on top of the video in portrait
mode, rather than being huge and below it.
2015-07-15 11:09:20 +01:00
Oliver Woodman
fe52a486f4 Inject Allocator into ExtractorSampleSource. 2015-07-15 11:05:15 +01:00
Oliver Woodman
b4879236b5 Document usage of MATCH_LONGEST_US.
Handling of this constant is already in place everywhere, this
just documents that its use is allowed.
2015-07-15 11:01:44 +01:00
Andrew Lewis
2358004951 Add device-specific workarounds for VP8 and MP3.
Avoid using the VP8 decoder on Samsung Galaxy S4 Mini.
Issue: #548

Avoid using the MP3 decoder on Sony Xperia Z/API level 16.
Issue: #377
2015-07-10 11:47:24 +01:00
Andrew Lewis
c47c6816e4 Detect frames using first_slice_segment_in_pic_flag. 2015-07-10 11:46:30 +01:00
Oliver Woodman
ead8abf09f Fixed incorrect caption sizes after device orientation change. 2015-06-30 13:50:14 +01:00
Oliver Woodman
35a9f2635c Use Locale.US in calls to String.format.
Issue: #585
2015-06-30 13:49:03 +01:00
Oliver Woodman
588be2bd4b Fix intermittent decoder crash when playing MP3 inside MP4 2015-06-26 16:53:52 +01:00
Oliver Woodman
3bcd9ca6c3 Simplify HLS MP3 support. 2015-06-26 14:44:10 +01:00
Oliver Woodman
0c577ce2ce Merge branch 'tresvecesseis-dev' into dev 2015-06-26 14:41:59 +01:00
Oliver Woodman
7fb5b86579 Merge branch 'dev' of git://github.com/tresvecesseis/ExoPlayer into dev 2015-06-26 14:41:47 +01:00
Oliver Woodman
faff85784b Use the right overload of createAudioFormat in Ac3Util. 2015-06-26 14:40:13 +01:00
Oliver Woodman
a4ff13d7da Set a MIME type based on the esds ObjectTypeIndication.
Issue: #576
2015-06-26 14:37:48 +01:00
Oliver Woodman
a626a5e5d4 Take period start time into account when calculating segment times. 2015-06-26 14:35:57 +01:00
Oliver Woodman
2b27137e9e Fix bug that caused failure when all renderers disabled.
Prior to this change, there was a bug where playback would
fail with the following steps:

1. Start playback.
2. Pause playback.
3. Disable all renderers.
4. Enable at least one renderer.
5. Resume playback.
2015-06-26 14:33:08 +01:00
Oliver Woodman
33d55631ed Fix handling of pixel aspect ratio change.
The new logic assumes that an input format change will be
followed by an output format change, but I think this is
pretty much guaranteed. If this weren't to happen then the
new pixel aspect ratio wont be picked up, but I think it's
extremely unlikely (it would require the format to stay
exactly the same except for the pixel aspect ratio, which
would be bizarre).
2015-06-26 14:31:13 +01:00
Oliver Woodman
c7635c9dbd Add some audio hooks.
This makes it easier to add an extension for adjusting
audio playback rate.
2015-06-26 14:29:45 +01:00
Oliver Woodman
b88012f51f Process final output buffer if it's non-empty.
Issue: #417
2015-06-26 14:28:50 +01:00
Oliver Woodman
fb31fe0fe4 Fix stale comment 2015-06-26 14:27:17 +01:00
Oliver Woodman
b394c46128 Add utility method to query whether device is an AndroidTV. 2015-06-26 14:26:54 +01:00
Oliver Woodman
a1ab1fc2a2 Detect WebVTT file header according to the spec:
1. An optional U+FEFF BYTE ORDER MARK (BOM) character.
2. The string "WEBVTT".
3. Optionally, either a U+0020 SPACE character or a U+0009 CHARACTER
   TABULATION (tab) character followed by any number of characters that
   are not U+000A LINE FEED (LF) or U+000D CARRIAGE RETURN (CR) characters.
4. Exactly one WebVTT line terminators to terminate the line with the file
   magic and separate it from the rest of the body.

Issue: #580
2015-06-26 14:26:31 +01:00
Oliver Woodman
712756c3e8 Cleanup regex in MPD parser 2015-06-26 14:24:37 +01:00
Oliver Woodman
98d446aa6d Allow seeding of RandomEvaluator.
This is useful for reproducibility in playback tests.
2015-06-26 14:24:00 +01:00
Oliver Woodman
c06f844ee1 SUPER! 2015-06-25 20:57:21 +01:00
Oliver Woodman
ed856b2a71 Test 2015-06-25 19:17:00 +01:00
Oliver Woodman
5e65b40864 Merge branch 'dev' of git://github.com/tresvecesseis/ExoPlayer into tresvecesseis-dev 2015-06-25 18:51:20 +01:00
Andrew Lewis
e328546607 Make reusable fakes for extractor+track outputs.
Improve Mp4Extractor test.

Add support for Xiph lacing in Matroska files.

Add support for EBML lacing in Matroska files.

Handle the initial sticky intent for HDMI audio plug.
2015-06-23 17:57:41 +01:00
Oliver Woodman
bc14e87cfb Tighten package visibility 2015-06-22 15:57:06 +01:00
Oliver Woodman
4092e8ca0f Fix GitHub issue #572 2015-06-22 15:50:18 +01:00
Oliver Woodman
91b47cfe6b Tweak 2015-06-22 11:08:00 +01:00
Oliver Woodman
2f268a9962 Fix final issues with HLS 404 handling #537 2015-06-22 11:04:23 +01:00
Oliver Woodman
97aaee6d15 Fix crash introduced by previous change. 2015-06-19 20:05:34 +01:00
Oliver Woodman
b8df8ecb47 Final fixes for correctly handling chunk load failures in HLS.
An accumulation of several fixes:

1. Change to HlsExtractorWrapper is just a move + documentating
   things that were already true + adding a precondition in the
   configureSpliceTo method.

2. Change in HlsSampleSource.readData ensures that configureSpliceTo
   and hasSamples aren't called on an extractor that isn't prepared.

3. The other change in HlsSampleSource ensures the correct "previous"
   TsChunk is used. If a TsChunk fails to load and is replaced, the
   previous chunk should be the one before that whose load completed
   successfully.

4. Determine switchingVariantSpliced based on the actual format of the
   previous chunk, so it's set correctly in the case of a TsChunk load
   failure and subsequent replacement.
2015-06-19 19:55:12 +01:00
Oliver Woodman
203f3ab732 Get the current extractor properly.
This fixes the case where we need to switch from one variant to
another during preparation, having loaded zero samples, because
the first chunk for that variant gave us a 404 error. In this
case the first extractor will have no samples, and there will
be a second extractor that does.
2015-06-19 13:31:16 +01:00
Oliver Woodman
55862a77b1 Remove dead code 2015-06-18 18:53:22 +01:00
Oliver Woodman
51a8635ba2 Make HlsChunkSource sane again.
There was a mess where we were indexing into both a list of variants
and a (differently ordered and possibly of differing length) list of
formats. This sanitises everything.
2015-06-18 18:01:47 +01:00
Oliver Woodman
e0316d1c16 Refine TTML parsing logic + setup for adding styling information.
1. Refine the way TtmlNode handles whitespace collapsing when constructing
   the output text. Can of worms.
2. Start using SpannableStringBuilder. This will allow attaching of spans
   in getText as nodes are encountered, which is how we'll be incorporating
   styling information into the result.
2015-06-18 17:31:14 +01:00
Oliver Woodman
efa92ac168 Tiny cleanup 2015-06-18 14:30:08 +01:00
Oliver Woodman
160a88baf9 Steps toward enabling seeking in DASH live 2015-06-18 14:28:54 +01:00
Oliver Woodman
8e58a3f5f5 Steps toward full multi-track support.
1. Remove requirement for TrackRenderer implementations to report
   current position, unless they are time sources.
2. Expose whether renderers have media to play. The immediate benefit
   of this is to solve the referenced GitHub issue, and also to only
   display the appropriate Audio/Video/Text buttons in the demo app
   for the media being played. This is also a natural step toward
   multi-track support.

Github issue: #541
2015-06-18 14:27:24 +01:00
Oliver Woodman
2c29d88330 Remove unnecessary call to seekTo. 2015-06-18 14:22:17 +01:00
Oliver Woodman
0ee8c07fe5 Better handle duration + disabled renderers
- Fix bug where duration of initially disabled tracks wasn't correctly
  incorporated into the overall duration reported by the player.
- Don't transition to STATE_ENDED unless the position has reached the
  duration, if the duration is known. This allows for "playback" to
  continue when all renderers are disabled, rather than jumping straight
  to STATE_ENDED.
2015-06-18 14:21:32 +01:00
Oliver Woodman
072c63c33e Handle stbl atoms with no samples.
Github issue: #554
2015-06-18 14:18:09 +01:00
Oliver Woodman
8c98c588e8 Add support for fixed-size lacing in Matroska streams. 2015-06-18 14:17:32 +01:00
Oliver Woodman
4c4782c72d Pass whole PSSH box to MediaDrm (except in the WV+L case).
This fixes SmoothStreaming on AndroidTV, and also removes a
warning that gets logged when using Widevine/FMP4.
2015-06-18 14:16:37 +01:00
Oliver Woodman
d0ba265290 Fix some MPD parsing issues.
- contentType can be defined on an AdaptationSet.
- language can be defined either in AdaptationSet or in a contained
  ContentComponent.
- The id from the AdaptationSet should come from the AdaptationSet.
2015-06-18 14:13:54 +01:00
Oliver Woodman
54d207f3ce Default caption parsers to non-strict parsing. 2015-06-18 14:12:33 +01:00
Oliver Woodman
39adcabf7d Blacklist variants if media or encryption loads fail, in addition
to if the playlist load fails.

NB - I'm aware the casting is a bit messy, but I don't want a common
interface because I'm hopeful that TsChunk will go away at some point.

Issue: #537
2015-06-18 14:11:33 +01:00
Sergio Moreno Mozota
dd3a4a9139 fix audio channels CodecSpecificDataUtil bugs
* fix channel number encoding using the AUDIO_SPECIFIC_CONFIG_CHANNEL_COUNT_TABLE
  * allocate the correct number of bits (4) int the CodecSpecificDataUtil struct
2015-06-17 23:00:31 +02:00
Oliver Woodman
ecf7d1be9e Fix HLS track selection 2015-06-16 13:50:22 +01:00
Oliver Woodman
854fa928fb Fix read H.264 in WebM when the NAL unit length field length is not 4. 2015-06-15 18:01:46 +01:00
Oliver Woodman
49f4fe7810 Rename URL->URI for manifest fetching 2015-06-15 17:43:53 +01:00
Oliver Woodman
ded106053c Remove spurious blank line 2015-06-15 17:43:06 +01:00
Oliver Woodman
164d8b4242 Rework application of Mpd.Location + fix test. 2015-06-15 17:38:51 +01:00
Thanh Pham
c0ecc22359 Fetch next Dash manifest using URL in Location directive if exists 2015-06-15 21:43:25 +07:00
Oliver Woodman
a70c1f1a4b Remove requirement to specify downstream renderer count.
This makes it so that it's no longer necessary to specify the number
of downstream renderers to HlsSampleSource, FrameworkSampleSource and
ExtractorSampleSource, by forcing the downstream renderers to register
with the SampleSource instances in their constructors. This eliminates
a common source of subtle client bugs where the passed value is incorrect.
2015-06-12 17:52:56 +01:00
Oliver Woodman
15dc87b037 Add flag to force spurious audio timestamps to fail playback.
For enabling during device test runs.
2015-06-12 17:46:41 +01:00
Oliver Woodman
e8fd3025e3 Fix propagation of sample encryption key for webm 2015-06-12 17:45:27 +01:00
Oliver Woodman
ead25a9dfe Call incrementalPrepare directly from prepare 2015-06-12 17:44:44 +01:00
Oliver Woodman
02c978e16c Further cleanup subtitle implementations. 2015-06-12 17:44:01 +01:00
Oliver Woodman
bdd1968abe Allow reading of response headers from HttpDataSource implementations 2015-06-12 17:36:48 +01:00
Oliver Woodman
3661726401 Allow multiple chunk loads to prepare a HLS stream.
Issue: #530
2015-06-10 18:30:00 +01:00
Oliver Woodman
1b1769bb6d Further simplify SRT support 2015-06-10 18:03:34 +01:00
Oliver Woodman
fbbf3f27fd Simplify Subrip support 2015-06-10 17:48:01 +01:00
ojw28
71252784e9 Merge pull request #498 from ened/subtitle/srt
Subrip (SRT) support
2015-06-10 17:46:53 +01:00
Sebastian Roth
2fb2e5a509 Subrip (SRT) support. 2015-06-09 09:49:20 +08:00
Oliver Woodman
24e897d39f Further H264/H265 code deduping + fix NAL unescaping. 2015-06-05 20:05:28 +01:00
Oliver Woodman
218d02fc59 Allow Webm extractor to extract Matroska files 2015-06-05 18:30:19 +01:00
Oliver Woodman
926bc805f5 Add some useful Systrace 2015-06-05 18:28:42 +01:00
Oliver Woodman
96c1e670c4 De-duplicate code for H264/H265 in MPEG-TS. 2015-06-05 18:27:20 +01:00
Oliver Woodman
10efe7904d Cleanup 2015-06-05 18:26:20 +01:00
Oliver Woodman
955c7b25a4 Doc fix 2015-06-05 18:24:42 +01:00
Oliver Woodman
1732aa761c Set MediaFormat for VTT chunks + cleanup.
ChunkSampleSource had a null check solely for the VTT case,
where DashChunkSource wasn't setting a MediaFormat on VTT
chunks. It's trivial to do so, and is more consistent, so I've
done that and removed the null check. Also done some small
tidying.
2015-06-05 18:24:22 +01:00
Oliver Woodman
01affbb93e Simplify tx3g support. 2015-06-04 15:47:57 +01:00
ojw28
254bc5a8cc Merge pull request #509 from Ood-Tsen/tx3g
parse mp4 tx3g
2015-06-04 15:07:29 +01:00
ood_tsen
b95b0aad5c clean the list while forward seek. 2015-06-03 20:28:30 +08:00
ood_tsen
fd2ebc767c keep maximum number of subtitles to four. 2015-06-03 20:02:42 +08:00
ood_tsen
106ebbf7df clean up unused code. 2015-06-02 21:00:22 +08:00
Andrew Lewis
5b186a2aa4 Add support for reading H.265 in MPEG TS. 2015-06-01 17:42:43 +01:00
ood_tsen
39607551aa add title. 2015-06-01 20:47:55 +08:00
ood_tsen
f42ed89202 parse mp4 tx3g 2015-06-01 19:47:46 +08:00
Andrew Lewis
02d5cb8109 Use Build.DEVICE not Build.PRODUCT.
On HTC Butterfly these match, but Build.DEVICE is actually the right value to
use.

Issue: #377
2015-05-29 12:52:05 +01:00
Oliver Woodman
a85a169604 Simplify the demo app. 2015-05-28 17:18:26 +01:00
Oliver Woodman
b806109cfd Make HlsSampleSource use LoadControl.
This will be needed for keeping WebVTT subtitle and separate
audio tracks is sync whilst loading.

Issue: #151
2015-05-28 17:14:52 +01:00
Oliver Woodman
ea29c71d94 Temporarily revert bounded live seeking. It's causing issues in its current form. 2015-05-28 17:11:28 +01:00
Oliver Woodman
aa249e9f7f Fixed issue in which the segment/chunk shift value could become incorrect. 2015-05-28 17:08:39 +01:00
Oliver Woodman
99edc6a4b4 Avoid using OMX.qcom.audio.decoder.mp3 on HTC Butterfly.
This OMX component is listed but can't be instantiated on this device.

According to the GitHub issue, some other devices are also affected, so these
will have to be added too.

Issue: #377
2015-05-28 17:07:12 +01:00
Oliver Woodman
5c9c15ae6e Add support for extracting H.265/HEVC data in MP4 files. 2015-05-28 17:06:26 +01:00
Oliver Woodman
ac54b4f696 Cleanup/Sync with internal tree 2015-05-22 21:45:13 +01:00
Oliver Woodman
67d0154960 Use Java7 <> syntax 2015-05-22 21:40:22 +01:00