History log of /frameworks/av/media/libstagefright/MPEG4Writer.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
da5c3beba9d9612aa0e80cc8ae668397438b4c49 11-Apr-2017 Hangyu Kuang <hkuang@google.com> media: Write maker and model information into recorded videos.

Bug: 34745604
Test: Camera recording and use isoviewer to look at the metadata
Change-Id: Idb556a0ec38d8a6a797c71b68c46979504d2cb4a
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
0d3d9531716705787bd2168023a91772163d5e0a 23-Jan-2017 Mahesh Lanka <mlanka@codeaurora.org> stagefright: MPEG4Writer: fix Integer overflow

unsigned int was getting assigned to a negative value, which in turn was
leading to a crash in htonl.

Bug: 34757428
Test: Builds cleanly
Change-Id: Iacb580adc5b84cef09feabcb3e1b394a7e80bc40
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
bc03dbeb6c3c0c829aa25b57dc28322996a8d630 28-Jan-2017 Hangyu Kuang <hkuang@google.com> Merge "media: Save the last decode timestamp after all the timestamp adjustments."
bf3b18fbf4a68184cf65d9fa063ac457d5a2af5a 27-Jan-2017 Hangyu Kuang <hkuang@google.com> Merge "media: Save the last 10 frames' timestamp in MPEG4Writer for debugging."
38f4cbed37d5788e488fd39ccab0c78b07e89207 27-Jan-2017 Hangyu Kuang <hkuang@google.com> media: Save the last decode timestamp after all the timestamp adjustments.

Test: Keep taking pictures during video record for 5 mins.
Bug: 33882616
Change-Id: I2865a4842448ab9463391b983051cba243ea1ed6
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
62a94906c545fd9d88fb9d8ff6553bc903f73056 26-Jan-2017 Hangyu Kuang <hkuang@google.com> media: Save the last 10 frames' timestamp in MPEG4Writer for debugging.

Save both decode timestamp and presentation timestamp.

Test: Hack the writer to dump out the timestamps after recording 20 frames.
Bug: 33882616
Change-Id: I9a19f52356ebcfeb084527fccc7a94e1d7d0aefa
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
8fdb3fde346b446ad3b04dafa65a6844da672e23 24-Jan-2017 Hangyu Kuang <hkuang@google.com> media: Add back the duplication of fd inside MPEG4Writer.

The fd passed in from application may be closed by application. So it needs to
be duplicated.

Test: Screenrecord
Bug: 34596564
Change-Id: I8b633e2aad6a6371296427e891985ae4892b00aa
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
6e80328a71d93af64c2e2618cf1b5005f5dfdb76 20-Jan-2017 Hangyu Kuang <hkuang@google.com> media: Gracefully return when receiving multiple codec specific data.

Test: Run MediaRecorder and MediaMuxer CTS test
Bug: 34036127
Change-Id: I0b3b45850cbab07ac36bd9c8bfd5868caf199a53
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
e482d3a819edb60038ba5c4ca7f33935b27dd35f 19-Jan-2017 Hangyu Kuang <hkuang@google.com> Merge "media: Support recording exceeds filesize limit by splitting files."
fe44e4f74fe2582cbf012687059278dbcbdaa6f7 04-Jan-2017 Hangyu Kuang <hkuang@google.com> media: Support recording exceeds filesize limit by splitting files.

Test: Hacking camera app to record file larger than size limit.
Bug:28150626
Change-Id: I500913ec96d8ef49a78989d3f973bc7e8d923cb7
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
467743d462773ada299148ed5a210479affd1f4c 11-Jan-2017 Hangyu Kuang <hkuang@google.com> media: Use width and height when dispWidth and dispHeight are not present.

Test: Test the NativeDecode cts test and manual do camera recording.
Bug:34213028
Change-Id: Ide354d3d9ce4e4bc33cbc7821fa31471b756ec78
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
77a650d3407d4d2ffd698b32c8ee1d24374d080e 11-Jan-2017 Hangyu Kuang <hkuang@google.com> media: Fix the camera recording error.

Revert "media: Set the correct display width/height in muxer."

Test: Manual camera recording
Bug:34213028

This reverts commit 776daeee2fd2dc5c5ec383383c401c82bd0a0fb6.

Change-Id: I54e75596baa1547ce70588d71564d3ca2b4da4ca
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
b3962d2405b279abde234e16e5b3bff3a4a5cab5 10-Jan-2017 Hangyu Kuang <hkuang@google.com> Merge "media: Set the correct display width/height in muxer."
844800fb97bfd061f845cd13d42fbdfacdbca6c5 10-Jan-2017 xiahong.bao <xiahong.bao@nxp.com> Merge "MPEG4Write mdhd duration overflow after recording for 15 hours" am: 98d1217d58 am: 6afe508bb2 am: 3e383dc9cd
am: e4f2656ff9

Change-Id: Ic66fa94e88d686fd601c91f81318f9cc59955b54
776daeee2fd2dc5c5ec383383c401c82bd0a0fb6 06-Jan-2017 Hangyu Kuang <hkuang@google.com> media: Set the correct display width/height in muxer.

Test: Run the NativeDecoderTest
Bug:34094564
Change-Id: Ib5f50afd77030f0ac87a4b0eb659b8f9c2f56987
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
1d515f4b608f1e6592780365857855962c0da725 29-Dec-2016 xiahong.bao <xiahong.bao@nxp.com> MPEG4Write mdhd duration overflow after recording for 15 hours

MPEG4Write mdhd duration of AV track is larger than INT32_MAX
after record over 15 hours, so write mdhd box as version 1 type
which enhance duration to 64 bit.

Change-Id: I874b0a0ddfb7fb8f5b0a255345d8605b6c8ebf68
Signed-off-by: xiahong.bao <xiahong.bao@nxp.com>
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
bda0543787ac57cf984381c34b6acbad0339d6c0 10-Nov-2016 Hangyu Kuang <hkuang@google.com> media: Support muxing multiple video and audio tracks.

Test: CTS test.

Bug:32781701
Change-Id: I0b92601ce0cd8668e3b141d18dac393e0da789e4
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
96626b7f9a4e5c9e1e04f7f710383631d1470364 01-Dec-2016 Marco Nelissen <marcone@google.com> Use property_get_bool where possible

Make handling of boolean properties more readable and consistent by
using property_get_bool instead of parsing the result of property_get

Change-Id: I8490d0f0b41a92eab5131e0aac0ecdf704a63381
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
e1b943f21dff25044b349d4d628d9adb0c2e0b74 31-Oct-2016 Hangyu Kuang <hkuang@google.com> media: Limit the maximum size of per-frame metadata.

Test: Manual test.

Bug: 28536560
Change-Id: I6557ead64a33de308266ac23c0f8f793d01a369a
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
25adc33c1ba77b95162ebce8a4c2a7a07baeb98f 21-Oct-2016 Hangyu Kuang <hkuang@google.com> media: Add metadata track support to MPEG4Writer.

1. Remove the restriction that MPEG4Writer could only write at most one video
track and one audio track.
2. Allow muxing mutiple metadata tracks into the file. Did not put a limit on
each sample's metadata size now.
3. metadata mime format must start from prefix "application/".
4. metadata's format/layout is defined by the application.
5. Generated MP4 file use TextMetaDataSampleEntry defined in section 12.3.3.2
of the ISOBMFF to signal the metadata's mime format.

Test: Manual test.

Bug: 28536560
Change-Id: I97829e235e598e35fcad31f948eea5943f8c4fd5
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
01a30161dca1ab0324952fa726fbd0776e7277ba 20-Sep-2016 Hangyu Kuang <hkuang@google.com> media: Fix memory leak when recording duration exceeds duration limit. am: d24affe100 am: 92796b05ac
am: 7933840ed8

Change-Id: I1d52814d6294e6df22229702c6020f41e620e07d
7933840ed82f3a1767f83554ebbcdd0323d34b8a 20-Sep-2016 Hangyu Kuang <hkuang@google.com> media: Fix memory leak when recording duration exceeds duration limit. am: d24affe100
am: 92796b05ac

Change-Id: I674fb382de5296f3637e7604c5f66d777f9bc509
d24affe100fb9ebcdabef47068e7a0f728a3a44e 20-Sep-2016 Hangyu Kuang <hkuang@google.com> media: Fix memory leak when recording duration exceeds duration limit.

When recording got to the duration limit, MPEG4Writer should also stop the source
before exiting the loop. This will stop the video/audio encoder from copying
and encoding buffer. Otherwise, those encoded buffers will be leaked as they are
not released inside MPEG4Writer.

Also fix the other cases when malformed file is generated.

Bug:31530524
Change-Id: I0233f13e3d2a9110b35375a7394e6c8c36494342
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
358bbd034f7a77186bbc90eb492fd4711e9a1c5e 06-Sep-2016 Hangyu Kuang <hkuang@google.com> media: Notify main thread error if encounter failure in track worker thread. am: 9db9f8d45e am: cf0f5f0620
am: b9bd9ac946

Change-Id: I60a02991446cd6577e4acd622babbd1a64fac953
b9bd9ac946a373b9b47222228daf8d25658ff63c 06-Sep-2016 Hangyu Kuang <hkuang@google.com> media: Notify main thread error if encounter failure in track worker thread. am: 9db9f8d45e
am: cf0f5f0620

Change-Id: I21b9aefbe5c849a7092cc0e8fe8cea2414dde9d2
9db9f8d45ed2f22917dc6cf03b582b98add4510b 02-Sep-2016 Hangyu Kuang <hkuang@google.com> media: Notify main thread error if encounter failure in track worker thread.

Bug:31096780
Related to bug:30919939

Change-Id: I672dcbb01964826f33b7de5b279510fa9bb87986
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
5affeea0e9b39546aa6d50e6ba810d08818f6e8e 09-Aug-2016 Praveen Chavan <pchavan@codeaurora.org> MPEG4Writer: Enforce CSD size check only for MPEG-4 audio/video am: bc4e708bf8 am: 81c65c9bb9
am: c42146f04f

Change-Id: Ia524f2395c68e0c61e3d0b2e17eaf31e4695dda2
c42146f04fbc8729662b8ba2475ca817f59cb316 09-Aug-2016 Praveen Chavan <pchavan@codeaurora.org> MPEG4Writer: Enforce CSD size check only for MPEG-4 audio/video am: bc4e708bf8
am: 81c65c9bb9

Change-Id: I2fcce6a1248f57b813861a7e1b54f8519532b01a
bc4e708bf8c160d8a3388125a8238ea2768aeade 05-Aug-2016 Praveen Chavan <pchavan@codeaurora.org> MPEG4Writer: Enforce CSD size check only for MPEG-4 audio/video

CSD size restriction to accomodate in 1-byte is not applicable
to all codecs. Esp. avc and hevc can easily exceed 128 bytes.
Restrict the 128-byte size-check only for MPEG-4 A/V

Bug: 30684941
Change-Id: I777bb357f72065b6ebe854122f9ee2080efd54aa
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
cea142b06013e06f6072639e4e9647392a38ebab 20-Jul-2016 Robert Shih <robertshih@google.com> Merge "MetaData/MPEG4Writer: add language"
2f4fbb2621a96d68f64dd70920e9684f4f24f74c 19-Jul-2016 Pirama Arumuga Nainar <pirama@google.com> Fix writeColrBox to write 0x80 instead of 128
am: fffb0c8fbe

Change-Id: I1182b477f956af6f714daa2adc3564bd889f0ae8
ad16d0cb9e56ef22266499fd884991360741b451 19-Jul-2016 Lajos Molnar <lajos@google.com> Merge \"MPEG4Writer: adjust the whole CTTS table\" into nyc-mr1-dev
am: de25663ffc

Change-Id: I1f0fc56b3b002092bee22caba0934fdc1534ad97
c259a4027f151fc57d7b09b62d62cb133ba11d05 19-Jul-2016 Lajos Molnar <lajos@google.com> MPEG4Writer: adjust the whole CTTS table

- refactor ListTableEntries to use constant entryCapacity

Bug: 30182452
Change-Id: Ib883a8547e198fab85c63ac756117e8e11384c73
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
decc50efede28c5d73137c30d1a95d72dd405555 02-Oct-2015 David Yeh <david.yeh@mediatek.com> MetaData/MPEG4Writer: add language

