Add 360 content feature 37/71537/2 accepted/tizen/common/20160531.141838 accepted/tizen/ivi/20160602.022044 accepted/tizen/mobile/20160602.022121 accepted/tizen/tv/20160602.021903 accepted/tizen/wearable/20160602.022015 submit/tizen/20160530.013417
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 26 May 2016 00:43:19 +0000 (09:43 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Fri, 27 May 2016 01:42:22 +0000 (10:42 +0900)
Change-Id: I73ea6c702822d22af36caf4d241117eec3c18aa2
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
include/mm_file.h
include/mm_file_formats.h
mm_file.c
packaging/libmm-fileinfo.spec
utils/mm_file_util_tag.c

index 34e8752..1711739 100755 (executable)
@@ -102,6 +102,7 @@ extern "C" {
 #define        MM_FILE_TAG_CDIS                        "tag-cdis"                              /**< CDIS in User Data Information*/
 #define        MM_FILE_TAG_SMTA                        "tag-smta"                              /**< SMTA in User Data Information*/
 
+#define        MM_FILE_TAG_360                 "tag-360"                       /**< 360 content in User Data Information*/
 
 
 /**
index 273b023..bc1794c 100755 (executable)
@@ -150,6 +150,7 @@ struct _MMFileFormatContext {
        int syncLyricsNum;
        int cdis;
        int smta;
+       int is_360;
 
        /* private data */
        void *privateFormatData;
index 2800c0f..990ae98 100755 (executable)
--- a/mm_file.c
+++ b/mm_file.c
@@ -124,6 +124,7 @@ static mmf_attrs_construct_info_t g_tag_attrs[] = {
        {(char *)"tag-rotate",                  MMF_VALUE_TYPE_STRING,  MM_ATTRS_FLAG_RW, (void *)NULL},
        {(char *)"tag-cdis",                    MMF_VALUE_TYPE_INT,             MM_ATTRS_FLAG_RW, (void *)0},
        {(char *)"tag-smta",                    MMF_VALUE_TYPE_INT,             MM_ATTRS_FLAG_RW, (void *)0},
+       {(char *)"tag-360",                     MMF_VALUE_TYPE_INT,             MM_ATTRS_FLAG_RW, (void *)0},
 };
 
 static mmf_attrs_construct_info_t g_content_attrs[] = {
@@ -309,6 +310,8 @@ _info_set_attr_media(mmf_attrs_t *attrs, MMFileFormatContext *formatContext)
                mm_attrs_set_int_by_name(hattrs, MM_FILE_TAG_CDIS, formatContext->cdis);
                mm_attrs_set_int_by_name(hattrs, MM_FILE_TAG_SMTA, formatContext->smta);
 
+               mm_attrs_set_int_by_name(hattrs, MM_FILE_TAG_360, formatContext->is_360);
+
                if ((formatContext->syncLyricsNum > 0) && (formatContext->syncLyrics))
                        mm_attrs_set_data_by_name(hattrs, MM_FILE_TAG_SYNCLYRICS, formatContext->syncLyrics, formatContext->syncLyricsNum);
 
index 2e0c4a1..ec261d0 100755 (executable)
@@ -1,6 +1,6 @@
 Name:      libmm-fileinfo
 Summary:    Media Fileinfo
-Version:    0.6.43
+Version:    0.6.44
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index b85f80e..06b1a5f 100755 (executable)
@@ -1432,6 +1432,34 @@ EXPORT_API int MMFileUtilGetMetaDataFromMP4(MMFileFormatContext *formatContext)
                                        GetTagFromMetaBox(formatContext, fp, &basic_header);
                                        break;
                                }
+
+                       case FOURCC('t', 'r', 'a', 'k'): {
+#ifdef __MMFILE_TEST_MODE__
+                                       debug_msg("MPEG4: [trak] SIZE: [%d]Byte\n", basic_header.size);
+#endif
+                                       break;
+                               }
+                       case FOURCC('u', 'u', 'i', 'd'): {
+#ifdef __MMFILE_TEST_MODE__
+                                       debug_msg("MPEG4: [uuid] SIZE: [%d]Byte\n", basic_header.size);
+#endif
+                                       if (!formatContext->is_360) {
+                                               unsigned long uuid[4] = {0, };
+
+                                               mmfile_read(fp, (unsigned char *)uuid, sizeof(uuid));
+
+                                               if (mmfile_io_be_uint32(uuid[0]) == 0xffcc8263
+                                                       && mmfile_io_be_uint32(uuid[1]) == 0xf8554a93
+                                                       && mmfile_io_be_uint32(uuid[2]) == 0x8814587a
+                                                       && mmfile_io_be_uint32(uuid[3]) == 0x02521fdd) {
+                                                       formatContext->is_360 = 1;
+                                               }
+                                               ret = mmfile_seek(fp, basic_header.start_offset + basic_header.size, SEEK_SET);
+                                       }
+
+                                       break;
+                               }
+
                        default: {
 #ifdef __MMFILE_TEST_MODE__
                                        debug_msg("4CC: Not Support.. so skip it\n");