lib_LTLIBRARIES = libmmffile.la
noinst_HEADERS = include/mm_file_codecs.h \
- include/mm_file_formats.h
+ include/mm_file_formats.h \
+ include/mm_file_format_frame.h
libmmffile_la_SOURCES = mm_file.c
///////////////////////////////////////////////////////////////////////////////////////////////////
// Declare the global variables and registers and Internal Funntions
//-------------------------------------------------------------------------------------------------
-#define MEDIA_PATH "/opt/media/Sounds and music/Music/Over the horizon.mp3"
#define TEST_API "mm_file_create_content_attrs_from_memory"
// Declare the global variables and registers and Internal Funntions
//-------------------------------------------------------------------------------------------------
#define TEST_API "mm_file_create_content_attrs"
-#define MEDIA_PATH "/opt/media/Sounds and music/Music/Over the horizon.mp3"
///////////////////////////////////////////////////////////////////////////////////////////////////
/* Initialize TCM data structures */
#include "utc_mm_fileinfo_common.h"
-#define MEDIA_PATH "/opt/media/Images and videos/My video clips/Helicopter.mp4"
#define TEST_API "mm_file_create_content_attrs_simple"
///////////////////////////////////////////////////////////////////////////////////////////////////
// Declare the global variables and registers and Internal Funntions
//-------------------------------------------------------------------------------------------------
-#define MEDIA_PATH "/opt/media/Sounds and music/Music/Over the horizon.mp3"
#define TEST_API "mm_file_create_tag_attrs_from_memory"
#define READ_FROM_FILE(FILE_PATH, data, size) \
// Declare the global variables and registers and Internal Funntions
//-------------------------------------------------------------------------------------------------
-#define MEDIA_PATH "/opt/media/Sounds and music/Music/Over the horizon.mp3"
#define TEST_API "mm_file_create_tag_attrs"
///////////////////////////////////////////////////////////////////////////////////////////////////
// Declare the global variables and registers and Internal Funntions\r
//-------------------------------------------------------------------------------------------------\r
\r
-#define MEDIA_PATH "/opt/media/Sounds and music/Music/Over the horizon.mp3"\r
#define TEST_API "mm_file_destroy_content_attrs"\r
\r
struct tet_testlist tet_testlist[] = {\r
// Declare the global variables and registers and Internal Funntions\r
//-------------------------------------------------------------------------------------------------\r
\r
-#define MEDIA_PATH "/opt/media/Sounds and music/Music/Over the horizon.mp3"\r
#define TEST_API "mm_file_destroy_tag_attrs"\r
\r
///////////////////////////////////////////////////////////////////////////////////////////////////\r
///////////////////////////////////////////////////////////////////////////////////////////////////\r
// Declare the global variables and registers and Internal Funntions\r
//-------------------------------------------------------------------------------------------------\r
-#define MEDIA_PATH "/opt/media/Sounds and music/Music/Over the horizon.mp3"\r
#define TEST_API "mm_file_get_attrs"\r
\r
///////////////////////////////////////////////////////////////////////////////////////////////////\r
// Declare the global variables and registers and Internal Funntions
//-------------------------------------------------------------------------------------------------
-#define MEDIA_PATH "/opt/media/Images and videos/My video clips/Helicopter.mp4"
-#define MEDIA_PATH2 "/opt/media/Sounds and music/Music/Over the horizon.mp3"
#define TEST_API "mm_file_get_stream_info"
///////////////////////////////////////////////////////////////////////////////////////////////////
int audio_stream_num = 0;
int video_stream_num = 0;
- err = mm_file_get_stream_info(MEDIA_PATH,&audio_stream_num,&video_stream_num);
+ err = mm_file_get_stream_info(MEDIA_PATH2,&audio_stream_num,&video_stream_num);
dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err);
dts_check_eq (TEST_API, audio_stream_num, 1);
dts_check_eq (TEST_API, video_stream_num, 1);
int audio_stream_num = 0;
int video_stream_num = 0;
- err = mm_file_get_stream_info(MEDIA_PATH2,&audio_stream_num,&video_stream_num);
+ err = mm_file_get_stream_info(MEDIA_PATH,&audio_stream_num,&video_stream_num);
dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err);
dts_check_eq (TEST_API, audio_stream_num, 1);
dts_check_eq (TEST_API, video_stream_num, 0);
int err = 0 ;
int video_stream_num =0;
- err = mm_file_get_stream_info(MEDIA_PATH, NULL, &video_stream_num);
+ err = mm_file_get_stream_info(MEDIA_PATH2, NULL, &video_stream_num);
dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err);
}
{
int err = 0 ;
- err = mm_file_get_stream_info(MEDIA_PATH,NULL,NULL);
+ err = mm_file_get_stream_info(MEDIA_PATH2,NULL,NULL);
dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err);
}
#include <tet_api.h>
#include <unistd.h>
+#define MEDIA_PATH "/opt/media/Music/Over the horizon.mp3"
+#define MEDIA_PATH2 "/opt/media/Videos/Helicopter.mp4"
+
+
void startup();
void cleanup();
esac
],[USE_DRM=yes])
if test "x$USE_DRM" = "xyes"; then
- PKG_CHECK_MODULES(DRMSERVICE, drm-service)
- AC_SUBST(DRMSERVICE_CFLAGS)
- AC_SUBST(DRMSERVICE_LIBS)
+ PKG_CHECK_MODULES(DRMCLIENT, drm-client)
+ AC_SUBST(DRMCLIENT_CFLAGS)
+ AC_SUBST(DRMCLIENT_LIBS)
fi
AM_CONDITIONAL(USE_DRM, test "x$USE_DRM" = "xyes")
+libmm-fileinfo (0.5.0-11) unstable; urgency=low
+
+ * increase retry search count when make video thumbnail
+ * Git : slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.5.0-11
+
+ -- Haejeong Kim <backto.kim@samsung.com> Thu, 16 Aug 2012 18:03:16 +0900
+
+libmm-fileinfo (0.5.0-10) unstable; urgency=low
+
+ * increase retry search count when make video thumbnail
+ * Git : slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.5.0-10
+
+ -- Haejeong Kim <backto.kim@samsung.com> Mon, 13 Aug 2012 18:04:50 +0900
+
+libmm-fileinfo (0.5.0-9) unstable; urgency=low
+
+ * duration bug fix (temporary)
+ * extract metadata eventhough no file extension
+ * merger from old git
+ * Git : slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.5.0-9
+
+ -- Haejeong Kim <backto.kim@samsung.com> Wed, 08 Aug 2012 17:18:20 +0900
+
+libmm-fileinfo (0.5.0-8) unstable; urgency=low
+
+ * version up
+ * merger from old git
+ * Git : slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.5.0-8
+
+ -- root <backto.kim@samsung.com> Tue, 07 Aug 2012 15:40:46 +0900
+
+libmm-fileinfo (0.5.0-7) unstable; urgency=low
+
+ * bug fix of parsing mmf
+ * Git : slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.5.0-7
+
+ -- Haejeong Kim <backto.kim@samsung.com> Thu, 26 Jul 2012 14:05:10 +0900
+
+libmm-fileinfo (0.5.0-6) unstable; urgency=low
+
+ * fix get iTunes meta data
+ * Git : slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.5.0-6
+
+ -- Haejeong Kim <backto.kim@samsung.com> Wed, 13 Jun 2012 17:21:03 +0900
+
+libmm-fileinfo (0.5.0-5) unstable; urgency=low
+
+ * bug fix of protocol for FFMpeg
+ * modify test code
+ * Git : slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.5.0-5
+
+ -- Haejeong Kim <backto.kim@samsung.com> Thu, 07 Jun 2012 12:26:59 +0900
+
+libmm-fileinfo (0.5.0-4) unstable; urgency=low
+
+ * apply new DRM Service
+ * Git : slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.5.0-4
+
+ -- Haejeong Kim <backto.kim@samsung.com> Tue, 22 May 2012 13:38:31 +0900
+
+libmm-fileinfo (0.5.0-3) unstable; urgency=low
+
+ * TYER(year) and TRDA are replaced by the TDRC in id3tag v2.4
+ * bug fix of extract copyright, genre, description, tracknumber
+ * fix TC fail
+ * Git : slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.5.0-3
+
+ -- Haejeong Kim <backto.kim@samsung.com> Fri, 08 Feb 2012 12:58:32 +0900
+
libmm-fileinfo (0.5.0-2) unstable; urgency=low
- * Initial Release
- * Git : pkgs/l/libmm-fileinfo
+ * link libld library
+ * code clean up
+ * Tizen Open Tag - libmm-fileinfo_0.5.0-2
+ * Git : slp/pkgs/l/libmm-fileinfo
* Tag : libmm-fileinfo_0.5.0-2
- -- Haejeong Kim <backto.kim@samsung.com> Wed, 07 Dec 2011 12:03:48 +0900
+ -- Haejeong Kim <backto.kim@samsung.com> Tue, 03 Jan 2012 17:03:09 +0900
+
+libmm-fileinfo (0.5.0-1) unstable; urgency=low
+
+ * using extracted metadata by ffmpeg
+ * Git : slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.5.0-1
+
+ -- Haejeong Kim <backto.kim@samsung.com> Fri, 30 Dec 2011 14:11:39 +0900
+
+libmm-fileinfo (0.4.0-6) unstable; urgency=low
+
+ * add code for check lyric size
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.4.0-6
+
+ -- Haejeong Kim <backto.kim@samsung.com> Thu, 08 Dec 2011 12:36:31 +0900
+
+libmm-fileinfo (0.4.0-5) unstable; urgency=low
+
+ * apply changed ffmpeg library. ffmpeg library changed to .so
+ * code clean up for SDK release
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.4.0-5
+
+ -- Haejeong Kim <backto.kim@samsung.com> Mon, 06 Dec 2011 18:03:48 +0900
+
+libmm-fileinfo (0.4.0-4) unstable; urgency=low
+
+ * resolution bug fix.
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.4.0-4
+
+ -- Haejeong Kim <backto.kim@samsung.com> Thu, 24 Nov 2011 18:17:24 +0900
+
+libmm-fileinfo (0.4.0-3) unstable; urgency=low
+
+ * add code for getting Recording date(ID3tag)
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.4.0-3
+
+ -- Haejeong Kim <backto.kim@samsung.com> Fri, 11 Nov 2011 14:18:43 +0900
+
+libmm-fileinfo (0.4.0-2) unstable; urgency=low
+
+ * fix prevent defect
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.4.0-2
+
+ -- Haejeong Kim <backto.kim@samsung.com> Mon, 07 Nov 2011 12:39:31 +0900
+
+libmm-fileinfo (0.4.0-1) unstable; urgency=low
+
+ * Add code for get SYLT
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.4.0-1
+
+ -- Haejeong Kim <backto.kim@samsung.com> Thu, 03 Nov 2011 16:13:11 +0900
+
+libmm-fileinfo (0.4.0-0) unstable; urgency=low
+
+ * apply new FFMPEG_0.8.5
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.4.0-0
+
+ -- Haejeong Kim <backto.kim@samsung.com> Fri, 28 Oct 2011 12:51:47 +0900
+
+libmm-fileinfo (0.3.2-4) unstable; urgency=low
+
+ * add code for get albumart mime type
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.3.2-4
+
+ -- Haejeong Kim <backto.kim@samsung.com> Mon, 24 Oct 2011 11:04:11 +0900
+
+libmm-fileinfo (0.3.2-3) unstable; urgency=low
+
+ * add code for extracting SYLT(synclyrics)
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.3.2-3
+
+ -- Haejeong Kim <backto.kim@samsung.com> Thu, 13 Oct 2011 12:49:34 +0900
+
+libmm-fileinfo (0.3.2-2) unstable; urgency=low
+
+ * add code for extracting USLT(Unsynclyrics)
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.3.2-2
+
+ -- Haejeong Kim <backto.kim@samsung.com> Wed, 12 Oct 2011 13:09:13 +0900
+
+libmm-fileinfo (0.3.2-1) unstable; urgency=low
+
+ * Fix TC (update content path)
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.3.2-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 06 Oct 2011 20:12:22 +0900
+
+libmm-fileinfo (0.3.2-0) unstable; urgency=low
+
+ * Enhance error handling in imy parsing
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.3.2-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 27 Sep 2011 14:55:21 +0900
+
+libmm-fileinfo (0.3.1-0) unstable; urgency=low
+
+ * Disable iTunes meta parsing
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.3.1-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 26 Sep 2011 13:17:33 +0900
+
+libmm-fileinfo (0.3.0-0) unstable; urgency=low
+
+ * Reupload due to ffmpeg update (VC-1 decoder enable)
+ * Disable iTunes meta parsing
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.3.0-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 16 Sep 2011 12:02:02 +0900
+
+libmm-fileinfo (0.2.9-2) unstable; urgency=low
+
+ * Remove GTK dependancy
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.9-2
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 06 Sep 2011 17:52:30 +0900
+
+libmm-fileinfo (0.2.9-1) unstable; urgency=low
+
+ * reupload for ffmpeg update
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.9-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 30 Aug 2011 11:14:27 +0900
+
+libmm-fileinfo (0.2.9-0) unstable; urgency=low
+
+ * Remove GPL code (thumbnail)
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.9-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 26 Aug 2011 13:31:33 +0900
+
+libmm-fileinfo (0.2.8-0) unstable; urgency=low
+
+ * Fix for prevent
+ * update for storage path changed
+ * add build option. (enanble-gtk, disable-gtk)
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.8-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 22 Aug 2011 14:54:56 +0900
+
+libmm-fileinfo (0.2.7-15) unstable; urgency=low
+
+ * Code cleanup
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-15
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 13 Jul 2011 19:43:07 +0900
+
+libmm-fileinfo (0.2.7-14) unstable; urgency=low
+
+ * Fix genre parsing
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-14
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 29 Jun 2011 12:05:54 +0900
+
+libmm-fileinfo (0.2.7-13) unstable; urgency=low
+
+ * add execstack
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-13
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 22 Jun 2011 19:48:32 +0900
+
+libmm-fileinfo (0.2.7-12) unstable; urgency=low
+
+ * Support dlopen & mmap selection (both disabled yet)
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-12
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 08 Jun 2011 16:08:56 +0900
+
+libmm-fileinfo (0.2.7-11) unstable; urgency=low
+
+ * Modify CFLAGS
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-11
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 03 May 2011 13:23:21 +0900
+
+libmm-fileinfo (0.2.7-10) unstable; urgency=low
+
+ * Reupload for drm-service update
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-10
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 07 Apr 2011 19:44:49 +0900
+
+libmm-fileinfo (0.2.7-9) unstable; urgency=low
+
+ * Fix for prevent
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-9
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 15 Feb 2011 11:44:26 +0900
+
+libmm-fileinfo (0.2.7-8) unstable; urgency=low
+
+ * Update TC
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-8
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 24 Jan 2011 15:27:58 +0900
+
+libmm-fileinfo (0.2.7-7) unstable; urgency=low
+
+ * Fix for prevent
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-7
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 19 Jan 2011 19:24:03 +0900
+
+libmm-fileinfo (0.2.7-6) unstable; urgency=low
+
+ * remove mm_attrs.h from tc common header
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-6
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Tue, 04 Jan 2011 14:05:53 +0900
+
+libmm-fileinfo (0.2.7-5) unstable; urgency=low
+
+ * Fix checking mp3 header
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-5
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 14 Dec 2010 16:08:18 +0900
+
+libmm-fileinfo (0.2.7-4) unstable; urgency=low
+
+ * Fix to return proper result
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-4
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 10 Dec 2010 13:59:26 +0900
+
+libmm-fileinfo (0.2.7-3) unstable; urgency=low
+
+ * Support file:// & Code Cleanup
+ * Git : 165.213.180.234:slp/pkgs/l/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-3
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 06 Dec 2010 14:31:08 +0900
+
+libmm-fileinfo (0.2.7-2) unstable; urgency=low
+
+ * Remove ffmpeg dependancy from dev package
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-2
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 01 Dec 2010 12:30:22 +0900
+
+libmm-fileinfo (0.2.7-1) unstable; urgency=low
+
+ * Fix for as-needed
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 24 Nov 2010 20:46:57 +0900
+
+libmm-fileinfo (0.2.7-0) unstable; urgency=low
+
+ * threats playready drm content to normal contents
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.7-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Sat, 20 Nov 2010 15:48:38 +0900
+
+libmm-fileinfo (0.2.6-1) unstable; urgency=low
+
+ * Add fPIC, hash-style
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.6-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 19 Nov 2010 12:05:54 +0900
+
+libmm-fileinfo (0.2.6-0) unstable; urgency=low
+
+ * Fix bugs in tag attr memory api
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.6-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Sat, 13 Nov 2010 12:49:04 +0900
+
+libmm-fileinfo (0.2.5-0) unstable; urgency=low
+
+ * Remove aricent code & sconscript
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.5-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 10 Nov 2010 15:38:52 +0900
+
+libmm-fileinfo (0.2.4-0) unstable; urgency=low
+
+ * Implement matroska header check function.
+ * Check QT header with MP4 header check function.
+ * Enable gtk view on thumbnail testsuite
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.4-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 09 Nov 2010 11:06:48 +0900
+
+libmm-fileinfo (0.2.3-0) unstable; urgency=low
+
+ * Support iTunes artist tag in mp4
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.3-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 28 Oct 2010 15:38:41 +0900
+
+libmm-fileinfo (0.2.2-0) unstable; urgency=low
+
+ * Support iTunes genre tag in mp4
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.2-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 27 Oct 2010 18:03:17 +0900
+
+libmm-fileinfo (0.2.1-1) unstable; urgency=low
+
+ * Revise doxygen comment
+ * Revise COPYRIGHT
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.1-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Sat, 23 Oct 2010 16:58:05 +0900
+
+libmm-fileinfo (0.2.1-0) unstable; urgency=low
+
+ * 1. Support id3 tag extented header skip
+ * 2. Fix offset calculation when no explicit MIME type in APIC tag
+ * 3. Update doxygen
+ * Tag : libmm-fileinfo_0.2.1-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 20 Oct 2010 16:48:46 +0900
+
+libmm-fileinfo (0.2.0-0) unstable; urgency=low
+
+ * add api to get attributes and rename
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.2.0-0
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Fri, 15 Oct 2010 17:06:29 +0900
+
+libmm-fileinfo (0.1.4-19) unstable; urgency=low
+
+ * add TCs and modify attrs api
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.1.4-19
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Wed, 29 Sep 2010 13:17:32 +0900
+
+libmm-fileinfo (0.1.4-18) unstable; urgency=low
+
+ * fix build error
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.1.4-18
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Sat, 18 Sep 2010 18:30:45 +0900
+
+libmm-fileinfo (0.1.4-17) unstable; urgency=low
+
+ * remove mm_attrs.h from header
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.1.4-17
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Sat, 18 Sep 2010 18:24:03 +0900
+
+libmm-fileinfo (0.1.4-16) unstable; urgency=low
+
+ :*
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Sat, 18 Sep 2010 15:35:10 +0900
+
+libmm-fileinfo (0.1.4-15) unstable; urgency=low
+
+ * update control
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.1.4-15
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Fri, 17 Sep 2010 12:19:26 +0900
+
+libmm-fileinfo (0.1.4-14) unstable; urgency=low
+
+ * Add common-internal-dev dependency
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.1.4-14
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Fri, 17 Sep 2010 12:14:27 +0900
+
+libmm-fileinfo (0.1.4-13) unstable; urgency=low
+
+ * Repackaging for EFL update
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.1.4-13
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Sat, 11 Sep 2010 09:56:17 +0900
+
+libmm-fileinfo (0.1.4-12) unstable; urgency=low
+
+ * Repackage for drm-service update
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.1.4-12
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 02 Sep 2010 17:15:31 +0900
+
+libmm-fileinfo (0.1.4-11) unstable; urgency=low
+
+ * Repackage for db-util update
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.1.4-11
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 31 Aug 2010 18:55:59 +0900
+
+ * remove useless Depends pkgs
+ * Git : 165.213.180.234:/git/slp/pkgs/libmm-fileinfo
+ * Tag : libmm-fileinfo_0.1.4-10
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Thu, 12 Aug 2010 17:55:13 +0900
+
+libmm-fileinfo (0.1.4-9) unstable; urgency=low
+
+ * apply doxygen policy to generate doc
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.4-9
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Mon, 05 Jul 2010 14:29:57 +0900
+
+libmm-fileinfo (0.1.4-8) unstable; urgency=low
+
+ * remove old dlog dependency
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.4-8
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Fri, 25 Jun 2010 19:26:57 +0900
+
+libmm-fileinfo (0.1.4-7) unstable; urgency=low
+
+ * Reupload for mm-log update
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.4-7
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 17 Jun 2010 13:52:43 +0900
+
+libmm-fileinfo (0.1.4-6) unstable; urgency=low
+
+ * Reuploading to use new dlog
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.4-6
+
+ -- Heungsoon Rim <hs06.rim@samsung.com> Wed, 16 Jun 2010 10:13:30 +0900
+
+libmm-fileinfo (0.1.4-5) unstable; urgency=low
+
+ * Remove mhal from depends
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.4-5
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 15 Jun 2010 19:30:32 +0900
+
+libmm-fileinfo (0.1.4-4) unstable; urgency=low
+
+ * Reupload for mm-log update
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.4-4
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 15 Jun 2010 19:01:10 +0900
+
+libmm-fileinfo (0.1.4-3) unstable; urgency=low
+
+ * Remove DEPRECATED define
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.4-3
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 11 Jun 2010 17:07:51 +0900
+
+libmm-fileinfo (0.1.4-2) unstable; urgency=low
+
+ * Repackaging for ffmpeg update (dv demuxer enable)
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.4-2
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 07 Jun 2010 12:28:38 +0900
+
+libmm-fileinfo (0.1.4-1) unstable; urgency=low
+
+ * Repackaging
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.4-1
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Fri, 04 Jun 2010 00:52:57 +0900
+
+libmm-fileinfo (0.1.4-0) unstable; urgency=low
+
+ * Remove old style APIs
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.4-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 03 Jun 2010 21:18:33 +0900
+
+libmm-fileinfo (0.1.3-11) unstable; urgency=low
+
+ * Replace folat type of attribute as double
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-11
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com> Sun, 30 May 2010 00:52:45 +0900
+
+libmm-fileinfo (0.1.3-10) unstable; urgency=low
+
+ * Reupload
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-10
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com> Sat, 29 May 2010 14:05:08 +0900
+
+libmm-fileinfo (0.1.3-9) unstable; urgency=low
+
+ * Use sync() instead of system()
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-9
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 24 May 2010 16:36:06 +0900
+
+libmm-fileinfo (0.1.3-8) unstable; urgency=low
+
+ * Add libmm-mhal-sdk-dev to dev depend
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-8
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 12 May 2010 13:25:59 +0900
+
+libmm-fileinfo (0.1.3-7) unstable; urgency=low
+
+ * Remove missing postinst
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-7
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 11 May 2010 21:14:02 +0900
+
+libmm-fileinfo (0.1.3-6) unstable; urgency=low
+
+ * Remove postinst & Remove MHAL dependancy
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-6
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 11 May 2010 15:57:53 +0900
+
+libmm-fileinfo (0.1.3-5) unstable; urgency=low
+
+ * Revert to install *.la
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-5
+
+ -- Jeon Hee Chul <heechul.jeon@samsung.com> Tue, 04 May 2010 09:39:50 +0900
+
+libmm-fileinfo (0.1.3-4) unstable; urgency=low
+
+ * Change debian/control & exclude .la
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-4
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 03 May 2010 21:04:27 +0900
+
+libmm-fileinfo (0.1.3-3) unstable; urgency=low
+
+ * Add posix style API & Remove unused #ifdef
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-3
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 03 May 2010 12:44:20 +0900
+
+libmm-fileinfo (0.1.3-2) unstable; urgency=low
+
+ * Add postinst
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-2
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 20 Apr 2010 21:42:23 +0900
+
+libmm-fileinfo (0.1.3-1) unstable; urgency=low
+
+ * Repackage for mm-log update
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 14 Apr 2010 23:07:07 +0900
+
+libmm-fileinfo (0.1.3-0) unstable; urgency=low
+
+ * Check for OMA DRM
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.3-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 13 Apr 2010 12:45:38 +0900
+
+libmm-fileinfo (0.1.2-0) unstable; urgency=low
+
+ * Enable Matroska & QT
+ * Git : 165.213.180.234:/git/slp2.0/slp2.0-pkgs/libmm-fileinfo-0.1
+ * Tag : libmm-fileinfo_0.1.2-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 09 Apr 2010 14:35:51 +0900
+
+libmm-fileinfo (0.1.1-1) unstable; urgency=low
+
+ * dos2unix
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 05 Apr 2010 14:05:06 +0900
+
+libmm-fileinfo (0.1.1-0) unstable; urgency=low
+
+ * Repackageing for DRM module update
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 01 Apr 2010 11:02:04 +0900
+
+libmm-fileinfo (0.1-26) unstable; urgency=low
+
+ * 1. Fix so linking in .pc
+ * 2. Fix dlopen/dlclose bug
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Sat, 27 Mar 2010 00:29:53 +0900
+
+libmm-fileinfo (0.1-25) unstable; urgency=low
+
+ * Repackaging for FFMPEG update
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 25 Mar 2010 16:36:51 +0900
+
+libmm-fileinfo (0.1-24) unstable; urgency=low
+
+ * Reupload because of ffmpeg building
+
+ -- Wonhyung Cho <wh01.cho@samsung.com> Thu, 25 Mar 2010 14:22:50 +0900
+
+libmm-fileinfo (0.1-23) unstable; urgency=low
+
+ * Toolchain Upgrade
+
+ -- Wonhyung Cho <wh01.cho@samsung.com> Thu, 25 Mar 2010 14:01:44 +0900
+
+libmm-fileinfo (0.1-22) unstable; urgency=low
+
+ * Add missing file for DRM
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 24 Mar 2010 20:50:15 +0900
+
+libmm-fileinfo (0.1-21) unstable; urgency=low
+
+ * Fix DRM dependancy
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 24 Mar 2010 19:53:23 +0900
+
+libmm-fileinfo (0.1-20) unstable; urgency=low
+
+ * Enable DRM
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 24 Mar 2010 19:04:28 +0900
+
+libmm-fileinfo (0.1-19) unstable; urgency=low
+
+ * Modify null check for MMFileGetContentAttrSimple() API
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 22 Mar 2010 11:56:39 +0900
+
+libmm-fileinfo (0.1-18) unstable; urgency=low
+
+ * Repackaging for rebuild on server side (to build debug package)
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 18 Mar 2010 14:33:18 +0900
+
+libmm-fileinfo (0.1-17) unstable; urgency=low
+
+ * Add debug package
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 18 Mar 2010 13:44:15 +0900
+
+libmm-fileinfo (0.1-16) unstable; urgency=low
+
+ * Add test for MMFileGetStreamInfo()
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 12 Mar 2010 14:56:02 +0900
+
+libmm-fileinfo (0.1-15) unstable; urgency=low
+
+ * Repacking for mm-common update
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 11 Mar 2010 12:04:20 +0900
+
+libmm-fileinfo (0.1-14) unstable; urgency=low
+
+ * argument NULL checking added
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Wed, 10 Mar 2010 20:25:43 +0900
+
+libmm-fileinfo (0.1-13) unstable; urgency=low
+
+ * Modify section to main
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 05 Mar 2010 16:39:28 +0900
+
+libmm-fileinfo (0.1-12) unstable; urgency=low
+
+ * Modify section to non-free
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Mon, 22 Feb 2010 14:19:13 +0900
+
+libmm-fileinfo (0.1-11) unstable; urgency=low
+
+ * Fix for prevent
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 19 Feb 2010 20:27:57 +0900
+
+libmm-fileinfo (0.1-10) unstable; urgency=low
+
+ * Enable new algorithm
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 05 Feb 2010 00:40:23 +0900
+
+libmm-fileinfo (0.1-9) unstable; urgency=low
+
+ * Apply new algorithm to search good thumbnail
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Thu, 04 Feb 2010 17:14:26 +0900
+
+libmm-fileinfo (0.1-8) unstable; urgency=low
+
+ * enable WMV support
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Tue, 02 Feb 2010 19:38:24 +0900
+
+libmm-fileinfo (0.1-7) unstable; urgency=low
+
+ * Modify for easy debugging (TESTMODE & DUMP)
+
+ -- Seungbae Shin <seungbae.shin@samsung.com> Fri, 29 Jan 2010 19:58:05 +0900
+
+libmm-fileinfo (0.1-6) unstable; urgency=low
+
+ * Merge from H2 (fix author/composer issue, add conductor)
+
+ -- Shin Seung Bae <seungbae.shin@samsung.com> Tue, 26 Jan 2010 15:06:36 +0900
+
+libmm-fileinfo (0.1-5) unstable; urgency=low
+
+ * Add to group FILEINFO in mm_file.h
+
+ -- Shin Seung Bae <seungbae.shin@samsung.com> Sat, 23 Jan 2010 18:08:58 +0900
+
+libmm-fileinfo (0.1-4) unstable; urgency=low
+
+ * Enable thumbnail-viewer
+
+ -- Shin Seung Bae <seungbae.shin@samsung.com> Fri, 15 Jan 2010 21:57:54 +0900
+
+libmm-fileinfo (0.1-3) unstable; urgency=low
+
+ * Fix build break
+
+ -- Shin Seung Bae <seungbae.shin@samsung.com> Wed, 30 Dec 2009 19:09:59 +0900
+
+libmm-fileinfo (0.1-2) unstable; urgency=low
+
+ * Fix static link issue
+
+ -- Shin Seung Bae <seungbae.shin@samsung.com> Wed, 30 Dec 2009 19:09:59 +0900
+
+libmm-fileinfo (0.1-1) unstable; urgency=low
+
+ * Initial Release.
+ -- Shin Seung Bae <seungbae.shin@samsung.com> Tue, 08 Dec 2009 23:38:34 +0900
Priority: extra
Maintainer: Shin Seung Bae <seungbae.shin@samsung.com>, JongHyuk Choi <jhchoi.choi@samsung.com>, Haejeong Kim <backto.kim@samsung.com>
Uploaders: Shin Seung Bae <seungbae.shin@samsung.com>, JongHyuk Choi <jhchoi.choi@samsung.com>, Haejeong Kim <backto.kim@samsung.com>, YoungHwan Ahn <younghwan_.an@samsung.com>
-Build-Depends: debhelper (>= 5), autotools-dev, libmm-common-dev, libglib2.0-dev, libmm-log-dev, libavutil-dev, libavcodec-dev, libavformat-dev, drm-service-dev, libmm-common-internal-dev, execstack, libswscale-dev
+Build-Depends: debhelper (>= 5), autotools-dev, libmm-common-dev, libglib2.0-dev, libmm-log-dev, libavutil-dev, libavcodec-dev, libavformat-dev, drm-client-dev, libmm-common-internal-dev, execstack, libswscale-dev
Standards-Version: 3.7.2
Package: libmm-fileinfo
Section: libs
Architecture: any
-Depends: libmm-common, libglib2.0-0, libmm-log, drm-service-0, libavcodec, libavutil, libavformat, libswscale
+Depends: libmm-common, libglib2.0-0, libmm-log, drm-client-0, libavcodec, libavutil, libavformat, libswscale
Description: Multimedia Framework FileInfo Library
Package: libmm-fileinfo-dev
XB-Generate-Docs: yes
Section: libdevel
Architecture: any
-Depends: libmm-fileinfo (= ${Source-Version}), libmm-common-dev, libglib2.0-dev, libmm-log-sdk-dev, drm-service-dev, libavutil-dev, libavcodec-dev, libavformat-dev, libswscale-dev
+Depends: libmm-fileinfo (= ${Source-Version}), libmm-common-dev, libglib2.0-dev, libmm-log-sdk-dev, drm-client-dev, libavutil-dev, libavcodec-dev, libavformat-dev, libswscale-dev
Description: Multimedia Framework FileInfo Library (DEV)
Package: libmm-fileinfo-dbg
Package: mm-fileinfo-tools
Section: libs
Architecture: any
-Depends: libmm-common, libglib2.0-0, libmm-log, drm-service-0
+Depends: libmm-common, libglib2.0-0, libmm-log, drm-client-0
Description: Multimedia Framework FileInfo Tools
include/mm_file_format_mmf.h \
include/mm_file_format_mp3.h \
include/mm_file_format_wav.h \
- include/mm_file_format_private.h
+ include/mm_file_format_private.h
libmmfile_formats_la_SOURCES = mm_file_formats.c \
mm_file_format_dummy.c \
mm_file_format_amr.c \
mm_file_format_midi.c \
mm_file_format_imelody.c \
- mm_file_format_wav.c
+ mm_file_format_wav.c \
+ mm_file_format_frame.c
libmmfile_formats_la_CFLAGS = -I$(srcdir)/include \
$(MMCOMMON_CFLAGS) \
endif
if USE_DRM
-noinst_HEADERS += include/mm_file_format_ffmpeg_drm.h
-libmmfile_formats_la_SOURCES += mm_file_format_ffmpeg_drm.c
-libmmfile_formats_la_CFLAGS += $(DRMSERVICE_CFLAGS) -DDRM_SUPPORT
+libmmfile_formats_la_CFLAGS += $(DRMCLIENT_CFLAGS) -DDRM_SUPPORT
endif
if USE_IOMMAP
$(top_builddir)/utils/libmmfile_utils.la
if USE_DRM
-libmmfile_formats_la_LIBADD += $(DRMSERVICE_LIBS)
+libmmfile_formats_la_LIBADD += $(DRMCLIENT_LIBS)
endif
libmmfile_formats_la_CFLAGS += $(MMLOG_CFLAGS) -DMMF_LOG_OWNER=0x040 -DMMF_DEBUG_PREFIX=\"MMF-FILE-FORMAT-FFMPEG\"
char *copyright;
char *comment;
char *genre;
+ char *tracknum;
char *composer;
char *classification;
char *rating;
goto failure;
}
+ mm_file_id3tag_restore_content_info(hTag);
+
pData->tagInfo.title = hTag->pTitle;
pData->tagInfo.author = hTag->pAuthor;
pData->tagInfo.artist = hTag->pArtist;
pData->tagInfo.album = hTag->pAlbum;
pData->tagInfo.year = hTag->pYear;
pData->tagInfo.copyright = hTag->pCopyright;
- pData->tagInfo.comment = hTag->pComment;
+ pData->tagInfo.comment = hTag->pDescription;
pData->tagInfo.genre = hTag->pGenre;
+ pData->tagInfo.tracknum = hTag->pTrackNum;
pData->tagInfo.composer = hTag->pComposer;
pData->tagInfo.classification = hTag->pContentGroup;
pData->tagInfo.rating = hTag->pRating;
ret = MMFILE_AAC_PARSER_SUCCESS;
- mm_file_id3tag_restore_content_info(hTag);
failure:
if(tagBuff) {
formatContext->comment = mmfile_strdup(aacinfo.comment);
if(aacinfo.genre)
formatContext->genre = mmfile_strdup(aacinfo.genre);
+ if(aacinfo.tracknum)
+ formatContext->tagTrackNum= mmfile_strdup(aacinfo.tracknum);
if(aacinfo.composer)
formatContext->composer = mmfile_strdup(aacinfo.composer);
if(aacinfo.classification)
#endif
#include <mm_error.h>
#include <mm_types.h>
-
-#ifdef DRM_SUPPORT
-#include <drm-service.h>
-#endif
-
#include "mm_debug.h"
#include "mm_file_formats.h"
#include "mm_file_utils.h"
#include "mm_file_format_ffmpeg.h"
-#ifdef DRM_SUPPORT
-#include "mm_file_format_ffmpeg_drm.h"
-#endif
-
#include "mm_file_format_ffmpeg_mem.h"
#include <sys/time.h>
AVInputFormat *grab_iformat = NULL;
int ret = 0;
int i;
-#ifdef DRM_SUPPORT
- drm_content_info_t contentInfo = {0,};
-#endif
char ffmpegFormatName[MMFILE_FILE_FMT_MAX_LEN] = {0,};
char mimeType[MMFILE_MIMETYPE_MAX_LEN] = {0,};
if (formatContext->filesrc->type == MM_FILE_SRC_TYPE_FILE) {
if (formatContext->isdrm == MM_FILE_DRM_OMA) {
-#ifdef DRM_SUPPORT
- if (formatContext->formatType == MM_FILE_FORMAT_DIVX || formatContext->formatType == MM_FILE_FORMAT_AVI) {
- goto HANDLING_DRM_DIVX;
- }
-
-#ifdef __MMFILE_FFMPEG_V085__
- ffurl_register_protocol(&MMFileDRMProtocol, sizeof (URLProtocol));
-#else
- register_protocol (&MMFileDRMProtocol);
-#endif
-
- if (DRM_RESULT_SUCCESS != drm_svc_get_content_info (formatContext->filesrc->file.path, &contentInfo)) {
- debug_error ("error: drm_svc_get_content_info\n");
- return MMFILE_FORMAT_FAIL;
- }
-
- memset (ffmpegFormatName, 0x00, MMFILE_FILE_FMT_MAX_LEN);
-
- ret = mmfile_util_get_ffmpeg_format (contentInfo.contentType, ffmpegFormatName);
- if (MMFILE_UTIL_SUCCESS != ret) {
- debug_error ("error: mmfile_util_get_ffmpeg_format\n");
- return MMFILE_FORMAT_FAIL;
- }
-
- #ifdef __MMFILE_TEST_MODE__
- debug_warning ("FFMPEG: test........... : %s\n", ffmpegFormatName);
- debug_warning ("FFMPEG: DRM URI = %s\n", formatContext->uriFileName);
- debug_warning ("FFMPEG: ffmpeg name = %s\n", ffmpegFormatName);
- #endif
-
- grab_iformat = av_find_input_format (ffmpegFormatName);
-
- if (NULL == grab_iformat) {
- debug_error ("error: cannot find format\n");
- goto exception;
- }
-
-#ifdef __MMFILE_FFMPEG_V085__
- ret = avformat_open_input (&pFormatCtx, formatContext->uriFileName, grab_iformat, NULL);
-#else
- ret = av_open_input_file (&pFormatCtx, formatContext->uriFileName, grab_iformat, 0, NULL);
-#endif
- if (ret < 0) {
- debug_error("error: cannot open %s %d\n", formatContext->uriFileName, ret);
- goto exception;
- }
- formatContext->privateFormatData = pFormatCtx;
-#endif
+ debug_error ("error: drm content\n");
+ goto exception;
} else {
HANDLING_DRM_DIVX:
#ifdef __MMFILE_FFMPEG_V085__
/**
*@note asf has long duration bug.
*/
- formatContext->duration = (long long)(pFormatCtx->duration + pFormatCtx->start_time) * 1000 / AV_TIME_BASE;
+ /*hjkim, 120808, FIX_ME. I modified this code for temporary*/
+ //formatContext->duration = (long long)(pFormatCtx->duration + pFormatCtx->start_time) * 1000 / AV_TIME_BASE;
+ formatContext->duration = (long long)(pFormatCtx->duration) * 1000 / AV_TIME_BASE;
formatContext->videoStreamId = -1;
formatContext->audioStreamId = -1;
}
#ifdef __MMFILE_FFMPEG_V085__
-/*hjkim, 111221, use metadata extracted by ffmpeg*/
+/*metadata extracted by ffmpeg*/
if( (pFormatCtx != NULL) && (pFormatCtx->metadata != NULL) ) {
AVDictionary *metainfo = pFormatCtx->metadata;
AVDictionaryEntry *tag=NULL;
#endif
/*sometimes, ffmpeg's width/height is wrong*/
- #if 0 /*hjkim, 111124, coded_width/height sometimes wrong. so use width/height*/
+ #if 0 /*coded_width/height sometimes wrong. so use width/height*/
width = pVideoCodecCtx->coded_width == 0 ? pVideoCodecCtx->width : pVideoCodecCtx->coded_width;
height = pVideoCodecCtx->coded_height == 0 ? pVideoCodecCtx->height : pVideoCodecCtx->coded_height;
#endif
debug_msg (" pts: %lld\n", pkt->pts);
debug_msg (" dts: %lld\n", pkt->dts);
debug_msg (" data: %p\n", pkt->data);
- debug_msg (" size: %d\n", pkt->pts);
- debug_msg (" stream_index: %d\n", pkt->size);
+ debug_msg (" size: %d\n", pkt->size);
+ debug_msg (" stream_index: %d\n", pkt->stream_index);
#ifdef __MMFILE_FFMPEG_V085__
debug_msg (" flags: 0x%08X, %s\n", pkt->flags, (pkt->flags & AV_PKT_FLAG_KEY) ? "Keyframe" : "_");
#else
char pgm_name[256] = {0,};
#endif
-#define _RETRY_SEARCH_LIMIT 10
+#define _RETRY_SEARCH_LIMIT 150
#define _KEY_SEARCH_LIMIT (_RETRY_SEARCH_LIMIT*2) /*2 = 1 read. some frame need to read one more*/
#define _FRAME_SEARCH_LIMIT 1000
--- /dev/null
+/*
+ * libmm-fileinfo
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Haejeong Kim <backto.kim@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+#include <stdbool.h>
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+#include <libswscale/swscale.h>
+
+#include "mm_debug.h"
+#include "mm_file_formats.h"
+#include "mm_file_utils.h"
+#include "mm_file_format_frame.h"
+
+#define MILLION 1000000
+
+int mmfile_format_get_frame(const char* path, double timestamp, bool keyframe, unsigned char **data, int *size, int *width, int *height)
+{
+ int i;
+ int ret;
+ int videoStream = -1;
+ int frameFinished;
+ double pos = timestamp;
+ bool find = false ;
+ bool first_seek = true;
+ int64_t pts = 0;
+ AVFormatContext *pFormatCtx = NULL;
+ AVCodecContext *pVideoCodecCtx;
+ AVCodec *pCodec = NULL;
+ AVFrame *pFrame = NULL, *pFrameRGB = NULL;
+ AVPacket packet;
+
+ if (!size || !width || !height) {
+ return MMFILE_FORMAT_FAIL;
+ }
+
+ av_register_all();
+
+ /* Open video file */
+ if(avformat_open_input(&pFormatCtx, path, NULL, NULL) != 0) {
+ debug_error("error : avformat_open_input failed");
+ return MMFILE_FORMAT_FAIL; /* Couldn't open file */
+ }
+
+ /* Retrieve stream information */
+ if(av_find_stream_info(pFormatCtx) < 0) {
+ debug_error("error : av_find_stream_info failed");
+ return MMFILE_FORMAT_FAIL; /* Couldn't find stream information */
+ }
+
+ /* Find the first video stream */
+ for(i = 0; i < pFormatCtx->nb_streams; i++) {
+ if(pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
+ videoStream = i;
+ break;
+ }
+ }
+
+ if(videoStream == -1) {
+ debug_error("error : videoStream == -1");
+ return MMFILE_FORMAT_FAIL; /* Didn't find a video stream */
+ }
+
+ /* Get a pointer to the codec context for the video stream */
+ pVideoCodecCtx=pFormatCtx->streams[videoStream]->codec;
+
+ /* Find the decoder for the video stream */
+ pCodec = avcodec_find_decoder(pVideoCodecCtx->codec_id);
+ if(pCodec == NULL) {
+ debug_error("error : Unsupported codec");
+ return MMFILE_FORMAT_FAIL; /* Codec not found */
+ }
+
+ /* Open codec */
+ if(avcodec_open(pVideoCodecCtx, pCodec) < 0) {
+ debug_error("error : avcodec_open failed");
+ return MMFILE_FORMAT_FAIL; /*Could not open codec */
+ }
+
+ /* Storing Data */
+ /* Allocate video frame */
+ pFrame = avcodec_alloc_frame();
+ if(pFrame == NULL) {
+ debug_error ("error: pFrame is NULL\n");
+ ret = MMFILE_FORMAT_FAIL;
+ goto exception;
+ }
+
+ /* Allocate an AVFrame structure */
+ pFrameRGB = avcodec_alloc_frame();
+ if(pFrameRGB == NULL) {
+ debug_error ("error: pFrameRGB is NULL\n");
+ ret = MMFILE_FORMAT_FAIL;
+ goto exception;
+ }
+
+ /* Seeking */
+ AVStream *pStream = pFormatCtx->streams[videoStream];
+ double duration = (double) pFormatCtx->duration / AV_TIME_BASE;
+ if (duration <= 0) {
+ double tmpDuration = 0.0;
+
+ if (pStream->codec->bit_rate > 0 && pFormatCtx->file_size > 0) {
+ if (pStream->codec->bit_rate >= 8)
+ tmpDuration = 0.9 * pFormatCtx->file_size / (pStream->codec->bit_rate / 8);
+
+ if (tmpDuration > 0)
+ duration = tmpDuration;
+ }
+ }
+ duration = duration * MILLION;
+ if (duration <= 0 || duration <= pos) {
+ debug_error("duration error");
+ ret = MMFILE_FORMAT_FAIL;
+ goto exception;
+ }
+
+ if (keyframe)
+ av_seek_frame(pFormatCtx, -1, pos, 0);
+ else
+ av_seek_frame(pFormatCtx, -1, pos, AVSEEK_FLAG_ANY);
+
+ /* Reading Data */
+ int64_t tmpPts;
+
+ while(av_read_frame(pFormatCtx, &packet) >= 0) {
+ // Is this a packet from the video stream?
+ if(packet.stream_index == videoStream) {
+ /* Decode video frame*/
+ avcodec_decode_video2(pVideoCodecCtx, pFrame, &frameFinished, &packet);
+ if (packet.flags & AV_PKT_FLAG_KEY) {
+ if (first_seek) {
+ //This is first seeking.
+ find = true;
+ }
+ } else {
+ if (first_seek) {
+ pts = (packet.pts == AV_NOPTS_VALUE) ? (packet.dts * av_q2d(pStream->time_base)) : packet.pts;
+ first_seek = false;
+
+ av_seek_frame(pFormatCtx, -1, pos, AVSEEK_FLAG_BACKWARD);
+ } else {
+ tmpPts = (packet.pts == AV_NOPTS_VALUE) ? (packet.dts * av_q2d(pStream->time_base)) : packet.pts;
+ if (pts == tmpPts)
+ find = true;
+ }
+ }
+
+ if (find)
+ break;
+ }
+
+ /* Free the packet that was allocated by av_read_frame*/
+ av_free_packet(&packet);
+ }
+
+ /* Did we get a video frame?*/
+ if(frameFinished && find) {
+ debug_msg("FIND");
+
+ /* return frame infromations*/
+ if((pVideoCodecCtx->width == 0) || (pVideoCodecCtx->height == 0)) {
+ *width = pVideoCodecCtx->coded_width;
+ *height = pVideoCodecCtx->coded_height;
+ } else {
+ *width = pVideoCodecCtx->width;
+ *height = pVideoCodecCtx->height;
+ }
+
+ *size = avpicture_get_size(PIX_FMT_RGB24, *width, *height);
+ *data = mmfile_malloc (*size);
+ if (NULL == *data) {
+ debug_error ("error: avpicture_get_size. [%d]\n", size);
+ ret = MMFILE_FORMAT_FAIL;
+ goto exception;
+ }
+
+ debug_msg("size : %d", *size);
+ debug_msg("width : %d", *width);
+ debug_msg("height : %d", *height);
+ debug_msg("data : %x", *data);
+
+ ret = avpicture_fill ((AVPicture *)pFrameRGB, *data, PIX_FMT_RGB24, *width, *height);
+ if (ret < 0) {
+ debug_error ("error: avpicture_fill fail. errcode = 0x%08X\n", ret);
+ ret = MMFILE_FORMAT_FAIL;
+ goto exception;
+ }
+
+#ifdef __MMFILE_FFMPEG_V085__
+ static struct SwsContext *img_convert_ctx;
+
+ img_convert_ctx = sws_getContext (*width, *height, pVideoCodecCtx->pix_fmt,
+ *width, *height, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL);
+
+ if (NULL == img_convert_ctx) {
+ debug_error ("failed to get img convet ctx\n");
+ ret = MMFILE_FORMAT_FAIL;
+ goto exception;
+ }
+
+ ret = sws_scale (img_convert_ctx, (const uint8_t* const*)pFrame->data, pFrame->linesize,
+ 0, *height, pFrameRGB->data, pFrameRGB->linesize);
+ if ( ret < 0 ) {
+ debug_error ("failed to convet image\n");
+ ret = MMFILE_FORMAT_FAIL;
+ goto exception;
+ }
+
+ sws_freeContext(img_convert_ctx);
+#else
+ ret = img_convert ((AVPicture *)pFrameRGB, PIX_FMT_RGB24, (AVPicture*)pFrame, pVideoCodecCtx->pix_fmt, *width, *height);
+ if ( ret < 0 ) {
+ debug_error ("failed to convet image\n");
+ ret = MMFILE_FORMAT_FAIL;
+ goto exception;
+ }
+#endif
+
+ if (pFrame) av_free (pFrame);
+ if (pFrameRGB) av_free (pFrameRGB);
+ if (pVideoCodecCtx) avcodec_close(pVideoCodecCtx);
+ }
+
+ return MMFILE_FORMAT_SUCCESS;
+
+exception:
+ if (pVideoCodecCtx) avcodec_close (pVideoCodecCtx);
+ if (*data) { mmfile_free (*data); *data = NULL; }
+ if (pFrame) av_free (pFrame);
+ if (pFrameRGB) av_free (pFrameRGB);
+
+ return ret;
+ }
switch (bTemp & 0xF0)
{
case 0x90 :
- psLoad->pfnGetByte(psHuf);
+ psLoad->pfnGetByte(psHuf); /*Note number*/
dIndex ++;
- break; // added for prevent
+ psLoad->pfnGetByte(psHuf); /*Key Velocity*/
+ dIndex ++;
+ sdTemp = _mmf_GetFlex3L(psLoad, &dReadSize);
+ if (sdTemp < 0) {
+ return AV_MMF_ERR_CHUNK;
+ }
+ dIndex += dReadSize;
+ if ((unsigned int)sdTemp > dGate)
+ dGate = sdTemp;
+ break;
case 0x80 :
- psLoad->pfnGetByte(psHuf);
+ psLoad->pfnGetByte(psHuf); /*Note number*/
dIndex ++;
sdTemp = _mmf_GetFlex3L(psLoad, &dReadSize);
if (sdTemp < 0) {
case 0xA0 :
case 0xB0 :
case 0xE0 :
- bTemp = psLoad->pfnGetByte(psHuf);
+ bTemp = psLoad->pfnGetByte(psHuf); /*B0: Conrol number, E0:Pitch Bend Change LSB*/
dIndex ++;
- break; // added for prevent
+ bTemp = psLoad->pfnGetByte(psHuf); /*B0: Conrol value, E0:Pitch Bend Change MSB*/
+ dIndex ++;
+ break;
case 0xC0 :
case 0xD0 :
bTemp = psLoad->pfnGetByte(psHuf);
static int
_mmf_MALoad( unsigned char* pbFile, unsigned int dFSize)
{
- PLOADINFO psLoad_Info;
- unsigned int bNo;
- unsigned int dChunkID, dChunkNo;
- unsigned char* pbBuf;
- unsigned int dSize, dIndex;
- int sdChunkSize, sdResult;
- unsigned int dCalcCrc, dFileCrc;
- int rVal;
- bNo = 0;
+ PLOADINFO psLoad_Info;
+ unsigned int bNo = 0;
+ unsigned int dChunkID = 0, dChunkNo = 0;
+ unsigned char* pbBuf = NULL;
+ unsigned int dSize = 0, dIndex = 0;
+ int sdChunkSize = 0, sdResult = 0;
+ unsigned int dCalcCrc = 0, dFileCrc = 0;
+ int rVal = 0;
+
pbBuf = pbFile;
dSize = dFSize;
psLoad_Info = &(g_sSmaf_Info.sLoad_Info[bNo]);
long long src_size = 0L;
PLOADINFO load_info;
- unsigned char *p_crc;
- unsigned int dCrc;
+ unsigned char *p_crc = NULL;
+ unsigned int dCrc = 0;
int ret = 0;
/*total time (millisecond)*/
- int ret_msec;
+ int ret_msec = 0;
debug_msg ( "\n");
#include <stdlib.h>
#ifdef DRM_SUPPORT
-#include <drm-service.h>
+#include <drm_client.h>
#endif
int pos = 0;
int filename_len = 0;
int index = 0, skip_index = 0;
-#ifdef DRM_SUPPORT
- drm_content_info_t contentInfo = {0,};
-#endif
if (fileSrc->type == MM_FILE_SRC_TYPE_FILE) {
fileName = (const char *)(fileSrc->file.path);
break;
}
+ memset (extansion_name, 0x00, _MMF_FILE_FILEEXT_MAX);
+
+ /*extract metadata for all file. ex)a , a. , a.mp3*/
if (pos == 0) {
- debug_error ("invalid file format");
- return MMFILE_FORMAT_FAIL; /*invalid file*/
+ /*even though there is no file extension, extracto metadata*/
+ debug_msg ("no file extension");
}
-
- if (_MMF_FILE_FILEEXT_MAX > (filename_len - pos - 1)) {
+ else if (_MMF_FILE_FILEEXT_MAX > (filename_len - pos - 1)) {
strncpy (extansion_name, fileName + pos +1 , (filename_len - pos - 1));
extansion_name[filename_len - pos - 1] = '\0';
} else {
/**
* Make URI name with file name
*/
- if (DRM_TRUE == drm_svc_is_drm_file (fileSrc->file.path) &&
- DRM_FILE_TYPE_OMA == drm_svc_get_drm_type (fileSrc->file.path))
- {
- *isdrm = MM_FILE_DRM_OMA;
- #ifdef __MMFILE_TEST_MODE__
- debug_msg ("OMA DRM detected.\n");
- #endif
-
- if (DRM_RESULT_SUCCESS != drm_svc_get_content_info (fileSrc->file.path, &contentInfo)) {
- debug_error ("error: drm_svc_get_content_info\n");
- return MMFILE_FORMAT_FAIL;
- }
-
- memset (extansion_name, 0x00, _MMF_FILE_FILEEXT_MAX);
- if (MMFILE_UTIL_SUCCESS != mmfile_util_get_file_ext (contentInfo.contentType, extansion_name)) {
- debug_error ("error: mmfile_util_get_ffmpeg_format\n");
- return MMFILE_FORMAT_FAIL;
- }
+ drm_bool_type_e res = DRM_TRUE;
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;
+ int ret = 0;
+ bool is_drm = FALSE;
- *urifilename = mmfile_malloc (MMFILE_DRM_URI_LEN + filename_len + 1);
- if (!*urifilename) {
- debug_error ("error: mmfile_malloc uriname\n");
- return MMFILE_FORMAT_FAIL;
+ ret = drm_is_drm_file (fileSrc->file.path, &res);
+ if (ret == DRM_RETURN_SUCCESS && DRM_TRUE == res)
+ {
+ ret = drm_get_file_type(fileSrc->file.path, &file_type);
+ if((ret == DRM_RETURN_SUCCESS) && ((file_type == DRM_TYPE_OMA_V1) ||(file_type == DRM_TYPE_OMA_V2)))
+ {
+ is_drm = TRUE;
}
+ }
- memset (*urifilename, 0x00, MMFILE_DRM_URI_LEN + filename_len + 1);
- strncpy (*urifilename, MMFILE_DRM_URI, MMFILE_DRM_URI_LEN);
- strncat (*urifilename, fileName, filename_len);
- (*urifilename)[MMFILE_DRM_URI_LEN + filename_len] = '\0';
+ if (is_drm)
+ {
+ *isdrm = MM_FILE_DRM_OMA;
+ debug_error ("OMA DRM detected. Not Support DRM Content\n");
+ return MMFILE_FORMAT_FAIL; /*Not Support DRM Content*/
}
else
#endif // DRM_SUPPORT
int mm_file_get_synclyrics_info(MMHandleType tag_attrs, int index, unsigned long *time_info, char **lyrics);
+int mm_file_get_video_frame(const char* path, double timestamp, bool keyframe, unsigned char **data, int *size, int *width, int *height);
+
/**
@}
*/
--- /dev/null
+/*
+ * libmm-fileinfo
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Haejeong Kim <backto.kim@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef __MMFILE_DYN_LOADING__
+int mmfile_format_get_frame(const char* path, double timestamp, bool keyframe, unsigned char **data, int *size, int *width, int *height);
+#endif
/* internal MM File headers */
#include "mm_file_formats.h"
+#include "mm_file_format_frame.h"
#include "mm_file_codecs.h"
#include "mm_file_utils.h"
int (*mmfile_format_read_frame) (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame);
int (*mmfile_format_read_tag) (MMFileFormatContext *formatContext);
int (*mmfile_format_close) (MMFileFormatContext *formatContext);
-int (*mmfile_codec_open) (MMFileCodecContext **codecContext, int codecType, int codecId, MMFileCodecFrame *input);
+int (*mmfile_codec_open) (MMFileCodecContext **codecContext, int codecType, int codecId, MMFileCodecFrame *input);
int (*mmfile_codec_decode) (MMFileCodecContext *codecContext, MMFileCodecFrame *output);
int (*mmfile_codec_close) (MMFileCodecContext *codecContext);
+int (*mmfile_format_get_frame) (const char* path, double timestamp, bool keyframe, unsigned char **data, int *size, int *width, int *height);
#endif
#ifdef __MMFILE_DYN_LOADING__
if (formatContext->composer && formatContext->author == NULL)
mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_AUTHOR, formatContext->composer);
if (formatContext->album) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_ALBUM , formatContext->album);
+ if (formatContext->copyright) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_COPYRIGHT, formatContext->copyright);
if (formatContext->comment) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_DESCRIPTION, formatContext->comment);
if (formatContext->genre) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_GENRE, formatContext->genre);
if (formatContext->classification) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_CLASSIFICATION, formatContext->classification);
return MM_ERROR_INVALID_ARGUMENT;
}
- ret = mm_attrs_get_data_by_name (tag_attrs, MM_FILE_TAG_SYNCLYRICS, &synclyrics_list);
+ ret = mm_attrs_get_data_by_name (tag_attrs, MM_FILE_TAG_SYNCLYRICS, (void **)&synclyrics_list);
if(ret != MM_ERROR_NONE) {
#ifdef __MMFILE_TEST_MODE__
debug_warning ( "get data fail");
mmfile_free (artwork);
}
- ret = mm_attrs_get_data_by_name (tag_attrs, MM_FILE_TAG_SYNCLYRICS, &synclyrics_list);
+ ret = mm_attrs_get_data_by_name (tag_attrs, MM_FILE_TAG_SYNCLYRICS, (void **)&synclyrics_list);
if(synclyrics_list != NULL) {
mm_file_free_synclyrics_list(synclyrics_list);
return ret;
}
+EXPORT_API
+int mm_file_get_video_frame(const char* path, double timestamp, bool keyframe, unsigned char **data, int *size, int *width, int *height)
+{
+ int ret = 0;
+ void *formatFuncHandle = NULL;
+#ifdef __MMFILE_DYN_LOADING__
+ /* Get from function argument */
+ formatFuncHandle = dlopen (MMFILE_FORMAT_SO_FILE_NAME, RTLD_LAZY);
+ if (!formatFuncHandle) {
+ debug_error ("error : dlopen");
+ goto exception;
+ }
+ mmfile_format_get_frame = dlsym (formatFuncHandle, "mmfile_format_get_frame");
+ if ( !mmfile_format_get_frame ) {
+ debug_error ("error : load library");
+ goto exception;
+ }
+#endif
+ ret = mmfile_format_get_frame(path, timestamp, keyframe, data, size, width, height);
+ if (ret == MMFILE_FORMAT_FAIL) {
+ debug_error ("error : get frame");
+ goto exception;
+ }
+ if (formatFuncHandle) dlclose (formatFuncHandle);
+
+ return MM_ERROR_NONE;
+
+exception:
+ if (formatFuncHandle) dlclose (formatFuncHandle);
+
+ return MM_ERROR_FILE_INTERNAL;
+}
\ No newline at end of file
Name: libmm-fileinfo
Summary: Media Fileinfo
-Version: 0.3.0
-Release: 15
+Version: 0.5.0
+Release: 12
Group: System/Libraries
-License: LGPL
+License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
BuildRequires: pkgconfig(mm-common)
BuildRequires: pkgconfig(mm-log)
+BuildRequires: pkgconfig(libswscale)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavutil)
%if %{use_drm}
BuildRequires: libss-client-devel
-BuildRequires: pkgconfig(drm-service)
+BuildRequires: pkgconfig(drm-client)
%endif
%description
make
%install
-rm -rf %{buildroot}
%make_install
%files
-%defattr(-,root,root,-)
/usr/bin/memtrace_reader
/usr/bin/mm_file_test
/usr/lib/libmmffile.so.0
/usr/lib/libmmfile_formats.so.0.0.0
/usr/lib/libmmfile_utils.so.0
/usr/lib/libmmfile_utils.so.0.0.0
+/usr/lib/libmmffile.so
+/usr/lib/libmmfile_codecs.so
+/usr/lib/libmmfile_formats.so
+/usr/lib/libmmfile_utils.so
%files devel
-%defattr(-,root,root,-)
/usr/include/mmf/mm_file.h
/usr/lib/pkgconfig/mm-fileinfo.pc
-/usr/lib/libmmffile.so
-/usr/lib/libmmfile_codecs.so
-/usr/lib/libmmfile_formats.so
-/usr/lib/libmmfile_utils.so
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
+#include <stdbool.h>
#include <sys/types.h>
#include <sys/stat.h>
FILE *fpFailList = NULL;
-static int mmfile_get_file_infomation (void *data, void* user_data);
+static int mmfile_get_file_infomation (void *data, void* user_data, bool file_test);
inline static int mm_file_is_little_endian (void)
{
return ((char *)&i)[0];
}
+#define READ_FROM_FILE(FILE_PATH, data, size) \
+do{ \
+ FILE * fp = fopen (FILE_PATH, "r"); \
+ if (fp) { \
+ fseek (fp, 0, SEEK_END); \
+ size = ftell(fp); \
+ fseek (fp, 0, SEEK_SET); \
+ data = malloc (size); \
+ fread (data, size, sizeof(char), fp); \
+ fclose (fp); \
+ printf("file size = %d\n", size ); \
+ } \
+}while(0)
+
static int
_is_file_exist (const char *filename)
{
int main(int argc, char **argv)
{
struct stat statbuf;
-
+ bool file_test = true; //if you want to test mm_file_create_content_XXX_from_memory() set file_test to false
if (_is_file_exist (argv[1])) {
int ret = lstat (argv[1], &statbuf);
if ( S_ISDIR (statbuf.st_mode) ) {
mmfile_get_file_names (argv[1], mmfile_get_file_infomation, NULL);
} else {
- mmfile_get_file_infomation (argv[1], NULL);
+ mmfile_get_file_infomation (argv[1], NULL, file_test);
}
if (fpFailList != NULL) {
exit(0);
}
-static int mmfile_get_file_infomation (void *data, void* user_data)
+static int mmfile_get_file_infomation (void *data, void* user_data, bool file_test)
{
MMHandleType content_attrs = 0;
MMHandleType tag_attrs = 0;
printf ("Failed to mm_file_get_stream_info() error=[%x]\n", ret);
}
- /* get content handle */
- ret = mm_file_create_content_attrs(&content_attrs, filename);
+ if(file_test) {
+ /* get content handle */
+ ret = mm_file_create_content_attrs(&content_attrs, filename);
+ } else {
+ int file_size = 0;
+ unsigned char * buffer = NULL;
+ /* Read file */
+ READ_FROM_FILE(filename, buffer, file_size);
+
+ ret =mm_file_create_content_attrs_from_memory(&content_attrs, buffer, file_size, MM_FILE_FORMAT_3GP);
+ }
if (ret == MM_ERROR_NONE && content_attrs) {
ContentContext_t ccontent;
printf ("Failed to mm_file_create_content_attrs() error=[%x]\n", ret);
}
- /* get tag handle */
- ret = mm_file_create_tag_attrs(&tag_attrs, filename);
+ if(file_test) {
+ /* get tag handle */
+ ret = mm_file_create_tag_attrs(&tag_attrs, filename);
+ } else {
+ int file_size = 0;
+ unsigned char * buffer = NULL;
+ /* Read file */
+ READ_FROM_FILE(filename, buffer, file_size);
+
+ ret =mm_file_create_tag_attrs_from_memory(&tag_attrs, buffer, file_size, MM_FILE_FORMAT_3GP);
+ }
if (ret == MM_ERROR_NONE && tag_attrs) {
TagContext_t ctag;
MMFILE_SUCCESS
} MMFILE_RETURN;
-typedef int (*MMFunc) (void *data, void* user_data);
+typedef int (*MMFunc) (void *data, void* user_data, bool file_test);
int mmfile_get_file_names (char *root_dir, MMFunc cbfunc, void* user_data);
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <stdbool.h>
#include <glib.h>
#include "mm_file_traverse.h"
printf ("file: %s\n", cdirname);
if ( cbfunc != NULL )
{
- cbfunc (cdirname, user_data);
+ cbfunc (cdirname, user_data, true);
}
}
libmmfile_utils_la_LIBADD = $(MMCOMMON_LIBS)
-if USE_DRM
-libmmfile_utils_la_SOURCES += mm_file_util_io_drm.c
-libmmfile_utils_la_CFLAGS += $(DRMSERVICE_CFLAGS) -DDRM_SUPPORT
-libmmfile_utils_la_LIBADD += $(DRMSERVICE_LIBS)
-endif
-
libmmfile_utils_la_CFLAGS += $(MMLOG_CFLAGS) -DMMF_LOG_OWNER=0x040 -DMMF_DEBUG_PREFIX=\"MMF-FILE-UTILS\"
libmmfile_utils_la_LIBADD += $(MMLOG_LIBS)
#include "mm_file_codecs.h"
#define MMFILE_UTIL_FAIL -1
-#define MMFILE_UTIL_SUCCESS 1
+#define MMFILE_UTIL_SUCCESS 0
#define MMFILE_IO_FAILED MMFILE_UTIL_FAIL
#define MMFILE_IO_SUCCESS MMFILE_UTIL_SUCCESS
initialized = 1;
extern MMFileIOFunc mmfile_file_io_handler;
-#ifdef DRM_SUPPORT
- extern MMFileIOFunc mmfile_drm_io_handler;
-#endif
extern MMFileIOFunc mmfile_mem_io_handler;
extern MMFileIOFunc mmfile_mmap_io_handler;
mmfile_register_io_func (&mmfile_file_io_handler);
-#ifdef DRM_SUPPORT
- mmfile_register_io_func (&mmfile_drm_io_handler);
-#endif
mmfile_register_io_func (&mmfile_mem_io_handler);
mmfile_register_io_func (&mmfile_mmap_io_handler);
#endif
{
index = 0;
- debug_warning ("fail to get gconf-client\n");
+ //debug_warning ("fail to get gconf-client\n");
}
if (index < 0 || index >= MMFILE_LANGUAGE_MAX)
unsigned int meta_version = 0;
MMFILE_3GP_HANDLER_BOX hdlrBox = {0,};
int encSize = 0;
+ int id3_meta = 0;
#ifdef ENABLE_ITUNES_META /* We don't support itunes meta now. so this is not defined yet */
int iTunes_meta = 0;
#endif
debug_msg ("ID3v2 tag detected.\n");
#endif
-
+ id3_meta = 1;
#ifdef ENABLE_ITUNES_META
iTunes_meta = 0;
#endif
mmfile_io_le_uint32 (hdlrBox.reserved[0]) == FOURCC ('a', 'p', 'p', 'l')) {
#ifdef __MMFILE_TEST_MODE__
- debug_msg ("Apple iTunes tag detected.\n");
+ debug_msg ("Apple iTunes tag detected by mdir.\n");
#endif
#ifdef ENABLE_ITUNES_META
((char*)&hdlrBox.handler_type)[1],
((char*)&hdlrBox.handler_type)[2],
((char*)&hdlrBox.handler_type)[3]);
- goto exception;
+ //goto exception;
}
+#ifdef ENABLE_ITUNES_META
+ if(!id3_meta && !iTunes_meta) {
+ /*Check ilst.
+ APPLE meta data for iTunes reader = 'mdir.' so if handler type is 'mdir', this content may has itunes meta.
+ most of contents has 'mdir' + 'appl'. but some contents just has 'mdir'
+ but 'ilst' is meta for iTunes. so find 'ilst' is more correct to check if this contents has iTunes meta or not.*/
+
+ char *ilst_box = "ilst";
+ int buf_size = strlen(ilst_box);
+
+ unsigned char read_buf[buf_size+1];
+ memset(read_buf, 0x00, buf_size+1);
+
+ /* skip hdlr box */
+ mmfile_seek (fp, hdlrBoxHeader.size - MMFILE_MP4_BASIC_BOX_HEADER_LEN - MMFILE_3GP_HANDLER_BOX_LEN +4, SEEK_CUR); //+4 is hdlr size field
+
+ readed = mmfile_read (fp, read_buf, buf_size); // to find 'ilst'
+ if (readed != buf_size) {
+ debug_error ("read fail [%d]\n", readed);
+ goto exception;
+ }
+
+ if(read_buf[0] == 'i' && read_buf[1] == 'l' && read_buf[2] == 's' && read_buf[3] == 't') {
+ #ifdef __MMFILE_TEST_MODE__
+ debug_msg ("Apple iTunes tag detected by ilst.\n");
+ #endif
+
+ iTunes_meta = 1;
+ }
+ }
+#endif
#ifdef ENABLE_ITUNES_META
if (iTunes_meta) {
if (readed != _ITUNES_READ_BUF_SZ)
goto exception;
-/*hjkim, 111221, ffmpeg extract artist, genre, tracknum, excep cover image. see mov_read_udta_string()*/
+/*ffmpeg extract artist, tracknum, excep cover image. see mov_read_udta_string()*/
#if 0
/**
* Artist : Added 2010.10.28
}
/**
- * Genre : Added 2010.10.27
+ * Track number
*/
- if (genre_found == 0 &&
- read_buf[0] == 'g' && read_buf[1] == 'n' && read_buf[2] == 'r' && read_buf[3] == 'e' &&
+ if (track_found == 0 &&
+ read_buf[0] == 't' && read_buf[1] == 'r' && read_buf[2] == 'k' && read_buf[3] == 'n' &&
read_buf[8] == 'd' && read_buf[9] == 'a' && read_buf[10] == 't' && read_buf[11] == 'a') {
- genre_found = 1;
- genre_offset = mmfile_tell (fp);
+ track_found = 1;
+ track_offset = mmfile_tell (fp);
#ifdef __MMFILE_TEST_MODE__
- debug_msg ("[%s][%d]----------------------------------- genre found, offset=[%lld]\n", __func__, __LINE__, genre_offset);
+ debug_msg ("[%s][%d]----------------------------------- Track found, offset=[%lld]\n", __func__, __LINE__, track_offset);
#endif
}
-
-
+#endif
/**
- * Track number
+ * Genre : Added 2010.10.27
*/
- if (track_found == 0 &&
- read_buf[0] == 't' && read_buf[1] == 'r' && read_buf[2] == 'k' && read_buf[3] == 'n' &&
+ /*ffmpeg extract genre but only (0xa9,'g','e','n'). see mov_read_udta_string()*/
+ if (genre_found == 0 &&
+ read_buf[0] == 'g' && read_buf[1] == 'n' && read_buf[2] == 'r' && read_buf[3] == 'e' &&
read_buf[8] == 'd' && read_buf[9] == 'a' && read_buf[10] == 't' && read_buf[11] == 'a') {
- track_found = 1;
- track_offset = mmfile_tell (fp);
+ genre_found = 1;
+ genre_offset = mmfile_tell (fp);
#ifdef __MMFILE_TEST_MODE__
- debug_msg ("[%s][%d]----------------------------------- Track found, offset=[%lld]\n", __func__, __LINE__, track_offset);
+ debug_msg ("[%s][%d]----------------------------------- genre found, offset=[%lld]\n", __func__, __LINE__, genre_offset);
#endif
}
-#endif
+
/**
* Cover image
*/
mmfile_seek (fp, -(_ITUNES_READ_BUF_SZ - 1), SEEK_CUR); /*FIXME: poor search*/
} /*loop*/
-/*hjkim, 111221, ffmpeg extract artist, genre, tracknum, excep cover image. see mov_read_udta_string()*/
+/*ffmpeg extract artist, tracknum, excep cover image. see mov_read_udta_string()*/
#if 0
if (artist_found) {
if (artist_sz > 0) {
}
}
- if (genre_found) {
- mmfile_seek (fp, genre_offset, SEEK_SET);
- readed = mmfile_read (fp, read_buf, _ITUNES_GENRE_NUM_SZ);
- if (readed != _ITUNES_GENRE_NUM_SZ) {
- debug_error ("failed to read. ret = %d, in = %d\n", readed, _ITUNES_GENRE_NUM_SZ);
- } else {
- genre_index = mmfile_io_be_uint16 (*(int*)read_buf);
- #ifdef __MMFILE_TEST_MODE__
- debug_msg ("[%s][%d] genre index=[%d] \n", __func__, __LINE__, genre_index);
- #endif
- if (genre_index > 0 && genre_index < GENRE_COUNT) {
- if (!formatContext->genre) {
- memset (read_buf, 0x00, _ITUNES_READ_BUF_SZ);
- snprintf ((char*)read_buf, sizeof(read_buf),"%s", MpegAudio_Genre[genre_index-1]);
- #ifdef __MMFILE_TEST_MODE__
- debug_msg ("[%s][%d] genre string=[%s] \n", __func__, __LINE__, read_buf);
- #endif
- formatContext->genre = mmfile_strdup ((const char*)read_buf);
- }
- }
- }
- }
-
-
if (track_found) {
mmfile_seek (fp, track_offset, SEEK_SET);
readed = mmfile_read (fp, read_buf, _ITUNES_TRACK_NUM_SZ);
}
}
#endif
+ if (genre_found) {
+ mmfile_seek (fp, genre_offset, SEEK_SET);
+ readed = mmfile_read (fp, read_buf, _ITUNES_GENRE_NUM_SZ);
+ if (readed != _ITUNES_GENRE_NUM_SZ) {
+ debug_error ("failed to read. ret = %d, in = %d\n", readed, _ITUNES_GENRE_NUM_SZ);
+ } else {
+ genre_index = mmfile_io_be_uint16 (*(int*)read_buf);
+ #ifdef __MMFILE_TEST_MODE__
+ debug_msg ("[%s][%d] genre index=[%d] \n", __func__, __LINE__, genre_index);
+ #endif
+ if (genre_index > 0 && genre_index < GENRE_COUNT) {
+ if (!formatContext->genre) {
+ memset (read_buf, 0x00, _ITUNES_READ_BUF_SZ);
+ snprintf ((char*)read_buf, sizeof(read_buf),"%s", MpegAudio_Genre[genre_index-1]);
+ #ifdef __MMFILE_TEST_MODE__
+ debug_msg ("[%s][%d] genre string=[%s] \n", __func__, __LINE__, read_buf);
+ #endif
+ formatContext->genre = mmfile_strdup ((const char*)read_buf);
+ }
+ }
+ }
+ }
/*
- hjkim, 11220.
-
1) below spec is in "iTunes Package Asset Specification 4.3" published by apple.
Music Cover Art Image Profile
- TIFF with ".tif" extension (32-bit uncompressed), JPEG with ".jpg" extension (quality unconstrained), or PNG with ".png" extension
return MMFILE_UTIL_SUCCESS;
- } else {
+ } else
#endif
+ if(id3_meta) {
/**
* ID3v2
*/
return MMFILE_UTIL_SUCCESS;
-#ifdef ENABLE_ITUNES_META
}
-#endif
exception:
pInfo->pGenre = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", locale, NULL, (unsigned int*)&pInfo->genreLen);
}
+ #ifdef __MMFILE_TEST_MODE__
+ debug_msg ( "pInfo->pGenre returned = (%s), pInfo->genreLen(%d)\n", pInfo->pGenre, pInfo->genreLen);
+ #endif
+
pInfo->tagV2Info.bGenreMarked = true;
}
else if(strncmp((char *)CompTmp, "TRCK", 4) == 0 && pInfo->tagV2Info.bTrackNumMarked == false)
#endif
pInfo->tagV2Info.bAlbumMarked = true;
}
- else if(strncmp((char *)CompTmp, "TYER", 4) == 0 && pInfo->tagV2Info.bYearMarked == false)
+ else if(strncmp((char *)CompTmp, "TYER", 4) == 0 && pInfo->tagV2Info.bYearMarked == false) //TODO. TYER is replaced by the TDRC. but many files use TYER in v2.4
{
if(textEncodingType == AV_ID3V2_UTF16)
{
#endif
pInfo->tagV2Info.bComposerMarked = true;
}
- else if(strncmp((char *)CompTmp, "TRDA", 4) == 0 && pInfo->tagV2Info.bRecDateMarked== false)
+ else if(strncmp((char *)CompTmp, "TDRC", 4) == 0 && pInfo->tagV2Info.bRecDateMarked== false) //TYER(year) and TRDA are replaced by the TDRC
{
if(textEncodingType == AV_ID3V2_UTF16)
{
else
{
#ifdef __MMFILE_TEST_MODE__
- debug_msg ( "pInfo->genreLen size is Zero Or not UTF16 code! %d %s\n",pInfo->genreLen,pInfo->pGenre);
+ debug_msg ( "pInfo->genreLen size is Zero Or not UTF16 code! genreLen[%d] genre[%s]\n",pInfo->genreLen,pInfo->pGenre);
#endif
if (pInfo->pGenre) {
pInfo->genreLen = strlen(pInfo->pGenre);
pInfo->pGenre[pInfo->genreLen] = '\0';
}
#ifdef __MMFILE_TEST_MODE__
- debug_msg ( "pInfo->pGenre = %s\n", pInfo->pGenre);
+ debug_msg ( "pInfo->pGenre = %s, pInfo->genreLen = %d\n", pInfo->pGenre, pInfo->genreLen);
#endif
}
else