Bug: 21761589
Bug: 24278318
Bug: 24615792
Change-Id: Iea039047c6c63551bcb0e65de9f4b089fd2fc85d
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
fffb0c8fbe16ac948619b85e1eea9e65a9daa0c9 29-Jun-2016 Pirama Arumuga Nainar <pirama@google.com> Fix writeColrBox to write 0x80 instead of 128

Use 0x80 and explicitly cast down to int8_t.

Bug: http://b/29831838
Change-Id: Ibf989863ab2affdc7218f94ca073f37f5192d488
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
38667cc8c1c46b66665e4a17d60e44e708c184b4 15-Jul-2016 Lajos Molnar <lajos@google.com> Merge \"stagefright: enable B-frames for AVC encoder and MPEG4 writer\" into nyc-mr1-dev
am: db2d2066e6

Change-Id: I29b9afbb4c2b98aeef10c769e0283269c7f5b74b
826cbe4d07c709f647cdd29354434df20e355c9a 14-Jul-2016 Lajos Molnar <lajos@google.com> stagefright: enable B-frames for AVC encoder and MPEG4 writer

If decoding time stamps are not available, synthesize a set of
non-negative, monotonic time stamps.

Bug: 28027692
Change-Id: Ifdbf53802baac59914d021440856d4c310ee8f6e
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
989010e1711ce462ca7b909178345e5fa62298b3 14-Jul-2016 Lajos Molnar <lajos@google.com> Merge \"stagefright: encode number of android.generic temporal layers\" into nyc-mr1-dev
am: af14c09690

Change-Id: I0c113016312fd6fa6baa046a762efbbbeaba8ea7
af14c096900be5f92795363264a175b518086af0 14-Jul-2016 Lajos Molnar <lajos@google.com> Merge "stagefright: encode number of android.generic temporal layers" into nyc-mr1-dev
4a31fe0cce5c82c1695903ec7cb7e5f316341357 14-Jul-2016 Lajos Molnar <lajos@google.com> Merge \"MPEG4Writer: Fix writing multiple NAL units in a video sample\" into nyc-mr1-dev
am: 817cdc110d

Change-Id: Ia1c83d040d3dbc202ca86c6a5438cae2647e0fcd
b1803b01ed332aa2ed05536c4486078e9d02760a 14-Jul-2016 Lajos Molnar <lajos@google.com> stagefright: encode number of android.generic temporal layers

Bug: 27596987
Change-Id: Ida24aa9bac004ac9bc7c9e19eea1a55162904dc4
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
10cc12c4eec9ff974edb72f9140b05762fa50907 14-Jul-2016 Lajos Molnar <lajos@google.com> MPEG4Writer: Fix writing multiple NAL units in a video sample

start code is 4-byte long

Bug: 27596987
Change-Id: Ie54167f8f1b5b00679243a41e0203fdf4018f639
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
ab99bf8a017616c73193357c7815f60712570573 12-Jul-2016 Praveen Chavan <pchavan@codeaurora.org> Merge \"MPEG4Writer: Handle writing multiple NAL units in a video sample\" into nyc-mr1-dev
am: af0c7dfd57

Change-Id: I560d5f23bb9385194f506264bd08666bead463da
af0c7dfd5744b7c9e67e9afd26af417aadc6dc20 12-Jul-2016 Wei Jia <wjia@google.com> Merge "MPEG4Writer: Handle writing multiple NAL units in a video sample" into nyc-mr1-dev
44fece2cf363911efede91f81c7e57236d81f755 12-Jul-2016 Praveen Chavan <pchavan@codeaurora.org> Merge \"stagefright: Enhance MPEG4 writer/extractor to store/retrieve layer info\" into nyc-mr1-dev
am: 0093efba5a

Change-Id: Ia1a316c8dfd13bf146e94037a3743cdab88acdfe
4dbff11975e737482537e1636051690188f3fbc4 08-Apr-2016 Praveen Chavan <pchavan@codeaurora.org> stagefright: Enhance MPEG4 writer/extractor to store/retrieve layer info

Store temporal layer-count in MP4 meta-keys.
Enhance MPEG4Extractor to parse layer-count and make it available in
file-meta.
For AVC, parse SVC-extension NALs (if available), to extract
the layer-id and make it avialble in buffer-meta.

Bug: 27596987
Change-Id: I84a8914b470a0aadec0e02692296b1915a6c776e
(cherry picked from commit 09c8bb3d3b01d213fb845cd9c24c5e18443d7626)
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
80f78b773f92048944a850efb7b60629643370cd 06-Apr-2016 Praveen Chavan <pchavan@codeaurora.org> MPEG4Writer: Handle writing multiple NAL units in a video sample

Encoder may prepend extension NALs (eg: AVC SVC extension NAL
for temporal layer info) to the VCL NAL.
Look out for non-VCL NALUs preceeding the slice NALs and write
them out separately.
Search for a limited size since such NALs are of small size.

Bug: 27596987
Change-Id: I434c5252098faca99c0ee18e6bc5f43a67718eba
(cherry picked from commit 7941196cf2f21c1a59c5cb2e8b93bbb6f7ff463c)
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
1d92e720753e2890495547629de57000f9677fe2 09-Jun-2016 Lajos Molnar <lajos@google.com> Merge \"stagefright: do not use default bitrates in MPEG4Writer\" into nyc-dev
am: eb6dbc646e

Change-Id: I4d0bab387bc2184dc2d510c1f8bb2e3ff4b8749f
96bdf620189622005e83b4f1421c4f25b7fa1729 09-Jun-2016 Lajos Molnar <lajos@google.com> stagefright: do not use default bitrates in MPEG4Writer

- this fails the muxer tests that verify that all metadata received
from the extractor was muxed properly.
- instead, propagate bitrate to encoder output formats, so muxer
will have this data during normal processing.

Bug: 29208170
Change-Id: If327d472e3607997840a8d601a453dbb7c625c95
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
394040d4377e375477e30496f2ae01dcd9f59eeb 25-May-2016 Lajos Molnar <lajos@google.com> Merge "stagefright: get profile/level from codec-specific-data" into nyc-dev
am: 76016ccf97

* commit '76016ccf97237b131087651db34bdec9e0c81d43':
stagefright: get profile/level from codec-specific-data

Change-Id: I7c8b65a2e5f9c00df80252f6d015f385ae2a0c7a
07b2fbfb40770f3be0f674596f2e51d257c6d2bd 20-May-2016 Lajos Molnar <lajos@google.com> stagefright: get profile/level from codec-specific-data

- also fix HEVC minimum input buffer size in MP4 extractor

Bug: 28671284
Change-Id: I06d06b9fa0da753333092da16203bdd48d562b0f
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
023f2a52fa2efd29c2e4fdddbd1a20a91eb608b2 23-May-2016 Lajos Molnar <lajos@google.com> stagefright: fill in profile/level when reassembling AVCC
am: 47d8891199

* commit '47d8891199f40a3a89c2910e4407f82a125df43b':
stagefright: fill in profile/level when reassembling AVCC

Change-Id: I7f14c4b0c320d76f3d87a2cee8474b9060ac36da
47d8891199f40a3a89c2910e4407f82a125df43b 20-May-2016 Lajos Molnar <lajos@google.com> stagefright: fill in profile/level when reassembling AVCC

Also reuse same findNextNalStartCode code.

Bug: 28671284
Change-Id: I71c8e47a012190ac277eae6d8654579c2b802329
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
013ce69d91e05d50d0f6d54943ccc3ba28fbe5e6 21-May-2016 Lajos Molnar <lajos@google.com> Merge "stagefright: fix issues with bitrate handling" into nyc-dev
am: 2b1a242470

* commit '2b1a242470adb3ef4ba3a63c21f5415581324c4f':
stagefright: fix issues with bitrate handling

Change-Id: Ibe48277a28d6cde7c4cd35383f7fb38e126a3153
46f80165c595d81dda68f8f3fea27f4fb04937dd 20-May-2016 Lajos Molnar <lajos@google.com> stagefright: fix issues with bitrate handling

- parse btrt mp4 box
- write max and avg. bitrates into avcc
- fix the use of "bit-rate" vs. the correct "bitrate"
- document ESDS better
- fix some spacing

Bug: 28671284
Change-Id: I94961a095c6d162af38b7999cc946f899a1b1b09
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
db0d88e55b569962ed535f4449c4217037cc31fd 18-Apr-2016 Marco Nelissen <marcone@google.com> Merge "Fix integer overflow in estimateMoovBoxSize" am: 800f9d7
am: b7d15a8

* commit 'b7d15a83adee4221ba05c3de5147cf051030a095':
Fix integer overflow in estimateMoovBoxSize

Change-Id: I0c29c6abec8cce58f628af7eddffe6351bf67aac
0ca31521644b9396829850f7400d23f9b107cc64 18-Apr-2016 Johan Redestig <johan.redestig@sonymobile.com> Fix integer overflow in estimateMoovBoxSize

On 200GB SD Card the Camera reported an expected max file duration
of 89158000000 us, this later overflowed the calculation in
estimateMoovBoxSize. Move the division in before the multiplication
to avoid the overflow (this gives different result for <1ms duration
limits but this should not be noticeable in the end).

Change-Id: I53e8238745ef86282483b617df5dcbd3562907fc
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
3d53e1c0dd7760f3ca58ff75e74cd7fcf4bc08cc 15-Apr-2016 Wonsik Kim <wonsik@google.com> stagefright: fix typo in HEVC handing at MPEG4Writer

Bug: 28193653
Change-Id: I6181c0b5e9ff00aea373b6b58d8d096024002c3f
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
f85a83af8c6a98b46c394c32b90b09214a68f3e4 31-Mar-2016 Hangyu Kuang <hkuang@google.com> stagefright: Document that MPEG4Writer does not support muxing out of order frames.

Bug:27597166
Change-Id: I6a771a39022d26d70007058b418b96c3b4387d87
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
7c9ea89cbe3e42e0d94b1790ae1d424a9c16ce08 18-Mar-2016 Lajos Molnar <lajos@google.com> MPEG4Writer: allow both input format and stream to specify CSD

There is a race condition now that MediaCodecSource updates its
output format on output format change, so MPEG4Writer must be able
to support subsequent CSD updates before the first frame.

Bug: 27719322
Change-Id: Ic705c3adddf07af471205adf027b6caef098fa4d
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
58fb7c6e1a9244dd7215a647388c440d8d75851b 15-Mar-2016 Lajos Molnar <lajos@google.com> stagefright: use colr box for color aspects

Bug: 25684127
Change-Id: I105294ce0d41ac58d80a2a4a74d35a9b78536790
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
316d08c1f115499fb0ccd82d22592bed7e54aad7 29-Feb-2016 Hangyu Kuang <hkuang@google.com> stagefright: Add warning log in MPEG4Writer.

This will greatly help debug the problem when MPEG4Writer exit silently.

Bug: 26525150
Change-Id: Id1e356277fdbbf009d5020b29117a5472a7e0ae4
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
0332fadec6e91c37fe39ab92b2c02922370bc853 23-Feb-2016 Hangyu Kuang <hkuang@google.com> stagefright: MPEG4Writer stops the source before exiting the thread.

While pushBuffer is waiting for a condition that need to be signaled by the
writer thread, it is possible that the writer thread has already exited due to
error that happend during processing previous buffer. In this case, the muxer
thread will hang over this function.
So the writer thread needs to stop the source from feeding more buffer to it.

Bug: 26928205
Change-Id: Ifd35c29176fb817ed0f718f8f60a03bef6dea7ce
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
9aa87d4ef502c9700a31fe46dc6e1d6f99cf4e5e 07-Dec-2015 Wonsik Kim <wonsik@google.com> stagefright: add HEVC support to MediaRecorder

Bug: 22879917
Change-Id: I6c97b051467de44c506a8ff021321e5953a63fc3
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
b2487f03f12dcafdb801fc0007c8df8412397f44 01-Sep-2015 Marco Nelissen <marcone@google.com> Extractor service

Run extractors in a separate process. Currently all data is copied through a
binder transaction, and WVMExtractor is still run in the mediaserver process.

Change-Id: Ic5dbce87126dd321ad792f4dd540c2ff6b068d13
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
0425327d16974e73ada8674ac3b1268485508adb 18-Sep-2015 Marco Nelissen <marcone@google.com> am 318dd9b8: Merge "Fix integer overflow in time conversion"

