MPEG2TSWriter: Write proper continuity counters for PAT and PMT

Change-Id: If94e31e51c563867db6d2376ad771f9751416084
MPEG2TSWriter: Write a proper CRC in PAT and PMT

Change-Id: I6ec8039b176878da6f02691194d96b0a1e894055
amrnb: Restart the p_xn pointer when retraversing the array on overflow

This is a safeguard to avoid issues in a rare codepath.

This was committed on the master branch of the opencore
repository in commit f532d145194e474cb30d8644b8eee83873ad24cc,
based on AOSP contribution 10905.

Change-Id: I9688b009bcbe63d88ee5040e883a021aefa30664
amrnb: Fix audio distortion in an AMR-NB clip

This fix had the PacketVideo internal tracking number
RIO-9190.

This was committed on the master branch of the opencore
repository in commit 7d6ccc907d3a15ca2ff74b9c76f122ab87d0ffbe.

Change-Id: Icbd7d6fe94e02cae360946cfb6f3b8dc90c8b518
avcenc: Switch malloc/free callbacks to use pointers instead of ints

There is no reason for casting the pointers to ints. This fixes
building the code on platforms where pointers are larger than ints,
e.g. 64 bit platforms.

Change-Id: I910cd207d0908287931c9a96eb270139967e029b
avcenc: Remove useless casts

Change-Id: I73a6f74268bcf6ca22d489d13936be8fd1b3fc92
avcenc: Clarify the ifdefs surrounding inline assembly

Previously, the code was structured like this:

#if defined(__GNUC__) && defined(__arm__)
    /* Generic C implementation */
#elif defined(__CC_ARM)
    /* RVCT version */
#elif defined(__GNUC__) && defined(__arm__)
    /* GCC arm assembly version */
#endif

This had two implications - the gcc arm version never was used
in practice, and the code required -D__arm__ to build at all for
other architectures.

The inline assembly constraints are buggy (requires changes so as
to not crash), and if fixed, the optimizations still aren't faster
than the generic C code on modern gcc versions. Therefore, just
ignore them and use the generic C code.

Due to the peculiar code block ordering and preprocessor conditions,
the generic C code is what has been used before anyway, but it
did require -D__arm__ to build, which can cause problems if building
for other architectures, if the system headers have ifdefs for this
define. This change makes it build without that define.

Change-Id: Ib3fcf5651ee720310b7dff10fd04279b5f90759c
Shutter sound is heard at the end of the recorded video

On fast hardware, which is more common, the shutter sound is
played and recorded before video recording is stopped.

Before we call play shutter sound before calling stop recording.
With this fix we call play shutter sound after calling stop recording.

Change-Id: I06a3e65fd2700f1d2457fea5ff0f64500eac436f
avcenc: Fix indentation

Change-Id: I4fcdf619e3b75387a7909272f3164b8d608b6cc2
Correct ID3::StringSize calculation for UCS-2 data.

Album art was not displayed when albums were transferred via MediaGo
because the length of the description in the APIC tag was not
correctly calculated.

The method StringSize used to calculate the length of the tag
does not add the size of the null termination in UCS-2 case.

Change-Id: I5409d42f5e87d315e6e03c4d7e6cbd8a378a160d
Initialize pool's buffer pointers to null.

If these pointers are not properly initialized to null and
allocation of one of the buffers subsequently fail, the freePool
mechanism might erroneously free uninitialized pointers.

Change-Id: I2101bdb2cc576e5f50b5a1440e6fc0c54dc4e81b
avcenc: Initialize all memory allocated by the CBAVC_Malloc callback function

Valgrind reported use of uninitialized memory in AVCEncodeSlice,
which this fixes.

Change-Id: Ia09ad3e50d05b2b0487a4d588d9b00fc0828c816
avcenc: Remove redundant zero-initialization of allocated memory

The allocation callback is now supposed to always return initialized
memory.

Change-Id: I7a4d036e498c9f87c730dda3aab5057eb764a1e7
mediacodec: Return an error on getOutputFormat if there is no output format yet

This avoids crashing if calling the public java method
MediaCodec.getOutputFormat immediately after MediaCodec.start
(as the documentation example shows that one should do!).

Change-Id: Icd3dd7ab9ae9e8f2a67cef171ff176735de95f58
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
Merge "Shutter sound is heard at the end of the recorded video"
Fix initialization of audio mixer track resources for MIPS.

The value 1 << 32 (maxNumTracks defaults to 32) is surprisingly not defined
in C, and differs on MIPS than the other arch.

Therefore the track resources were not initialized properly, resulting
in failure to play any audio.

The fix allows the mConfiguredNames bitmask to be correctly set to all
1's in the 32-track case, for all arch.

Change-Id: Ied3e1305952e9567602e2cd76c5ef3acb0809ee0
Signed-off-by: Paul Lind <plind@mips.com>
Merge "mediacodec: Return an error on getOutputFormat if there is no output format yet"
Merge "avcenc: Switch malloc/free callbacks to use pointers instead of ints"
Merge "avcenc: Fix indentation"