diff options
author | Haejeong Kim <backto.kim@samsung.com> | 2012-08-21 18:21:53 +0900 |
---|---|---|
committer | Haejeong Kim <backto.kim@samsung.com> | 2012-08-21 18:21:53 +0900 |
commit | c47bcf19438edeba50e3ef20b19b18227bb9e551 (patch) | |
tree | 9d5b3984cd7d12c3b30e6f2b00f9bfc83f525d12 | |
parent | 44d9209751977fa2a6ff189d966d73cf044dfdaf (diff) | |
download | libmm-fileinfo-c47bcf19438edeba50e3ef20b19b18227bb9e551.tar.gz libmm-fileinfo-c47bcf19438edeba50e3ef20b19b18227bb9e551.tar.bz2 libmm-fileinfo-c47bcf19438edeba50e3ef20b19b18227bb9e551.zip |
2.0_beta
33 files changed, 1415 insertions, 241 deletions
diff --git a/Makefile.am b/Makefile.am index 13edf4f..68052bb 100755 --- a/Makefile.am +++ b/Makefile.am @@ -9,7 +9,8 @@ SUBDIRS = utils \ 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 diff --git a/TC/utc/utc_mm_file_create_content_attrs_from_memory_func.c b/TC/utc/utc_mm_file_create_content_attrs_from_memory_func.c index 0f29d60..87db9bc 100755 --- a/TC/utc/utc_mm_file_create_content_attrs_from_memory_func.c +++ b/TC/utc/utc_mm_file_create_content_attrs_from_memory_func.c @@ -56,7 +56,6 @@ /////////////////////////////////////////////////////////////////////////////////////////////////// // 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" diff --git a/TC/utc/utc_mm_file_create_content_attrs_func.c b/TC/utc/utc_mm_file_create_content_attrs_func.c index 3721bcc..773d287 100755 --- a/TC/utc/utc_mm_file_create_content_attrs_func.c +++ b/TC/utc/utc_mm_file_create_content_attrs_func.c @@ -56,7 +56,6 @@ // 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 */ diff --git a/TC/utc/utc_mm_file_create_content_attrs_simple_func.c b/TC/utc/utc_mm_file_create_content_attrs_simple_func.c index 66cda26..6d859c3 100755 --- a/TC/utc/utc_mm_file_create_content_attrs_simple_func.c +++ b/TC/utc/utc_mm_file_create_content_attrs_simple_func.c @@ -48,7 +48,6 @@ #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" /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/TC/utc/utc_mm_file_create_tag_attrs_from_memory_func.c b/TC/utc/utc_mm_file_create_tag_attrs_from_memory_func.c index 30c8320..ff22c19 100755 --- a/TC/utc/utc_mm_file_create_tag_attrs_from_memory_func.c +++ b/TC/utc/utc_mm_file_create_tag_attrs_from_memory_func.c @@ -56,7 +56,6 @@ // 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) \ diff --git a/TC/utc/utc_mm_file_create_tag_attrs_func.c b/TC/utc/utc_mm_file_create_tag_attrs_func.c index c0192b7..93e1733 100755 --- a/TC/utc/utc_mm_file_create_tag_attrs_func.c +++ b/TC/utc/utc_mm_file_create_tag_attrs_func.c @@ -56,7 +56,6 @@ // 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" /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/TC/utc/utc_mm_file_destroy_content_attrs_func.c b/TC/utc/utc_mm_file_destroy_content_attrs_func.c index 34ec6df..44f6679 100755 --- a/TC/utc/utc_mm_file_destroy_content_attrs_func.c +++ b/TC/utc/utc_mm_file_destroy_content_attrs_func.c @@ -57,7 +57,6 @@ // 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_destroy_content_attrs"
struct tet_testlist tet_testlist[] = {
diff --git a/TC/utc/utc_mm_file_destroy_tag_attrs_func.c b/TC/utc/utc_mm_file_destroy_tag_attrs_func.c index 85109da..a9c5520 100755 --- a/TC/utc/utc_mm_file_destroy_tag_attrs_func.c +++ b/TC/utc/utc_mm_file_destroy_tag_attrs_func.c @@ -57,7 +57,6 @@ // 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_destroy_tag_attrs"
///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/TC/utc/utc_mm_file_get_attrs_func.c b/TC/utc/utc_mm_file_get_attrs_func.c index 09eed96..4dca305 100755 --- a/TC/utc/utc_mm_file_get_attrs_func.c +++ b/TC/utc/utc_mm_file_get_attrs_func.c @@ -56,7 +56,6 @@ ///////////////////////////////////////////////////////////////////////////////////////////////////
// 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_get_attrs"
///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/TC/utc/utc_mm_file_get_stream_info_func.c b/TC/utc/utc_mm_file_get_stream_info_func.c index a4f33fa..7fb16e5 100755 --- a/TC/utc/utc_mm_file_get_stream_info_func.c +++ b/TC/utc/utc_mm_file_get_stream_info_func.c @@ -56,8 +56,6 @@ // 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" /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -88,7 +86,7 @@ void utc_mm_file_get_stream_info_func_01() 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); @@ -102,7 +100,7 @@ void utc_mm_file_get_stream_info_func_02() 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); @@ -113,7 +111,7 @@ void utc_mm_file_get_stream_info_func_03() 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); } @@ -121,7 +119,7 @@ void utc_mm_file_get_stream_info_func_04() { 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); } diff --git a/TC/utc/utc_mm_fileinfo_common.h b/TC/utc/utc_mm_fileinfo_common.h index 9d8ed3c..0e04e6b 100755 --- a/TC/utc/utc_mm_fileinfo_common.h +++ b/TC/utc/utc_mm_fileinfo_common.h @@ -54,6 +54,10 @@ #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(); diff --git a/configure.ac b/configure.ac index 1ae5f56..0f29e31 100755 --- a/configure.ac +++ b/configure.ac @@ -93,9 +93,9 @@ AC_ARG_ENABLE(drm, AC_HELP_STRING([--enable-drm], [using drm]), 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") diff --git a/debian/changelog b/debian/changelog index e9ef990..8986111 100644..100755 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,876 @@ +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 diff --git a/debian/control b/debian/control index 7887ddf..41c0818 100755 --- a/debian/control +++ b/debian/control @@ -3,20 +3,20 @@ Section: libs 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 @@ -29,5 +29,5 @@ Description: Multimedia Framework FileInfo Library (unstripped) 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 diff --git a/formats/ffmpeg/Makefile.am b/formats/ffmpeg/Makefile.am index 331742e..9803421 100755 --- a/formats/ffmpeg/Makefile.am +++ b/formats/ffmpeg/Makefile.am @@ -13,7 +13,7 @@ noinst_HEADERS = include/mm_file_format_dummy.h \ 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 \ @@ -25,7 +25,8 @@ libmmfile_formats_la_SOURCES = mm_file_formats.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) \ @@ -47,9 +48,7 @@ libmmfile_formats_la_CFLAGS += -DMMFILE_FORMAT_DEBUG_DUMP 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 @@ -65,7 +64,7 @@ libmmfile_formats_la_LIBADD = $(MMCOMMON_LIBS) \ $(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\" diff --git a/formats/ffmpeg/include/mm_file_format_aac.h b/formats/ffmpeg/include/mm_file_format_aac.h index a8f48cc..25f3328 100755 --- a/formats/ffmpeg/include/mm_file_format_aac.h +++ b/formats/ffmpeg/include/mm_file_format_aac.h @@ -64,6 +64,7 @@ typedef struct _mmfileaactaginfo { char *copyright; char *comment; char *genre; + char *tracknum; char *composer; char *classification; char *rating; diff --git a/formats/ffmpeg/mm_file_format_aac.c b/formats/ffmpeg/mm_file_format_aac.c index f479dea..1669064 100755 --- a/formats/ffmpeg/mm_file_format_aac.c +++ b/formats/ffmpeg/mm_file_format_aac.c @@ -237,14 +237,17 @@ int _parse_id3_tag(tMMFILE_AAC_HANDLE* pData) 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; @@ -256,7 +259,6 @@ int _parse_id3_tag(tMMFILE_AAC_HANDLE* pData) ret = MMFILE_AAC_PARSER_SUCCESS; - mm_file_id3tag_restore_content_info(hTag); failure: if(tagBuff) { @@ -864,6 +866,8 @@ int mmfile_format_read_tag_aac (MMFileFormatContext *formatContext) 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) diff --git a/formats/ffmpeg/mm_file_format_ffmpeg.c b/formats/ffmpeg/mm_file_format_ffmpeg.c index 7b519c9..8ebf66f 100755 --- a/formats/ffmpeg/mm_file_format_ffmpeg.c +++ b/formats/ffmpeg/mm_file_format_ffmpeg.c @@ -29,20 +29,11 @@ #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> @@ -83,9 +74,6 @@ int mmfile_format_open_ffmpg (MMFileFormatContext *formatContext) 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,}; @@ -156,54 +144,8 @@ int mmfile_format_open_ffmpg (MMFileFormatContext *formatContext) 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__ @@ -316,7 +258,9 @@ int mmfile_format_read_stream_ffmpg (MMFileFormatContext * formatContext) /** *@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; @@ -444,7 +388,7 @@ int mmfile_format_read_tag_ffmpg (MMFileFormatContext *formatContext) } #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; @@ -631,7 +575,7 @@ int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigne #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 @@ -871,8 +815,8 @@ static void _dump_av_packet (AVPacket *pkt) 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 @@ -907,7 +851,7 @@ static int _get_first_good_video_frame (AVFormatContext *pFormatCtx, AVCodecCont 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 diff --git a/formats/ffmpeg/mm_file_format_frame.c b/formats/ffmpeg/mm_file_format_frame.c new file mode 100755 index 0000000..3105c4a --- /dev/null +++ b/formats/ffmpeg/mm_file_format_frame.c @@ -0,0 +1,250 @@ +/* + * 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; + } diff --git a/formats/ffmpeg/mm_file_format_mmf.c b/formats/ffmpeg/mm_file_format_mmf.c index 238c385..37a4bb1 100755 --- a/formats/ffmpeg/mm_file_format_mmf.c +++ b/formats/ffmpeg/mm_file_format_mmf.c @@ -1846,11 +1846,20 @@ _mmf_SeqDataCheck3(PLOADINFO psLoad, unsigned char bSmafType) 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) { @@ -1863,9 +1872,11 @@ _mmf_SeqDataCheck3(PLOADINFO psLoad, unsigned char bSmafType) 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); @@ -2549,15 +2560,15 @@ _mmf_MalibMakeCRC(unsigned int dSize, unsigned char* pbData) 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]); @@ -2844,12 +2855,12 @@ mmf_file_mmf_get_duration (char *src, int is_xmf) 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"); diff --git a/formats/ffmpeg/mm_file_formats.c b/formats/ffmpeg/mm_file_formats.c index abbe22f..520dfed 100755 --- a/formats/ffmpeg/mm_file_formats.c +++ b/formats/ffmpeg/mm_file_formats.c @@ -24,7 +24,7 @@ #include <stdlib.h> #ifdef DRM_SUPPORT -#include <drm-service.h> +#include <drm_client.h> #endif @@ -137,9 +137,6 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, 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); @@ -155,12 +152,14 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, 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 { @@ -172,35 +171,26 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, /** * 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 diff --git a/include/mm_file.h b/include/mm_file.h index d695865..bcaae86 100755 --- a/include/mm_file.h +++ b/include/mm_file.h @@ -552,6 +552,8 @@ int mm_file_create_content_attrs_simple(MMHandleType *content_attrs, const char 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); + /** @} */ diff --git a/include/mm_file_format_frame.h b/include/mm_file_format_frame.h new file mode 100755 index 0000000..4f1df94 --- /dev/null +++ b/include/mm_file_format_frame.h @@ -0,0 +1,24 @@ +/* + * 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 @@ -36,6 +36,7 @@ /* 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" @@ -147,9 +148,10 @@ int (*mmfile_format_read_stream) (MMFileFormatContext *formatContext); 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__ @@ -280,6 +282,7 @@ _info_set_attr_media (mmf_attrs_t *attrs, MMFileFormatContext *formatContext) 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); @@ -665,7 +668,7 @@ int mm_file_get_synclyrics_info(MMHandleType tag_attrs, int index, unsigned long 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"); @@ -784,7 +787,7 @@ int mm_file_destroy_tag_attrs(MMHandleType tag_attrs) 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); @@ -1128,6 +1131,38 @@ int mm_file_create_content_attrs_simple(MMHandleType *contents_attrs, const char 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 diff --git a/packaging/libmm-fileinfo.spec b/packaging/libmm-fileinfo.spec index 618807d..4735c03 100644..100755 --- a/packaging/libmm-fileinfo.spec +++ b/packaging/libmm-fileinfo.spec @@ -1,15 +1,16 @@ 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) @@ -19,7 +20,7 @@ BuildRequires: pkgconfig(libavformat) %if %{use_drm} BuildRequires: libss-client-devel -BuildRequires: pkgconfig(drm-service) +BuildRequires: pkgconfig(drm-client) %endif %description @@ -49,7 +50,6 @@ CFLAGS="${CFLAGS} -D_MM_PROJECT_FLOATER -DEXPORT_API=\"__attribute__((visibility make %install -rm -rf %{buildroot} %make_install @@ -59,7 +59,6 @@ rm -rf %{buildroot} %files -%defattr(-,root,root,-) /usr/bin/memtrace_reader /usr/bin/mm_file_test /usr/lib/libmmffile.so.0 @@ -70,14 +69,13 @@ rm -rf %{buildroot} /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 diff --git a/tests/mm_file_test.c b/tests/mm_file_test.c index 47f9466..b07673a 100755 --- a/tests/mm_file_test.c +++ b/tests/mm_file_test.c @@ -22,6 +22,7 @@ #include <string.h> #include <stdio.h> #include <stdlib.h> +#include <stdbool.h> #include <sys/types.h> #include <sys/stat.h> @@ -120,7 +121,7 @@ char * VideoCodecTypeString [] = { 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) { @@ -128,6 +129,20 @@ 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) { @@ -146,7 +161,7 @@ _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); @@ -162,7 +177,7 @@ int main(int argc, char **argv) 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) { @@ -174,7 +189,7 @@ int main(int argc, char **argv) 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; @@ -198,8 +213,17 @@ static int mmfile_get_file_infomation (void *data, void* user_data) 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; @@ -264,8 +288,17 @@ static int mmfile_get_file_infomation (void *data, void* user_data) 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; diff --git a/tests/mm_file_traverse.h b/tests/mm_file_traverse.h index cfca7cf..fc05bee 100755 --- a/tests/mm_file_traverse.h +++ b/tests/mm_file_traverse.h @@ -30,7 +30,7 @@ typedef enum 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); diff --git a/tests/mm_file_traverser.c b/tests/mm_file_traverser.c index 990ee04..7477c10 100755 --- a/tests/mm_file_traverser.c +++ b/tests/mm_file_traverser.c @@ -26,6 +26,7 @@ #include <stdio.h> #include <string.h> #include <stdlib.h> +#include <stdbool.h> #include <glib.h> #include "mm_file_traverse.h" @@ -98,7 +99,7 @@ int mmfile_get_file_names (char *root_dir, MMFunc cbfunc, void* user_data) printf ("file: %s\n", cdirname); if ( cbfunc != NULL ) { - cbfunc (cdirname, user_data); + cbfunc (cdirname, user_data, true); } } diff --git a/utils/Makefile.am b/utils/Makefile.am index 90b858c..a47d845 100755 --- a/utils/Makefile.am +++ b/utils/Makefile.am @@ -26,11 +26,5 @@ endif 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) diff --git a/utils/include/mm_file_utils.h b/utils/include/mm_file_utils.h index 0a01ef5..5b14f95 100755 --- a/utils/include/mm_file_utils.h +++ b/utils/include/mm_file_utils.h @@ -40,7 +40,7 @@ extern "C" { #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 diff --git a/utils/mm_file_util_io.c b/utils/mm_file_util_io.c index f915b5a..adc8f0a 100755 --- a/utils/mm_file_util_io.c +++ b/utils/mm_file_util_io.c @@ -302,16 +302,10 @@ int mmfile_register_io_all () 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); diff --git a/utils/mm_file_util_locale.c b/utils/mm_file_util_locale.c index 4368803..6d23d1a 100755 --- a/utils/mm_file_util_locale.c +++ b/utils/mm_file_util_locale.c @@ -92,7 +92,7 @@ char *MMFileUtilGetLocale (int *error) #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) diff --git a/utils/mm_file_util_tag.c b/utils/mm_file_util_tag.c index cb8dde9..ada0bd2 100755 --- a/utils/mm_file_util_tag.c +++ b/utils/mm_file_util_tag.c @@ -719,6 +719,7 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle 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 @@ -761,7 +762,7 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle debug_msg ("ID3v2 tag detected.\n"); #endif - + id3_meta = 1; #ifdef ENABLE_ITUNES_META iTunes_meta = 0; #endif @@ -769,7 +770,7 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle 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 @@ -780,9 +781,40 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle ((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) { @@ -815,7 +847,7 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle 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 @@ -834,36 +866,36 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle } /** - * 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 */ @@ -886,7 +918,7 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle 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) { @@ -919,30 +951,6 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle } } - 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); @@ -958,9 +966,29 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle } } #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 @@ -1007,8 +1035,9 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle return MMFILE_UTIL_SUCCESS; - } else { + } else #endif + if(id3_meta) { /** * ID3v2 */ @@ -1144,9 +1173,7 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle return MMFILE_UTIL_SUCCESS; -#ifdef ENABLE_ITUNES_META } -#endif exception: @@ -2485,6 +2512,10 @@ bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) 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) @@ -3071,7 +3102,7 @@ bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) #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) { @@ -3598,7 +3629,7 @@ bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) #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) { @@ -3848,7 +3879,7 @@ void mm_file_id3tag_restore_content_info(AvFileContentInfo* pInfo) 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); @@ -3924,7 +3955,7 @@ void mm_file_id3tag_restore_content_info(AvFileContentInfo* pInfo) 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 |