* commit '318dd9b80789bdb30a7cf828a7ca18f6422c95c4':
Fix integer overflow in time conversion
ecf509a9211ca168ffa98c5992f3a4f5f32106cf 18-Sep-2015 Marco Nelissen <marcone@google.com> Fix integer overflow in time conversion

Converting unix epoch time to mpeg4 time requires adding over 2B seconds,
which caused an overflow in a calculation involving time_t, which is signed.

Bug: 23574783
Change-Id: I21bacc9f5a422091f3c903fb8cf1c760fc078953
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
2b3b672cf57657640ece98810cb34ae2bfa91e14 18-Sep-2015 Marco Nelissen <marcone@google.com> Fix integer overflow in time conversion

Converting unix epoch time to mpeg4 time requires adding over 2B seconds,
which caused an overflow in a calculation involving time_t, which is signed.

Bug: 23574783
Change-Id: I21bacc9f5a422091f3c903fb8cf1c760fc078953
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
0b305f2d8f328426f5c59b5d5f2707ffefe35a5c 09-Jun-2015 Wei Jia <wjia@google.com> Merge "MPEG4Writer: add check to ensure no integer overflow on allocation." into mnc-dev
2aa74dc097fe860abc84769abf2b6e0962718471 04-Jun-2015 Robert Shih <robertshih@google.com> MPEG4Writer: fail init check if output fd is not seekable

Bug: 12239375
Change-Id: Id1e23b3803f0ed48e4d1ad3ec4b84c4a39325ddd
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
2177f21c1ae5bf5cb8c1113a1adbe1fd7db34206 04-Jun-2015 Wei Jia <wjia@google.com> MPEG4Writer: add check to ensure no integer overflow on allocation.

Bug: 20674584
Change-Id: I77ef1891abf0a20994840a87fa99e55a62f40a70
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
e502b443ce9d229d1e9108834887c6e520948816 16-May-2015 Chong Zhang <chz@google.com> MPEG4Writer: fix unintiialized member variables

bug: 20858729
Change-Id: Iccd62dca311fa66cb52ef53ed703719ddcf92cc8
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
8b07404cfe564885045a63bb592d6b6dc838b408 13-Aug-2014 Praveen Chavan <pchavan@codeaurora.org> stagefright: Validate track formats passed to MPEG4Writer

Validate the mime type for tracks to start with; and throw
an error for unsupported types rather than let apps re-mux/encode
the whole clip and assert towards the end while writing the header.
The writer asserts if provided with an unsupported mime when
authoring the fourcc, which is done at the end of muxing.

Bug: 17007397
Change-Id: Ie80372940a46038db73107101a2ae6fdecf72eaa
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
3b0da19c78f6a61ed343a07f2448b94faafe4c02 18-Apr-2015 Lajos Molnar <lajos@google.com> stagefright: make more warnings errors

Change-Id: I9b1ad60fbfb866dbf9c00843e06553c3eb25c113
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
ee4e1b1a63758941460ae79a064249d3a5189443 17-Apr-2015 Lajos Molnar <lajos@google.com> stagefright: warnings be gone, some are now errors, use clang

Change-Id: I81f438ae444f04c12ae27ae4ef6d073033de172c
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
ffb9710d2c6a323519f499e5900b16cd3cd067bd 16-Apr-2015 Lajos Molnar <lajos@google.com> am 5c16a387: am 382bcd5a: am 6a2dffb1: am 4491a4ab: Merge "libstagefright: free mMoovBoxBuffer"

* commit '5c16a3877c0b32f21cbee7f1bdc77a2a4d2b79c6':
libstagefright: free mMoovBoxBuffer
c08efe00b75f86dfdf92a6c2a996f8099af21e09 16-Apr-2015 Lajos Molnar <lajos@google.com> am f16511ca: am 0a4d22e5: am 9985f6af: am 30d7b488: Merge "MPEG4Writer: Set the correct audio bit rate for camera recorded content"

* commit 'f16511ca737b8bf8a33ce589a28630e98c3aaae5':
MPEG4Writer: Set the correct audio bit rate for camera recorded content
4491a4ab2d6991baa1ce15f24025aa24430d15d1 16-Apr-2015 Lajos Molnar <lajos@google.com> Merge "libstagefright: free mMoovBoxBuffer"
4c845fde3d60ad93984879f69b164e35536e080d 18-Mar-2014 Suresh Choudhary <sureshc@nvidia.com> libstagefright: free mMoovBoxBuffer

Add free(mMoovBoxBuffer) in MPEG4Writer::release()

Change-Id: Ic396e64e9e238bdc23cb0b02b7aa341d879d2237
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
ebada74ec20c6bd46e81d2f4c160ac176c10784d 11-Feb-2014 Daniel Bonnevier <daniel.bonnevier@sonymobile.com> MPEG4Writer: Set the correct audio bit rate for camera recorded content

Remove the hard coded value for bit rate. Use the audio bit rate from
the stream format, if it is specified, otherwise default to 96kpbs.

Change-Id: Ib643c79bbdddaafb3dc703448645606267f7ca4d
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
7c4820d23b68f748b8dfff3d4bb5b13e9d4811a8 24-Feb-2015 Chong Zhang <chz@google.com> MPEG4Writer: add software version to mp4 meta

and account for meta data and geo data when estimating moov size

bug: 19460202

Change-Id: I094d15f47dda5e41217181cdb3ac519c00330de5
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
e76dba7af9589d9ed7b116eec3a74168a8352925 19-Feb-2015 Chong Zhang <chz@google.com> MPEG4Writer: add capture fps in meta data

bug: 19460202

Change-Id: I3a6ea3a5149d124ca9a2487a300dcc2db4405d0f
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
c6ac859f5a82ea8642bc6351a45508a15f224f32 08-Dec-2014 Marco Nelissen <marcone@google.com> Remove filename based writer constructors

MediaPlayerService can't open files (it needs an already opened
file descriptor), so these were just wasting space.

Change-Id: I323044a6c1814a7bff952ed71b5c7792df2abf03
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
dba83c1cb1bef03bc5d1760c2639d06ff71c0fa7 08-Oct-2014 Mark Salyzyn <salyzyn@google.com> libstagefright: compile errors

Change-Id: I752d7d73f9c4939160a1ccaefc44ce1f8ffd9982
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
a5750e0dad9e90f2195ce36f2c4457fa04b2b83e 19-Jun-2014 Mark Salyzyn <salyzyn@google.com> libstagefright: 64-bit compile warnings

Change-Id: I3d1146714fa23be3d4e696599b6f70cac1f9d28b
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
11f15ddbca475b5f6a3d7970b22234e04c595b37 14-Dec-2013 Robert Shih <robertshih@google.com> MPEG4Writer: replace timestamp asserts in threadEntry w err return.

Bug: 12117267
Change-Id: I13630221c1a8f2e70711f2488659b977db3be281
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
a0c0a9ab441fc3cbb302c7a2e783f6d4c3b63bed 14-Feb-2014 Marco Nelissen <marcone@google.com> Merge "Try not to have sample durations vary too much"
85fcbd6aec4eab3368e9266be0a1151a081f204d 13-Feb-2014 Marco Nelissen <marcone@google.com> Try not to have sample durations vary too much

Change-Id: Ibbd0f0a253cc74e241236b7a30d1c931e18af753
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
dc3b8b5ae07a6d7f42822b6215f4090b0ed185d2 12-Feb-2014 Rachad <rachad@google.com> Merge "Increased recorded MP4 max file size to 4GB (more precisely 2^32-1 bytes -- FAT32 max file size)"
84333e0475bc911adc16417f4ca327c975cf6c36 08-Feb-2014 Andreas Huber <andih@google.com> warnings be gone.

Change-Id: Ie3bae3f037730e316d7fca12e7a3527973f752ef
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
1d6fa7af1288b550faabe4ec2cf98684236723db 11-Feb-2014 Narayan Kamath <narayan@google.com> resolved conflicts for merge of 566be7c3 to master

Change-Id: I7b1cc71057b2bd4f771e7bcf508a8c3abd6017ce
377b2ec9a2885f9b6405b07ba900a9e3f4349c38 03-Feb-2014 Kévin PETIT <kevin.petit@arm.com> Make frameworks/av 64-bit compatible

Contains the necessary changes to make frameworks/av build and work
on a 64-bit machine.

Signed-off-by: Craig Barber <craig.barber@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>

Change-Id: I725feaae50ed8eee25ca2c947cf15aee1f395c43
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
1f1f2b1678fd0d038dfc501252dd2b65ecf10cae 11-Feb-2014 Rachad <rachad@google.com> Increased recorded MP4 max file size to 4GB
(more precisely 2^32-1 bytes -- FAT32 max file size)

bug: 11039801
Change-Id: I6169f798c59d123d02d5fd7afa3b9e645ebdb598
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
72cecca17d735db6532c45f0a7e10c47ee6f065a 26-Dec-2013 Chong Zhang <chz@google.com> Change StagefrightRecorder to use MediaCodec

Bug: 12305192
Change-Id: I72d7cb571be5bd348b58ad650f3269d24c15d350
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
8284de3be2ac07d8774b15e6565df5aba084db04 30-Jan-2014 Robert Shih <robertshih@google.com> MPEG4Writer: use "mp42" as major/minor brand in ftyp box.

Bug: 12783430
Change-Id: I7c8029de1db21fcac0ce3e4505661189535c45f1
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
e756d9753c7cffe2e9731a31fa98a3e8f37151c9 12-Apr-2013 ztenghui <ztenghui@google.com> MediaMuxer prefer not to use the MPEG4Writer in real time recording mode.

By default, MPEG4Write will keep running in real time recording mode.

bug:8598944

Change-Id: Idf7fbd4e0feb7763660a74279ba8817b79098aaf
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
de05c8eab188e98798f2b9c3dfac53dbc18ef584 12-Apr-2013 ztenghui <ztenghui@google.com> MediaMuxer prefer not to use the MPEG4Writer in real time recording mode.

By default, MPEG4Write will keep running in real time recording mode.

bug:8598944

Change-Id: Idf7fbd4e0feb7763660a74279ba8817b79098aaf
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
5883d53cf8300d8b13a1a6ef3310d72a55e191c0 12-Mar-2013 James Dong <jdong@google.com> Make limitations of MPEG4Writer explicit

o No more than 2 tracks will be supported
o No more than one video and/or one audio tracks will be supported
o Only take video and/or audio track (for instance, no text tracks)
o If there is no track before start() is called, bail out.

At the same time, make sure the errors from addSource() report to
addTrack(), not to start().

Bug: 7991013

Change-Id: I1ca35aaeb75b5448d75ed2c6c10dd12ecea720ab
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
acc47642e0f5d962f6289e6ba687fabf68f8312b 12-Mar-2013 James Dong <jdong@google.com> Make limitations of MPEG4Writer explicit

o No more than 2 tracks will be supported
o No more than one video and/or one audio tracks will be supported
o Only take video and/or audio track (for instance, no text tracks)
o If there is no track before start() is called, bail out.

At the same time, make sure the errors from addSource() report to
addTrack(), not to start().

Bug: 7991013

Change-Id: I1ca35aaeb75b5448d75ed2c6c10dd12ecea720ab
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
aebd9bbed761d99b20bb1871ed170021fb3c68ad 27-Feb-2013 Andreas Huber <andih@google.com> am 801726ef: Merge "MPEG4Writer: Write a zero-length compressor string"

* commit '801726efb2dcc6ea19e9f55c7c43fe41f0c6643e':
MPEG4Writer: Write a zero-length compressor string
68189471332964a65f0d1f47cda7724c562c566d 27-Feb-2013 Andreas Huber <andih@google.com> am 801726ef: Merge "MPEG4Writer: Write a zero-length compressor string"

* commit '801726efb2dcc6ea19e9f55c7c43fe41f0c6643e':
MPEG4Writer: Write a zero-length compressor string
89b28bfea641983a908b45a15e69a6c62add847a 30-Jan-2013 Martin Storsjo <martin@martin.st> MPEG4Writer: Write a zero-length compressor string

The first byte is the number of bytes in the string to display,
the rest is the actual string (see ISO/IEC 14496-12:2008 page 29,
compressorname in VisualSampleEntry) to display. Currently, all 31
space characters are displayed in certain players (such as Apple
QuickTime Player) instead of the plain codec name (e.g. "H.264").
By writing the string length properly, the actual content of the
remaining 31 bytes is ignored instead of displayed.

