summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/patches/frameworks
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /media/libstagefright/patches/frameworks
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'media/libstagefright/patches/frameworks')
-rw-r--r--media/libstagefright/patches/frameworks/av.patch1192
1 files changed, 1192 insertions, 0 deletions
diff --git a/media/libstagefright/patches/frameworks/av.patch b/media/libstagefright/patches/frameworks/av.patch
new file mode 100644
index 000000000..22fb6c580
--- /dev/null
+++ b/media/libstagefright/patches/frameworks/av.patch
@@ -0,0 +1,1192 @@
+diff --git a/include/media/stagefright/DataSource.h b/include/media/stagefright/DataSource.h
+index 742bc0e..f6b30b0 100644
+--- a/include/media/stagefright/DataSource.h
++++ b/include/media/stagefright/DataSource.h
+@@ -21,16 +21,10 @@
+ #include <sys/types.h>
+
+ #include <media/stagefright/MediaErrors.h>
+-#include <utils/Errors.h>
+-#include <utils/KeyedVector.h>
+-#include <utils/List.h>
+ #include <utils/RefBase.h>
+-#include <utils/threads.h>
+-#include <drm/DrmManagerClient.h>
+
+-namespace android {
++namespace stagefright {
+
+-struct AMessage;
+ class String8;
+
+ class DataSource : public RefBase {
+@@ -42,10 +36,6 @@ public:
+ kIsHTTPBasedSource = 8,
+ };
+
+- static sp<DataSource> CreateFromURI(
+- const char *uri,
+- const KeyedVector<String8, String8> *headers = NULL);
+-
+ DataSource() {}
+
+ virtual status_t initCheck() const = 0;
+@@ -69,6 +59,7 @@ public:
+ return ERROR_UNSUPPORTED;
+ }
+
++#if 0
+ ////////////////////////////////////////////////////////////////////////////
+
+ bool sniff(String8 *mimeType, float *confidence, sp<AMessage> *meta);
+@@ -92,6 +83,7 @@ public:
+ virtual String8 getUri() {
+ return String8();
+ }
++#endif
+
+ virtual String8 getMIMEType() const;
+
+@@ -99,13 +91,10 @@ protected:
+ virtual ~DataSource() {}
+
+ private:
+- static Mutex gSnifferMutex;
+- static List<SnifferFunc> gSniffers;
+-
+ DataSource(const DataSource &);
+ DataSource &operator=(const DataSource &);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // DATA_SOURCE_H_
+diff --git a/include/media/stagefright/MediaBuffer.h b/include/media/stagefright/MediaBuffer.h
+index 3d79596..4172739 100644
+--- a/include/media/stagefright/MediaBuffer.h
++++ b/include/media/stagefright/MediaBuffer.h
+@@ -23,7 +23,7 @@
+ #include <utils/Errors.h>
+ #include <utils/RefBase.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct ABuffer;
+ class GraphicBuffer;
+@@ -118,6 +118,6 @@ private:
+ MediaBuffer &operator=(const MediaBuffer &);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // MEDIA_BUFFER_H_
+diff --git a/include/media/stagefright/MediaBufferGroup.h b/include/media/stagefright/MediaBufferGroup.h
+index 0488292..4a51351 100644
+--- a/include/media/stagefright/MediaBufferGroup.h
++++ b/include/media/stagefright/MediaBufferGroup.h
+@@ -22,7 +22,7 @@
+ #include <utils/Errors.h>
+ #include <utils/threads.h>
+
+-namespace android {
++namespace stagefright {
+
+ class MediaBuffer;
+ class MetaData;
+@@ -53,6 +53,6 @@ private:
+ MediaBufferGroup &operator=(const MediaBufferGroup &);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // MEDIA_BUFFER_GROUP_H_
+diff --git a/include/media/stagefright/MediaDefs.h b/include/media/stagefright/MediaDefs.h
+index 85693d4..9897caf 100644
+--- a/include/media/stagefright/MediaDefs.h
++++ b/include/media/stagefright/MediaDefs.h
+@@ -18,7 +18,7 @@
+
+ #define MEDIA_DEFS_H_
+
+-namespace android {
++namespace stagefright {
+
+ extern const char *MEDIA_MIMETYPE_IMAGE_JPEG;
+
+@@ -58,6 +58,6 @@ extern const char *MEDIA_MIMETYPE_CONTAINER_WVM;
+ extern const char *MEDIA_MIMETYPE_TEXT_3GPP;
+ extern const char *MEDIA_MIMETYPE_TEXT_SUBRIP;
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // MEDIA_DEFS_H_
+diff --git a/include/media/stagefright/MediaErrors.h b/include/media/stagefright/MediaErrors.h
+index 686f286..df2c1a5 100644
+--- a/include/media/stagefright/MediaErrors.h
++++ b/include/media/stagefright/MediaErrors.h
+@@ -20,52 +20,50 @@
+
+ #include <utils/Errors.h>
+
+-namespace android {
++namespace stagefright {
+
+-enum {
+- MEDIA_ERROR_BASE = -1000,
++#define MEDIA_ERROR_BASE (-1000)
+
+- ERROR_ALREADY_CONNECTED = MEDIA_ERROR_BASE,
+- ERROR_NOT_CONNECTED = MEDIA_ERROR_BASE - 1,
+- ERROR_UNKNOWN_HOST = MEDIA_ERROR_BASE - 2,
+- ERROR_CANNOT_CONNECT = MEDIA_ERROR_BASE - 3,
+- ERROR_IO = MEDIA_ERROR_BASE - 4,
+- ERROR_CONNECTION_LOST = MEDIA_ERROR_BASE - 5,
+- ERROR_MALFORMED = MEDIA_ERROR_BASE - 7,
+- ERROR_OUT_OF_RANGE = MEDIA_ERROR_BASE - 8,
+- ERROR_BUFFER_TOO_SMALL = MEDIA_ERROR_BASE - 9,
+- ERROR_UNSUPPORTED = MEDIA_ERROR_BASE - 10,
+- ERROR_END_OF_STREAM = MEDIA_ERROR_BASE - 11,
++#define ERROR_ALREADY_CONNECTED (MEDIA_ERROR_BASE)
++#define ERROR_NOT_CONNECTED (MEDIA_ERROR_BASE - 1)
++#define ERROR_UNKNOWN_HOST (MEDIA_ERROR_BASE - 2)
++#define ERROR_CANNOT_CONNECT (MEDIA_ERROR_BASE - 3)
++#define ERROR_IO (MEDIA_ERROR_BASE - 4)
++#define ERROR_CONNECTION_LOST (MEDIA_ERROR_BASE - 5)
++#define ERROR_MALFORMED (MEDIA_ERROR_BASE - 7)
++#define ERROR_OUT_OF_RANGE (MEDIA_ERROR_BASE - 8)
++#define ERROR_BUFFER_TOO_SMALL (MEDIA_ERROR_BASE - 9)
++#define ERROR_UNSUPPORTED (MEDIA_ERROR_BASE - 10)
++#define ERROR_END_OF_STREAM (MEDIA_ERROR_BASE - 11)
+
+- // Not technically an error.
+- INFO_FORMAT_CHANGED = MEDIA_ERROR_BASE - 12,
+- INFO_DISCONTINUITY = MEDIA_ERROR_BASE - 13,
+- INFO_OUTPUT_BUFFERS_CHANGED = MEDIA_ERROR_BASE - 14,
++// Not technically an error.
++#define INFO_FORMAT_CHANGED (MEDIA_ERROR_BASE - 12)
++#define INFO_DISCONTINUITY (MEDIA_ERROR_BASE - 13)
++#define INFO_OUTPUT_BUFFERS_CHANGED (MEDIA_ERROR_BASE - 14)
+
+- // The following constant values should be in sync with
+- // drm/drm_framework_common.h
+- DRM_ERROR_BASE = -2000,
++// The following constant values should be in sync with
++// drm/drm_framework_common.h
++#define DRM_ERROR_BASE (-2000)
+
+- ERROR_DRM_UNKNOWN = DRM_ERROR_BASE,
+- ERROR_DRM_NO_LICENSE = DRM_ERROR_BASE - 1,
+- ERROR_DRM_LICENSE_EXPIRED = DRM_ERROR_BASE - 2,
+- ERROR_DRM_SESSION_NOT_OPENED = DRM_ERROR_BASE - 3,
+- ERROR_DRM_DECRYPT_UNIT_NOT_INITIALIZED = DRM_ERROR_BASE - 4,
+- ERROR_DRM_DECRYPT = DRM_ERROR_BASE - 5,
+- ERROR_DRM_CANNOT_HANDLE = DRM_ERROR_BASE - 6,
+- ERROR_DRM_TAMPER_DETECTED = DRM_ERROR_BASE - 7,
+- ERROR_DRM_NOT_PROVISIONED = DRM_ERROR_BASE - 8,
+- ERROR_DRM_DEVICE_REVOKED = DRM_ERROR_BASE - 9,
+- ERROR_DRM_RESOURCE_BUSY = DRM_ERROR_BASE - 10,
++#define ERROR_DRM_UNKNOWN (DRM_ERROR_BASE)
++#define ERROR_DRM_NO_LICENSE (DRM_ERROR_BASE - 1)
++#define ERROR_DRM_LICENSE_EXPIRED (DRM_ERROR_BASE - 2)
++#define ERROR_DRM_SESSION_NOT_OPENED (DRM_ERROR_BASE - 3)
++#define ERROR_DRM_DECRYPT_UNIT_NOT_INITIALIZED (DRM_ERROR_BASE - 4)
++#define ERROR_DRM_DECRYPT (DRM_ERROR_BASE - 5)
++#define ERROR_DRM_CANNOT_HANDLE (DRM_ERROR_BASE - 6)
++#define ERROR_DRM_TAMPER_DETECTED (DRM_ERROR_BASE - 7)
++#define ERROR_DRM_NOT_PROVISIONED (DRM_ERROR_BASE - 8)
++#define ERROR_DRM_DEVICE_REVOKED (DRM_ERROR_BASE - 9)
++#define ERROR_DRM_RESOURCE_BUSY (DRM_ERROR_BASE - 10)
+
+- ERROR_DRM_VENDOR_MAX = DRM_ERROR_BASE - 500,
+- ERROR_DRM_VENDOR_MIN = DRM_ERROR_BASE - 999,
++#define ERROR_DRM_VENDOR_MAX (DRM_ERROR_BASE - 500)
++#define ERROR_DRM_VENDOR_MIN (DRM_ERROR_BASE - 999)
+
+- // Heartbeat Error Codes
+- HEARTBEAT_ERROR_BASE = -3000,
+- ERROR_HEARTBEAT_TERMINATE_REQUESTED = HEARTBEAT_ERROR_BASE,
+-};
++// Heartbeat Error Codes
++#define HEARTBEAT_ERROR_BASE (-3000)
++#define ERROR_HEARTBEAT_TERMINATE_REQUESTED (HEARTBEAT_ERROR_BASE)
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // MEDIA_ERRORS_H_
+diff --git a/include/media/stagefright/MediaExtractor.h b/include/media/stagefright/MediaExtractor.h
+index 3076a96..96d9ee1 100644
+--- a/include/media/stagefright/MediaExtractor.h
++++ b/include/media/stagefright/MediaExtractor.h
+@@ -20,7 +20,7 @@
+
+ #include <utils/RefBase.h>
+
+-namespace android {
++namespace stagefright {
+
+ class DataSource;
+ class MediaSource;
+@@ -42,7 +42,7 @@ public:
+
+ // Return container specific meta-data. The default implementation
+ // returns an empty metadata object.
+- virtual sp<MetaData> getMetaData();
++ virtual sp<MetaData> getMetaData() = 0;
+
+ enum Flags {
+ CAN_SEEK_BACKWARD = 1, // the "seek 10secs back button"
+@@ -53,7 +53,7 @@ public:
+
+ // If subclasses do _not_ override this, the default is
+ // CAN_SEEK_BACKWARD | CAN_SEEK_FORWARD | CAN_SEEK | CAN_PAUSE
+- virtual uint32_t flags() const;
++ virtual uint32_t flags() const = 0;
+
+ // for DRM
+ void setDrmFlag(bool flag) {
+@@ -77,6 +77,6 @@ private:
+ MediaExtractor &operator=(const MediaExtractor &);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // MEDIA_EXTRACTOR_H_
+diff --git a/include/media/stagefright/MediaSource.h b/include/media/stagefright/MediaSource.h
+index 3818e63..9aa6669 100644
+--- a/include/media/stagefright/MediaSource.h
++++ b/include/media/stagefright/MediaSource.h
+@@ -24,7 +24,7 @@
+ #include <utils/RefBase.h>
+ #include <utils/Vector.h>
+
+-namespace android {
++namespace stagefright {
+
+ class MediaBuffer;
+ class MetaData;
+@@ -117,6 +117,6 @@ private:
+ MediaSource &operator=(const MediaSource &);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // MEDIA_SOURCE_H_
+diff --git a/include/media/stagefright/MetaData.h b/include/media/stagefright/MetaData.h
+index de3fc36..30b40c8 100644
+--- a/include/media/stagefright/MetaData.h
++++ b/include/media/stagefright/MetaData.h
+@@ -26,7 +26,7 @@
+ #include <utils/KeyedVector.h>
+ #include <utils/String8.h>
+
+-namespace android {
++namespace stagefright {
+
+ // The following keys map to int32_t data unless indicated otherwise.
+ enum {
+@@ -48,6 +48,7 @@ enum {
+ kKeyChannelCount = '#chn', // int32_t
+ kKeyChannelMask = 'chnm', // int32_t
+ kKeySampleRate = 'srte', // int32_t (audio sampling rate Hz)
++ kKeySampleSize = 'ssiz', // int32_t (sample size in bits)
+ kKeyFrameRate = 'frmR', // int32_t (video frame rate fps)
+ kKeyBitRate = 'brte', // int32_t (bps)
+ kKeyESDS = 'esds', // raw data
+@@ -266,6 +267,6 @@ private:
+ // MetaData &operator=(const MetaData &);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // META_DATA_H_
+diff --git a/include/media/stagefright/Utils.h b/include/media/stagefright/Utils.h
+index c24f612..bd70252 100644
+--- a/include/media/stagefright/Utils.h
++++ b/include/media/stagefright/Utils.h
+@@ -25,10 +25,10 @@
+ #include <system/audio.h>
+ #include <media/MediaPlayerInterface.h>
+
+-namespace android {
++namespace stagefright {
+
+ #define FOURCC(c1, c2, c3, c4) \
+- (c1 << 24 | c2 << 16 | c3 << 8 | c4)
++ ((uint32_t) c1 << 24 | c2 << 16 | c3 << 8 | c4)
+
+ uint16_t U16_AT(const uint8_t *ptr);
+ uint32_t U32_AT(const uint8_t *ptr);
+@@ -50,15 +50,6 @@ void convertMessageToMetaData(
+
+ AString MakeUserAgent();
+
+-// Convert a MIME type to a AudioSystem::audio_format
+-status_t mapMimeToAudioFormat(audio_format_t& format, const char* mime);
+-
+-// Send information from MetaData to the HAL via AudioSink
+-status_t sendMetaDataToHal(sp<MediaPlayerBase::AudioSink>& sink, const sp<MetaData>& meta);
+-
+-// Check whether the stream defined by meta can be offloaded to hardware
+-bool canOffloadStream(const sp<MetaData>& meta, bool hasVideo, bool isStreaming);
+-
+-} // namespace android
++} // namespace stagefright
+
+ #endif // UTILS_H_
+diff --git a/include/media/stagefright/foundation/AAtomizer.h b/include/media/stagefright/foundation/AAtomizer.h
+index 5f3a678..c20ea07 100644
+--- a/include/media/stagefright/foundation/AAtomizer.h
++++ b/include/media/stagefright/foundation/AAtomizer.h
+@@ -26,7 +26,7 @@
+ #include <utils/Vector.h>
+ #include <utils/threads.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct AAtomizer {
+ static const char *Atomize(const char *name);
+@@ -46,6 +46,6 @@ private:
+ DISALLOW_EVIL_CONSTRUCTORS(AAtomizer);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // A_ATOMIZER_H_
+diff --git a/include/media/stagefright/foundation/ABitReader.h b/include/media/stagefright/foundation/ABitReader.h
+index 5510b12..589e5fe 100644
+--- a/include/media/stagefright/foundation/ABitReader.h
++++ b/include/media/stagefright/foundation/ABitReader.h
+@@ -23,7 +23,7 @@
+ #include <sys/types.h>
+ #include <stdint.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct ABitReader {
+ ABitReader(const uint8_t *data, size_t size);
+@@ -49,6 +49,6 @@ private:
+ DISALLOW_EVIL_CONSTRUCTORS(ABitReader);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // A_BIT_READER_H_
+diff --git a/include/media/stagefright/foundation/ABuffer.h b/include/media/stagefright/foundation/ABuffer.h
+index 28f0aed..4fa908e 100644
+--- a/include/media/stagefright/foundation/ABuffer.h
++++ b/include/media/stagefright/foundation/ABuffer.h
+@@ -24,7 +24,7 @@
+ #include <media/stagefright/foundation/ABase.h>
+ #include <utils/RefBase.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct AMessage;
+
+@@ -66,6 +66,6 @@ private:
+ DISALLOW_EVIL_CONSTRUCTORS(ABuffer);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // A_BUFFER_H_
+diff --git a/include/media/stagefright/foundation/ADebug.h b/include/media/stagefright/foundation/ADebug.h
+index 450dcfe..a58d951 100644
+--- a/include/media/stagefright/foundation/ADebug.h
++++ b/include/media/stagefright/foundation/ADebug.h
+@@ -24,7 +24,7 @@
+ #include <media/stagefright/foundation/AString.h>
+ #include <utils/Log.h>
+
+-namespace android {
++namespace stagefright {
+
+ #define LITERAL_TO_STRING_INTERNAL(x) #x
+ #define LITERAL_TO_STRING(x) LITERAL_TO_STRING_INTERNAL(x)
+@@ -80,7 +80,7 @@ MAKE_COMPARATOR(GT,>)
+ __FILE__ ":" LITERAL_TO_STRING(__LINE__) \
+ " Should not be here.");
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // A_DEBUG_H_
+
+diff --git a/include/media/stagefright/foundation/AHandler.h b/include/media/stagefright/foundation/AHandler.h
+index b008b54..5a5ecc2 100644
+--- a/include/media/stagefright/foundation/AHandler.h
++++ b/include/media/stagefright/foundation/AHandler.h
+@@ -21,7 +21,7 @@
+ #include <media/stagefright/foundation/ALooper.h>
+ #include <utils/RefBase.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct AMessage;
+
+@@ -51,6 +51,6 @@ private:
+ DISALLOW_EVIL_CONSTRUCTORS(AHandler);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // A_HANDLER_H_
+diff --git a/include/media/stagefright/foundation/AString.h b/include/media/stagefright/foundation/AString.h
+index 0f8f1e1..8f97ed4 100644
+--- a/include/media/stagefright/foundation/AString.h
++++ b/include/media/stagefright/foundation/AString.h
+@@ -20,7 +20,7 @@
+
+ #include <sys/types.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct AString {
+ AString();
+@@ -89,7 +89,7 @@ private:
+
+ AString StringPrintf(const char *format, ...);
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // A_STRING_H_
+
+diff --git a/include/media/stagefright/foundation/hexdump.h b/include/media/stagefright/foundation/hexdump.h
+index 8360c5a..18172f7 100644
+--- a/include/media/stagefright/foundation/hexdump.h
++++ b/include/media/stagefright/foundation/hexdump.h
+@@ -20,7 +20,7 @@
+
+ #include <sys/types.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct AString;
+
+@@ -28,6 +28,6 @@ void hexdump(
+ const void *_data, size_t size,
+ size_t indent = 0, AString *appendTo = NULL);
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // HEXDUMP_H_
+diff --git a/media/libstagefright/DataSource.cpp b/media/libstagefright/DataSource.cpp
+index fc6fd9c..c65a69e 100644
+--- a/media/libstagefright/DataSource.cpp
++++ b/media/libstagefright/DataSource.cpp
+@@ -20,30 +20,12 @@
+ #include "include/chromium_http_stub.h"
+ #endif
+
+-#include "include/AACExtractor.h"
+-#include "include/DRMExtractor.h"
+-#include "include/FLACExtractor.h"
+-#include "include/HTTPBase.h"
+-#include "include/MP3Extractor.h"
+-#include "include/MPEG2PSExtractor.h"
+-#include "include/MPEG2TSExtractor.h"
+ #include "include/MPEG4Extractor.h"
+-#include "include/NuCachedSource2.h"
+-#include "include/OggExtractor.h"
+-#include "include/WAVExtractor.h"
+-#include "include/WVMExtractor.h"
+
+-#include "matroska/MatroskaExtractor.h"
+-
+-#include <media/stagefright/foundation/AMessage.h>
+ #include <media/stagefright/DataSource.h>
+-#include <media/stagefright/FileSource.h>
+ #include <media/stagefright/MediaErrors.h>
+-#include <utils/String8.h>
+-
+-#include <cutils/properties.h>
+
+-namespace android {
++namespace stagefright {
+
+ bool DataSource::getUInt16(off64_t offset, uint16_t *x) {
+ *x = 0;
+@@ -105,6 +87,8 @@ status_t DataSource::getSize(off64_t *size) {
+
+ ////////////////////////////////////////////////////////////////////////////////
+
++#if 0
++
+ Mutex DataSource::gSnifferMutex;
+ List<DataSource::SnifferFunc> DataSource::gSniffers;
+
+@@ -226,8 +210,10 @@ sp<DataSource> DataSource::CreateFromURI(
+ return source;
+ }
+
++#endif
++
+ String8 DataSource::getMIMEType() const {
+ return String8("application/octet-stream");
+ }
+
+-} // namespace android
++} // namespace stagefright
+diff --git a/media/libstagefright/ESDS.cpp b/media/libstagefright/ESDS.cpp
+index 4a0c35c..ccf60e3 100644
+--- a/media/libstagefright/ESDS.cpp
++++ b/media/libstagefright/ESDS.cpp
+@@ -15,6 +15,7 @@
+ */
+
+ //#define LOG_NDEBUG 0
++#undef LOG_TAG
+ #define LOG_TAG "ESDS"
+ #include <utils/Log.h>
+
+@@ -22,7 +23,7 @@
+
+ #include <string.h>
+
+-namespace android {
++namespace stagefright {
+
+ ESDS::ESDS(const void *data, size_t size)
+ : mData(new uint8_t[size]),
+@@ -223,5 +224,6 @@ status_t ESDS::parseDecoderConfigDescriptor(size_t offset, size_t size) {
+ return OK;
+ }
+
+-} // namespace android
++} // namespace stagefright
+
++#undef LOG_TAG
+diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp
+index ad985ee..71a0613 100644
+--- a/media/libstagefright/MPEG4Extractor.cpp
++++ b/media/libstagefright/MPEG4Extractor.cpp
+@@ -15,6 +15,7 @@
+ */
+
+ //#define LOG_NDEBUG 0
++#undef LOG_TAG
+ #define LOG_TAG "MPEG4Extractor"
+ #include <utils/Log.h>
+
+@@ -38,7 +39,7 @@
+ #include <media/stagefright/MetaData.h>
+ #include <utils/String8.h>
+
+-namespace android {
++namespace stagefright {
+
+ class MPEG4Source : public MediaSource {
+ public:
+@@ -726,6 +727,11 @@ static bool underMetaDataPath(const Vector<uint32_t> &path) {
+ static void convertTimeToDate(int64_t time_1904, String8 *s) {
+ time_t time_1970 = time_1904 - (((66 * 365 + 17) * 24) * 3600);
+
++ if (time_1970 < 0) {
++ s->clear();
++ return;
++ }
++
+ char tmp[32];
+ strftime(tmp, sizeof(tmp), "%Y%m%dT%H%M%S.000Z", gmtime(&time_1970));
+
+@@ -1248,6 +1254,7 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) {
+ ALOGV("*** coding='%s' %d channels, size %d, rate %d\n",
+ chunk, num_channels, sample_size, sample_rate);
+ mLastTrack->meta->setInt32(kKeyChannelCount, num_channels);
++ mLastTrack->meta->setInt32(kKeySampleSize, sample_size);
+ mLastTrack->meta->setInt32(kKeySampleRate, sample_rate);
+
+ off64_t stop_offset = *offset + chunk_size;
+@@ -1652,8 +1659,9 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) {
+
+ String8 s;
+ convertTimeToDate(creationTime, &s);
+-
+- mFileMetaData->setCString(kKeyDate, s.string());
++ if (s.length()) {
++ mFileMetaData->setCString(kKeyDate, s.string());
++ }
+
+ *offset += chunk_size;
+ break;
+@@ -2278,6 +2286,10 @@ status_t MPEG4Extractor::updateAudioTrackInfoFromESDS_MPEG4Audio(
+ objectType = 32 + br.getBits(6);
+ }
+
++ if (objectType >= 1 && objectType <= 4) {
++ mLastTrack->meta->setInt32(kKeyAACProfile, objectType);
++ }
++
+ uint32_t freqIndex = br.getBits(4);
+
+ int32_t sampleRate = 0;
+@@ -3154,6 +3166,7 @@ status_t MPEG4Source::read(
+ CHECK(mBuffer != NULL);
+ mBuffer->set_range(0, size);
+ mBuffer->meta_data()->clear();
++ mBuffer->meta_data()->setInt64(kKey64BitFileOffset, offset);
+ mBuffer->meta_data()->setInt64(
+ kKeyTime, ((int64_t)cts * 1000000) / mTimescale);
+
+@@ -3276,6 +3289,7 @@ status_t MPEG4Source::read(
+ }
+
+ mBuffer->meta_data()->clear();
++ mBuffer->meta_data()->setInt64(kKey64BitFileOffset, offset);
+ mBuffer->meta_data()->setInt64(
+ kKeyTime, ((int64_t)cts * 1000000) / mTimescale);
+
+@@ -3360,6 +3374,18 @@ status_t MPEG4Source::fragmentedRead(
+ // move to next fragment
+ Sample lastSample = mCurrentSamples[mCurrentSamples.size() - 1];
+ off64_t nextMoof = mNextMoofOffset; // lastSample.offset + lastSample.size;
++
++ // If we're pointing to a sidx box then we skip it.
++ uint32_t hdr[2];
++ if (mDataSource->readAt(nextMoof, hdr, 8) < 8) {
++ return ERROR_END_OF_STREAM;
++ }
++ uint64_t chunk_size = ntohl(hdr[0]);
++ uint32_t chunk_type = ntohl(hdr[1]);
++ if (chunk_type == FOURCC('s', 'i', 'd', 'x')) {
++ nextMoof += chunk_size;
++ }
++
+ mCurrentMoofOffset = nextMoof;
+ mCurrentSamples.clear();
+ mCurrentSampleIndex = 0;
+@@ -3626,6 +3652,7 @@ static bool isCompatibleBrand(uint32_t fourcc) {
+ return false;
+ }
+
++#if 0
+ // Attempt to actually parse the 'ftyp' atom and determine if a suitable
+ // compatible brand is present.
+ // Also try to identify where this file's metadata ends
+@@ -3756,5 +3783,8 @@ bool SniffMPEG4(
+
+ return false;
+ }
++#endif
++
++} // namespace stagefright
+
+-} // namespace android
++#undef LOG_TAG
+diff --git a/media/libstagefright/MediaBuffer.cpp b/media/libstagefright/MediaBuffer.cpp
+index 11b80bf..72a7174 100644
+--- a/media/libstagefright/MediaBuffer.cpp
++++ b/media/libstagefright/MediaBuffer.cpp
+@@ -29,7 +29,7 @@
+ #include <ui/GraphicBuffer.h>
+ #include <sys/atomics.h>
+
+-namespace android {
++namespace stagefright {
+
+ MediaBuffer::MediaBuffer(void *data, size_t size)
+ : mObserver(NULL),
+@@ -200,4 +200,4 @@ MediaBuffer *MediaBuffer::clone() {
+ return buffer;
+ }
+
+-} // namespace android
++} // namespace stagefright
+diff --git a/media/libstagefright/MediaBufferGroup.cpp b/media/libstagefright/MediaBufferGroup.cpp
+index 80aae51..17dc08a 100644
+--- a/media/libstagefright/MediaBufferGroup.cpp
++++ b/media/libstagefright/MediaBufferGroup.cpp
+@@ -14,6 +14,7 @@
+ * limitations under the License.
+ */
+
++#undef LOG_TAG
+ #define LOG_TAG "MediaBufferGroup"
+ #include <utils/Log.h>
+
+@@ -21,7 +22,7 @@
+ #include <media/stagefright/MediaBuffer.h>
+ #include <media/stagefright/MediaBufferGroup.h>
+
+-namespace android {
++namespace stagefright {
+
+ MediaBufferGroup::MediaBufferGroup()
+ : mFirstBuffer(NULL),
+@@ -83,4 +84,6 @@ void MediaBufferGroup::signalBufferReturned(MediaBuffer *) {
+ mCondition.signal();
+ }
+
+-} // namespace android
++} // namespace stagefright
++
++#undef LOG_TAG
+diff --git a/media/libstagefright/MediaDefs.cpp b/media/libstagefright/MediaDefs.cpp
+index b5d4e44..1f17bc0 100644
+--- a/media/libstagefright/MediaDefs.cpp
++++ b/media/libstagefright/MediaDefs.cpp
+@@ -16,7 +16,7 @@
+
+ #include <media/stagefright/MediaDefs.h>
+
+-namespace android {
++namespace stagefright {
+
+ const char *MEDIA_MIMETYPE_IMAGE_JPEG = "image/jpeg";
+
+@@ -56,4 +56,4 @@ const char *MEDIA_MIMETYPE_CONTAINER_WVM = "video/wvm";
+ const char *MEDIA_MIMETYPE_TEXT_3GPP = "text/3gpp-tt";
+ const char *MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
+
+-} // namespace android
++} // namespace stagefright
+diff --git a/media/libstagefright/MediaSource.cpp b/media/libstagefright/MediaSource.cpp
+index fd0e79c..faafe59 100644
+--- a/media/libstagefright/MediaSource.cpp
++++ b/media/libstagefright/MediaSource.cpp
+@@ -16,7 +16,7 @@
+
+ #include <media/stagefright/MediaSource.h>
+
+-namespace android {
++namespace stagefright {
+
+ MediaSource::MediaSource() {}
+
+@@ -61,4 +61,4 @@ int64_t MediaSource::ReadOptions::getLateBy() const {
+ return mLatenessUs;
+ }
+
+-} // namespace android
++} // namespace stagefright
+diff --git a/media/libstagefright/MetaData.cpp b/media/libstagefright/MetaData.cpp
+index ae6ae2d..c832c96 100644
+--- a/media/libstagefright/MetaData.cpp
++++ b/media/libstagefright/MetaData.cpp
+@@ -15,6 +15,7 @@
+ */
+
+ //#define LOG_NDEBUG 0
++#undef LOG_TAG
+ #define LOG_TAG "MetaData"
+ #include <utils/Log.h>
+
+@@ -26,7 +27,7 @@
+ #include <media/stagefright/foundation/hexdump.h>
+ #include <media/stagefright/MetaData.h>
+
+-namespace android {
++namespace stagefright {
+
+ MetaData::MetaData() {
+ }
+@@ -350,5 +351,6 @@ void MetaData::dumpToLog() const {
+ }
+ }
+
+-} // namespace android
++} // namespace stagefright
+
++#undef LOG_TAG
+diff --git a/media/libstagefright/SampleIterator.cpp b/media/libstagefright/SampleIterator.cpp
+index eae721b..767393a 100644
+--- a/media/libstagefright/SampleIterator.cpp
++++ b/media/libstagefright/SampleIterator.cpp
+@@ -14,6 +14,7 @@
+ * limitations under the License.
+ */
+
++#undef LOG_TAG
+ #define LOG_TAG "SampleIterator"
+ //#define LOG_NDEBUG 0
+ #include <utils/Log.h>
+@@ -28,7 +29,7 @@
+
+ #include "include/SampleTable.h"
+
+-namespace android {
++namespace stagefright {
+
+ SampleIterator::SampleIterator(SampleTable *table)
+ : mTable(table),
+@@ -312,5 +313,6 @@ status_t SampleIterator::findSampleTime(
+ return OK;
+ }
+
+-} // namespace android
++} // namespace stagefright
+
++#undef LOG_TAG
+diff --git a/media/libstagefright/SampleTable.cpp b/media/libstagefright/SampleTable.cpp
+index d9858d7..d2099df 100644
+--- a/media/libstagefright/SampleTable.cpp
++++ b/media/libstagefright/SampleTable.cpp
+@@ -14,6 +14,7 @@
+ * limitations under the License.
+ */
+
++#undef LOG_TAG
+ #define LOG_TAG "SampleTable"
+ //#define LOG_NDEBUG 0
+ #include <utils/Log.h>
+@@ -27,7 +28,7 @@
+ #include <media/stagefright/DataSource.h>
+ #include <media/stagefright/Utils.h>
+
+-namespace android {
++namespace stagefright {
+
+ // static
+ const uint32_t SampleTable::kChunkOffsetType32 = FOURCC('s', 't', 'c', 'o');
+@@ -827,5 +828,6 @@ uint32_t SampleTable::getCompositionTimeOffset(uint32_t sampleIndex) {
+ return mCompositionDeltaLookup->getCompositionTimeOffset(sampleIndex);
+ }
+
+-} // namespace android
++} // namespace stagefright
+
++#undef LOG_TAG
+diff --git a/media/libstagefright/Utils.cpp b/media/libstagefright/Utils.cpp
+index 4db8e80..7b7c17a 100644
+--- a/media/libstagefright/Utils.cpp
++++ b/media/libstagefright/Utils.cpp
+@@ -15,6 +15,7 @@
+ */
+
+ //#define LOG_NDEBUG 0
++#undef LOG_TAG
+ #define LOG_TAG "Utils"
+ #include <utils/Log.h>
+
+@@ -33,7 +34,7 @@
+ #include <media/stagefright/Utils.h>
+ #include <media/AudioParameter.h>
+
+-namespace android {
++namespace stagefright {
+
+ uint16_t U16_AT(const uint8_t *ptr) {
+ return ptr[0] << 8 | ptr[1];
+@@ -68,6 +69,7 @@ uint64_t hton64(uint64_t x) {
+ return ((uint64_t)htonl(x & 0xffffffff) << 32) | htonl(x >> 32);
+ }
+
++#if 0
+ status_t convertMetaDataToMessage(
+ const sp<MetaData> &meta, sp<AMessage> *format) {
+ format->clear();
+@@ -603,5 +605,8 @@ bool canOffloadStream(const sp<MetaData>& meta, bool hasVideo, bool isStreaming)
+ return AudioSystem::isOffloadSupported(info);
+ }
+
+-} // namespace android
++#endif
++
++} // namespace stagefright
+
++#undef LOG_TAG
+diff --git a/media/libstagefright/foundation/AAtomizer.cpp b/media/libstagefright/foundation/AAtomizer.cpp
+index b7b9e9f..4210cda 100644
+--- a/media/libstagefright/foundation/AAtomizer.cpp
++++ b/media/libstagefright/foundation/AAtomizer.cpp
+@@ -18,7 +18,7 @@
+
+ #include "AAtomizer.h"
+
+-namespace android {
++namespace stagefright {
+
+ // static
+ AAtomizer AAtomizer::gAtomizer;
+@@ -64,4 +64,4 @@ uint32_t AAtomizer::Hash(const char *s) {
+ return sum;
+ }
+
+-} // namespace android
++} // namespace stagefright
+diff --git a/media/libstagefright/foundation/ABitReader.cpp b/media/libstagefright/foundation/ABitReader.cpp
+index 5499c32..22850ef 100644
+--- a/media/libstagefright/foundation/ABitReader.cpp
++++ b/media/libstagefright/foundation/ABitReader.cpp
+@@ -16,9 +16,10 @@
+
+ #include "ABitReader.h"
+
++#include <log/log.h>
+ #include <media/stagefright/foundation/ADebug.h>
+
+-namespace android {
++namespace stagefright {
+
+ ABitReader::ABitReader(const uint8_t *data, size_t size)
+ : mData(data),
+@@ -99,4 +100,4 @@ const uint8_t *ABitReader::data() const {
+ return mData - (mNumBitsLeft + 7) / 8;
+ }
+
+-} // namespace android
++} // namespace stagefright
+diff --git a/media/libstagefright/foundation/ABuffer.cpp b/media/libstagefright/foundation/ABuffer.cpp
+index 6173db4..53f5ebc 100644
+--- a/media/libstagefright/foundation/ABuffer.cpp
++++ b/media/libstagefright/foundation/ABuffer.cpp
+@@ -20,7 +20,7 @@
+ #include "ALooper.h"
+ #include "AMessage.h"
+
+-namespace android {
++namespace stagefright {
+
+ ABuffer::ABuffer(size_t capacity)
+ : mData(malloc(capacity)),
+@@ -72,5 +72,5 @@ sp<AMessage> ABuffer::meta() {
+ return mMeta;
+ }
+
+-} // namespace android
++} // namespace stagefright
+
+diff --git a/media/libstagefright/foundation/AString.cpp b/media/libstagefright/foundation/AString.cpp
+index dee786d..d06110a 100644
+--- a/media/libstagefright/foundation/AString.cpp
++++ b/media/libstagefright/foundation/AString.cpp
+@@ -23,7 +23,7 @@
+ #include "ADebug.h"
+ #include "AString.h"
+
+-namespace android {
++namespace stagefright {
+
+ // static
+ const char *AString::kEmptyString = "";
+@@ -325,7 +325,13 @@ AString StringPrintf(const char *format, ...) {
+ va_start(ap, format);
+
+ char *buffer;
++#ifdef _MSC_VER
++ int n = vsnprintf(NULL, 0, format, ap);
++ buffer = new char[n+1];
++ vsnprintf(buffer, n+1, format, ap);
++#else
+ vasprintf(&buffer, format, ap);
++#endif
+
+ va_end(ap);
+
+@@ -337,5 +343,5 @@ AString StringPrintf(const char *format, ...) {
+ return result;
+ }
+
+-} // namespace android
++} // namespace stagefright
+
+diff --git a/media/libstagefright/foundation/hexdump.cpp b/media/libstagefright/foundation/hexdump.cpp
+index a44d832..7b566eb 100644
+--- a/media/libstagefright/foundation/hexdump.cpp
++++ b/media/libstagefright/foundation/hexdump.cpp
+@@ -15,6 +15,7 @@
+ */
+
+ //#define LOG_NDEBUG 0
++#undef LOG_TAG
+ #define LOG_TAG "hexdump"
+ #include <utils/Log.h>
+
+@@ -27,7 +28,7 @@
+ #include <stdint.h>
+ #include <stdio.h>
+
+-namespace android {
++namespace stagefright {
+
+ static void appendIndent(AString *s, int32_t indent) {
+ static const char kWhitespace[] =
+@@ -90,5 +91,6 @@ void hexdump(const void *_data, size_t size, size_t indent, AString *appendTo) {
+ }
+ }
+
+-} // namespace android
++} // namespace stagefright
+
++#undef LOG_TAG
+diff --git a/media/libstagefright/id3/ID3.cpp b/media/libstagefright/id3/ID3.cpp
+index 34d671a..3aa395c 100644
+--- a/media/libstagefright/id3/ID3.cpp
++++ b/media/libstagefright/id3/ID3.cpp
+@@ -15,6 +15,7 @@
+ */
+
+ //#define LOG_NDEBUG 0
++#undef LOG_TAG
+ #define LOG_TAG "ID3"
+ #include <utils/Log.h>
+
+@@ -26,7 +27,7 @@
+ #include <utils/String8.h>
+ #include <byteswap.h>
+
+-namespace android {
++namespace stagefright {
+
+ static const size_t kMaxMetadataSize = 3 * 1024 * 1024;
+
+@@ -897,4 +898,6 @@ bool ID3::parseV1(const sp<DataSource> &source) {
+ return true;
+ }
+
+-} // namespace android
++} // namespace stagefright
++
++#undef LOG_TAG
+diff --git a/media/libstagefright/include/AMRExtractor.h b/media/libstagefright/include/AMRExtractor.h
+index 4a1c827..cdfc98e 100644
+--- a/media/libstagefright/include/AMRExtractor.h
++++ b/media/libstagefright/include/AMRExtractor.h
+@@ -21,7 +21,7 @@
+ #include <utils/Errors.h>
+ #include <media/stagefright/MediaExtractor.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct AMessage;
+ class String8;
+@@ -57,6 +57,6 @@ bool SniffAMR(
+ const sp<DataSource> &source, String8 *mimeType, float *confidence,
+ sp<AMessage> *);
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // AMR_EXTRACTOR_H_
+diff --git a/media/libstagefright/include/ESDS.h b/media/libstagefright/include/ESDS.h
+index 2f40dae..bc4c5a6 100644
+--- a/media/libstagefright/include/ESDS.h
++++ b/media/libstagefright/include/ESDS.h
+@@ -22,7 +22,7 @@
+
+ #include <media/stagefright/MediaErrors.h>
+
+-namespace android {
++namespace stagefright {
+
+ class ESDS {
+ public:
+@@ -68,5 +68,5 @@ private:
+ ESDS &operator=(const ESDS &);
+ };
+
+-} // namespace android
++} // namespace stagefright
+ #endif // ESDS_H_
+diff --git a/media/libstagefright/include/ID3.h b/media/libstagefright/include/ID3.h
+index cca83ab..cbb3bbf 100644
+--- a/media/libstagefright/include/ID3.h
++++ b/media/libstagefright/include/ID3.h
+@@ -20,7 +20,7 @@
+
+ #include <utils/RefBase.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct DataSource;
+ struct String8;
+@@ -96,7 +96,7 @@ private:
+ ID3 &operator=(const ID3 &);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // ID3_H_
+
+diff --git a/media/libstagefright/include/MPEG4Extractor.h b/media/libstagefright/include/MPEG4Extractor.h
+index bbec1c4..98818b8 100644
+--- a/media/libstagefright/include/MPEG4Extractor.h
++++ b/media/libstagefright/include/MPEG4Extractor.h
+@@ -27,7 +27,7 @@
+ #include <utils/Vector.h>
+ #include <utils/String8.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct AMessage;
+ class DataSource;
+@@ -129,6 +129,6 @@ bool SniffMPEG4(
+ const sp<DataSource> &source, String8 *mimeType, float *confidence,
+ sp<AMessage> *);
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // MPEG4_EXTRACTOR_H_
+diff --git a/media/libstagefright/include/SampleIterator.h b/media/libstagefright/include/SampleIterator.h
+index b5a043c..a4d52fe 100644
+--- a/media/libstagefright/include/SampleIterator.h
++++ b/media/libstagefright/include/SampleIterator.h
+@@ -14,9 +14,12 @@
+ * limitations under the License.
+ */
+
++#ifndef SAMPLE_ITERATOR_H_
++#define SAMPLE_ITERATOR_H_
++
+ #include <utils/Vector.h>
+
+-namespace android {
++namespace stagefright {
+
+ struct SampleTable;
+
+@@ -71,5 +74,6 @@ private:
+ SampleIterator &operator=(const SampleIterator &);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
++#endif
+diff --git a/media/libstagefright/include/SampleTable.h b/media/libstagefright/include/SampleTable.h
+index 847dff7..2a82077 100644
+--- a/media/libstagefright/include/SampleTable.h
++++ b/media/libstagefright/include/SampleTable.h
+@@ -25,7 +25,7 @@
+ #include <utils/RefBase.h>
+ #include <utils/threads.h>
+
+-namespace android {
++namespace stagefright {
+
+ class DataSource;
+ struct SampleIterator;
+@@ -148,6 +148,6 @@ private:
+ SampleTable &operator=(const SampleTable &);
+ };
+
+-} // namespace android
++} // namespace stagefright
+
+ #endif // SAMPLE_TABLE_H_