History log of /frameworks/av/media/libstagefright/httplive/PlaylistFetcher.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
5abbd3dcbb0bb32a3d4b90dddbcf90458967eb6f 21-Apr-2015 Chong Zhang <chz@google.com> HLS: make disconnect faster to prevent ANR

disconnect HTTP connection when we absolutely won't resume

bug: 19890444
Change-Id: Idee36b48741f6f8eb1d65bca32156e9e18349c67
7184bab920699d49718e8fc3cf8a23d3c9d8d54a 18-Apr-2015 Chong Zhang <chz@google.com> Merge "HLS: reduce number of guessed wrong seq numbers"
978449984366946a2e5c9f7cf350746f4306caf8 12-Apr-2015 Chong Zhang <chz@google.com> HLS: reduce number of guessed wrong seq numbers

- account for playlist age in live streaming when calculating
segment time

- be more conservative on downswitching if bandwidth is unstable

- adjust forward or backward if guessed wrong seq number

- code refactor

bug: 19567254

Change-Id: I0b61cea888fdffd1b3ee2446747ed10152e9e7d7
ee4e1b1a63758941460ae79a064249d3a5189443 17-Apr-2015 Lajos Molnar <lajos@google.com> stagefright: warnings be gone, some are now errors, use clang

Change-Id: I81f438ae444f04c12ae27ae4ef6d073033de172c
0852843d304006e3ab333081fddda13b07193de8 08-Apr-2015 Robert Shih <robertshih@google.com> stagefright: initial timed id3 support in hls

Change-Id: I00a8a786b3f4b74742c34770edd94e937abe20a8
25f82752942b1c78aec8ee303d61afff85cff9d1 08-Apr-2015 Chong Zhang <chz@google.com> HLS: traces in LiveSession and PlaylistFetcher for easier debugging

bug: 19567254
Change-Id: I4305d37cb74279ccd435f99483231cd1dcf42fc9
7c8708046117e03c0d38006bdd9685139df3ac6b 18-Mar-2015 Chong Zhang <chz@google.com> HLS: faster switching and pause/resume on low buffer

- when upswitching, discard excessive buffering on low
bandwidth variant, switch to new variant earlier

- when downswitching, report newly found IDR positions
continuously, and switch as soon as new fetcher passes
playback position. This allows us to skip time-consuming
resumeUntil() of old fetcher most of the time

- implement pause/resume on low buffering, and notify
buffering percentage

- buffering parameter tuning, separate pause/resume/ready
buffer level and up/down switch buffer level, boost up
fetcher buffering significantly

bug: 19567254

Change-Id: I750dfcc6f861d78d16a71f501beb86d8129cb048
a48d372833ccec13c96ece9efcc226e8beac7f59 18-Mar-2015 Chong Zhang <chz@google.com> HLS: allow pause/resume in the middle of a segment

- when down switching, decide whether to finish current segment
based on bandwidth settings, abort current segment if needed.

- when switching, pause new fetcher after the first 47K chunk,
and go back to resume old fethcer to stop point immediately.

- when old fetcher reaches stop point, swap packet sources and
resume new fetcher.

- mark switching as done as soon as old fecther reaches stop
point. This allows us to resume bandwidth monitoring earlier,
and do subsequent switches sooner.

bug: 19567254
Change-Id: Iba4b5fb9b06541bb1e49592536648f5d4cbc69ab
4604458dfe57b0e91a464aefafea50ae7b9876c1 17-Mar-2015 Chong Zhang <chz@google.com> Fix 64-bit build break caused by print type

Change-Id: I2239d875420f6926918c1a0dcab31b71c8329d1f
c4547ba77f78632172db3647a09659d9863d3b5c 06-Mar-2015 Chong Zhang <chz@google.com> HLS: some fixes for seek with discontinuity.

- keep old fetcher when seeking, unless the URI is changing.

- when restarting after a seek, check discontinuity seq, and
queue format change if it's changed.

- add a simple kill switch to abort when stop (or pause for seek).

- when seeking, if searching for start time goes into 2nd segment,
do not signal time discontinuity or reset first PTS.

- use setFormat() to set format in AnotherPacketSource, otherwise
video/audio flags are not updated and format are not cleared on

- do not start queueing video access unit until first IDR after start

bug: 19656539

Change-Id: I79108d26964f59ea00d2eeac8f5f9318747f8541
964adb17885185808398507d2de88665fe193ee2 02-Mar-2015 Chong Zhang <chz@google.com> HLS: misc changes in LiveSession buffering logic

remove unnecessary time discontinuity

move fetcher to separate looper so that download won't
block LiveSession

poll buffering at 1 sec interval in LiveSession, and
switch bandwidth if necessary