Change-Id: I7f93a8966d74a4e86abc46c3dcb70f71780d9cd6
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
c30a88a273b47bef6728ae1dddea11641090939a 30-Jan-2013 Martin Storsjo <martin@martin.st> MPEG4Writer: Write a zero-length compressor string

The first byte is the number of bytes in the string to display,
the rest is the actual string (see ISO/IEC 14496-12:2008 page 29,
compressorname in VisualSampleEntry) to display. Currently, all 31
space characters are displayed in certain players (such as Apple
QuickTime Player) instead of the plain codec name (e.g. "H.264").
By writing the string length properly, the actual content of the
remaining 31 bytes is ignored instead of displayed.

Change-Id: I7f93a8966d74a4e86abc46c3dcb70f71780d9cd6
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
b69d77ca8ef84bcdf75734326bb0ab64f7bb10d1 14-Dec-2012 James Dong <jdong@google.com> Fix memory leakage from MPEG4Writer.

o The in-memory cache, mMoovBoxBuffer, holding the content for Moov box may not be freed.
o Added comment describing how the in-memory cache works
o Moved the memory release to a single place to make the code more robust
o Avoided allocating the in-memory cache if the file is not intended to be streamable

o related-to-bug: 7664029

Change-Id: If04fc6b12daeaaa86710dfb4b4b9c175da6421df
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
7b670d4a0a4fa560f536f132e0a3fc7247f6724c 14-Dec-2012 James Dong <jdong@google.com> Fix memory leakage from MPEG4Writer.

o The in-memory cache, mMoovBoxBuffer, holding the content for Moov box may not be freed.
o Added comment describing how the in-memory cache works
o Moved the memory release to a single place to make the code more robust
o Avoided allocating the in-memory cache if the file is not intended to be streamable

o related-to-bug: 7664029

Change-Id: If04fc6b12daeaaa86710dfb4b4b9c175da6421df
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
480421bb48af5df4f15498845447f3fde20a4069 26-Oct-2012 Glenn Kasten <gkasten@google.com> Turn off executable bit on ordinary files

Change-Id: I0abea25b58fb1d03975bed9cca40f826fcd4c5e4
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
ad4e408b8ea397caadbfee85e1e39515e7e08104 26-Oct-2012 Glenn Kasten <gkasten@google.com> Turn off executable bit on ordinary files

Change-Id: I0abea25b58fb1d03975bed9cca40f826fcd4c5e4
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
e983aa4ff4d80af7702888e230b9aaa93a7b7e57 08-Aug-2012 Jean-Baptiste Queru <jbq@google.com> am 51af4af2: am e28df5b9: Merge "Store correct time stamps in recorded mp4 files"

* commit '51af4af2414cdaaf0185b971a41fc0b4f8c0b7e4':
Store correct time stamps in recorded mp4 files
219f195159f93d627af2b243732e3f9020511a46 08-Aug-2012 James Dong <jdong@google.com> Make sure that the trackId starts from 1

o this patch avoids sending incorrect track events to applications because
track events contain the trackId

Change-Id: I1cf054da8ab413d31a5b7fe8ed729486d1475c46
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
25f0d7ba1987de61c75f8c68b19de48e0ad9736c 31-Jul-2012 James Dong <jdong@google.com> Should really compare the pos to the total number of values in get() and set() methods in ListTableEntries class

o related-to-bug: 6435176

Change-Id: Ib6f6e598304e7c9becfa6cb3fc925c55b2df2682
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
c620cbd7f8dc75f6819e2b862d3c09970560bc63 28-Jul-2012 James Dong <jdong@google.com> Refactoring how the box table entries are stored in MPEG4Writer

o Helps drastically reduce the time writing all the box table entries for long duration video recording sessions.
Experiments showed that the time is reduced from multiple seconds to less than one second for around 2.5 hours of video recording.

Change-Id: I6a696823e2938b76fcf2c73605f51bf5e5c2d749

related-to-bug: 6435176
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
efcdf187baab9ec29e12adcf85e63fe3e6d5aa4d 08-Mar-2012 Johannes Carlsson <johannes.carlsson.x@sonymobile.com> Store correct time stamps in recorded mp4 files

According to the specification (ISO_IEC_14496-12_2008 page 17, 19 and
21) the time is "in seconds since midnight, Jan. 1, 1904, in UTC time"
which is not the same as Unix epoch time. This is already correctly
handled in MPEG4Extractor.cpp when reading files.

The specification also supports 64 bit timestamps which would make
it a bit more future proof, but unfortunately it seems like support
for this in players are poor (tested both Windows media player and
Quicktime player).

Change-Id: I102d728f098b8b0a21013956f017b0c4f2d69112
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
13210f3346462a86ce9fe3af72a0c200dba84e27 20-Jul-2012 James Dong <jdong@google.com> Added number of encoded frames and duration to the MPEG4Writer::Track::dump

o also removed unused varialble mMaxTimeStampUs

Change-Id: I61a47e1ec8ee96a25df668637c4d4661188a1a8c
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
77e8ae9967a078770416619e99ddb5b010def312 18-Jul-2012 James Dong <jdong@google.com> When a request max file size is relatively small, don't store moov header at the
beginning of a recorded mp4 file.

Trying to put the 'moov' box at the beginning of an mp4 file requires to reserve
some estimated space for 'moov'. The estimate can be larger or smaller than the
actual 'moov' size. When the estimate is larger, we could meet the file
size limit, although some space is wasted; but when the estimate is smaller than
the actual 'moov' size, we not only waste the reserved space but also have to
use extra space to write 'moov' space at the end of the file. In this case, often
the requested file size limit could be exceeded by a large margin.

This patch avoids putting the 'moov' box at the beginning when a file size limit
is explicitly requested.

Change-Id: I838443d08b5589f33f3c486c662195600e3edb9b
related-to-bug: 6697505
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
af8e8aa1ada2948972555592570ec9ad90cbf372 26-Jun-2012 Nick Kralevich <nnk@google.com> Add mode when open(O_CREAT) is used.

When creating a new file using open(..., O_CREAT), it is an error
to fail to specify a creation mode. If a mode is not specified, a
random stack provided value is used as the "mode".

This will become a compile error in a future Android change.

Change-Id: I36a3d67d294a915c1f79632a1b0ba45edd1214b1
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
49fcd3cc0c0bf352c5c0516e53805278e94951ca 25-May-2012 James Dong <jdong@google.com> Fix an error caused by sample size value by order

The sample size was saved in the array in network order, but it was treated as host order when
writeInt32() is called. Calling write(void *, int, int) resolves the issue.

related-to-bug: 6555366

Change-Id: If7ef99911ad65108c61b533673ac4d4cd580a370
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
8c460498c028888c533ab442be12b6d4b669b965 15-May-2012 James Dong <jdong@google.com> Speed up stsz box write in MPEG4Writer

With this patch, the write time for 30+ minutes recording session is reduced from 10+ seconds down to around 2-3 seconds.

related-to-bug: 6435176

Change-Id: I83b705cea42d8de798e7032c770c5c7b033e267e
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
43089daaf82bd2b8e5f9a29b80af5abaae4657b3 09-Feb-2012 James Dong <jdong@google.com> Finish up B frame support in MPEG4Writer

o optimize to reduce the size of the size of the ctts box
o change the type for the time offset field in ctts table entry from int32_t to uint32_t according to the mp4 file spec
o also moved away from MediaDebug and used ADebug instead.

o related-to-bug: 4232183

Change-Id: I19364303728da64359c63169eec7487508c1d0f8
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
000e18370baae60ffd9f25b509501dd8c26deabf 07-Feb-2012 James Dong <jdong@google.com> Enable B frame support in MPEG4Writer

This patch allows us to automatically detect whether ctts box is needed in MPEG4Writer.
MPEG4Writer uses ctts version 0 (non-negative offset value) store the composition time
offset on a needed basis.

Currently, the size of the ctts box is not optimized. Optimization will be addressed
in a subsequent patch.

o also changed the private method retrieveDecodingTime(bool) in OMXCodec
to getDecodingTime()

o related-to-bug: 4232183

Change-Id: Ic6dc7b25ecd258c2506ca4b9c25156e922456e51
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
8bcc65c753085fe3328592cceda0cf0e8f8b0a45 03-Feb-2012 James Dong <jdong@google.com> Don't call virtual functions in destructors for the writer classes

Have not found any concrete bugs related to these calls yet, but we should avoid
calling virtual functions in destructors, regardless.

Change-Id: I2d47b79d3fb2d29f418619bee83aa147d232a5d4
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
29357bc2c0dd7c43ad3bd0c8e3efa4e6fd9bfd47 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
5ff1dd576bb93c45b44088a51544a18fc43ebf58 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
df64d15042bbd5e0e4933ac49bf3c177dd94752c 04-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156801

Bug: 5449033
Change-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
b8a805261bf0282e992d3608035e47d05a898710 20-Dec-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
3856b090cd04ba5dd4a59a12430ed724d5995909 20-Oct-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/143865

Bug: 5449033
Change-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
5410afcbb0af5d29d9f710a1c2978c500f9792dc 27-Aug-2011 Pannag Sanketi <psanketi@google.com> Fixing small syntax error in MPEG4 logging

Found that the build was breaking when the logging was enabled in
MPEG4Writer. Fixed.

Change-Id: I62c5e6d16b2ecf5644c8d46b9bbcca68a797b223
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
5a217fba010e801c255503602bda4b86ac5a6ac9 09-Aug-2011 James Dong <jdong@google.com> Fix initial 0 duration video sample in the recorded videos

o Patch suggested by pmehendale@nvidia.com

Change-Id: Ibf516ba83b721b0d0ab55bb7637fe9b7b2958214
related-to-bug: 5117434
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
1374eddc4455b26d1dffdca10fc70534b3f08c1d 12-Jul-2011 Dandawate Saket <dsaket@ti.com> Add support for TI H264 encoder

Add support for TI H264 encoder and quirks for buffer allocation.
Temporary switching to baseline profile till ctts patch is defaulted
as per profile detection.

Change-Id: I1d56184b9c5d5f00d6c63aef7e058f3d56b84cef
Signed-off-by: Dandawate Saket <dsaket@ti.com>
Signed-off-by: Iliyan Malchev <malchev@google.com>
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
411ba422e3635d534928ffd81abf54f4f291c739 09-Jul-2011 James Dong <jdong@google.com> Do not wait for unlaunched threads in stop()

Change-Id: If681749753bb96ee98c1539658cfd919eeb0cb65
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
45c254c0c535e1d62f23d14cab7385d536c1e2bf 22-Jun-2011 James Dong <jdong@google.com> Add some error log messages to indicate the failure of a recording session

Change-Id: I8c5885200bcf6a59736076efc021f07f45a0fdac
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
f2ab12d0dcef27fd52dcae53221e9c51a369fef6 04-Jun-2011 James Dong <jdong@google.com> Timestamp adjustment will not work well if we ask video encoder to produce B frames

Change-Id: Ic6a2235fefb6f15081091e1f2c1b12ee92fba5e0
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
e6ebb09642944b1d0cc06a788308e9b843dee595 20-Jun-2011 Glenn Kasten <gkasten@google.com> Merge "Remove unneeded #include <sys/resource.h>"
05e65807d48c2c7b954af82eda0532a48948e96a 18-Jun-2011 James Dong <jdong@google.com> Use system property to control whether we will enable B frame support in MPEG4Writer

o This is to work around a bug in crespo's video encoder output timestamp

related-to-bug: 4600191,4724339

Change-Id: I485c1e044bd2f604b318692efd6433345cfc6487
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
b8e9897b8ad5d722e424d7a7e256153307ecbd93 15-Jun-2011 Glenn Kasten <gkasten@google.com> Remove unneeded #include <sys/resource.h>

Suggested in code review for previous change.

Change-Id: Ic3225b240367dc6c9bf56fb4498fb8a0f9f806ec
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
7b92cb6aecba28927ed5d66ec1ba0a9f496477f0 15-Jun-2011 Glenn Kasten <gkasten@google.com> Merge "Bug 4608375"
86106f8b0641444c97a39e9788eeef55ab2a2ac6 14-Jun-2011 Glenn Kasten <gkasten@google.com> Bug 4608375

Update priority and policy together for audio threads

