Initialize and copy mRotationAngle in VideoFrame

When thumbnails were generated they could be generated at random
angles as the mRotationAngle variable was not initialized to any
value. This variable would have to be explicitly overwritten to not
cause random rotation. Changed the implementation to initialize the
value to 0 (no rotation). mRotationAngle was also missing in the
copy constructor.

Change-Id: I67a5340fdd807c6ab3a3da5eecb09b5b9d5f4666
Memory leak solved in MPEG4Extractor::parseChunk for cover art

Repeated leaks detected in mediaserver context. Most chunks small but
some bigger. Adding up it was not uncommon to see 200Mb footprint.
libc memdebug allocation call stack showed the root cause in "covr"
parsing - that explains why content often was empty but sometimes big.

Change-Id: I0de6c1eeef174d2529973ff9c6a020ec3dd44c75
FileSource: FILE is not closed

Add destructor to call fclose.

Change-Id: I765c56236f8df58af998439492b0b955ab57606f
libvideoeditor: fix cannot show some thumbnails in storyboard or no frame display in PreviewRenderer surface after importing video

1. this is caused mFrameIntervalMs isn't assigned for use-software-codec case
2. without the assingment, some decoded frames will not be copied to the buffer queue of VideoEditorVideoDecoder

Change-Id: I578954e38958ebac8f258300e60b8ddf60e50521
Signed-off-by: beanz <beanz@marvell.com>
Use default values when MPEG4 audio config parsing fails.

MPEG4 audio packets may be multiplexed using the so called
LATM (Low Overhead Audio Transport Multiplex) scheme.
LATM parsing was recently introduced in Stagefright and it
has caused issues in cases when the LATM config element
cannot be parsed correctly. The main problem occurrs when
the AudioSpecificConfig part of the config element contains
more information than what is expected, causing the
frameLengthType parameter to get the wrong value. This fix
introduces default values of some config parameters that are
used in case config parsing fails.

Change-Id: I3cb35df76826f95ca0831dc08c2a1e7c6c2c586d
Bug fix for the MediaPlayer::prepare() api.

For an MP3 source, within the prepare command, ID3 tags are checked in search of
gapless playback info. This causes problems for streamed sources. If ID3v2 tags
aren't present, then a check is done for ID3v1 tags. This results in a read
command that asks the cache to jump to the end of the file, and subsequently
make an extra http call to request those bytes. For a streamed source, this
causes the file to not be downloaded automatically when MediaPlayer::prepare()
is called, and causes stuttering and extra buffering time to be needed when
start() is finally called.
The solution is to ignore the ID3v1 tags as the gapless info would never exist
there, and only check for ID3v2 tags.

Change-Id: I7d1b94cffbfe7c38ca094834dedbc92a58855e20
Unsolicited server responses cause RTSP streaming to crash

If the set up of the RTSP stream contains an incorrect or otherwise
problematic URL, some servers will send an unsolicited server response
that contains a negative number in the sequence number (CSeq) field.

This negative value is not returned from the function findPendingRequest(),
so the check in notifyResponseListener() will not work.  Instead there will
be a crash when 0 is used as the index to find a matching request/response
pair that doesn’t exist.

The fix is to return the received sequence number also when it is an
unsolicited server-client message.

Change-Id: Iedaba8a63dece7b43bce007069baefbfd10970b8
Crash in android::MyHandler::parsePlayResponse

This fix handles problems with several asynchronous calls
within streaming. This case is when the phone has sent a
request to the server and while the response is being sent
back by the server the request is aborted by the user.
The fix is an if case that checks if we have aborted while
waiting for a response from the server. If we have aborted
we should ignore the late response instead of continuing.

Change-Id: I1264bb992f6abcaee1f10a89479e08b54a95e3c2
AudioTrack::dump null mCblk check test

This fix is protecting AudioTrack::dump from SIGSEGEV
when calling dumpsys shell command.

Change-Id: I30d136e195a12d6fdad41e14f557b0ad9e59b8a2
Changed parsing of trkn and disk from 8 bits to 16 bits

The MPEG4Extractor was parsing 8 bits instead of 16 bits when parsing
'trkn' and 'disk'. Also added support for 16 bytes size 'disk'.

Change-Id: I22b4de2ac800881884d5759776cb380917522a87
Fix bad checks that causes crash when streaming H.263 content.

Remove checks that causes crash for rtsp streamed h.263 content
with certain values in the RTP payload header:
Remove zero check for the five reserved bits in the payload header.
According to RFC 4629 these bits MUST be ignored by receivers.
Remove zero-check for the VRC (Video Redundancy Coding) bit,
skip packet instead.
Remove zero-check for the PLEN bits (extra picture header),
skip packet instead.
Remove zero-check for the PEBIT bits (extra picture header),
skip packet instead.
Remove corresponding zero check for the four resreved bits in the
AMR payload header. According to RFC 4867 these bits MUST be
ignored by receivers.

Change-Id: I7fc21d69a19d23da24f9267623c338d415ef1387
Fix bug in WAVExtractor for 24-bit per sample wav

support stereo/multichannel 24-bit format
kMaxFrameSize is fixed to 32768. When converting 24-bit to 16-bit,
number of samlpes is maxBytesToRead /3.
In this case, if the maxBytesToRead is not multiple of 3,
pcm data is messed when converting.

Bug:7630939
Change-Id: I0ea1b53eb1272a8d83b63815fc0a05b73cef75f1
Allow multichannel FLAC files

FLACExtractor had artificial limits which did not allow multichannel
audio, 88.2 or 96 kHz samplerate, these were removed since it is up
to the audio subsystem to handle.

Change-Id: Iadc20cdf4724814b5c980827a528a1e1b4bd6a82