History log of /frameworks/av/media/libstagefright/FrameDecoder.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
0c1407f79ef36422330c2003a608d37df714256b 03-May-2018 Chong Zhang <chz@google.com> Decode one row of tiles at a time for image that has tiles

Add an api to IMediaMetadataRetriever to decode image rect.
It will reuse the same full frame IMemory, and decode only
the requested rect. For now, StagefrightMetadataRetriever
will only allow decoding of rect that's a full row of tiles,
and the requested must be issued sequentially (i.e. no
arbitrary rects). When the extract side is fixed to allow
seeking by tiles, it can be extended to allow arbitrary
rects.

This allows HeifDecoderImpl (on client side) to start
processing the getScanlines in parallel with the decoding.

Test: CTS MediaMetadataRetrieverTest;
Manual testing of HEIF decoding of files with or without tiles;
Manual testing of HEIF thumbnails generation in Downloads app.

bug: 78475896
Change-Id: I820b21cdf33f80593ee6092d8e1ba68b3beb65dd
/frameworks/av/media/libstagefright/FrameDecoder.cpp
f49d8f7b8c5f77016e9ba848219966890c9810a8 02-May-2018 Chong Zhang <chz@google.com> Prepare code to allow image decoder to be reused

This change refactors ImageDecoder to prepare it for reuse
for multi-slice decoding. There is no functional change.

bug: 78475896

Test: CTS MediaMetadataRetrieverTest;
Manual test of HEIF image decoding and thumbnail extraction.

Change-Id: I8c16042020c7db3d3714d22322e6304ea4192e33
/frameworks/av/media/libstagefright/FrameDecoder.cpp
e44ca3765fca8d82f7dcf884c53acddb6704dd20 28-Apr-2018 Chong Zhang <chz@google.com> Merge "Tuning of buffer dequeue code to reduce stalls" into pi-dev
c666687f67d1d00beb88c63f90cefc708cbe8500 20-Apr-2018 Chong Zhang <chz@google.com> Tuning of buffer dequeue code to reduce stalls

Queue as many inputs as possible without blocking, then
block on output. Also change the blocking time to 10ms
but allow a little more retries.

Finally, assign a non-zero pts to the image samples to
suppress warnings from MediaCodec about 0 pts.

bug: 78475896

Change-Id: I57c4096a93bc5de0a413968224843a69df667df8
/frameworks/av/media/libstagefright/FrameDecoder.cpp
3f4e6ddcf05aa1a286bc3963b5a9f53bf30b4327 25-Apr-2018 Chong Zhang <chz@google.com> Remove one redundant frame copy in MetadataRetriever

When extracting bitmaps, MediaMetadataRetriever does a copy from
StagefrightMetadataRetriever's VideoFrame to IMemory. We could
just allocate IMemory directly and return that to the client.

bug: 78475896
Change-Id: Ibe07e7d2c68f031261470308476089c2fa9298ea
/frameworks/av/media/libstagefright/FrameDecoder.cpp
d5fa357ddff0589d8a331583a56e62712af471be 10-Apr-2018 Chong Zhang <chz@google.com> Use heif embedded thumbnail if available

Add plumbing to retieve the embedded thumbnail from
MPEG4Extractor/ItemTable.

bug: 74395267
Test: CTS MediaMetadataRetriever test; manual test of thumbnail
extraction by browsing new folders containing heif files in
Downloads app.
Change-Id: Ic49f6dfa47eddc229b9f4b0e1835d58df1dce9f8
/frameworks/av/media/libstagefright/FrameDecoder.cpp
67d5b91f2fa0b106c038e642225e3b538db2be2e 15-Mar-2018 Chong Zhang <chz@google.com> heif: renaming of grid-{width,height} to tile-{width,height}

So that it's not confused with grid dimensions.

bug: 74831433

Change-Id: I29188c6527c2315cbc66157a0a5b68a0d11fecc4
/frameworks/av/media/libstagefright/FrameDecoder.cpp
3d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0 16-Feb-2018 Marco Nelissen <marcone@google.com> Remove RefBase from the extractor API

- Add MetaDataBase base class that MetaData derives from, but which
does not derive from RefBase.
- MediaBuffer::meta_data() now returns a MetaDataBase& rather than an
sp<MetaData>
- Rename MediaSourceBase to MediaTrack.
- MediaSource no longer derives from MediaSourceBase (or MediaTrack)
- MediaTrack::getFormat(), MediaExtractor::getTrackMetaData() and
MediaExtractor::getMetaData() all take a MetaDataBase& parameter that
they fill out, rather than returning a MetaData directly (the
corresponding methods on MediaSource and RemoteMediaExtractor continue
to return MetaData)

Bug: 67908544
Test: CTS MediaPlayerTest, DecoderTest, EncodeDecodeTest, manually record video

Change-Id: Ib531ab309061290be33d40d6100c9a8127e22083
/frameworks/av/media/libstagefright/FrameDecoder.cpp
1889c3edad32995c0cf26ae2248fe7c957b7ec84 01-Feb-2018 Dongwon Kang <dwkang@google.com> Add MediaBufferBase and use it in MediaSource and MediaBufferGroup.

MediaBuffer class exposes internal classes, ABuffer and IMemory, which
we don't want to expose to plugins. This change introduces
MediaBufferBase which does not expose any classes from system library.

Test: build and post-submit media cts tests
Bug: 67908556
Change-Id: Ic9ee239caf9b84b2b3740e2d533257afa25c8784
/frameworks/av/media/libstagefright/FrameDecoder.cpp
226c9b913fb10209d52f40c15b7a7a7264628e19 02-Dec-2017 Chong Zhang <chz@google.com> fix crash due to no output format available

Output format should arrive before we get first frame, but if
it doesn't, better fail it than crash.

bug: 69924594
Change-Id: If70082bd9901d52f20d63d92fd6c2b34d4cee830
/frameworks/av/media/libstagefright/FrameDecoder.cpp
d3e0d861aa68a7ef129fe228595bff734448ebc8 03-Oct-2017 Chong Zhang <chz@google.com> heif: fixes for image sequences and dual-function files

Adding support for two new sets of APIs on MediaMetadataRetriever:

- getImageAtIndex() and getPrimaryImage()
- getFrameAtIndex() and getFramesAtIndex()

Outline of changes:

- Proper indexing of all displayable still images, so that they
can be retrieved by getImageAtIndex()

- Exposing still images as "image/x.android.heic" tracks in
MediaExtractor with necessary descriptive keys (such as "grid-*")

- Support to retrieve video frames by absolute index instead
of timestamps, as image use cases mostly are interested in
getting the images and care less about timing.

- Support to retrieve video frames in batches because retrieving
one frame at a time is inefficient.

- Refactor image / frame decoding code into FrameDecoder, and split
still image decoding and video sequence decoding into to sub
classes to facilite future development.

bug: 63633199

test:
cts-tradefed run cts-dev --module CtsMediaTestCases --compatibility:module-arg CtsMediaTestCases:include-annotation:android.platform.test.annotations.RequiresDevice

Change-Id: I2fe8519fb6907f315a8b513921fc1cc7f436e28d
/frameworks/av/media/libstagefright/FrameDecoder.cpp