Change-Id: Ib3b07b32586c222c4aacbf23414ae8b05db502be
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
965e4239ca1cf6c824c1f8ce23116f9ba8cf6ebd 08-Jun-2011 James Dong <jdong@google.com> Add B frame support for MPEG4Writer

o requires the support of negative ctts duration values (ctts version 1)

Change-Id: Ib14130c9359c3bff3c76f20a7380d468a065dcaf
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
79761ab096f57c3027fad9556c2bc436672d614e 07-Jun-2011 James Dong <jdong@google.com> Avoid duplicated code calculating the stts sample duration

o This also speeds up the MediaRecorder.stop() call.
o Also fix incorrect start time compensation in stts box

Change-Id: I6392b8b980e0f786ddeeec0fe2c341de67208c6f
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
e9f6d0579603372fd2547e6c5ba6e114c6f8cba7 10-Jun-2011 James Dong <jdong@google.com> Fix an issue in MPEG4Writer where the write of outstanding chunks in the last batch was missing

Change-Id: I93c9f6ae7ed098cdf828b2b11a9273c9e0c244e3
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
432ec3768cc4a3b1b01afedc456689d75c89ee2b 04-Jun-2011 James Dong <jdong@google.com> Fix the comment for the location box @xyz

Change-Id: I5347e346eef40a8ba90e7a3fa786b4654d18606b
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
2cf9c5073ca3342ee52673ad68763fadd2c2be79 18-May-2011 James Dong <jdong@google.com> Revert "Add const to the finders method in MetaData.cpp"

This reverts commit 78fed171d9d62b25aa846d7373a7040e3fd2241e.

Conflicts:

include/media/stagefright/MPEG4Writer.h

Change-Id: Ie6f497f67a473ad95b50bb949c1aa49e1804bac3
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
07ec01904613a0bac32caaa8444b4690998faed7 14-May-2011 James Dong <jdong@google.com> Make track informational event optional, depending on system property

o also add a track informational event to return the encoded data in kilo-bytes

Change-Id: I7c383360d57048c8a3606d0b8141ba53e4f4b224
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
86b7f47aa7482424cf8fd248f1315311919be3b0 10-May-2011 James Dong <jdong@google.com> Support platform and camera dependent recording start time offset

related-to-bug: 4390777

Change-Id: Icb52973ad4ac716f04fb103ef527915a966d06d5
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
07b1bb529a1ae76c46a71b01338c166f9490629d 12-May-2011 James Dong <jdong@google.com> Support for storing geo information in the recorded mp4/3gpp file.

o Geo data (latitude and longitude) is stored in udta box

Change-Id: I76e4aeb741c4b339f3753d3d28190151f3ea4919
related-to-bug: 4260295
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
b5212db69734962f55e1493d3e696794172ced51 13-May-2011 James Dong <jdong@google.com> Track id really starts with 1, not 0

Change-Id: I55dcfdc2dc2a64285dfa93024f7b885210cc827e
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
70ccfd44c4bfe95ddecc2df6c3695efc48229d72 06-May-2011 James Dong <jdong@google.com> Add send session recording summary report to application

Change-Id: I9c63ddae432f0c93486c39776ed0a058a8649602
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
4650ff0e86f9e815e3152a806a06c700418d071d 09-May-2011 James Dong <jdong@google.com> Add const to the finders method in MetaData.cpp

o also fixed the MPEG4Writer writeFtypBox() to take a const pointer to MetaData

Change-Id: Iaecdbe6aeab345f6dc72aac0d19f9704b6e0d28a
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
43ec1dfc5dc3934680a52a026c5519ddc51bdbd3 06-May-2011 James Dong <jdong@google.com> Add end of recording summary track info

Change-Id: I2fcf589e70db225776ef7c8d0f28505ceb824c45
related-to-bug: 1854633
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
b21c564ce47041f9dd3ab65e36fed57c4937a42d 07-May-2011 James Dong <jdong@google.com> Refactor MPEG4Writer::writeTrackHeader() method

o most of the mp4 file boxes has its own method now
TODO: remove some of the duplicated code for esds box, for instance.

Change-Id: Iae3dbb2410b79bc79aaee081b80569d339993c47
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
03f6f4e7e2ce09357cbc05bb546cd8a6e54b5bae 21-Mar-2011 James Dong <jdong@google.com> Add read and write option in opening file for output in the writers

Change-Id: Ibfba0aacd3c8587c04a2e903b636de337cc30104
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
bc07bcc65e91c7aea9713631ae67760dcf1b0286 18-Mar-2011 James Dong <jdong@google.com> Better organize media recorder error and information event and types

Change-Id: I45f1f953596985494725525c1fabf57eccc19175
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
a472613aec322e25891abf5c77bf3f7e3c244920 16-Feb-2011 James Dong <jdong@google.com> A/V synchronization at the beginning of a recording session

o do not use edts/elst boxes since these optional boxes are ignored
o manipulate the first video/audio frame duration to make sure that the rest
of the audio/video is in sync (ideally, we should only manipulate
the vidoe frame duration, not the audio)
o reduce the initial audio mute/suppression period, which is used to
eliminate the "recording" sound.

bug - 3405882 and 3362703

Change-Id: Ib0acfb4f3843b365157288951dc122b006299c18
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
fcac8fa9421f442f024018628a6042d7a14fbfb0 09-Feb-2011 James Dong <jdong@google.com> Reduce blocking time in file write

bug - 3418787

Change-Id: I4723662bf46ed07271be8468f84ae5d93cb793fa
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
eaae38445a340c4857c1c5569475879a728e63b7 25-Jan-2011 James Dong <jdong@google.com> Report errors to applications if AudioRecord->start() fails

bug - 3385198

Change-Id: I86ac8071eb28a538b333e102192193d1b9eda5eb
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
65b3d76025c71d755b0fb3b6ead90255f25417ed 19-Jan-2011 James Dong <jdong@google.com> Logging the duration range from different media tracks for recording

Change-Id: I8c3edcf97ce35301f8645e4a1e232d9bfc2c0349
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
985f838934510983d8a887461e98dca60a6e858f 07-Dec-2010 James Dong <jdong@google.com> Yield the omx threads so that file writer threads have a chance to retrieve the output buffers once they become ready

bug - 3252228

Change-Id: Iab7cf1c9a87cce7b814c63b42b21fcd6a7314b36
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
f6882a9c8144dc0fd07f3434bb870e5251f51275 02-Dec-2010 James Dong <jdong@google.com> am 80639875: am d4c5478a: Merge "Be conservative in estimating the file size limit." into gingerbread

* commit '806398755fdc63438b607856574e5b885ad98e6b':
Be conservative in estimating the file size limit.
acd234bba9f048971d66890009eeff9a8db94be3 01-Dec-2010 James Dong <jdong@google.com> Be conservative in estimating the file size limit.

bug - 3045580

Change-Id: Ifdffa354b9433639c3f246a0eb581ef14af1e797
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
674ebd0b4e1143e38392a4e3bb38b4679a4577bc 19-Nov-2010 James Dong <jdong@google.com> Removed uncessary FILE structure pointer for I/O

o also move the fd owner from caller to callee in the Writers

Change-Id: I510ccfdd0fcc58f1777fea4ed1349fd251852c65
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
c7fc37a3dab9bd1f96713649f351b5990e6316ff 16-Nov-2010 James Dong <jdong@google.com> 64-bit file size/offset support for media framework

Change-Id: I3452bc2c0f1d990cc67285df2fce1f9f86ff8e10
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
13f6284305e4b27395a23db7882d670bdb1bcae1 09-Nov-2010 James Dong <jdong@google.com> Rotation support

- We only support 0, 90, 180, and 270 degree clockwise rotation

- Some players are known to ignore composition matrix in the MP4 file,
although this is part of the MP4 file standard.
Both QT and YT are supporting the rotation

The original patch (65a73f4e8c79d05c0d9001b660325748d4ecf37b) was not merged.
The only change I made is to reuse the same kKeyRotation in MetaData.h;
and thus do not neeed to use kKeyRotationDegree.

Change-Id: Ib328716d4842201c4adf57e4ddfe1f1ac1ae4d8a
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
aca1fe35480ae76dd6bae167ade40adc955e2d0d 17-Aug-2010 James Dong <jdong@google.com> Rotation support

- We only support 0, 90, 180, and 270 degree clockwise rotation

- Some players are known to ignore composition matrix in the MP4 file,
although this is part of the MP4 file standard.
Both QT and YT are supporting the rotation

Change-Id: I1b7f66a801e9d9c49d889c9b06dd6173fa7e76c4
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
cb09c03450bb09304ad5afd2d223254bf2e6e38c 30-Oct-2010 James Dong <jdong@google.com> Added some debugging log messages at stop()

There are so many cases where the codecs just could not stopped ...

Change-Id: If9ff261fcd4726c2ee21ec7c9336ca9c2917d399
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
7f6ff8eb6eed438590e24f0b536c65110976bcfb 22-Oct-2010 James Dong <jdong@google.com> am 6123e0f7: am 1bd8a8c8: Merge "Turn the media time adjustment in file writer back on" into gingerbread

Merge commit '6123e0f7c91ffc7534da99b4668879dacf662227'

* commit '6123e0f7c91ffc7534da99b4668879dacf662227':
Turn the media time adjustment in file writer back on
5b6a01e65aa4129a9226667536d1bc1dad5980d8 22-Oct-2010 James Dong <jdong@google.com> Turn the media time adjustment in file writer back on

o This was turned off to unblock the tests on some device
o The adjustment duration is increased to suppress fluctuations observed on some device

bug - 3058745

Change-Id: Iaeeb1c1c52783f5c679305645c995e57b4b2a573
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
cf5e77c0676f6af1685de30ad902fe94e476907f 21-Oct-2010 James Dong <jdong@google.com> am 8ad6335d: am fa7a87fb: Merge "File writer size estimation improvement" into gingerbread

Merge commit '8ad6335d2c22900de5b46460473495b5bcea9f99'

* commit '8ad6335d2c22900de5b46460473495b5bcea9f99':
File writer size estimation improvement
5f995b0e72ed6f186cb0ab2a525c4cfce614f3a9 20-Oct-2010 Andreas Huber <andih@google.com> Make sure we can encode the size of the codec specific data in a single byte.

Change-Id: If7680cbfb380180c8dd6d6019b9c6c67661e468d
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
78a1a286f736888ae7af8860b2c424af0d978848 20-Oct-2010 James Dong <jdong@google.com> File writer size estimation improvement

o Do not count the reserved space for moov if the meta data size is small
o Do not count the extra 1KB disturbing small file estimation.
o Reduce the default minimum reserved space from 4 KB to 3 KB.
o Estimate the moov size based on both duration AND file size limit is set
and set it to the smaller estimated value.

low risk change

bug - 3111983

Change-Id: I6ac2adb979d8cc12d6b4f1813d000c989add0199
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
a6f61fc8e3d06373c17f0a38ff600e2b71c414fa 08-Oct-2010 James Dong <jdong@google.com> Name the writer threads

Change-Id: I51461c3800ac5850e21ff398e80eb20b562264b3
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
a007e8229fb2be4866c483f9cd6c4af238a2da5e 05-Oct-2010 James Dong <jdong@google.com> Fixed an issue where the reserved free space in the file writer was larger than intended

The problem was that even though user does not explicitly request the max file size
limit via MediaRecorder.setMaxFileSize(), the file writer sets an implicit file
size limit if 32-bit file offset is used on user's behalf. The reserved free space
is estimated based on the file size, if the file size limit is set by the user.

The fix is to add an extra bool to tell the difference between an
explit requested file size and an implicit file limit and use that
to set the estimated moov box size accordingly.

Change-Id: I731aca6c7833aa764ed7b905edb77721577471b3
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
872a481558350634a3fd5cb67939de288af00ecb 03-Oct-2010 James Dong <jdong@google.com> Resilent media time stamp adjustment

Change-Id: I13ab87c05f26bb11a3cc9bf8559f98e6ea0752db
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
d0ea545d8357e7d86ad5f19cb2c6499c91786473 02-Oct-2010 James Dong <jdong@google.com> Turn off media time adjustment by default

Change-Id: I1f8021d605d0fd896e0639607a84e3f7c459612e
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
8428af5381e835cc783b7ecb0d71cb60961c99c2 24-Sep-2010 James Dong <jdong@google.com> Fix track duration calculation if the start timestamp is non-zero

