67 Commits

Author SHA1 Message Date
Oliver Woodman
d4e35358a1 Fix bad assertion. It doesn't hold for TTML subtitle chunks. 2014-09-11 16:09:52 +01:00
Oliver Woodman
6e9ba9ba47 Bump version to 1.0.13. 2014-09-08 11:38:20 +01:00
Oliver Woodman
ddd2d004f0 Make SmoothStreaming manifest more robust.
- Skips unrecognized elements rather than crashing.
- FourCC treated as required for video and optional elsewhere,
  as per the SmoothStreaming spec.
- Only parse initData text when we're actually in the ProtectionHeader element
2014-09-08 11:35:39 +01:00
Oliver Woodman
181eceaf4b Fixed MPD date/time parsing issue. 2014-09-08 11:34:06 +01:00
Oliver Woodman
52a300f1fd Merge fMP4/H264 and WebM/VP9 DASH implementations. 2014-09-08 11:33:12 +01:00
Oliver Woodman
1ddd5c6e16 Parse some DASH manifest components for DVB LIVE. 2014-09-08 11:30:21 +01:00
Oliver Woodman
5d35698d8f Make MediaCodecTrackRenderer discard non-keyframes after seek.
This means that after a decoder flush, the renderer will avoid
feeding non-keyframes into the decoder until it has received and
fed the first keyframe. The decoder has no way of correctly
decoding non-keyframes that arrive before a keyframe.
2014-09-08 11:30:20 +01:00
Oliver Woodman
5059690a7a Add https->http redirect sample video. 2014-09-08 11:30:19 +01:00
Oliver Woodman
5b2f0566a7 Fix potential cause of infinite-spinner-without-failure.
It looks like for the case of self-contained media segments,
it's possible to get stuck without failure in the case that
the load fails having loaded less than the length of the init
data.
2014-09-08 11:30:19 +01:00
Oliver Woodman
92e3208121 Don't try and read a trackEncryptionBox unless we actually have a saiz atom to parse.
Issue: #35
2014-09-08 11:30:18 +01:00
Oliver Woodman
14048b013a Add disclaimer to stop people getting confused by the minSdkVersion.
Issue: #31
2014-09-08 11:30:17 +01:00
Oliver Woodman
d465ab7029 Call FormatHolder what it really is.
Since we have a Format class as well, it's very confusing that
FormatHolder actually holds a MediaFormat. I think it's quite
likely that Format will need promoting into the root package as
part of the HLS work, which will make this even more confusing
(although it is possible that for HLS we'll define yet another
Format class, if it turns out we need significantly different
fields).

Note - I deliberately avoided renaming the formatHolder
args/params, because they're not particularly ambiguous and
because it introduces some ugly line breaks.
2014-09-08 11:30:16 +01:00
Oliver Woodman
3b25928a13 Make audio renderer more robust to bad getTimestamp values. 2014-09-08 11:30:15 +01:00
Oliver Woodman
a7b88cd6a9 Tighten isReady() up again.
- Bring back requirement for the first video frame to be rendered
  before isReady returns true, *unless* we've deduced that the
  upstream source is serving multiple renderers.
