History log of /frameworks/av/media/libstagefright/MPEG4Writer.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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