o Updated the comments in the patch
o Added some additional checks on the timestamp

Change-Id: I8ad81eb6bfe358c1db5245cbb52efc905cdc234c
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
95fcef25b48e35b625899288971ab628efbf8584 23-Sep-2010 Andreas Huber <andih@google.com> Depending on our preference to write 2-byte or 4-byte NALs, patch the codec specific data 'avcC' accordingly.

Change-Id: I1423923fafbcac6911218277e2bbfa068e49dcc6
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
a1abc1a76741914c7bc43f1df9e32744f023ab75 14-Sep-2010 James Dong <jdong@google.com> Add some explicit error log messages

Change-Id: I8a69157b75a67f0d3c19f05775a8cb0629232299
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
d2518e0c0a5bffd30b0dccb04fe7bf5b77c354b1 09-Sep-2010 James Dong <jdong@google.com> When 32-bit offset is used,
if the requested max file size is greater than the 32-bit offset limit,
set the limit to the max 32-bit offset limit.

Change-Id: Ie74cbed98469721d4280a0b87491e888948f0046
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
b4d5320bda29cd9694461c9b61d0211f801ff0af 02-Sep-2010 James Dong <jdong@google.com> Remove unused/debugging code from MP4 file writer

o also makes nal length in the recorded file modifiable at runtime

Change-Id: I731b4dde7070d8d9628b36b523a5b2c011c7c2cf
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
1f90c4b3fda9dbd2824d67fd679f850572f114dc 02-Sep-2010 James Dong <jdong@google.com> Better file size estimate

When the recorded file becomes large, the metadata size can
no longer be ignored. This makes it possible to save the
recorded file when the storage becomes almost full at the
end of the recording session.

Change-Id: Ief038080f825c9946ce550949c03e914aec1e31a
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
d707fcb3e29707ca4a5935c294ef0b38eb5aba5f 02-Sep-2010 James Dong <jdong@google.com> Calculate audio media drift time from AudioSource

The problem was that the time to receive an output buffer
from an audio encoder is different because the encoder does not
need to read from the source for all output buffers. This leads
to large fluctuation in terms of wall clock duration between two
neighboring audio sample outputs from the audio encoder. As a
result, the media time for the video track after adjustment using
the drifting changes wildly sometimes.

This patch addresses this issue by only updating the media drift
time when an audio source input buffer is read. the wall clock
for the audio track is also calculated at the same time when
the input audio buffer is read at AudioSource.

bug - 2959800

Change-Id: I3174aa182f744784b540f0a7198524d4eee8bd7b
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
40e9940fadf22daa64c1e766fa8a855c7b149c17 24-Aug-2010 James Dong <jdong@google.com> Make sure that timestamp does not go backward in MP4 file writer

Change-Id: I90745b9df7f19d61f3ab826bf9d2419fe788554e
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
dedf414d3fe2e79ee0aad0f1c82ca16ebd886ff6 18-Aug-2010 James Dong <jdong@google.com> Runtime dump support for MediaWriter

Change-Id: I10b2c474de612ee4cef4b7c9eae2ee1dd8c2e895
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
4f86a980fee1880dca61b828599fa6d76755a485 19-Aug-2010 James Dong <jdong@google.com> Don't drop a late frame which may lead to missing I frames in the MP4 file

Change-Id: I8fef1454264230c1369561670236eb0a19ae4e76
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
690f546b0ee548dbfe997df36418e5302ec2d786 19-Aug-2010 James Dong <jdong@google.com> Return error from MPEG4Writer stop() if the check on codec specific data failed

Change-Id: Icbd08eec9b4201facbad56ff2040f0830cfb0115
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
37187916a486504acaf83bea30147eb5fbf46ae5 19-Aug-2010 James Dong <jdong@google.com> Make MediaWriter stop and pause return errors if necessary

o Make the API consistent with SF framework, which the MediaSource
provides a return status for stop

o Also, helps to convey errors that occurred right when a
premature stop() is called, leading to a potentially
mal-formed output file.

Change-Id: I52a932345f38570fdf8ea04d67d73dd94ccd30ef
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
c059860c73678a202bfa33062723e8f82fb779d9 13-Aug-2010 James Dong <jdong@google.com> Change the default time scale for audio/video track during recording
and reduce rounding errors in calculating the sample duration

- Default time scale for tracks other than audio is set to 90000.
- Audio track by default uses the audio sampling rate as the time scale.
- Default movie time scale remains to be 1000.
- The default time scale values will be overwritten by a user-supplied value if exits.

Change-Id: I81b40ed0626ea45e9fd24a89e21a2c5a4a2c3415
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
e259531ce59ab1f31de5a23124b22536f6a5a767 03-Aug-2010 James Dong <jdong@google.com> Use audio clock as the reference media clock

o Only do this for realtime applications
o Adjust other track clock based on audio clock
o Assume other track uses wall clock as the media clock
o Use some heuristics to reduce the size of stts box by 2/3.

- also
o Remove one unused key from MetaData.h

Change-Id: Ib9432842627b61795b533508158c25258a527332
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
a37923e9a57d489e7bed2129369219039fa5f12c 12-Aug-2010 James Dong <jdong@google.com> Fix a crash due to unnecessary check on the codec config data for H263 video track

Change-Id: I00e8b65d25731153e4d9be6a443eeed91c8fb605
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
51dfe6d646ddcc5fc252aa4c19c9936d32af8ad7 08-Aug-2010 James Dong <jdong@google.com> Only check the codec specific data when the output buffer contains kKeyIsCodecConfig in MP4 writer

o Assume there is only a single output buffer containing such information.
This simplifies the logic in MP4 file writer

o Output SPS and PPS in the very first buffer for software AVC encoder
This is to make AVC encoder work with the MP4 file writer

o Add timestamp value for codec config data

Change-Id: Iad27a04579e6028332429cd0bebd30976041e997
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
3266b2c04867f687e1e1b7b86088d6eb83077fd0 06-Aug-2010 James Dong <jdong@google.com> Support multiple PPS and SPS in avcC box

- Also
o do not use the hard-coded profile and levels.
Instead, we are using the profile and level found in the codec config data
o we are not supporting FRExt profile and levels for now, which requires
additional seq parameter set extension for instance.

Change-Id: If695b4c996d073d8e48aa45fdd7001e9f016f375
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
c5f0c714dc4225cd2ec305d5ddd297964a3dd3dc 05-Aug-2010 James Dong <jdong@google.com> Fix an issue where the track duration does not include the last sample duration

Change-Id: Ib6e01c1c84ad9b7404536f9c40bf90a13340ae53
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
1c9747a4653aec1395c2bd6896c9b87cb5447837 31-Jul-2010 James Dong <jdong@google.com> File writer has a designated writer thread now

+ This reduces the file I/O block time for audio/video track processing
- Since the file writer is buffering some output samples, the memory
usage would go up, depending on how many output samples are buffered.

Change-Id: I780cc5b26f4b53a5efbd643fcf9505dfc19cd4cd
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
5aff464f67322cd13dc8ed165806971cfff2e4d5 30-Jul-2010 James Dong <jdong@google.com> Added damr box for AMR (NB and WB) sample entry

- Some players, like QT, sometimes are picky about the missing sample entry

Change-Id: Ia32d78e48ac9fd8af8285dbc67f0d69142ba98b4
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
ff4a7fa411401910e6e5ac88aeb6e0080a8cc8b1 28-Jul-2010 James Dong <jdong@google.com> Eliminate the linear cost associated with mSampleSizes.size()

- The linear cost associated with mSampleSizes.size() call causes the
CPU load to increase overtime as more and more audio/video samples
are recorded.

- Other Lists used in the MP4 file writer may have similar issues, but
the size() call is not made for each output audio/video output sample,
or the size of the list is bounded (not linear to the total number
of audio/video output samples). As for now, we can live with the small
cost (tested with 30 minutes long recording).

Change-Id: I23bd93ea4256cb0be0c1649760e39e6809eb4946
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
8644c14618d30d9e57a69df40ed939986ebf02c4 28-Jul-2010 James Dong <jdong@google.com> Reduce memory usage by the MP4 file writer
- Don't store timestamp for each output sample
- Don't store timestamp for statistical data collection if the collection of statistical data is not requested

TODO:
1. Reduce CPU load by elimnating the list cost associated with List.size() call.

Change-Id: I590bc17176596a65952c982574b82ee3b15b7d1c
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
f01528f435e6b1f02d118fcd8305a148c27a89f1 28-Jul-2010 James Dong <jdong@google.com> Interleave the audio and video by default
- default interleave duration is set to 1 second

This can dramatically reduce the memory usage
by the MP4 file writer.

Change-Id: Ia3ff202cabfcd2d3f183065d31e4596617c2dded
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
faed5cd124a54b8db3429f4c26b3220bbec4c8bb 16-Jul-2010 James Dong <jdong@google.com> Progress status notification

- Keep track of per-track progress

Change-Id: Ibd36f0e8c78581928c8aa2f5e23c5e7e0615c2cc
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
8f5f2fcee5c12d08df71d17017410c50951fc2e3 02-Jul-2010 James Dong <jdong@google.com> Support user-supplied timescales for authoring

- also, change all the real time unit to microseconds in MPEG4Writer

Change-Id: I260f512f2eb670ade7b8858a56335a5d639de756
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
19c9a1e2bb6ead5e1e895aea8be573fe0f8cc7bb 01-Jul-2010 Andreas Huber <andih@google.com> Support for writing the extracted data to an .mp4 file in the stagefright commandline tool.

Change-Id: I972324a8fc9757e6e8116b0270ec0882106f8733
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
215381ea729086b8359b7f59bdc2bd7cf55a0c45 26-Jun-2010 James Dong <jdong@google.com> Collect statistical data from authoring engine (second part)

- added sample duration to the statistcal log messages.
- fixed the bug on miscalcuting the average frame rate.

- also fixed an issue where both frame and time progress status notifications
are sent out even though only one of them is explicitly requsted.

Change-Id: Ib86f15a85fad3dbeabde120c3c782b79c16da46c
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
93d6b102a13afa23bfa80d74c399d93d542e6ad6 25-Jun-2010 James Dong <jdong@google.com> Provide progress status report during authoring

- Track either the number of A/V frames authored, or the time elapsed
- Track the completion of the authoring
- Add multiple camera support for authoring by accepting a camera id parameter
- Set file type based on the OUTPUT_FORMAT requested

Change-Id: I0f9d31b3b7a8fa43eb53f572410fb0ebd4fa0bb7
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
2dec2b5be2056c6d9428897dc672185872d30d17 20-Jun-2010 James Dong <jdong@google.com> Enable passing parameters to the MediaWriter at runtime (at start() call).

- estimate the moov box size for mp4 file writer based on the file
size/duration limit and target bit rate.
- can switch to use 64 bit file offset at runtime

rebased

Change-Id: Ibbe1f57e91ab2605820d5d96e8048d11e5559c53
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
065d1aff96818df54456053f1574aec8a234d0de 24-Jun-2010 James Dong <jdong@google.com> Fixed the software AAC encoder

Make sure that each input frame contains at least 1024 samples, as
required by the AAC encoder, and fix the incorrect timestamp.

Change-Id: I344cafe8c89be51d6e64552fab70539990ff6049
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
1acfe8649f8169caf2ff098c2dc2de880d9a3760 23-Jun-2010 James Dong <jdong@google.com> Fixed some meta data issues in the recorded mp4 file

- Mainly correcting the location of stbl box which should be a child of minf box.
This resolved the issue where the mis-muxed encoded file could not be played by QT/VLC.

- Enabled the the recorded tracks by setting the flags to 0x07 by default

- Allows for encoding either 32-bit or 64-bit offsets. By default encoding
32-bit offsets to reduce the metadata overhead

- Fixed a edts box issue where an empty elst box was used at the end

Change-Id: I570621a26714a81dc9400271aa5d3a07b483172f
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
58ae9c530247668f8af36e30d228c716c226b3d4 22-Jun-2010 James Dong <jdong@google.com> Single track optimization

We don't need to do interleave when the total number of tracks to be recorded is one.
Metadata-wise, we only need to have one chunk in chunk offset table, and a
single entry in the stsc table.

Change-Id: I46f0e4b3860620311e7a91b68a9067acaa137bb2
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
f60cafe0e6aad8f9ce54660fa88b651ae4e749e6 19-Jun-2010 James Dong <jdong@google.com> Audio/video sync during recording (second part)