- Ditto for requiring that the audio track has some buffered data.
2014-09-08 11:30:14 +01:00
Oliver Woodman
98a7573812 Minor changes to fix Javadoc.
- cache ref didn't work because it referred to a private variable
  (which isn't documented) from a public interface definition
  (which is). Meaning the Javadoc generator was trying to link
  to documentation that didn't exist.
2014-09-08 11:30:12 +01:00
Oliver Woodman
cc04fd1e76 Fix the build. 2014-08-14 16:19:30 +01:00
Oliver Woodman
5b9c92cb83 Bump version to 1.0.12. 2014-08-14 15:45:33 +01:00
Oliver Woodman
4e7b333aee Support chunked requests. 2014-08-14 15:44:09 +01:00
Oliver Woodman
af6e144adc Fix bug introduced supporting self-contained media chunks.
The equals check we perform needs to ignore the max dimensions.
This tended to work in practice because formats would be the
same object, but in the case where different format objects
are used, things can break.
2014-08-12 21:35:13 +01:00
Oliver Woodman
5cfa9adacc Add missing C file. 2014-08-12 14:16:28 +01:00
Oliver Woodman
58e9e61688 Remove unnecessary SuppressWarning annotations. 2014-08-12 14:13:43 +01:00
Oliver Woodman
e0a29c841e Don't release AudioTrack unless we have to. 2014-08-12 14:12:05 +01:00
Oliver Woodman
4a745b1cd8 Optimize out quite a few allocations in FragmentedMp4Parser. 2014-08-12 13:55:38 +01:00
Oliver Woodman
005e98fc34 Simplify parsing of encryption data + support SENC boxes.
Issue: #4
2014-08-11 19:42:04 +01:00
Oliver Woodman
8ec8840261 Minor cleanup.
- Add constants class. Currently housing a single lonely variable,
which is used generally throughout the library, and so no longer
nicely fits into a specific class.

- Rename a few other constants to add clear units.

- Made minor tweak to ExoPlayer documentation.
2014-08-11 18:38:39 +01:00
Oliver Woodman
25a532656c Optimize some CodecCounter inefficiency.
1. Use ints rather than longs.
2. Remove some counters that dont seem hugely useful.
3. Replace use of volatile with explicit method calls that
   cause a memory barrier. This is a lot more efficient than
   using volatile because it can be invoked only once per
   doSomeWork.
2014-08-11 17:42:08 +01:00
Oliver Woodman
9a124120ff Changes around renderer readiness and extraction.
- Make MediaCodecTrackRenderer.isReady more permissive.
  This largely fixes #21
- Bring WebmExtractor closer to FragmentedMp4Extractor.
  The two will probably be placed under a common interface
  fairly soon, which will allow significant code
  deduplication.
2014-08-01 15:56:26 +01:00
Oliver Woodman
41ff1e4071 Add CacheDataSource.Listener. 2014-08-01 15:54:32 +01:00
Oliver Woodman
b1992c3848 Don't call doSomeWork if we're preparing 2014-08-01 15:53:49 +01:00
Oliver Woodman
2a82ff353b Make DefaultWebmExtractor handle cues and format independently.
* Remove concept of being prepared by simply reporting if format
and/or cues are known.
* Allow replacement of format and/or cues later in the stream.
* Initialization and index segments can be parsed independently
of one another but must be in order due to internal WebM dependencies.
* Let seekTo() work even when cues are unknown.
2014-08-01 15:53:08 +01:00
Oliver Woodman
32464e6de4 Fix integer variant of library version. 2014-08-01 15:51:48 +01:00
Oliver Woodman
ad26085e5c Finish painful bytes/sec -> bits/sec conversion. 2014-08-01 15:51:21 +01:00
Oliver Woodman
0f57a5f1cf Merge branch 'dev' of persistent-https://github.com/google/ExoPlayer into dev 2014-08-01 15:44:15 +01:00
Oliver Woodman
ef6be7957d Merge branch 'dev' of https://github.com/google/ExoPlayer into dev 2014-07-28 14:31:20 +01:00
Oliver Woodman
b3277c666b Add language to Format (+other misc fix). 2014-07-28 14:29:21 +01:00
ojw28
c1259969f8 Merge pull request #17 from rejasupotaro/dev
Thanks!
2014-07-24 11:23:36 +01:00
rejasupotaro
e33f5a514c Update README.md 2014-07-18 23:14:07 +09:00
Kentaro Takiguchi
fa83b2fa5e Add jarRelease task 2014-07-18 23:00:44 +09:00
Kentaro Takiguchi
5a888f3a6d Update tools version 2014-07-18 23:00:44 +09:00
Kentaro Takiguchi
50f69f22df Add gitignore 2014-07-18 23:00:12 +09:00
ojw28
553a1d2ec1 Merge pull request #16 from google/dev
Add missing files.
2014-07-18 14:56:36 +01:00
Oliver Woodman
bb5cfd52c5 Add missing files. 2014-07-18 14:55:24 +01:00
ojw28
4228f2cfa3 Merge pull request #15 from google/dev
Merge 1.0.11 to master
2014-07-18 14:43:59 +01:00
Oliver Woodman
1ed65dfb85 Add some additional information to README.md. 2014-07-18 14:37:46 +01:00
Oliver Woodman
edb5446440 Bump version to 1.0.11. 2014-07-18 14:31:55 +01:00
Oliver Woodman
62d17cabf0 Add support for SegmentTemplate and SegmentList mpds.
Misc Notes:
- Removed content type filters because some of third parties
  don't set content type.
2014-07-18 14:30:30 +01:00
Oliver Woodman
87461821fe Define DashSegmentIndex wrapper.
This paves the way for SegmentTemplate and SegmentList based
mpds, which will implement DashSegmentIndex directly rather than
parsing an index from the media stream.

- Define DashSegmentIndex.
- Make use of DashSegmentIndex in chunk sources.
- Define an implementation of DashSegmentIndex that wraps a SegmentIndex.
- Add method that will allow Representations to return a DashSegmentIndex
  directly in the future.
- Add support for non-contiguous index and initialization data in media streams.
  For the Webm case this isn't enabled yet due to extractor limitations.
- Removed ability to fetch multiple chunks. This functionality does not extend
  properly to SegmentList and SegmentTemplate variants of DASH.
2014-07-17 11:28:05 +01:00
Oliver Woodman
d7d14037b8 Add utility classes for SegmentTemplate/SegmentList refactor.
A step towards supporting SegmentTemplate style MPDs.
2014-07-15 18:32:37 +01:00
Oliver Woodman
058333565d Use bits/sec instead of bytes/sec for format bandwidth.
Why: This was a bad initial choice. Manifests typically define bandwidth in
bits/sec. If you divide by 8 then you're throwing away information due to
rounding. Unfortunately it turns out that SegmentTemplate based manifests
require you to be able to recall the bitrate exactly (because it's substituted
in during segment URL construction).

Medium term: We should consider converting all our bandwidth estimation
over to bits/sec as well.

Note1: Also changed Period id to be a string, to match the mpd spec.
Note2: Made small optimization in FormatEvaluator to not consider discarding
the first chunk (durationBeforeThisSegmentUs will always be negative, and even
in the error case where it's not, removing the first thunk should be an error).
2014-07-15 13:55:59 +01:00
Oliver Woodman
4366afc273 Support self-contained media chunks.
- Support parsing of moov atoms contained within each chunk.
- Also do a small cleanup to WebM parser.
2014-07-15 12:47:08 +01:00