Loading include/media/mediametadataretriever.h +1 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ enum { METADATA_KEY_BITRATE = 20, METADATA_KEY_TIMED_TEXT_LANGUAGES = 21, METADATA_KEY_IS_DRM = 22, METADATA_KEY_LOCATION = 23, // Add more here... }; Loading include/media/stagefright/MetaData.h +1 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ enum { kKeyDate = 'date', // cstring kKeyWriter = 'writ', // cstring kKeyCompilation = 'cpil', // cstring kKeyLocation = 'loc ', // cstring kKeyTimeScale = 'tmsl', // int32_t // video profile and level Loading media/java/android/media/MediaMetadataRetriever.java +8 −0 Original line number Diff line number Diff line Loading @@ -458,5 +458,13 @@ public class MediaMetadataRetriever * @hide */ public static final int METADATA_KEY_IS_DRM = 22; /** * This key retrieves the location information, if available. * The location should be specified according to ISO-6709 standard, under * a mp4/3gp box "@xyz". Location with longitude of -90 degrees and latitude * of 180 degrees will be retrieved as "-90.0000+180.0000", for instance. * @hide */ public static final int METADATA_KEY_LOCATION = 23; // Add more here... } media/libstagefright/MPEG4Extractor.cpp +35 −0 Original line number Diff line number Diff line Loading @@ -1136,6 +1136,41 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { break; } // @xyz case FOURCC('\xA9', 'x', 'y', 'z'): { // Best case the total data length inside "@xyz" box // would be 8, for instance "@xyz" + "\x00\x04\x15\xc7" + "0+0/", // where "\x00\x04" is the text string length with value = 4, // "\0x15\xc7" is the language code = en, and "0+0" is a // location (string) value with longitude = 0 and latitude = 0. if (chunk_data_size < 8) { return ERROR_MALFORMED; } // Worst case the location string length would be 18, // for instance +90.0000-180.0000, without the trailing "/" and // the string length + language code. char buffer[18]; // Substracting 5 from the data size is because the text string length + // language code takes 4 bytes, and the trailing slash "/" takes 1 byte. off64_t location_length = chunk_data_size - 5; if (location_length >= (off64_t) sizeof(buffer)) { return ERROR_MALFORMED; } if (mDataSource->readAt( data_offset + 4, buffer, location_length) < location_length) { return ERROR_IO; } buffer[location_length] = '\0'; mFileMetaData->setCString(kKeyLocation, buffer); *offset += chunk_size; break; } case FOURCC('e', 's', 'd', 's'): { if (chunk_data_size < 4) { Loading media/libstagefright/StagefrightMetadataRetriever.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -418,6 +418,7 @@ void StagefrightMetadataRetriever::parseMetaData() { { kKeyYear, METADATA_KEY_YEAR }, { kKeyWriter, METADATA_KEY_WRITER }, { kKeyCompilation, METADATA_KEY_COMPILATION }, { kKeyLocation, METADATA_KEY_LOCATION }, }; static const size_t kNumMapEntries = sizeof(kMap) / sizeof(kMap[0]); Loading Loading
include/media/mediametadataretriever.h +1 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ enum { METADATA_KEY_BITRATE = 20, METADATA_KEY_TIMED_TEXT_LANGUAGES = 21, METADATA_KEY_IS_DRM = 22, METADATA_KEY_LOCATION = 23, // Add more here... }; Loading
include/media/stagefright/MetaData.h +1 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ enum { kKeyDate = 'date', // cstring kKeyWriter = 'writ', // cstring kKeyCompilation = 'cpil', // cstring kKeyLocation = 'loc ', // cstring kKeyTimeScale = 'tmsl', // int32_t // video profile and level Loading
media/java/android/media/MediaMetadataRetriever.java +8 −0 Original line number Diff line number Diff line Loading @@ -458,5 +458,13 @@ public class MediaMetadataRetriever * @hide */ public static final int METADATA_KEY_IS_DRM = 22; /** * This key retrieves the location information, if available. * The location should be specified according to ISO-6709 standard, under * a mp4/3gp box "@xyz". Location with longitude of -90 degrees and latitude * of 180 degrees will be retrieved as "-90.0000+180.0000", for instance. * @hide */ public static final int METADATA_KEY_LOCATION = 23; // Add more here... }
media/libstagefright/MPEG4Extractor.cpp +35 −0 Original line number Diff line number Diff line Loading @@ -1136,6 +1136,41 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { break; } // @xyz case FOURCC('\xA9', 'x', 'y', 'z'): { // Best case the total data length inside "@xyz" box // would be 8, for instance "@xyz" + "\x00\x04\x15\xc7" + "0+0/", // where "\x00\x04" is the text string length with value = 4, // "\0x15\xc7" is the language code = en, and "0+0" is a // location (string) value with longitude = 0 and latitude = 0. if (chunk_data_size < 8) { return ERROR_MALFORMED; } // Worst case the location string length would be 18, // for instance +90.0000-180.0000, without the trailing "/" and // the string length + language code. char buffer[18]; // Substracting 5 from the data size is because the text string length + // language code takes 4 bytes, and the trailing slash "/" takes 1 byte. off64_t location_length = chunk_data_size - 5; if (location_length >= (off64_t) sizeof(buffer)) { return ERROR_MALFORMED; } if (mDataSource->readAt( data_offset + 4, buffer, location_length) < location_length) { return ERROR_IO; } buffer[location_length] = '\0'; mFileMetaData->setCString(kKeyLocation, buffer); *offset += chunk_size; break; } case FOURCC('e', 's', 'd', 's'): { if (chunk_data_size < 4) { Loading
media/libstagefright/StagefrightMetadataRetriever.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -418,6 +418,7 @@ void StagefrightMetadataRetriever::parseMetaData() { { kKeyYear, METADATA_KEY_YEAR }, { kKeyWriter, METADATA_KEY_WRITER }, { kKeyCompilation, METADATA_KEY_COMPILATION }, { kKeyLocation, METADATA_KEY_LOCATION }, }; static const size_t kNumMapEntries = sizeof(kMap) / sizeof(kMap[0]); Loading