Change-Id: Iba0b35f57fdeac7ee1da16899406bf4b957a2c8c
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
a7d1a2dd776bf356c228785a94ba8e0ff6a2ec7f 10-Jun-2010 James Dong <jdong@google.com> Initial checkin for pause and resume control

Change-Id: Ibdcf7bea5fb66baa81878704ba4091dfcfe382ee
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
365a963142093a1cd8efdcea76b5f65096a5b115 04-Jun-2010 James Dong <jdong@google.com> Initial check-in for collecting stats from authoring engine at runtime

Change-Id: I93a9d8bd260efc5e7fc135b726e3f1307c6df794
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
d07139e2e817a9b3ae9c87ba4e1e8d65d3e549da 07-Jun-2010 James Dong <jdong@google.com> Second part of speeding up video recording frame rate

1. Avoid copying the input recording frames to the encoder via OMX interface
for TI video encoder
This is a missing change for part one which help reduces the CPU load.

2. Release output buffers as early as possible. This is a little bit helpful, but not critical.

TODO:
We should save the underlying pointers allocated by the OMX component before we replace them
and restore them before we call OMX_FreeBuffer()!

Change-Id: Ib3a88978f4c3b1153808872eaa7ac4c265a811ff
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
e136c3bb38e88315bf8797a464ebf2c788296b22 21-May-2010 James Dong <jdong@google.com> Properly handle start code in H264/AVC encoder output

- Some H264/AVC encoder output start code in each output buffer, and others don't.
This patch always strips the start code first so that the sample contains the correct size.
- Also properly initialize the interleave duration.

Change-Id: I692043ce7e38f0215e1097aad9e847a57907b6e4
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
956c553ab0ce72f8074ad0fda2ffd66a0305700c 15-May-2010 James Dong <jdong@google.com> Initial software encoder checkins

Change-Id: I27f387db23594e46384c4eb3a0093ce220bb6b60
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
f0ce2fb0c7bf3a414279e5aba61105f3d9025c0e 14-May-2010 James Dong <jdong@google.com> Detect and handle premature termination of a recording session

Change-Id: Ifb83b19f3e68580345b23efed5d5956fb81baeb8
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
3c0131f02b6f008321608044c53bccce2ac5f6dd 13-May-2010 James Dong <jdong@google.com> Audio/video initial recording time synchronization

Change-Id: Iac58b63d474fe09c1d36ba6ecde91dafbb7fef9a
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
d599cd4573b5a2d5914c5040e0565ef866749b77 11-May-2010 James Dong <jdong@google.com> Handle recording file size and/or duration limit

Change-Id: Ib9ed1f3ebd8fef550cc130a7ef11f2905fa9aedc
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
7837c17063a4c50bc856ba59418516fdab731de7 07-May-2010 James Dong <jdong@google.com> Output streamable MP4 file during MP4 file recording

When the reserved moov box space is not big enough,
fall back to non-streamable MP4 file.

Change-Id: I93382d037d657a3f3fe2af31e4ea26e1898b4d95
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
be83c9e8c71ce16c0d0e9ed9df525510a49a541b 20-Apr-2010 James Dong <jdong@google.com> Metadata construction optimization

- Potentially much shorter stts box if samples have roughly the same duration
- Potentially much shorter stsz box if all samples have the same size

Change-Id: I4f7663dd64285070995585a02bb3ba1e1049a0cf
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
13aec890216948b0c364f8f92792129d0335f506 22-Apr-2010 James Dong <jdong@google.com> Support audio and video track interleaving in the recorded mp4 file

Change-Id: Ifa27eb23ee265f84fe06773b29b0eb2b0b075b60
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
050b28a593350047845a45a14cc5026221ac1620 23-Apr-2010 James Dong <jdong@google.com> Support AAC recording

- Extend the audio recording to AAC format
- Add support for setting some recording parameters
- Add stss box to the meta data in the recorded file

Change-Id: I41167bfd9d70ef9cd33906f8437b39c232b6d3b7
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
548e31844937b37518fbb62ff69e9ff1f794183b 09-Apr-2010 Andreas Huber <andih@google.com> I accidentally broken passion encoding while working around problems with the sholes encoder.

Change-Id: Id91b837ed17083cb21efb08e1c1ab9cc3ff3fa8f
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
03b268eac37ca2589bfff0bf58daf79d29cc14f4 19-Mar-2010 Andreas Huber <andih@google.com> Various fixes to enable recording on passion and nexus1.

Change-Id: I75a461c9882e2449082ad754ee7b231c1ceec039
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
3b240d6bf235f6f6b40ee4c37a2862de286ca1e4 02-Feb-2010 Andreas Huber <andih@google.com> Properly report the duration of a recording into .mp4 files.

related-to-bug: 2295468
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
2dce41ad26cb3e9e15c9e456a84bcf5309548ca0 26-Jan-2010 Andreas Huber <andih@google.com> Support for audio recording into AMR NB/WB files as well as audio tracks in MPEG4 files.

related-to-bug: 2295449
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
30ab66297501757d745b9ae10da61adcd891f497 17-Nov-2009 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 333057b355f8c260c549553b9a0634755c838b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Nov 13 15:35:48 2009 -0800

Some more tweaks to AVC encoding on sholes.

commit 9981d0ee52ec5b8b0182aae733d1571e3ebb8390
Author: Andreas Huber <andih@google.com>
Date: Thu Nov 12 16:36:57 2009 -0800

Support for avc encoding, including sholes specific tweaks to pick the right colorspace for the camera to not require transcoding.

commit 5ba0ebbbd4efca51f3ae1f60e2ca31e7d2cf136d
Author: Andreas Huber <andih@google.com>
Date: Wed Nov 11 09:50:03 2009 -0800

Enable actual (camera) video-only recording using h.263 or mpeg4 encoding.

commit 3fd59c3526a37fe7c696f4a978925d1831c09313
Author: Andreas Huber <andih@google.com>
Date: Tue Nov 10 14:57:48 2009 -0800

Allow switching between the PV recorder implementation and one supported by stagefright.

This is controlled through the property "media.stagefright.enable-record".
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
48c948b1137e7bbdb161b51908657ab72ac5e2da 08-Oct-2009 Andreas Huber <andih@google.com> Change to a int64_t usecs representation for timestamps and duration throughout stagefright.
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
18291bc20e55e8f3fd5feb786771a8ed32c19c59 10-Sep-2009 Andreas Huber <andih@google.com> Media MIME types now have corresponding constants in MediaDefs.h, new codec enumeration API.
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
25b130939339d57789a86fac837a2a8cedbcb7d8 10-Sep-2009 Andreas Huber <andih@google.com> Minor API change in MPEG4Writer, support for amr output into MPEG4 containers.
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
0c89199745bc1bf05b997fc7c342017807676b6f 26-Aug-2009 Andreas Huber <andih@google.com> assert => CHECK in stagefright.
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
693d271e62a3726689ff68f4505ba49228eb94b2 14-Aug-2009 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 5bb012f0065f7ffaaeb4f569d71f0e3a8d6b19c3
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 14 10:40:08 2009 -0700

An attempt at fixing export using the qcom encoders. More quirks.

commit 0690e76bfa48118a68287ccf1bbfa82febaa620c
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 14 09:08:28 2009 -0700

Callbacks are now dispatched from a separate thread in OMX.

commit c6571a039526df29b6343f9a1971dbc019088c61
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 13 15:42:25 2009 -0700

Massive API changes throughout stagefright, smart pointers everywhere.

commit 900612af6a0555664d9ba195112cd859491265f4
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 13 13:33:12 2009 -0700

OMXCodecs now properly shutdown.

commit 96732f05e1b0603dcd1b11f16a23512592eeb4f5
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 13 12:04:04 2009 -0700

More work on JPEG decoding using the hardware OMX component.

commit 63839a073ac393e3a130434ba467969053b694ad
Author: Andreas Huber <andih@google.com>
Date: Wed Aug 12 13:13:31 2009 -0700

An attempt to drive the JPEG decoder OMX node.

commit 3ac2fe5ab2926eda81b2123610b2434c645294ff
Author: Andreas Huber <andih@google.com>
Date: Tue Aug 11 16:38:21 2009 -0700

Renamed StateMachine to OMXCodec and put it in its proper place.

commit 247da75a96bf8881956413023dd49a84d5b4f5b2
Author: Andreas Huber <andih@google.com>
Date: Tue Aug 11 16:06:19 2009 -0700

Statemachine is now a full-fledged MediaSource.

commit 045244f6771fa0b9b329495c953afda900a84b71
Author: Andreas Huber <andih@google.com>
Date: Fri Aug 7 09:16:54 2009 -0700

Properly setup the input format when exporting to AMR audio.

commit 271b984cb32c5cd9e46e3f90ae121f334e4b8da9
Author: Andreas Huber <andih@google.com>
Date: Thu Aug 6 09:59:38 2009 -0700

Added some code to test audio encoding to the OMX harness.

commit 79af4748e4af33bd66d3fbac606e332a69741cf4
Author: Andreas Huber <andih@google.com>
Date: Wed Aug 5 14:36:22 2009 -0700

Merge the old OMXDecoder and the new, shiny, StateMachine code.

commit 91cf5dd77a8762bc10a0b2ffce35e3bbeb262231
Author: Andreas Huber <andih@google.com>
Date: Tue Aug 4 17:41:43 2009 -0700

A new harness to test OMX node compliance (and quirks).
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
bf37f3364804f521cc61845b1f1ce16fe133814b 04-Aug-2009 Andreas Huber <andih@google.com> Recording/Export to .mp4/h.263 somewhat works on TI hardware.
/frameworks/av/media/libstagefright/MPEG4Writer.cpp
20111aa043c5f404472bc63b90bc5aad906b1101 15-Jul-2009 Andreas Huber <andih@google.com> Squashed commit of the following:

commit 8d179995654c19d9094e51989dc84ed0deba6e04
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 16:30:40 2009 -0700

Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.

commit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 14 14:06:00 2009 -0700

OMX::list_nodes API, stagefright --list now lists all available OMX components.

commit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 16:04:29 2009 -0700

Reenabled "record" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.

commit d363dd74f611577567c66d25900d6264c306468c
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:59:58 2009 -0700

Make non-socket communication in IOMX the default.

commit e89fc82c4fd138c88339887baf72f1d0e67f8660
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 13 10:32:33 2009 -0700

The OMX interface now optionally supports communication through the binder only (no sockets involved)

commit 28611de11223fba65299787cdd33f7fdbd6a60a3
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 15:09:13 2009 -0700

Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}

commit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 12:21:46 2009 -0700

Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...

commit ae209a2b5d09caed5dd383c910f238926aaa8fc6
Author: Andreas Huber <andih@google.com>
Date: Fri Jul 10 09:33:29 2009 -0700

Simple video decoder performance test in "stagefright" commandline tool.

commit 59fe7840111d6f46dd3c48f4950146aed962dbd2
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 16:05:12 2009 -0700

StagefrightPlayer: Properly publish video dimensions by notifying the listener.

commit 51b6598f0e47be5e12d77f1d14e111e71c593638
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 9 11:38:15 2009 -0700

MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.

commit 31ce53375d748da3e7d30e993ce89dae97fd65ea
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 17:23:37 2009 -0700

Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.

commit a23e312b10631a5d47f5c9831205beac6b84ab36
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 15:10:13 2009 -0700

IGenesisPlayer and friends are no more, java interface now uses local playback instead
of playing inside the media server process.

commit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 8 13:17:03 2009 -0700

MP3 extractor now supports seeking (only fixed bitrate files currently supported)

commit 96a790405763bfa738d1c6845c99a9fdf579b66f
Author: Andreas Huber <andih@google.com>
Date: Tue Jul 7 10:53:54 2009 -0700

Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.

commit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 16:40:02 2009 -0700

Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.

commit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621
Author: Andreas Huber <andih@google.com>
Date: Mon Jul 6 12:18:29 2009 -0700

Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.

commit 88bffc5ed4033a607080f8777a1c0ec9e3e079de
Author: Andreas Huber <andih@google.com>
Date: Thu Jul 2 12:25:03 2009 -0700

MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.

commit 732aa0a87c7e8d8a10776b275712649954962414
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:58:56 2009 -0700

Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.