use fixed 100ms threshold for resumeUntil

bug: 19567254
Change-Id: I911e5041364f0858b43f2312756e173db5870a1e
1eda9bfba04043c380666ba1ee86fd285b8ffbca 29-Jan-2015 Leena Winterrowd <lenhardw@codeaurora.org> am ce25d85a: am a93fd2be: stagefright: httplive: Decouple block size from bandwidth estimate

* commit 'ce25d85ad22e6df4b861d17e9e67cb6d0e62c363':
stagefright: httplive: Decouple block size from bandwidth estimate
a7a1df0589048a675759ebf44f9794b0c613f3fe 29-Jan-2015 Leena Winterrowd <lenhardw@codeaurora.org> am 958a5432: am 17460976: stagefright: httplive: Fix deadlock for low duration clips

* commit '958a54322ea3ff2ad8ed0ac6e229c90c638f8a7f':
stagefright: httplive: Fix deadlock for low duration clips
ea5c0286e8a18e71608e6c6e5758b167fe0d6c26 29-Jan-2015 Lajos Molnar <lajos@google.com> resolved conflicts for merge of 44a2390b to lmp-mr1-dev-plus-aosp

Change-Id: I39fdc2e8895e1e943749b9a2628656a8fa5bb72b
a93fd2be99d21629bed504b9b7df035fc2f54562 04-Dec-2014 Leena Winterrowd <lenhardw@codeaurora.org> stagefright: httplive: Decouple block size from bandwidth estimate

A very small block size in PlaylistFetcher can lead to framework
overhead and difficulty streaming high bitrate content, but since
HTTPBase keeps a constant history of the past 100 HTTP reads, the
block size directly affects bandwidth estimation and in turn,
switching latency.

Add setBandwidthHistorySize() to HTTPBase to allow setting the
history size for bandwidth estimation. Call this within LiveSession
based on the current block size to ensure that the number of bytes
used for estimating bandwidth does not change if the block size is
changed in PlaylistFetcher.

Since a single TCP/IP packet can contain up to 64k of data, increase
the block size in PlaylistFetcher from 2k to lcm(188, 1024) or 47k to
avoid inaccuracies in read timings due to up to a comparable 47 reads
from the same locally-cached packet instead of from the network.

Also make HTTPBase::addBandwidthMeasurement() virtual to allow
bandwidth estimation extensions that do not rely on a history list.

Bug: 18821145
Change-Id: I5f957be01f5346e74cfb7eeb150ca4b397ad5798
174609765fb9c8cbd6aeb61f489746c3570bfee2 18-Nov-2014 Leena Winterrowd <lenhardw@codeaurora.org> stagefright: httplive: Fix deadlock for low duration clips

PlaylistFetcher buffers up to 3 * target-duration bytes of data,
but if a stream is slow (ie due to bad network conditions), a
buffer threshold of 10s is used to resume playback. This results
in an indefinite freeze as PlaylistFetcher has stopped buffering
before this threshold. Reduce the 10s threshold to be more in-sync
with PlaylistFetcher's buffering size.

Bug: 18821145
Change-Id: Ife846e7c5b4f9645895873d08250c4bee0164972
f0d689934e70d3e5b3784265e890377db04c7c1d 29-Jan-2015 Lajos Molnar <lajos@google.com> Revert "HLS: QCom enhancements"

This is to restore patch attributions

This reverts commit f580806d893c4631f5324ff0af5c2db68a40ef42.

Bug: 18821145
Change-Id: Idc49385fffccfde2a3915388fe3fe4e2b740d787
8564e13b37d372da78bce08f34a3610795ae173c 29-Dec-2014 Narayan Kamath <narayan@google.com> resolved conflicts for merge of 2efb9566 to lmp-mr1-dev-plus-aosp

Change-Id: I4313941f3561176ce9f6ab055678fb626e570107
f580806d893c4631f5324ff0af5c2db68a40ef42 22-Dec-2014 Robert Shih <robertshih@google.com> HLS: QCom enhancements

This commit consists of:

http://go/pag/c/188753 Add NULL check for empty playlist
http://go/pag/c/188754 Fix deadlock for low duration clips
http://go/pag/c/188757 Create a copy of last enqueued metadata
http://go/pag/c/188755 Propagate target duration to LiveSession
http://go/pag/c/188762 Decouple block size from bandwidth estimate
http://go/pag/c/188756 Reduce memcpy calls for chunked content
http://go/pag/c/188758 Dont resume if we have almost fetched till stop time

Bug: 18821145
Change-Id: I7fd650999c6c50bbadffd65adee9020e669dfe62
86a58cabe322b746ab0eb17f0cade34ed68ba60e 17-Nov-2014 Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org> Fix struct vs. class mismatches