commit 669e5944b2fe0542a3b8dba0c441a94503e99fb0
Author: Andreas Huber <andih@google.com>
Date: Wed Jul 1 14:43:02 2009 -0700

Proper support for end-of-stream signalling of MediaSources.

commit afb038f2dc594c742e554b2d42b86ffc7434e3fc
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 30 16:48:03 2009 -0700

Support for the "sniffing" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.

commit ed3644b8bd56807e1db4b32433a93a2467f1f3c5
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 13:27:52 2009 -0700

I don't think prepare should automatically start the player.

commit 11eb9b49dc4a0819d366682817cba68613f4fe12
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 26 11:09:22 2009 -0700

Somewhat better timing information implemented in the MP3Extractor.

commit cab023a1751735c0ed26c8493498a91d8644c6c9
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 25 15:41:56 2009 -0700

Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.

commit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:41:12 2009 -0700

Make sure we only allocate surface buffers if there is video to be played.

commit 7f85e7d92fe81740e102e09905b19354f4ac178e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 24 10:19:32 2009 -0700

Clean up a failed merge and implement stub for new API in MediaPlayerBase.

commit f0e9d494a4c03402ea7b54891848ca5a50c421b2
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 15:38:03 2009 -0700

Support yuv420->rgb565 conversion if hardware color conversion is unavailable.

commit 87223248b3099cd5261b94169f84cfd1eba56a8f
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 12 09:35:56 2009 -0700

Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.

commit e07e651f0325892b797f3eb64dbeca0f317afdfd
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 16:26:42 2009 -0700

Enable assertions in HTTPDataSource.

commit 0dc97adebea1721156880f4b3d5c70f8d50c53b2
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:39 2009 -0700

delete foo.

commit 7f05845dda496e7defee284d32509d127e785784
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 12:34:08 2009 -0700

added foo.

commit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 10 11:44:31 2009 -0700

Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.

commit d6286a6bbca639952491448fa3e609b775a8a814
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 17:11:49 2009 -0700

send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now "works" on the emulator, too.

commit 8d657e004677a7c5dae4479e8519bcaa94c18aad
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 11:58:55 2009 -0700

Instead of erasing codec specific data once it's been output to the omx node, retain the data and just rewind after a stop.

commit 279fede6ba35cbc37c35616c53406bf2c9720202
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 10:58:11 2009 -0700

Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.

commit 0f717f15a6328efd3f34082929cd8ad2351095a9
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 9 08:44:12 2009 -0700

Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer's notion of time mapping.

commit 0cfb63e33270daf9b215214608ab383f93a31823
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 14:25:48 2009 -0700

Massive rename.

commit 30ed8f476c4431a5275538958b3e281bd17d5eab
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 13:52:41 2009 -0700

send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.

commit b832d04011b2dd8a9632eb7e575bfe1addd1270d
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:21:17 2009 -0700

MediaBuffers can now be "clone()", they sit on top of the same data but have their own range and metadata. Once a clone's refcount drops to 0 it decrements the refcount on the original buffer.

commit 4e944672808bdf1ed40a69f3f602f93ebf7b4049
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 8 10:01:01 2009 -0700

Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.

commit ddb7529b4de4828db51432bd405fddd76cfa3b6a
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 16:30:25 2009 -0700

More fudging with A/V sync...

commit 1e5a4d8df08237b58c06c6527a33152ae931addf
Author: Andreas Huber <andih@google.com>
Date: Fri Jun 5 11:54:20 2009 -0700

API cleanup of MediaSource. Got rid of MediaRing as it really doesn't serve a purpose if OMX decoders are used.

commit 0953c65232aa9753d17d2e25c5f5526eb810cf13
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 16:59:19 2009 -0700

Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.

commit 2085b8ea9484a21fa11f94194a27405d413aeecc
Author: Andreas Huber <andih@google.com>
Date: Thu Jun 4 10:17:01 2009 -0700

Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.

commit 471f143458a8a0d93cb1bf9568c63c3967279dc6
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 17:32:27 2009 -0700

Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.

commit 4010d371dbe62ce4971e13437776cba32cb0bb3d
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 16:01:07 2009 -0700

Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.

commit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 15:33:58 2009 -0700

Change the TimeSource interface's APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.

commit 08bb46fa61d12e852a424698ddb0c90700328f6e
Author: Andreas Huber <andih@google.com>
Date: Wed Jun 3 11:57:24 2009 -0700

Using framework's Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.

commit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 17:12:03 2009 -0700

MediaSources now publish their format.

commit 7e429a26c57bf936e1a08035d2d11839f9f00310
Author: Andreas Huber <andih@google.com>
Date: Tue Jun 2 16:38:29 2009 -0700

MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.

commit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 14:39:55 2009 -0700

Sync sample seek support.

commit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 13:51:11 2009 -0700

Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn't. Fixes a problem with seek.

commit e57781d3b2c985a74cd8b60e7c8f2d576459d038
Author: Andreas Huber <andih@google.com>
Date: Mon Jun 1 10:52:20 2009 -0700

First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.

commit 0551cd78fda78bf66877fb26c5a55e5ae23d8367
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 16:23:38 2009 -0700

Preliminary support for camera input.

commit f8ebafa65d10d5a06944de6b2e2992a33121b857
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 12:13:47 2009 -0700

Allow NativeMediaPlayer access to Surface's getISurface() method.

commit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:38:25 2009 -0700

Header files are now in their own genesis2 hierarchy below frameworks/base/include.

commit f49b8b234b8f6ce83148787eef540dd920f04aa6
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:22:03 2009 -0700

moved MPEG4Writer into libgenesis2.

commit 5224254919dac4728677335ea60429fa16f518b4
Author: Andreas Huber <andih@google.com>
Date: Thu May 28 11:13:38 2009 -0700

Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.

commit f9a9d84f7e0465ef5d1938a068655ba39527cf99
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 16:43:11 2009 -0700

Support for getPosition() and getDuration().

commit 3206cc5140bcbc88be039f8d94b954af63e69752
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 15:37:45 2009 -0700

Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()

commit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe
Author: Andreas Huber <andih@google.com>
Date: Wed May 27 13:49:50 2009 -0700

Proper disconnection from the OMX service.

commit cdcf47a2c31599109ee42277c7fa14af3c600091
Author: Andreas Huber <andih@google.com>
Date: Tue May 26 17:27:06 2009 -0700

New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.

commit 0586af20ac9ae0403dd190bafd290b0f90549723
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 15:53:19 2009 -0700

Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.

commit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 13:35:30 2009 -0700

Support for http URIs in MediaPlayer, compensate for AudioTrack latency.

commit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 11:33:25 2009 -0700

Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don't shutdown cleanly within a second.

commit 1f0268f4f14ad5215668f34e06a420850174d665
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:33:16 2009 -0700

and foo.txt is gone again.

commit 0feca4e0919f345704d78ec78894bac5027bd5ed
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:28:49 2009 -0700

added foo.txt

commit 9c7d04b35cdc895a2de3602dc46522f608bd205f
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:28:04 2009 -0700

delete foo again

commit fec3ca1720992cce51b9a92b86b945da88a6b16c
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:27:45 2009 -0700

weird

commit 30a6571302333146e537e537a3a8986245cca87c
Author: Andreas Huber <andih@dhcp-172-19-27-148.mtv.corp.google.com>
Date: Fri May 22 08:18:55 2009 -0700

reverse test

commit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38
Author: Andreas Huber <andih@google.com>
Date: Fri May 22 08:18:22 2009 -0700

test

commit a9eeafec6e46072cac41e54ebdbd153cb7ae7518
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 16:37:50 2009 -0700

Use the video ring again for now.

commit e05ff3d3c1c4f89ef499a2b172138a775fd694e3
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 15:42:19 2009 -0700

Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.

commit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 09:56:11 2009 -0700

Fix the build, all binder-related headers have moved and there's a new library libbinde
r to link against now.

commit 23e0a24404d16c898c2c6b3c7495ad303844bc71
Author: Andreas Huber <andih@google.com>
Date: Thu May 21 08:42:04 2009 -0700

Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss & friends) not currently working.

commit 9cd77adb1ac194197364ffad00a0d7215f458e1a
Author: Andreas Huber <andih@google.com>
Date: Wed May 20 12:31:45 2009 -0700

New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.

commit 5c510fb55ffed7ec25305999ed9b6c1eec48d503
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 15:40:06 2009 -0700

Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.

commit f6c7a2040b8eb43326621f12c3a936e09b3a70e3
Author: Andreas Huber <andih@google.com>
Date: Mon May 18 11:03:04 2009 -0700

The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.

commit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac
Author: Andreas Huber <andih@google.com>
Date: Thu May 14 12:39:34 2009 -0700

dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.

commit 380369f54a8027cbc9349305184d6bf527a24efe
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 17:32:00 2009 -0700

Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.

commit b5cada56b9089a23e0c461352a97dc71e08b424d
Author: Andreas Huber <andih@google.com>
Date: Wed May 13 12:11:06 2009 -0700

Introduction of TimeSource class, clean shutdown of OMX Nodes.

commit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 17:11:56 2009 -0700

Helper classes MediaRing and MediaPlayer.

commit 9aaed8739b4bb941473da367fb88f63224d2f1b7
Author: Andreas Huber <andih@google.com>
Date: Tue May 12 14:19:18 2009 -0700

Using mmap to map a file instead of going through FILE* improves performance, who knew?

commit ad097a78bbd002c59193ffdc39b64935928426c7
Author: Andreas Huber <andih@google.com>
Date: Mon May 11 16:42:42 2009 -0700

Added a performance test, refactored AudioDecoder a little.

commit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 16:19:29 2009 -0700

No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.

commit 858955b42c29b8033841a8caaa56c2a449810ef3
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 14:02:38 2009 -0700

Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.

commit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d
Author: Andreas Huber <andih@google.com>
Date: Fri May 8 13:21:45 2009 -0700

Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes

commit 3941fcf87a48dda81683df727dfb1381f62d9184
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 16:37:45 2009 -0700

some refactoring. Most streams play now.

commit d3152862840d4dd39068e5197bec8674f3d55dd5
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 15:37:32 2009 -0700

Misc. changes to support H264 decoding using the qcom hardware decoder

commit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e
Author: Andreas Huber <andih@google.com>
Date: Thu May 7 09:28:18 2009 -0700

Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.

commit fe6a50943f885e065d4061aa727a54417e9f36db
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 14:18:27 2009 -0700

Refactored commandline app instantiation of the decoder.

commit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 10:41:14 2009 -0700

Proper audio/video synchronization.

commit 569ee3a23f600f4b6b87c6178c0223b06e97f201
Author: Andreas Huber <andih@google.com>
Date: Wed May 6 09:17:20 2009 -0700

Preliminary support for timestamps.

commit e4e302a89207550d8a7170d8c0afbd9c15047c84
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:13:12 2009 -0700

Another quick hack job to make CachingDataSource thread-safe as well.

commit dfb376a58bd7c09aa04e89558186fcfe13fe696c
Author: Andreas Huber <andih@google.com>
Date: Tue May 5 15:08:14 2009 -0700

Quick rushjob to make FileSource and SampleTable thread safe.

commit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 17:22:04 2009 -0700

Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.

commit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef
Author: Andreas Huber <andih@google.com>
Date: Mon May 4 09:26:42 2009 -0700

Getting rid of old sample code to drive the OMXNode binder interface.

commit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 16:21:11 2009 -0700

Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder

commit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 15:56:19 2009 -0700

Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)

commit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7
Author: Andreas Huber <andih@google.com>
Date: Fri May 1 11:52:48 2009 -0700

Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.

commit 1470427866b0d3e0ce6848b4edc01c13a09be289
Author: Andreas Huber <andih@google.com>
Date: Thu Apr 30 15:19:31 2009 -0700

Another checkpoint, amr decoding now functional.

commit e612d044439f56331b6a2bc4a88622e04d4d42e7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 12:11:29 2009 -0700

string wrapper around String8, various fixes, shoutcast now works again.

commit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 11:08:18 2009 -0700

Initial check-in of OMXNode binder interface.

commit 7880d2957f74c0d7fba7679431ff5adb3780543b
Author: Andreas Huber <andih@google.com>
Date: Wed Apr 29 10:05:01 2009 -0700

Initial check-in of both libgenesis2 and the genesis2 commandline tool.
/frameworks/av/media/libstagefright/MPEG4Writer.cpp