Fix something being declared a struct and forward-declared a class and
vice versa.

gcc doesn't care, clang complains about the mismatch.

Change-Id: I7a7a8e9040e3c86fa1d73eb112631ea140861657
Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
b44ce2f84691559672cfaf6bb8fd3a9ac43904f2 19-Sep-2014 Robert Shih <robertshih@google.com> NuPlayer HLS: better subtitle toggling

Bug: 17310061
Change-Id: Iacee1816285425aaad08c32b28591bb0162d5a85
73d2847af14cdd5fdf8bd1ac80fb7ddf9ae7d9a7 30-Aug-2014 Robert Shih <robertshih@google.com> HLS: fix freezes when toggling between a/v streams

Bug: 17412740
Change-Id: Iacaf2fa1d20584056375803e1782ad6761c56fc5
f78f62bd6b0a99747db53828d281a50b9270a646 30-Aug-2014 Robert Shih <robertshih@google.com> PlaylistFetcher: find the correct sequence number to start fetching

- skip over bad segemnts
- if we skipped too far into the future when adapting in live streams,
adjust back

Bug: 17141635
Bug: 17416657
Change-Id: I0877ceaf6e69cab751bf9e92579071f9e61643eb
309aa8bf5e4cd66fe988adf2654cac3fadc2a1c3 30-Jul-2014 Robert Shih <robertshih@google.com> httplive: timestamp reporting, track selection

Bug: 15153976
Bug: 15763638
Bug: 16351654
Change-Id: I4462276d4b7342647286a0ca4be11692ce52ff6d
70c2fd3dc648b512ea088ee9de5e505c626fd39c 09-May-2014 Robert Shih <robertshih@google.com> Merge "PlaylistFetcher: start queueing AUs after the 1st IDR nalu"
7d8e3ccfbf326b5e190b416590e956c2fc3021f7 09-May-2014 Lajos Molnar <lajos@google.com> Allow BOM and space in WebVTT files

Bug: 10900755
Change-Id: I47a7a33f749ea2470ce7d9d36d33c7484637d61c
1da7ee098ac97d2fdd2cff16a2bfa51fd1889ad8 24-Apr-2014 Robert Shih <robertshih@google.com> PlaylistFetcher: start queueing AUs after the 1st IDR nalu

Bug: 14159556
Change-Id: I4fc16dda9357e1251d2909571a79215d13d0104b
43ca783effd99bba0e6e2dd6fe177a8888578ef8 27-Feb-2014 Robert Shih <robertshih@google.com> httplive: block-by-block fetch, decrypt, and parse ts files.

Bug: 12060952
Change-Id: I695345081fe23961b9d0ef6db264885f914703ec
ceeabe15f4e7bc73efdfcafed917202de9d515cb 04-Mar-2014 Robert Shih <robertshih@google.com> httplive: clear access units before returning from seekTo.

Bug: 12060952
Change-Id: I6a69a718c082501003ee9b78a948a2f8bbfbb14e
777ee5ed736c8f6c3f7d196ea022f7432bfd23e1 20-Feb-2014 Robert Shih <robertshih@google.com> Initial HLS seamless switch implementation.

Bug: 11854054
Change-Id: I75fc2a258111295039ac13cc37e407df25891dd2
2cd94583868b775a548233a4f7cd1d988fc6344f 06-Feb-2014 Robert Shih <robertshih@google.com> PlaylistFetcher: Add support for block-by-block decryption.

Bug: 11854054
Change-Id: Ifd3f3369275889e716b360087b5b60d01635b578
6708a45ba1b5eacf583d5e80b2075b68940fe0ab 16-Dec-2013 Lajos Molnar <lajos@google.com> stagefright: Fix bugs in playlist fetcher logic

1. Improve start time: start playback as soon as the target duration
or 10s was buffered.
2. Select playlist monitor time based on target duration to avoid
continuously missing the boat.
3. If "we miss the boat" we still must request a safe sequence
number (last - 3)

Change-Id: Ie99c360ac67b152ad9af19e9c6e520016f67e4e3
Signed-off-by: Lajos Molnar <lajos@google.com>
Bug: 12060952
dcb89b3b505522efde173c105a851c412f947178 06-Aug-2013 Chong Zhang <chz@google.com> MediaPlayer: add listener for raw track data

Bug: 10326117

Change-Id: I2c0bdf8adc67b11f8dc633423bee66897548f181
14f7672b5d450ed26a06fd3bb3ce045ea78b11b2 15-Jan-2013 Andreas Huber <andih@google.com> New HLS implementation supporting independent stream sources, audio-only streams

and more.

Change-Id: Icfc45a0100243b2f7a14a9e65696be45b67d6495