diff options
author | jk7744.park <jk7744.park@samsung.com> | 2015-10-24 16:51:59 +0900 |
---|---|---|
committer | jk7744.park <jk7744.park@samsung.com> | 2015-10-24 16:51:59 +0900 |
commit | 1f0d82a1dfc461cec19610e04e77c0953017798d (patch) | |
tree | 1422dfecb699a5604598a88ccc3c69a19e179904 | |
parent | 97e3df24773a6715ab4e1f5ed67f27c56e9736dd (diff) | |
download | libmm-fileinfo-1f0d82a1dfc461cec19610e04e77c0953017798d.tar.gz libmm-fileinfo-1f0d82a1dfc461cec19610e04e77c0953017798d.tar.bz2 libmm-fileinfo-1f0d82a1dfc461cec19610e04e77c0953017798d.zip |
tizen 2.4 releasetizen_2.4_mobile_releasesubmit/tizen_2.4/20151028.064410accepted/tizen/2.4/mobile/20151029.032542tizen_2.4accepted/tizen_2.4_mobile
78 files changed, 10921 insertions, 29872 deletions
diff --git a/Makefile.am b/Makefile.am index 68052bb..2ecc9df 100755 --- a/Makefile.am +++ b/Makefile.am @@ -41,10 +41,8 @@ libmmffile_la_LIBADD += $(top_builddir)/codecs/ffmpeg/libmmfile_codecs.la \ $(top_builddir)/formats/ffmpeg/libmmfile_formats.la endif - -libmmffile_la_CFLAGS += $(MMLOG_CFLAGS) -DMMF_LOG_OWNER=0x040 -DMMF_DEBUG_PREFIX=\"MMF-FILE\" -libmmffile_la_LIBADD += $(MMLOG_LIBS) - +libmmffile_la_CFLAGS += $(DLOG_CFLAGS) +libmmffile_la_LIBADD += $(DLOG_LIBS) pcfiles = mm-fileinfo.pc pkgconfigdir = $(libdir)/pkgconfig diff --git a/TC/build.sh b/TC/build.sh deleted file mode 100755 index 1276482..0000000 --- a/TC/build.sh +++ /dev/null @@ -1,32 +0,0 @@ -#./_export_env.sh # setting environment variables -#!/bin/sh -export ARCH=target -export TET_INSTALL_PATH=/scratchbox/TETware/ -export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target -export PATH=$TET_TARGET_PATH/bin:$PATH -export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH - -export TET_ROOT=$TET_TARGET_PATH - -set $(pwd) -export TET_SUITE_ROOT=$1 - -set $(date +%s) -FILE_NAME_EXTENSION=$1 - -echo PATH=$PATH -echo LD_LIBRARY_PATH=$LD_LIBRARY_PATH -echo TET_ROOT=$TET_ROOT -echo TET_SUITE_ROOT=$TET_SUITE_ROOT -echo ARCH=$ARCH - -RESULT_DIR=results-$ARCH -HTML_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.html -JOURNAL_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.journal - -mkdir $RESULT_DIR - -tcc -c -p ./ # executing tcc, with clean option (-c) -tcc -b -j $JOURNAL_RESULT -p ./ # executing tcc to build test cases (-b) -grw -c 3 -f chtml -o $HTML_RESULT $JOURNAL_RESULT # reporting the result - diff --git a/TC/execute.sh b/TC/execute.sh deleted file mode 100755 index 8e414df..0000000 --- a/TC/execute.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh - -export ARCH=target - -export TET_INSTALL_PATH=/mnt/nfs/TETware # path to mount -export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target -export PATH=$TET_TARGET_PATH/bin:$PATH -export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH - -export TET_ROOT=$TET_TARGET_PATH - -set $(pwd) -export TET_SUITE_ROOT=$1 - -set $(date +%s) -FILE_NAME_EXTENSION=$1 - -echo PATH=$PATH -echo LD_LIBRARY_PATH=$LD_LIBRARY_PATH -echo TET_ROOT=$TET_ROOT -echo TET_SUITE_ROOT=$TET_SUITE_ROOT -echo ARCH=$ARCH - -RESULT_DIR=results-$ARCH -HTML_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.html -JOURNAL_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.journal - -mkdir $RESULT_DIR - -tcc -e -j $JOURNAL_RESULT -p ./ -grw -c 3 -f chtml -o $HTML_RESULT $JOURNAL_RESULT # reporting the result - diff --git a/TC/making_new_tet_scen.py b/TC/making_new_tet_scen.py deleted file mode 100755 index 6c5b845..0000000 --- a/TC/making_new_tet_scen.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/python - -############################################# -# tet_scen auto generator -# -# ** argv[1] = TC root -############################################# - -import sys,string,os - - -write_file = open("tet_scen", 'w') - -# -# making new tet_scen -# -def making_tet_scen (filename): - #tmp_list = filename.strip().split('/') - n_filename = filename.replace(' ', '\\ ') - #print n_filename - #new_path = "/"+ sys.argv[1] +"/"+n_filename[2:-6] - new_path = "/"+n_filename[:-6] - #print new_path - file = open(filename, 'r') - lines = file.readlines() - for line in lines: - if len(line.strip()) > 1: - list = line.strip().split('/') - #print new_path + list[-1] - write_file.write("\t"+new_path+list[-1]+"\n") - -# -# usage() -# -def usage(): - print(" ") - print("./making_new_tet_scen.py tc_root") - print("Put the Test Case's root directory.") - print("Do not include '/' at the end") - print(" ") - -# -# main() -# -def main(): - if len(sys.argv) < 2: - usage() - sys.exit(0) - - os.system('find '+ sys.argv[1] +' -name "tslist" > tslist.txt') - - #write_file = open("tetscen", w) - write_file.write("# auto generated tet_scen\n") - write_file.write("all\n") - write_file.write("\t\"Starting Full Test Suite\"\n") - - for file in open("tslist.txt", 'r'): - #print file.strip() - making_tet_scen(file.strip()) - - write_file.write("\t\"Completed Full Test Suite\"\n") - write_file.write("# EOF\n") - write_file.close() - print(" ") - print("==============================") - print("New tet_scen file is made~~~~") - print("==============================") - print(" ") -main() diff --git a/TC/tet_scen b/TC/tet_scen deleted file mode 100755 index b03b95f..0000000 --- a/TC/tet_scen +++ /dev/null @@ -1,14 +0,0 @@ -# auto generated tet_scen -all - "Starting Full Test Suite" - /utc/utc_mm_file_create_tag_attrs_func - /utc/utc_mm_file_create_content_attrs_func - /utc/utc_mm_file_destroy_content_attrs_func - /utc/utc_mm_file_destroy_tag_attrs_func - /utc/utc_mm_file_get_stream_info_func - /utc/utc_mm_file_create_content_attrs_simple_func - /utc/utc_mm_file_create_content_attrs_from_memory_func - /utc/utc_mm_file_create_tag_attrs_from_memory_func - /utc/utc_mm_file_get_attrs_func - "Completed Full Test Suite" -# EOF diff --git a/TC/tetbuild.cfg b/TC/tetbuild.cfg deleted file mode 100755 index addcce9..0000000 --- a/TC/tetbuild.cfg +++ /dev/null @@ -1,7 +0,0 @@ -TET_OUTPUT_CAPTURE=True # capture option for build operation checking -TET_BUILD_TOOL=make # build with using make command -TET_BUILD_FILE=-f Makefile # execution file (Makefile) for build -TET_API_COMPLIANT=True # use TET API in Test Case ? -TET_PASS_TC_NAME=True # report passed TC name in Journal file? - - diff --git a/TC/tetclean.cfg b/TC/tetclean.cfg deleted file mode 100755 index 00d58d5..0000000 --- a/TC/tetclean.cfg +++ /dev/null @@ -1,6 +0,0 @@ -TET_OUTPUT_CAPTURE=True # capture option -TET_CLEAN_TOOL= make clean # clean tool -TET_CLEAN_FILE= Makefile # file for clean -TET_API_COMPLIANT=True # TET API useage -TET_PASS_TC_NAME=True # showing name , passed TC - diff --git a/TC/tetexec.cfg b/TC/tetexec.cfg deleted file mode 100755 index e726ecc..0000000 --- a/TC/tetexec.cfg +++ /dev/null @@ -1,6 +0,0 @@ -TET_OUTPUT_CAPTURE=True # capturing execution or not -TET_EXEC_TOOL= # ex) exec : execution tool set up/ Optional -TET_EXEC_FILE= # ex) exectool : execution file/ Optional -TET_API_COMPLIANT=True # Test case or Tool usesTET API? -TET_PASS_TC_NAME=True # showing Passed TC name ? - diff --git a/TC/tslist.txt b/TC/tslist.txt deleted file mode 100644 index 24c0a1a..0000000 --- a/TC/tslist.txt +++ /dev/null @@ -1 +0,0 @@ -utc/tslist diff --git a/TC/utc/Makefile b/TC/utc/Makefile deleted file mode 100755 index 5b0c45e..0000000 --- a/TC/utc/Makefile +++ /dev/null @@ -1,70 +0,0 @@ -ifeq ($(ARCH),target)
- PKG_CONFIG_PATH=/usr/lib/pkgconfig
- export PKG_CONFIG_PATH
- CC=arm-linux-gcc -Wall
- CXX=arm-linux-g++ -Wall
-else
- PKG_CONFIG_PATH=/usr/lib/pkgconfig
- export PKG_CONFIG_PATH
- CC=gcc -Wall
- CXX=gcc -Wall
-endif
-
-TS1 = utc_mm_file_create_tag_attrs_func
-TS2 = utc_mm_file_create_content_attrs_func
-TS3 = utc_mm_file_destroy_content_attrs_func
-TS4 = utc_mm_file_destroy_tag_attrs_func
-TS5 = utc_mm_file_get_stream_info_func
-TS6 = utc_mm_file_create_content_attrs_simple_func
-TS7 = utc_mm_file_create_content_attrs_from_memory_func
-TS8 = utc_mm_file_create_tag_attrs_from_memory_func
-TS9 = utc_mm_file_get_attrs_func
-
-LIBS = `pkg-config --libs mm-fileinfo glib-2.0`
-LIBS +=-L/usr/lib/:/usr/lib/pkgconfig
-LIBS +=$(TET_ROOT)/lib/tet3/tcm_s.o
-LIBS +=-L$(TET_ROOT)/lib/tet3 -ltcm_s
-LIBS +=-L$(TET_ROOT)/lib/tet3/ -lapi_s
-
-INCS = -I. `pkg-config --cflags mm-fileinfo glib-2.0`
-INCS += -I$(TET_ROOT)/inc/tet3
-INCS += -I/usr/include/mmf
-
-CFLAGS = $(INCS)
-CC += $(CFLAGS)
-LDFLAGS = $(LIBS)
-
-all : $(TS1) $(TS2) $(TS3) $(TS4) $(TS5) $(TS6) $(TS7) $(TS8) $(TS9)
-
-$(TS1): $(TS1).c
- $(CC) -o $(TS1) $(TS1).c $(LDFLAGS)
-
-$(TS2): $(TS2).c
- $(CC) -o $(TS2) $(TS2).c $(LDFLAGS)
-
-$(TS3): $(TS3).c
- $(CC) -o $(TS3) $(TS3).c $(LDFLAGS)
-
-$(TS4): $(TS4).c
- $(CC) -o $(TS4) $(TS4).c $(LDFLAGS)
-
-$(TS5): $(TS5).c
- $(CC) -o $(TS5) $(TS5).c $(LDFLAGS)
-
-$(TS6): $(TS6).c
- $(CC) -o $(TS6) $(TS6).c $(LDFLAGS)
-
-$(TS7): $(TS7).c
- $(CC) -o $(TS7) $(TS7).c $(LDFLAGS)
-
-$(TS8): $(TS8).c
- $(CC) -o $(TS8) $(TS8).c $(LDFLAGS)
-
-$(TS9): $(TS9).c
- $(CC) -o $(TS9) $(TS9).c $(LDFLAGS)
-
-clean:
- rm -rf *~ *.o $(TS1) $(TS2) $(TS3) $(TS4) $(TS5) $(TS6) $(TS7) $(TS8) $(TS9)
-
-
-
diff --git a/TC/utc/tslist b/TC/utc/tslist deleted file mode 100755 index 4e77e0d..0000000 --- a/TC/utc/tslist +++ /dev/null @@ -1,9 +0,0 @@ -./utc_mm_file_create_tag_attrs_func -./utc_mm_file_create_content_attrs_func -./utc_mm_file_destroy_content_attrs_func -./utc_mm_file_destroy_tag_attrs_func -./utc_mm_file_get_stream_info_func -./utc_mm_file_create_content_attrs_simple_func -./utc_mm_file_create_content_attrs_from_memory_func -./utc_mm_file_create_tag_attrs_from_memory_func -./utc_mm_file_get_attrs_func
\ No newline at end of file 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 deleted file mode 100755 index 87db9bc..0000000 --- a/TC/utc/utc_mm_file_create_content_attrs_from_memory_func.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * 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. - * - */ - -/** -* @ingroup MMF_FILEINFO_API -* @addtogroup FILEINFO -*/ - -/** -* @ingroup FILEINFO -* @addtogroup UTS_MMF_FILEINFO Unit -*/ - -/** -* @ingroup UTS_MMF_FILEINFO Unit -* @addtogroup UTS_MMF_FILEINFO_GET_ATTRS_ Uts_Mmf_Fileinfo_Get_Content_Attrs_ -* @{ -*/ - -/** -* @file utc_mm_file_create_content_attrs.c -* @brief This is a suit of unit test cases to test mm_file_create_content_attrs_from_memory() API function -* @author Haejeong Kim <backto.kim@samsung.com> -* @version Initial Creation Version 0.1 -* @date 2008.09.08 -* @last update 2011.01.20 -*/ - - -#include "utc_mm_fileinfo_common.h" - - - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Definitions of "uts_mmf_fileinfo_get_tag_attrs_from_memory" -//------------------------------------------------------------------------------------------------- -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Declare the global variables and registers and Internal Funntions -//------------------------------------------------------------------------------------------------- -#define TEST_API "mm_file_create_content_attrs_from_memory" - - -#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); \ - dts_message ( __func__, "file size = %d", size ); \ - } \ -}while(0) - -/////////////////////////////////////////////////////////////////////////////////////////////////// -/* Initialize TCM data structures */ - - -struct tet_testlist tet_testlist[] = { - {utc_mm_file_create_content_attrs_from_memory_func_01, 1}, - {utc_mm_file_create_content_attrs_from_memory_func_02, 2}, - {utc_mm_file_create_content_attrs_from_memory_func_03, 3}, - {NULL, 0} -}; - - - -/* Start up function for each test purpose */ -void startup () -{ -} - -/* Clean up function for each test purpose */ -void cleanup () -{ -} - -void utc_mm_file_create_content_attrs_from_memory_func_01() -{ - int file_size = 0; - unsigned char * buffer = NULL; - MMHandleType content_attr = 0; - int err = 0; - - /* Read file */ - READ_FROM_FILE(MEDIA_PATH, buffer, file_size); - - err =mm_file_create_content_attrs_from_memory( &content_attr, buffer, file_size, MM_FILE_FORMAT_MP3); - dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err); - - if (buffer) - free (buffer); - - return; -} - -void utc_mm_file_create_content_attrs_from_memory_func_02() -{ - int file_size = 0; - unsigned char * buffer = NULL; - MMHandleType content_attr = 0; - int err = 0; - - /* Read file */ - READ_FROM_FILE(MEDIA_PATH, buffer, file_size); - - err =mm_file_create_content_attrs_from_memory( &content_attr, NULL, file_size, MM_FILE_FORMAT_MP3); - dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err); - - if (buffer) - free (buffer); - - return; -} - -void utc_mm_file_create_content_attrs_from_memory_func_03() -{ - int file_size = 0; - unsigned char * buffer = NULL; - int err = 0; - - /* Read file */ - READ_FROM_FILE(MEDIA_PATH, buffer, file_size); - - err =mm_file_create_content_attrs_from_memory( NULL, buffer, file_size, MM_FILE_FORMAT_MP3); - dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err); - - if (buffer) - free (buffer); - - return; -} - -/** @} */ - - - - diff --git a/TC/utc/utc_mm_file_create_content_attrs_func.c b/TC/utc/utc_mm_file_create_content_attrs_func.c deleted file mode 100755 index 773d287..0000000 --- a/TC/utc/utc_mm_file_create_content_attrs_func.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * 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. - * - */ - -/** -* @ingroup MMF_FILEINFO_API -* @addtogroup FILEINFO -*/ - -/** -* @ingroup FILEINFO -* @addtogroup UTS_MMF_FILEINFO Unit -*/ - -/** -* @ingroup UTS_MMF_FILEINFO Unit -* @addtogroup UTS_MMF_FILEINFO_GET_ATTRS_ Uts_Mmf_Fileinfo_Get_Content_Attrs_ -* @{ -*/ - -/** -* @file uts_mm_fileinfo_get_content_attrs.c -* @brief This is a suit of unit test cases to test mm_file_get_content_attr() API function -* @author Haejeong Kim <backto.kim@samsung.com> -* @version Initial Creation Version 0.1 -* @date 2008.09.08 -* @last update 2011.01.20 -*/ - -#include "utc_mm_fileinfo_common.h" - - - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Definitions of "uts_mmf_fileinfo_get_tag_attrs" -//------------------------------------------------------------------------------------------------- -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Declare the global variables and registers and Internal Funntions -//------------------------------------------------------------------------------------------------- -#define TEST_API "mm_file_create_content_attrs" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -/* Initialize TCM data structures */ - - -struct tet_testlist tet_testlist[] = { - {utc_mm_file_create_content_attrs_func_01, 1}, - {utc_mm_file_create_content_attrs_func_02, 2}, - {NULL, 0} -}; - -/* Start up function for each test purpose */ -void startup () -{ -} - -/* Clean up function for each test purpose */ -void cleanup () -{ -} - -void utc_mm_file_create_content_attrs_func_01() -{ - int err = 0; - MMHandleType content_attrs; - - /* Get the content & tag attributes */ - err = mm_file_create_content_attrs(&content_attrs, MEDIA_PATH); - dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err); - - return; -} - -void utc_mm_file_create_content_attrs_func_02() -{ - int err = 0; - - err = mm_file_create_content_attrs( NULL, MEDIA_PATH); - dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err); - - return; -} - - - - - - -/** @} */ - - - - 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 deleted file mode 100755 index 6d859c3..0000000 --- a/TC/utc/utc_mm_file_create_content_attrs_simple_func.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * 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. - * - */ - -/** -* @ingroup MMF_FILEINFO_API -* @addtogroup FILEINFO -*/ - -/** -* @ingroup FILEINFO -* @addtogroup UTS_MMF_FILEINFO Unit -*/ - -/** -* @ingroup UTS_MMF_FILEINFO Unit -* @addtogroup UTS_MMF_FILEINFO_GET_CONTENT_ATTR_SIMPLE_ Uts_Mmf_Fileinfo_Get_Content_Attr_Simple_ -* @{ -*/ - -/** -* @file uts_mm_fileinfo_get_content_attr_simple.c -* @brief This is a suit of unit test cases to test mm_file_get_content_attr_simple() API function -* @author Haejeong Kim <backto.kim@samsung.com> -* @version Initial Creation Version 0.1 -* @date 2008.09.08 -* @last update 2011.01.20 -*/ - - -#include "utc_mm_fileinfo_common.h" - - -#define TEST_API "mm_file_create_content_attrs_simple" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Definitions of "uts_mmf_fileinfo_get_stream_info" -//------------------------------------------------------------------------------------------------- -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Declare the global variables and registers and Internal Funntions -//------------------------------------------------------------------------------------------------- - -struct tet_testlist tet_testlist[] = { - {utc_mm_file_create_content_attrs_simple_func_01, 1}, - {utc_mm_file_create_content_attrs_simple_func_02, 2}, - {utc_mm_file_create_content_attrs_simple_func_03, 3}, - {NULL, 0} -}; - - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -/* Initialize TCM data structures */ - -/* Start up function for each test purpose */ -void startup () -{ -} - -/* Clean up function for each test purpose */ -void cleanup () -{ -} - -void utc_mm_file_create_content_attrs_simple_func_01() -{ - int err = 0 ; - MMHandleType attrs; - - err = mm_file_create_content_attrs_simple(&attrs,MEDIA_PATH); - dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err); - - return; -} - -void utc_mm_file_create_content_attrs_simple_func_02() -{ - int err = 0 ; - MMHandleType attrs; - - err = mm_file_create_content_attrs_simple(&attrs,NULL); - dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err); - - return; -} - -void utc_mm_file_create_content_attrs_simple_func_03() -{ - int err = 0 ; - - err = mm_file_create_content_attrs_simple(NULL,NULL); - dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err); - - return; -} - - - - -/** @} */ - - - - 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 deleted file mode 100755 index ff22c19..0000000 --- a/TC/utc/utc_mm_file_create_tag_attrs_from_memory_func.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * 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. - * - */ - -/** -* @ingroup MMF_FILEINFO_API -* @addtogroup FILEINFO -*/ - -/** -* @ingroup FILEINFO -* @addtogroup UTS_MMF_FILEINFO Unit -*/ - -/** -* @ingroup UTS_MMF_FILEINFO Unit -* @addtogroup UTS_MMF_FILEINFO_GET_ATTRS_ Uts_Mmf_Fileinfo_Get_Tag_Attrs_From_Memory_ -* @{ -*/ - -/** -* @file uts_mm_fileinfo_get_tag_attrs_from_memory.c -* @brief This is a suit of unit test cases to test mm_file_get_tag_attr_from_memory() API function -* @author Haejeong Kim <backto.kim@samsung.com> -* @version Initial Creation Version 0.1 -* @date 2008.09.08 -* @last update 2011.01.20 -*/ - -#include "utc_mm_fileinfo_common.h" - - - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Definitions of "uts_mmf_fileinfo_get_tag_attrs_from_memory" -//------------------------------------------------------------------------------------------------- -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Declare the global variables and registers and Internal Funntions -//------------------------------------------------------------------------------------------------- - -#define TEST_API "mm_file_create_tag_attrs_from_memory" - -#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); \ - dts_message ( __func__, "file size = %d", size ); \ - } \ -}while(0) - -/////////////////////////////////////////////////////////////////////////////////////////////////// -/* Initialize TCM data structures */ - - -struct tet_testlist tet_testlist[] = { - {utc_mm_file_create_tag_attrs_from_memory_func_01, 1}, - {utc_mm_file_create_tag_attrs_from_memory_func_02, 2}, - {utc_mm_file_create_tag_attrs_from_memory_func_03, 3}, - {NULL, 0} -}; - -/* Start up function for each test purpose */ -void startup () -{ -} - -/* Clean up function for each test purpose */ -void cleanup () -{ -} - -void utc_mm_file_create_tag_attrs_from_memory_func_01() -{ - int file_size = 0; - unsigned char * buffer = NULL; - MMHandleType tag_attr = 0; - int err = 0; - - /* Read file */ - READ_FROM_FILE(MEDIA_PATH, buffer, file_size); - - err =mm_file_create_tag_attrs_from_memory( &tag_attr, buffer, file_size, MM_FILE_FORMAT_MP3); - dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err); - - if (buffer) - free (buffer); - - return; -} - -void utc_mm_file_create_tag_attrs_from_memory_func_02() -{ - int file_size = 0; - unsigned char * buffer = NULL; - MMHandleType tag_attr = 0; - int err = 0; - - /* Read file */ - READ_FROM_FILE(MEDIA_PATH, buffer, file_size); - - err =mm_file_create_tag_attrs_from_memory( &tag_attr, NULL, file_size, MM_FILE_FORMAT_MP3); - dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err); - - if (buffer) - free (buffer); - - return; -} - -void utc_mm_file_create_tag_attrs_from_memory_func_03() -{ - int file_size = 0; - unsigned char * buffer = NULL; - int err = 0; - - /* Read file */ - READ_FROM_FILE(MEDIA_PATH, buffer, file_size); - - err =mm_file_create_tag_attrs_from_memory( NULL, buffer, file_size, MM_FILE_FORMAT_MP3); - dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err); - - if (buffer) - free (buffer); - - return; -} - - -/** @} */ - - - - diff --git a/TC/utc/utc_mm_file_create_tag_attrs_func.c b/TC/utc/utc_mm_file_create_tag_attrs_func.c deleted file mode 100755 index 93e1733..0000000 --- a/TC/utc/utc_mm_file_create_tag_attrs_func.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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. - * - */ - -/** -* @ingroup MMF_FILEINFO_API -* @addtogroup FILEINFO -*/ - -/** -* @ingroup FILEINFO -* @addtogroup UTS_MMF_FILEINFO Unit -*/ - -/** -* @ingroup UTS_MMF_FILEINFO Unit -* @addtogroup UTS_MMF_FILEINFO_GET_ATTRS_ Uts_Mmf_Fileinfo_Get_Tag_Attrs_ -* @{ -*/ - -/** -* @file uts_mm_fileinfo_get_tag_attrs.c -* @brief This is a suit of unit test cases to test mm_file_get_tag_attr() API function -* @author Haejeong Kim <backto.kim@samsung.com> -* @version Initial Creation Version 0.1 -* @date 2008.09.08 -* @last update 2011.01.20 -*/ - -#include "utc_mm_fileinfo_common.h" - - - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Definitions of "uts_mmf_fileinfo_get_tag_attrs" -//------------------------------------------------------------------------------------------------- -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Declare the global variables and registers and Internal Funntions -//------------------------------------------------------------------------------------------------- - -#define TEST_API "mm_file_create_tag_attrs" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -/* Initialize TCM data structures */ - - -struct tet_testlist tet_testlist[] = { - {utc_mm_file_create_tag_attrs_func_01, 1}, - {utc_mm_file_create_tag_attrs_func_02, 2}, - {NULL, 0} -}; - -/* Start up function for each test purpose */ -void startup () -{ -} - -/* Clean up function for each test purpose */ -void cleanup () -{ -} - -void utc_mm_file_create_tag_attrs_func_01() -{ - int err = 0; - MMHandleType attrs; - - err = mm_file_create_tag_attrs(&attrs, MEDIA_PATH); - dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err); - - return; -} - -void utc_mm_file_create_tag_attrs_func_02() -{ - int err = 0; - - err = mm_file_create_tag_attrs( NULL, MEDIA_PATH); - dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err); - - return; -} - - -/** @} */ - - - - diff --git a/TC/utc/utc_mm_file_destroy_content_attrs_func.c b/TC/utc/utc_mm_file_destroy_content_attrs_func.c deleted file mode 100755 index 44f6679..0000000 --- a/TC/utc/utc_mm_file_destroy_content_attrs_func.c +++ /dev/null @@ -1,115 +0,0 @@ -/*
- * 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.
- *
- */
-
-/**
-* @ingroup MMF_FILEINFO_API
-* @addtogroup FILEINFO
-*/
-
-/**
-* @ingroup FILEINFO
-* @addtogroup UTS_MMF_FILEINFO Unit
-*/
-
-/**
-* @ingroup UTS_MMF_FILEINFO Unit
-* @addtogroup UTS_MMF_FILEINFO_GET_ATTRS_ Uts_Mmf_Fileinfo_Get_Content_Attrs_
-* @{
-*/
-
-/**
-* @file utc_mm_fileinfo_free_content_attrs.c
-* @brief This is a suit of unit test cases to test mm_file_free_content_attr() API function
-* @author Haejeong Kim <backto.kim@samsung.com>
-* @version Initial Creation Version 0.1
-* @date 2008.09.08
-* @last update 2011.01.20
-*/
-
-
-#include "utc_mm_fileinfo_common.h"
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Definitions of "utc_mm_fileinfo_get_tag_attrs"
-//-------------------------------------------------------------------------------------------------
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Declare the global variables and registers and Internal Funntions
-//-------------------------------------------------------------------------------------------------
-
-#define TEST_API "mm_file_destroy_content_attrs"
-
-struct tet_testlist tet_testlist[] = {
- {utc_mm_file_destroy_content_attrs_func_01, 1},
- {utc_mm_file_destroy_content_attrs_func_02, 2},
- {NULL, 0}
-};
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-/* Initialize TCM data structures */
-/* Start up function for each test purpose */
-void startup ()
-{
-}
-
-/* Clean up function for each test purpose */
-void cleanup ()
-{
-}
-
-
-void utc_mm_file_destroy_content_attrs_func_01()
-{
- int err = 0 ;
- int ret1 = 0;
- MMHandleType attr;
-
- ret1 = mm_file_create_content_attrs(&attr, MEDIA_PATH);
- dts_check_eq ("mm_file_create_content_attrs", ret1, MM_ERROR_NONE, "%x", ret1);
-
- err = mm_file_destroy_content_attrs(attr);
- dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err);
-
- return;
-}
-
-void utc_mm_file_destroy_content_attrs_func_02()
-{
- int err = 0;
-
- err = mm_file_destroy_content_attrs(NULL);
- dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err);
-
- return;
-}
-
-
-
-
-
-
-/** @} */
-
-
-
-
diff --git a/TC/utc/utc_mm_file_destroy_tag_attrs_func.c b/TC/utc/utc_mm_file_destroy_tag_attrs_func.c deleted file mode 100755 index a9c5520..0000000 --- a/TC/utc/utc_mm_file_destroy_tag_attrs_func.c +++ /dev/null @@ -1,116 +0,0 @@ -/*
- * 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.
- *
- */
-
-/**
-* @ingroup MMF_FILEINFO_API
-* @addtogroup FILEINFO
-*/
-
-/**
-* @ingroup FILEINFO
-* @addtogroup UTS_MMF_FILEINFO Unit
-*/
-
-/**
-* @ingroup UTS_MMF_FILEINFO Unit
-* @addtogroup UTS_MMF_FILEINFO_FREE_ATTRS_ Uts_Mmf_Fileinfo_Free_Tag_Attrs_
-* @{
-*/
-
-/**
-* @file uts_mm_fileinfo_free_tag_attrs.c
-* @brief This is a suit of unit test cases to test mm_file_free_tag_attr() API function
-* @author Haejeong Kim <backto.kim@samsung.com>
-* @version Initial Creation Version 0.1
-* @date 2008.09.08
-* @last update 2011.01.20
-*/
-
-
-#include "utc_mm_fileinfo_common.h"
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Definitions of "uts_mmf_fileinfo_free_tag_attrs"
-//-------------------------------------------------------------------------------------------------
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Declare the global variables and registers and Internal Funntions
-//-------------------------------------------------------------------------------------------------
-
-#define TEST_API "mm_file_destroy_tag_attrs"
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-/* Initialize TCM data structures */
-
-
-struct tet_testlist tet_testlist[] = {
- {utc_mm_file_destroy_tag_attrs_func_01, 1},
- {utc_mm_file_destroy_tag_attrs_func_02, 2},
- {NULL, 0}
-};
-
-/* Start up function for each test purpose */
-void startup ()
-{
-}
-
-/* Clean up function for each test purpose */
-void cleanup ()
-{
-}
-
-void utc_mm_file_destroy_tag_attrs_func_01()
-{
- int err = 0;
- int err1 = 0;
- MMHandleType attrs;
-
- err1 = mm_file_create_tag_attrs( &attrs, MEDIA_PATH);
- dts_check_eq ("mm_file_create_tag_attrs", err, MM_ERROR_NONE, "%x", err1);
-
- err = mm_file_destroy_tag_attrs(attrs);
- dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err);
-
- return;
-}
-
-void utc_mm_file_destroy_tag_attrs_func_02()
-{
- int err = 0;
-
- err = mm_file_destroy_tag_attrs(NULL);
- dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err);
-
- return;
-}
-
-
-
-
-
-
-/** @} */
-
-
-
-
diff --git a/TC/utc/utc_mm_file_get_attrs_func.c b/TC/utc/utc_mm_file_get_attrs_func.c deleted file mode 100755 index 40314df..0000000 --- a/TC/utc/utc_mm_file_get_attrs_func.c +++ /dev/null @@ -1,249 +0,0 @@ -/*
- * 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.
- *
- */
-
-/**
-* @ingroup MMF_FILEINFO_API
-* @addtogroup FILEINFO
-*/
-
-/**
-* @ingroup FILEINFO
-* @addtogroup UTS_MMF_FILEINFO Unit
-*/
-
-/**
-* @ingroup UTS_MMF_FILEINFO Unit
-* @addtogroup UTS_MMF_FILEINFO_FREE_ATTRS_ Uts_Mmf_Fileinfo_Free_Tag_Attrs_
-* @{
-*/
-
-/**
-* @file uts_mm_fileinfo_free_tag_attrs.c
-* @brief This is a suit of unit test cases to test mm_file_free_tag_attr() API function
-* @author Haejeong Kim <backto.kim@samsung.com>
-* @version Initial Creation Version 0.1
-* @date 2008.09.08
-* @last update 2011.01.20
-*/
-
-
-#include "utc_mm_fileinfo_common.h"
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Definitions of "uts_mmf_fileinfo_free_tag_attrs"
-//-------------------------------------------------------------------------------------------------
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Declare the global variables and registers and Internal Funntions
-//-------------------------------------------------------------------------------------------------
-#define TEST_API "mm_file_get_attrs"
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-/* Initialize TCM data structures */
-
-
-struct tet_testlist tet_testlist[] = {
- {utc_mm_file_get_attrs_func_01, 1},
- {utc_mm_file_get_attrs_func_02, 2},
- {utc_mm_file_get_attrs_func_03, 3},
- {utc_mm_file_get_attrs_func_04, 4},
- {NULL, 0}
-};
-
-typedef struct _ContentContext {
- int duration;
- int video_codec;
- int video_bitrate;
- int video_fps;
- int video_w;
- int video_h;
- int video_track_id;
- int video_track_num;
- int audio_codec;
- int audio_bitrate;
- int audio_channel;
- int audio_samplerate;
- int audio_track_id;
- int audio_track_num;
-}ContentContext_t;
-
-typedef struct _TagContext {
- char artist[100];
- int artist_len;
- char title[100];
- int title_len;
- char album[100];
- int album_len;
- char album_artist[100];
- int album_artist_len;
- char genre[100];
- int genre_len;
- char author[100];
- int author_len;
- char date[100]; //int
- int date_len;
-}TagContext_t;
-
-/* Start up function for each test purpose */
-void startup ()
-{
-}
-
-/* Clean up function for each test purpose */
-void cleanup ()
-{
-}
-
-void utc_mm_file_get_attrs_func_01()
-{
- int err = 0 ;
- int ret1 = 0;
- MMHandleType attr;
- ContentContext_t ccontent;
- char *err_attr_name = NULL;
-
- ret1 = mm_file_create_content_attrs(&attr, MEDIA_PATH);
- dts_check_eq ("mm_file_create_content_attrs", ret1, MM_ERROR_NONE, "%x", ret1);
-
- memset (&ccontent, 0, sizeof (ContentContext_t));
- err = mm_file_get_attrs(attr, &err_attr_name,
- MM_FILE_CONTENT_AUDIO_CODEC, &ccontent.audio_codec,
- MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate,
- MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate,
- MM_FILE_CONTENT_AUDIO_CHANNELS, &ccontent.audio_channel,
- MM_FILE_CONTENT_AUDIO_TRACK_INDEX, &ccontent.audio_track_id,
- MM_FILE_CONTENT_AUDIO_TRACK_COUNT, &ccontent.audio_track_num,
- NULL);
-
- dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err);
- dts_check_eq (TEST_API, ccontent.audio_codec, 2);
- dts_check_eq (TEST_API, ccontent.audio_samplerate, 44100);
- dts_check_eq (TEST_API, ccontent.audio_bitrate, 128000);
- dts_check_eq (TEST_API, ccontent.audio_channel, 2);
- dts_check_eq (TEST_API, ccontent.audio_track_id, 0);
- dts_check_eq (TEST_API, ccontent.audio_track_num, 1);
-
- mm_file_destroy_content_attrs(attr);
-
- if (err_attr_name)
- free (err_attr_name);
-
- return;
-}
-
-void utc_mm_file_get_attrs_func_02()
-{
- int err = 0 ;
- int ret1 = 0;
- MMHandleType attr;
- ContentContext_t ccontent;
-
- char *err_attr_name = NULL;
-
- ret1 = mm_file_create_content_attrs(&attr, MEDIA_PATH);
- dts_check_eq ("mm_file_create_conten_attrs", ret1, MM_ERROR_NONE, "%x", ret1);
-
- memset (&ccontent, 0, sizeof (ContentContext_t));
- err = mm_file_get_attrs(attr, &err_attr_name, "content-audio-codecs" , &ccontent.audio_codec, NULL);
-
- dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x, %s", err, err_attr_name);
-
- mm_file_destroy_content_attrs(attr);
-
- if (err_attr_name)
- free (err_attr_name);
-
- return;
-}
-
-void utc_mm_file_get_attrs_func_03()
-{
- int err = 0 ;
- int ret1 = 0;
- MMHandleType attr;
- TagContext_t ctag;
- char *err_attr_name = NULL;
-
- ret1 = mm_file_create_tag_attrs(&attr, MEDIA_PATH);
- dts_check_eq ("mm_file_create_tag_attrs", ret1, MM_ERROR_NONE, "%x", ret1);
-
- memset (&ctag, 0, sizeof (TagContext_t));
- err = mm_file_get_attrs( attr,
- &err_attr_name,
- MM_FILE_TAG_ARTIST, &ctag.artist, &ctag.artist_len,
- MM_FILE_TAG_ALBUM, &ctag.album, &ctag.album_len,
- MM_FILE_TAG_ALBUM_ARTIST, &ctag.album_artist, &ctag.album_artist_len,
- MM_FILE_TAG_TITLE, &ctag.title, &ctag.title_len,
- MM_FILE_TAG_GENRE, &ctag.genre, &ctag.genre_len,
- MM_FILE_TAG_AUTHOR, &ctag.author, &ctag.author_len,
- MM_FILE_TAG_DATE, &ctag.date, &ctag.date_len,
- NULL);
-
- dts_check_eq (TEST_API, err, MM_ERROR_NONE, "%x", err);
- dts_check_str_eq (TEST_API, ctag.artist, "Samsung");
- dts_check_str_eq (TEST_API, ctag.album, "Samsung");
- dts_check_str_eq (TEST_API, ctag.title, "Over the horizon");
- dts_check_str_eq (TEST_API, ctag.genre, "Rock");
- dts_check_str_eq (TEST_API, ctag.date, "2011");
-
- mm_file_destroy_tag_attrs(attr);
-
- if (err_attr_name)
- free (err_attr_name);
-
- return;
-}
-
-void utc_mm_file_get_attrs_func_04()
-{
- int err = 0 ;
- int ret1 = 0;
- MMHandleType attr;
- TagContext_t ctag;
- char *err_attr_name = NULL;
-
- ret1 = mm_file_create_tag_attrs(&attr, MEDIA_PATH);
- dts_check_eq ("mm_file_create_tag_attrs", ret1, MM_ERROR_NONE, "%x", ret1);
-
- memset (&ctag, 0, sizeof (TagContext_t));
- err = mm_file_get_attrs( attr, &err_attr_name, "tag-artists" , &ctag.artist, &ctag.artist_len, NULL);
- dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x, %s", err, err_attr_name);
-
- mm_file_destroy_tag_attrs(attr);
-
- if (err_attr_name)
- free (err_attr_name);
-
- return;
-}
-
-
-
-
-
-
-/** @} */
-
-
-
-
diff --git a/TC/utc/utc_mm_file_get_stream_info_func.c b/TC/utc/utc_mm_file_get_stream_info_func.c deleted file mode 100755 index 7fb16e5..0000000 --- a/TC/utc/utc_mm_file_get_stream_info_func.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * 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. - * - */ - -/** -* @ingroup MMF_FILEINFO_API -* @addtogroup FILEINFO -*/ - -/** -* @ingroup FILEINFO -* @addtogroup UTS_MMF_FILEINFO Unit -*/ - -/** -* @ingroup UTS_MMF_FILEINFO Unit -* @addtogroup UTS_MMF_FILEINFO_GET_STREAM_INFO_ Uts_Mmf_Fileinfo_Get_Stream_Info_ -* @{ -*/ - -/** -* @file uts_mm_fileinfo_get_stream_info.c -* @brief This is a suit of unit test cases to test mm_file_get_stream_info() API function -* @author Haejeong Kim <backto.kim@samsung.com> -* @version Initial Creation Version 0.1 -* @date 2008.09.08 -* @last update 2011.01.20 -*/ - -#include "utc_mm_fileinfo_common.h" - - - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Definitions of "uts_mmf_fileinfo_get_stream_info" -//------------------------------------------------------------------------------------------------- -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Declare the global variables and registers and Internal Funntions -//------------------------------------------------------------------------------------------------- - -#define TEST_API "mm_file_get_stream_info" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -/* Initialize TCM data structures */ - - -struct tet_testlist tet_testlist[] = { - {utc_mm_file_get_stream_info_func_01, 1}, - {utc_mm_file_get_stream_info_func_02, 2}, - {utc_mm_file_get_stream_info_func_03, 3}, - {utc_mm_file_get_stream_info_func_04, 4}, - {NULL, 0} -}; - -/* Start up function for each test purpose */ -void startup () -{ -} - -/* Clean up function for each test purpose */ -void cleanup () -{ -} - -void utc_mm_file_get_stream_info_func_01() -{ - int err = 0 ; - int audio_stream_num = 0; - int video_stream_num = 0; - - 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); - - return; -} - -void utc_mm_file_get_stream_info_func_02() -{ - int err = 0 ; - int audio_stream_num = 0; - int video_stream_num = 0; - - 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); -} - -void utc_mm_file_get_stream_info_func_03() -{ - int err = 0 ; - int video_stream_num =0; - - err = mm_file_get_stream_info(MEDIA_PATH2, NULL, &video_stream_num); - dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err); -} - -void utc_mm_file_get_stream_info_func_04() -{ - int err = 0 ; - - err = mm_file_get_stream_info(MEDIA_PATH2,NULL,NULL); - dts_check_ne (TEST_API, err, MM_ERROR_NONE, "%x", err); -} - -void utc_mm_file_get_stream_info_func_05() -{ - int err = 0 ; - - err = mm_file_get_stream_info(NULL,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 deleted file mode 100755 index 0e04e6b..0000000 --- a/TC/utc/utc_mm_fileinfo_common.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * 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. - * - */ - -/** -* @ingroup MMF_FILEINFO_API -* @addtogroup FILE INFO -*/ - -/** -* @ingroup FILEINFO -* @addtogroup UTS_MMF_FILEINFO Unit -*/ - -/** -* @ingroup UTS_MMF_FILEINFO Unit -* @addtogroup UTS_MMF_FILEINFO_COMMON_ -* @{ -*/ - -/** -* @file uts_mmf_fileinfo_common.h -* @brief This is a suit of unit test cases to test mm-fileinfo API -* @author Haejeong Kim <backto.kim@samsung.com> -* @version Initial Creation Version 0.1 -* @date 2008.09.08 -* @last update 2011.01.20 -*/ -#ifndef __UTS_MMF_FILEINFO_COMMON_H_ -#define __UTS_MMF_FILEINFO_COMMON_H_ - -#include <mm_file.h> -#include <mm_message.h> -#include <mm_error.h> -#include <mm_types.h> -#include <string.h> -#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(); - -void (*tet_startup)() = startup; -void (*tet_cleanup)() = cleanup; - -void utc_mm_file_create_tag_attrs_func_01(); -void utc_mm_file_create_tag_attrs_func_02(); - -void utc_mm_file_create_content_attrs_func_01(); -void utc_mm_file_create_content_attrs_func_02(); - -void utc_mm_file_destroy_content_attrs_func_01(); -void utc_mm_file_destroy_content_attrs_func_02(); - -void utc_mm_file_destroy_tag_attrs_func_01(); -void utc_mm_file_destroy_tag_attrs_func_02(); - -void utc_mm_file_get_stream_info_func_01(); -void utc_mm_file_get_stream_info_func_02(); -void utc_mm_file_get_stream_info_func_03(); -void utc_mm_file_get_stream_info_func_04(); - -void utc_mm_file_create_content_attrs_simple_func_01(); -void utc_mm_file_create_content_attrs_simple_func_02(); -void utc_mm_file_create_content_attrs_simple_func_03(); - -void utc_mm_file_create_content_attrs_from_memory_func_01(); -void utc_mm_file_create_content_attrs_from_memory_func_02(); -void utc_mm_file_create_content_attrs_from_memory_func_03(); - -void utc_mm_file_create_tag_attrs_from_memory_func_01(); -void utc_mm_file_create_tag_attrs_from_memory_func_02(); -void utc_mm_file_create_tag_attrs_from_memory_func_03(); - -void utc_mm_file_get_attrs_func_01(); -void utc_mm_file_get_attrs_func_02(); -void utc_mm_file_get_attrs_func_03(); -void utc_mm_file_get_attrs_func_04(); - -#endif //__UTS_MMF_FILEINFO_COMMON_H_ - - diff --git a/codecs/ffmpeg/Makefile.am b/codecs/ffmpeg/Makefile.am index 8fbbb10..7834722 100755 --- a/codecs/ffmpeg/Makefile.am +++ b/codecs/ffmpeg/Makefile.am @@ -20,5 +20,5 @@ libmmfile_codecs_la_CFLAGS = -I$(srcdir)/include \ libmmfile_codecs_la_LIBADD = $(MMCOMMON_LIBS) \ $(top_builddir)/utils/libmmfile_utils.la -libmmfile_codecs_la_CFLAGS += $(MMLOG_CFLAGS) -DMMF_LOG_OWNER=0x040 -DMMF_DEBUG_PREFIX=\"MMF-FILE-CODEC-FFMPEG\" -libmmfile_codecs_la_LIBADD += $(MMLOG_LIBS) +libmmfile_codecs_la_CFLAGS += $(DLOG_CFLAGS) +libmmfile_codecs_la_LIBADD += $(DLOG_LIBS) diff --git a/codecs/ffmpeg/include/mm_file_codec_private.h b/codecs/ffmpeg/include/mm_file_codec_private.h index 8ba471d..5f31c5e 100755 --- a/codecs/ffmpeg/include/mm_file_codec_private.h +++ b/codecs/ffmpeg/include/mm_file_codec_private.h @@ -30,7 +30,7 @@ extern "C" { #include "mm_file_codecs.h" /* open functions list */ -int mmfile_codec_open_dummy (MMFileCodecContext *codecContext, MMFileCodecFrame *input); +int mmfile_codec_open_dummy(MMFileCodecContext *codecContext, MMFileCodecFrame *input); #ifdef __cplusplus diff --git a/codecs/ffmpeg/mm_file_codec_dummy.c b/codecs/ffmpeg/mm_file_codec_dummy.c index 989084d..e03c960 100755 --- a/codecs/ffmpeg/mm_file_codec_dummy.c +++ b/codecs/ffmpeg/mm_file_codec_dummy.c @@ -24,7 +24,7 @@ #include <mm_error.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_codec_private.h" #include "mm_file_codec_dummy.h" @@ -34,36 +34,36 @@ /* plugin manadatory API */ -int mmfile_codec_decode_dummy (MMFileCodecContext *codecContext, MMFileCodecFrame *output); -int mmfile_codec_close_dummy (MMFileCodecContext *codecContext); +int mmfile_codec_decode_dummy(MMFileCodecContext *codecContext, MMFileCodecFrame *output); +int mmfile_codec_close_dummy(MMFileCodecContext *codecContext); EXPORT_API -int mmfile_codec_open_dummy (MMFileCodecContext *codecContext, MMFileCodecFrame *input) +int mmfile_codec_open_dummy(MMFileCodecContext *codecContext, MMFileCodecFrame *input) { - debug_warning ("called mmfile_codec_open_dummy\n"); - - codecContext->Decode = mmfile_codec_decode_dummy; - codecContext->Close = mmfile_codec_close_dummy; - - return MMFILE_CODEC_SUCCESS; + debug_warning("called mmfile_codec_open_dummy\n"); + + codecContext->Decode = mmfile_codec_decode_dummy; + codecContext->Close = mmfile_codec_close_dummy; + + return MMFILE_CODEC_SUCCESS; } EXPORT_API -int mmfile_codec_decode_dummy (MMFileCodecContext *codecContext, MMFileCodecFrame *output) +int mmfile_codec_decode_dummy(MMFileCodecContext *codecContext, MMFileCodecFrame *output) { - debug_warning ("called mmfile_codec_decode_dummy\n"); - return MMFILE_CODEC_SUCCESS; + debug_warning("called mmfile_codec_decode_dummy\n"); + return MMFILE_CODEC_SUCCESS; } EXPORT_API -int mmfile_codec_close_dummy (MMFileCodecContext *codecContext) +int mmfile_codec_close_dummy(MMFileCodecContext *codecContext) { - debug_warning ("called mmfile_codec_close_dummy\n"); + debug_warning("called mmfile_codec_close_dummy\n"); + + codecContext->Decode = NULL; + codecContext->Close = NULL; - codecContext->Decode = NULL; - codecContext->Close = NULL; - - return MMFILE_CODEC_SUCCESS; + return MMFILE_CODEC_SUCCESS; } diff --git a/codecs/ffmpeg/mm_file_codecs.c b/codecs/ffmpeg/mm_file_codecs.c index dc9cc89..34f6fe0 100755 --- a/codecs/ffmpeg/mm_file_codecs.c +++ b/codecs/ffmpeg/mm_file_codecs.c @@ -22,112 +22,106 @@ #include <string.h> #include <stdlib.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" #include "mm_file_codec_private.h" int (*OpenVideoCodecFunc[MM_VIDEO_CODEC_NUM]) (MMFileCodecContext *codecContext, MMFileCodecFrame *input) = { - mmfile_codec_open_dummy, /* NONE */ - mmfile_codec_open_dummy, /* WMV */ - mmfile_codec_open_dummy, /* H261 */ - mmfile_codec_open_dummy, /* H262 */ - mmfile_codec_open_dummy, /* H263 */ - mmfile_codec_open_dummy, /* H263V2 */ - mmfile_codec_open_dummy, /* H263V3 */ - mmfile_codec_open_dummy, /* H264 */ - mmfile_codec_open_dummy, /* H26L */ - mmfile_codec_open_dummy, /* MJPEG */ - mmfile_codec_open_dummy, /* MPEG1 */ - mmfile_codec_open_dummy, /* MPEG2 */ - mmfile_codec_open_dummy, /* MPEG4 */ - mmfile_codec_open_dummy, /* MPEG4_SIMPLE */ - mmfile_codec_open_dummy, /* MPEG4_ADV_SIMPE */ - mmfile_codec_open_dummy, /* MPEG4_MAIN */ - mmfile_codec_open_dummy, /* MPEG4_CORE */ - mmfile_codec_open_dummy, /* MPEG4_ACE */ - mmfile_codec_open_dummy, /* MPEG4_ARTS */ - mmfile_codec_open_dummy, /* MPEG4_AVC */ - mmfile_codec_open_dummy, /* REAL */ - mmfile_codec_open_dummy, /* VC1 */ - mmfile_codec_open_dummy, /* AVS */ - mmfile_codec_open_dummy, /* CINEPAK */ - mmfile_codec_open_dummy, /* INDEO */ - mmfile_codec_open_dummy, /* THEORA */ - mmfile_codec_open_dummy, /* DIVX */ - mmfile_codec_open_dummy, /* XVID */ + mmfile_codec_open_dummy, /* NONE */ + mmfile_codec_open_dummy, /* WMV */ + mmfile_codec_open_dummy, /* H261 */ + mmfile_codec_open_dummy, /* H262 */ + mmfile_codec_open_dummy, /* H263 */ + mmfile_codec_open_dummy, /* H263V2 */ + mmfile_codec_open_dummy, /* H263V3 */ + mmfile_codec_open_dummy, /* H264 */ + mmfile_codec_open_dummy, /* H26L */ + mmfile_codec_open_dummy, /* MJPEG */ + mmfile_codec_open_dummy, /* MPEG1 */ + mmfile_codec_open_dummy, /* MPEG2 */ + mmfile_codec_open_dummy, /* MPEG4 */ + mmfile_codec_open_dummy, /* MPEG4_SIMPLE */ + mmfile_codec_open_dummy, /* MPEG4_ADV_SIMPE */ + mmfile_codec_open_dummy, /* MPEG4_MAIN */ + mmfile_codec_open_dummy, /* MPEG4_CORE */ + mmfile_codec_open_dummy, /* MPEG4_ACE */ + mmfile_codec_open_dummy, /* MPEG4_ARTS */ + mmfile_codec_open_dummy, /* MPEG4_AVC */ + mmfile_codec_open_dummy, /* REAL */ + mmfile_codec_open_dummy, /* VC1 */ + mmfile_codec_open_dummy, /* AVS */ + mmfile_codec_open_dummy, /* CINEPAK */ + mmfile_codec_open_dummy, /* INDEO */ + mmfile_codec_open_dummy, /* THEORA */ + mmfile_codec_open_dummy, /* DIVX */ + mmfile_codec_open_dummy, /* XVID */ }; EXPORT_API -int mmfile_codec_open (MMFileCodecContext **codecContext, int codecType, int codecId, MMFileCodecFrame *input) +int mmfile_codec_open(MMFileCodecContext **codecContext, int codecType, int codecId, MMFileCodecFrame *input) { - MMFileCodecContext *codecObject = NULL; - int ret = 0; - - if (codecId <= MM_VIDEO_CODEC_NONE || codecId >= MM_VIDEO_CODEC_NUM || MMFILE_VIDEO_DECODE != codecType || NULL == input) - { - debug_error ("error: invalid params\n"); - return MMFILE_CODEC_FAIL; - } - - if (NULL == OpenVideoCodecFunc[codecId]) - { - debug_error ("error: Not implemented \n"); - return MMFILE_CODEC_FAIL; - } - - codecObject = mmfile_malloc (sizeof (MMFileCodecContext)); - if (NULL == codecObject) - { - debug_error ("error: mmfile_malloc fail for codecObject\n"); - return MMFILE_CODEC_FAIL; - } - - *codecContext = codecObject; - - ret = OpenVideoCodecFunc[codecId](codecObject, input); - if (MMFILE_CODEC_FAIL == ret) - { - debug_error ("error: init fail about video codec\n"); - ret = MMFILE_CODEC_FAIL; - goto exception; - } - - return MMFILE_CODEC_SUCCESS; + MMFileCodecContext *codecObject = NULL; + int ret = 0; + + if (codecId <= MM_VIDEO_CODEC_NONE || codecId >= MM_VIDEO_CODEC_NUM || MMFILE_VIDEO_DECODE != codecType || NULL == input) { + debug_error("error: invalid params\n"); + return MMFILE_CODEC_FAIL; + } + + if (NULL == OpenVideoCodecFunc[codecId]) { + debug_error("error: Not implemented \n"); + return MMFILE_CODEC_FAIL; + } + + codecObject = mmfile_malloc(sizeof(MMFileCodecContext)); + if (NULL == codecObject) { + debug_error("error: mmfile_malloc fail for codecObject\n"); + return MMFILE_CODEC_FAIL; + } + + *codecContext = codecObject; + + ret = OpenVideoCodecFunc[codecId](codecObject, input); + if (MMFILE_CODEC_FAIL == ret) { + debug_error("error: init fail about video codec\n"); + ret = MMFILE_CODEC_FAIL; + goto exception; + } + + return MMFILE_CODEC_SUCCESS; exception: - if (codecObject) mmfile_free(codecObject); - - return ret; + if (codecObject) mmfile_free(codecObject); + + return ret; } EXPORT_API -int mmfile_codec_decode (MMFileCodecContext *codecContext, MMFileCodecFrame *output) +int mmfile_codec_decode(MMFileCodecContext *codecContext, MMFileCodecFrame *output) { - if (NULL == codecContext || NULL == codecContext->Decode ) - { - debug_error ("error: invalid params\n"); - return MMFILE_CODEC_FAIL; - } + if (NULL == codecContext || NULL == codecContext->Decode) { + debug_error("error: invalid params\n"); + return MMFILE_CODEC_FAIL; + } - return codecContext->Decode (codecContext, output); + return codecContext->Decode(codecContext, output); } EXPORT_API -int mmfile_codec_close (MMFileCodecContext *codecContext) +int mmfile_codec_close(MMFileCodecContext *codecContext) { - if (NULL == codecContext || NULL == codecContext->Close) - { - debug_error ("error: invalid params\n"); - return MMFILE_CODEC_FAIL; - } - - codecContext->Close (codecContext); - - if (codecContext->Decode) codecContext->Decode = NULL; - if (codecContext->Close) codecContext->Close = NULL; - if (codecContext->privateData) mmfile_free(codecContext->privateData); - mmfile_free (codecContext); - - return MMFILE_CODEC_SUCCESS; + if (NULL == codecContext || NULL == codecContext->Close) { + debug_error("error: invalid params\n"); + return MMFILE_CODEC_FAIL; + } + + codecContext->Close(codecContext); + + if (codecContext->Decode) codecContext->Decode = NULL; + if (codecContext->Close) codecContext->Close = NULL; + if (codecContext->privateData) mmfile_free(codecContext->privateData); + mmfile_free(codecContext); + + return MMFILE_CODEC_SUCCESS; } diff --git a/configure b/configure deleted file mode 100755 index d78bd3e..0000000 --- a/configure +++ /dev/null @@ -1,16873 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for libmm-fileinfo 0.0.1. -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS - - - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - - -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$lt_ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` - ;; -esac - -ECHO=${lt_ECHO-echo} -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -$* -_LT_EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$lt_ECHO"; then - if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if { echo_test_string=`eval $cmd`; } 2>/dev/null && - { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null - then - break - fi - done - fi - - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : - else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$ECHO" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - ECHO='print -r' - elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - ECHO='printf %s\n' - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - ECHO="$CONFIG_SHELL $0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - ECHO=echo - fi - fi - fi - fi - fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -lt_ECHO=$ECHO -if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then - lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" -fi - - - - -exec 7<&0 </dev/null 6>&1 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Identity of this package. -PACKAGE_NAME='libmm-fileinfo' -PACKAGE_TARNAME='libmm-fileinfo' -PACKAGE_VERSION='0.0.1' -PACKAGE_STRING='libmm-fileinfo 0.0.1' -PACKAGE_BUGREPORT='' - -ac_unique_file="mm_file.c" -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#ifdef HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#ifdef HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# ifdef HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#ifdef HAVE_STRINGS_H -# include <strings.h> -#endif -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#endif -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -am__isrc -CYGPATH_W -PACKAGE -VERSION -ACLOCAL -AUTOCONF -AUTOMAKE -AUTOHEADER -MAKEINFO -install_sh -STRIP -INSTALL_STRIP_PROGRAM -mkdir_p -AWK -SET_MAKE -am__leading_dot -AMTAR -am__tar -am__untar -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -DEPDIR -am__include -am__quote -AMDEP_TRUE -AMDEP_FALSE -AMDEPBACKSLASH -CCDEPMODE -am__fastdepCC_TRUE -am__fastdepCC_FALSE -LIBTOOL -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -SED -GREP -EGREP -FGREP -LD -DUMPBIN -ac_ct_DUMPBIN -NM -LN_S -AR -RANLIB -lt_ECHO -DSYMUTIL -NMEDIT -LIPO -OTOOL -OTOOL64 -CPP -LIBOBJS -PKG_CONFIG -MMCOMMON_CFLAGS -MMCOMMON_LIBS -MMLOG_CFLAGS -MMLOG_LIBS -GLIB_CFLAGS -GLIB_LIBS -GTK_CFLAGS -GTK_LIBS -AVCODEC_CFLAGS -AVCODEC_LIBS -AVUTIL_CFLAGS -AVUTIL_LIBS -AVFORMAT_CFLAGS -AVFORMAT_LIBS -DRMSERVICE_CFLAGS -DRMSERVICE_LIBS -USE_DRM_TRUE -USE_DRM_FALSE -USE_TESTMODE_TRUE -USE_TESTMODE_FALSE -USE_DUMP_TRUE -USE_DUMP_FALSE -LTLIBOBJS' -ac_subst_files='' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -PKG_CONFIG -MMCOMMON_CFLAGS -MMCOMMON_LIBS -MMLOG_CFLAGS -MMLOG_LIBS -GLIB_CFLAGS -GLIB_LIBS -GTK_CFLAGS -GTK_LIBS -AVCODEC_CFLAGS -AVCODEC_LIBS -AVUTIL_CFLAGS -AVUTIL_LIBS -AVFORMAT_CFLAGS -AVFORMAT_LIBS -DRMSERVICE_CFLAGS -DRMSERVICE_LIBS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute directory names. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures libmm-fileinfo 0.0.1 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/libmm-fileinfo] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of libmm-fileinfo 0.0.1:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-drm using drm - --enable-testmode using testmode - --enable-dump using dump - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - LIBS libraries to pass to the linker, e.g. -l<library> - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if - you have headers in a nonstandard directory <include dir> - CPP C preprocessor - PKG_CONFIG path to pkg-config utility - MMCOMMON_CFLAGS - C compiler flags for MMCOMMON, overriding pkg-config - MMCOMMON_LIBS - linker flags for MMCOMMON, overriding pkg-config - MMLOG_CFLAGS - C compiler flags for MMLOG, overriding pkg-config - MMLOG_LIBS linker flags for MMLOG, overriding pkg-config - GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config - GLIB_LIBS linker flags for GLIB, overriding pkg-config - GTK_CFLAGS C compiler flags for GTK, overriding pkg-config - GTK_LIBS linker flags for GTK, overriding pkg-config - AVCODEC_CFLAGS - C compiler flags for AVCODEC, overriding pkg-config - AVCODEC_LIBS - linker flags for AVCODEC, overriding pkg-config - AVUTIL_CFLAGS - C compiler flags for AVUTIL, overriding pkg-config - AVUTIL_LIBS linker flags for AVUTIL, overriding pkg-config - AVFORMAT_CFLAGS - C compiler flags for AVFORMAT, overriding pkg-config - AVFORMAT_LIBS - linker flags for AVFORMAT, overriding pkg-config - DRMSERVICE_CFLAGS - C compiler flags for DRMSERVICE, overriding pkg-config - DRMSERVICE_LIBS - linker flags for DRMSERVICE, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -libmm-fileinfo configure 0.0.1 -generated by GNU Autoconf 2.61 - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by libmm-fileinfo $as_me 0.0.1, which was -generated by GNU Autoconf 2.61. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" -else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" -fi -shift -for ac_site_file -do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - - - - - - - - - - - - - - - - - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -ac_config_headers="$ac_config_headers config.h" - -am__api_version='1.10' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} - { (exit 1); exit 1; }; } -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done -IFS=$as_save_IFS - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } -fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. -# By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm -f conftest.sed - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 -echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } -if test -z "$MKDIR_P"; then - if test "${ac_cv_path_mkdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done -done -IFS=$as_save_IFS - -fi - - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - test -d ./--version && rmdir ./--version - MKDIR_P="$ac_install_sh -d" - fi -fi -{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 -echo "${ECHO_T}$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - SET_MAKE= -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='libmm-fileinfo' - VERSION='0.0.1' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - - -# Checks for programs. -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { (ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext - -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; - xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; -esac - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi - - -{ echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CC" am_compiler_list= - -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -case `pwd` in - *\ * | *\ *) - { echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.2.4' -macro_revision='1.2976' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} - { (exit 1); exit 1; }; } - -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } -fi - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 -echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } -if test "${ac_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" | sed 99q >conftest.sed - $as_unset ac_script || ac_script= - # Extract the first word of "sed gsed" to use in msg output -if test -z "$SED"; then -set dummy sed gsed; ac_prog_name=$2 -if test "${ac_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_SED_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue - # Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_SED_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -SED="$ac_cv_path_SED" -if test -z "$SED"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in \$PATH" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_SED=$SED -fi - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 -echo "${ECHO_T}$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_GREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_GREP=$GREP -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_EGREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_EGREP=$EGREP -fi - - - fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ echo "$as_me:$LINENO: checking for fgrep" >&5 -echo $ECHO_N "checking for fgrep... $ECHO_C" >&6; } -if test "${ac_cv_path_FGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - # Extract the first word of "fgrep" to use in msg output -if test -z "$FGREP"; then -set dummy fgrep; ac_prog_name=$2 -if test "${ac_cv_path_FGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_FGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue - # Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_FGREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -FGREP="$ac_cv_path_FGREP" -if test -z "$FGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_FGREP=$FGREP -fi - - - fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 -echo "${ECHO_T}$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } -else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } -fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 -echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6; } -if test "${lt_cv_path_NM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 -echo "${ECHO_T}$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$ac_tool_prefix"; then - for ac_prog in "dumpbin -symbols" "link -dump -symbols" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_DUMPBIN+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { echo "$as_me:$LINENO: result: $DUMPBIN" >&5 -echo "${ECHO_T}$DUMPBIN" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in "dumpbin -symbols" "link -dump -symbols" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 -echo "${ECHO_T}$ac_ct_DUMPBIN" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 -echo $ECHO_N "checking the name lister ($NM) interface... $ECHO_C" >&6; } -if test "${lt_cv_nm_interface+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:4322: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:4325: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:4328: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 -echo "${ECHO_T}$lt_cv_nm_interface" >&6; } - -{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } -else - { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 -echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } -if test "${lt_cv_sys_max_cmd_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 -echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } -else - { echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 -echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECHO_C" >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ echo "$as_me:$LINENO: result: $xsi_shell" >&5 -echo "${ECHO_T}$xsi_shell" >&6; } - - -{ echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 -echo $ECHO_N "checking whether the shell understands \"+=\"... $ECHO_C" >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ echo "$as_me:$LINENO: result: $lt_shell_append" >&5 -echo "${ECHO_T}$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } -if test "${lt_cv_ld_reload_flag+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - - -{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 -echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } -if test "${lt_cv_deplibs_check_method+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -else - AR="$ac_cv_prog_AR" -fi - -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 -echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } -if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 - (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { echo "$as_me:$LINENO: result: failed" >&5 -echo "${ECHO_T}failed" >&6; } -else - { echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6; } -fi - - - - - - - - - - - - - - - - - - - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line 5439 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 -echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } -if test "${lt_cv_cc_needs_belf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - lt_cv_cc_needs_belf=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_cc_needs_belf=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 -echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 -echo "${ECHO_T}$DSYMUTIL" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 -echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { echo "$as_me:$LINENO: result: $NMEDIT" >&5 -echo "${ECHO_T}$NMEDIT" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 -echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_LIPO+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { echo "$as_me:$LINENO: result: $LIPO" >&5 -echo "${ECHO_T}$LIPO" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 -echo "${ECHO_T}$ac_ct_LIPO" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_OTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { echo "$as_me:$LINENO: result: $OTOOL" >&5 -echo "${ECHO_T}$OTOOL" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 -echo "${ECHO_T}$ac_ct_OTOOL" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_OTOOL64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { echo "$as_me:$LINENO: result: $OTOOL64" >&5 -echo "${ECHO_T}$OTOOL64" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 -echo "${ECHO_T}$ac_ct_OTOOL64" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 -echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } -if test "${lt_cv_apple_cc_single_mod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 -echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } - { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 -echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } -if test "${lt_cv_ld_exported_symbols_list+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - lt_cv_ld_exported_symbols_list=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_ld_exported_symbols_list=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 -echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <string.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ctype.h> -#include <stdlib.h> -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - -for ac_header in dlfcn.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ echo "$as_me:$LINENO: checking for objdir" >&5 -echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } -if test "${lt_cv_objdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 -echo "${ECHO_T}$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - - - - - - - - - - - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { echo "$as_me:$LINENO: checking for file" >&5 -echo $ECHO_N "checking for file... $ECHO_C" >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag=' -fno-builtin' - - { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7286: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:7290: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu) - case $cc_basename in - icc* | ecc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } - - - - - - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7610: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:7614: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7715: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:7719: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7770: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:7774: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } - if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag= - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='' - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - if test "$GCC" = "yes"; then - output_verbose_link_cmd=echo - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat >conftest.$ac_ext <<_ACEOF -int foo(void) {} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 -echo "${ECHO_T}$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc=no - else - archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 -echo "${ECHO_T}$archive_cmds_need_lc" >&6; } - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # Some binutils ld are patched to set DT_RUNPATH - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then - shlibpath_overrides_runpath=yes -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 -echo "${ECHO_T}$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - { echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef shl_load - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_shl_load || defined __stub___shl_load -choke me -#endif - -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_shl_load=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } -if test $ac_cv_func_shl_load = yes; then - lt_cv_dlopen="shl_load" -else - { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_dld_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dld_shl_load=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } -if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - { echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef dlopen - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_dlopen || defined __stub___dlopen -choke me -#endif - -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_dlopen=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } -if test $ac_cv_func_dlopen = yes; then - lt_cv_dlopen="dlopen" -else - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_svld_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_svld_dlopen=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } -if test $ac_cv_lib_svld_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_dld_dld_link=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dld_dld_link=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } -if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line 10518 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - else - puts (dlerror ()); - - exit (status); -} -_LT_EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line 10618 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - else - puts (dlerror ()); - - exit (status); -} -_LT_EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - fi - ;; - *) - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6; } - - { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6; } - - { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - -# Checks for libraries. -# FIXME: Replace `main' with a function in `-lavcodec': -#AC_CHECK_LIB([avcodec], [main]) -# FIXME: Replace `main' with a function in `-lavformat': -#AC_CHECK_LIB([avformat], [main]) -# FIXME: Replace `main' with a function in `-lavutil': -#AC_CHECK_LIB([avutil], [main]) -# FIXME: Replace `main' with a function in `-lm': - -{ echo "$as_me:$LINENO: checking for main in -lm" >&5 -echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6; } -if test "${ac_cv_lib_m_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_m_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_m_main=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5 -echo "${ECHO_T}$ac_cv_lib_m_main" >&6; } -if test $ac_cv_lib_m_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF - - LIBS="-lm $LIBS" - -fi - - -# Checks for header files. - - - - - -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 -echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -#include <$ac_hdr> - -int -main () -{ -if ((DIR *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 -_ACEOF - -ac_header_dirent=$ac_hdr; break -fi - -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then - { echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } -if test "${ac_cv_search_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (); -int -main () -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' dir; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search_opendir=$ac_res -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_opendir+set}" = set; then - break -fi -done -if test "${ac_cv_search_opendir+set}" = set; then - : -else - ac_cv_search_opendir=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -else - { echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } -if test "${ac_cv_search_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (); -int -main () -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' x; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search_opendir=$ac_res -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_opendir+set}" = set; then - break -fi -done -if test "${ac_cv_search_opendir+set}" = set; then - : -else - ac_cv_search_opendir=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -fi - -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <string.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ctype.h> -#include <stdlib.h> -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - - - - - - - -for ac_header in fcntl.h limits.h stdlib.h string.h sys/time.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -# Checks for typedefs, structures, and compiler characteristics. -{ echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5 -echo $ECHO_N "checking for stdbool.h that conforms to C99... $ECHO_C" >&6; } -if test "${ac_cv_header_stdbool_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include <stdbool.h> -#ifndef bool - "error: bool is not defined" -#endif -#ifndef false - "error: false is not defined" -#endif -#if false - "error: false is not 0" -#endif -#ifndef true - "error: true is not defined" -#endif -#if true != 1 - "error: true is not 1" -#endif -#ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" -#endif - - struct s { _Bool s: 1; _Bool t; } s; - - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) 0.5 == true ? 1 : -1]; - bool e = &s; - char f[(_Bool) 0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (_Bool)]; - char i[sizeof s.t]; - enum { j = false, k = true, l = false * true, m = true * 256 }; - _Bool n[m]; - char o[sizeof n == m * sizeof n[0] ? 1 : -1]; - char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; -# if defined __xlc__ || defined __GNUC__ - /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0 - reported by James Lemley on 2005-10-05; see - http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html - This test is not quite right, since xlc is allowed to - reject this program, as the initializer for xlcbug is - not one of the forms that C requires support for. - However, doing the test right would require a runtime - test, and that would make cross-compilation harder. - Let us hope that IBM fixes the xlc bug, and also adds - support for this kind of constant expression. In the - meantime, this test will reject xlc, which is OK, since - our stdbool.h substitute should suffice. We also test - this with GCC, where it should work, to detect more - quickly whether someone messes up the test in the - future. */ - char digs[] = "0123456789"; - int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1); -# endif - /* Catch a bug in an HP-UX C compiler. See - http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html - */ - _Bool q = true; - _Bool *pq = &q; - -int -main () -{ - - *pq |= q; - *pq |= ! q; - /* Refer to every declared value, to avoid compiler optimizations. */ - return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l - + !m + !n + !o + !p + !q + !pq); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_stdbool_h=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdbool_h=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5 -echo "${ECHO_T}$ac_cv_header_stdbool_h" >&6; } -{ echo "$as_me:$LINENO: checking for _Bool" >&5 -echo $ECHO_N "checking for _Bool... $ECHO_C" >&6; } -if test "${ac_cv_type__Bool+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -typedef _Bool ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type__Bool=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type__Bool=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5 -echo "${ECHO_T}$ac_cv_type__Bool" >&6; } -if test $ac_cv_type__Bool = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE__BOOL 1 -_ACEOF - - -fi - -if test $ac_cv_header_stdbool_h = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_STDBOOL_H 1 -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } -if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset cs; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_const=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking for inline" >&5 -echo $ECHO_N "checking for inline... $ECHO_C" >&6; } -if test "${ac_cv_c_inline+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifndef __cplusplus -typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } -#endif - -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_c_inline=$ac_kw -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 -echo "${ECHO_T}$ac_cv_c_inline" >&6; } - - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - - - { echo "$as_me:$LINENO: checking for int64_t" >&5 -echo $ECHO_N "checking for int64_t... $ECHO_C" >&6; } -if test "${ac_cv_c_int64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_c_int64_t=no - for ac_type in 'int64_t' 'int' 'long int' \ - 'long long int' 'short int' 'signed char'; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(0 < ($ac_type) (((($ac_type) 1 << (64 - 2)) - 1) * 2 + 1))]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(($ac_type) (((($ac_type) 1 << (64 - 2)) - 1) * 2 + 1) - < ($ac_type) (((($ac_type) 1 << (64 - 2)) - 1) * 2 + 2))]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - case $ac_type in - int64_t) ac_cv_c_int64_t=yes ;; - *) ac_cv_c_int64_t=$ac_type ;; -esac - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_int64_t" != no && break - done -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_int64_t" >&5 -echo "${ECHO_T}$ac_cv_c_int64_t" >&6; } - case $ac_cv_c_int64_t in #( - no|yes) ;; #( - *) - -cat >>confdefs.h <<_ACEOF -#define int64_t $ac_cv_c_int64_t -_ACEOF -;; - esac - -{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } -if test "${ac_cv_header_time+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> -#include <sys/time.h> -#include <time.h> - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_time=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_time=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\_ACEOF -#define TIME_WITH_SYS_TIME 1 -_ACEOF - -fi - - -# Checks for library functions. -{ echo "$as_me:$LINENO: checking whether closedir returns void" >&5 -echo $ECHO_N "checking whether closedir returns void... $ECHO_C" >&6; } -if test "${ac_cv_func_closedir_void+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_closedir_void=yes -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header_dirent> -#ifndef __cplusplus -int closedir (); -#endif - -int -main () -{ -return closedir (opendir (".")) != 0; - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_closedir_void=no -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_closedir_void=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_closedir_void" >&5 -echo "${ECHO_T}$ac_cv_func_closedir_void" >&6; } -if test $ac_cv_func_closedir_void = yes; then - -cat >>confdefs.h <<\_ACEOF -#define CLOSEDIR_VOID 1 -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5 -echo $ECHO_N "checking whether lstat dereferences a symlink specified with a trailing slash... $ECHO_C" >&6; } -if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - rm -f conftest.sym conftest.file -echo >conftest.file -if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then - if test "$cross_compiling" = yes; then - ac_cv_func_lstat_dereferences_slashed_symlink=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -struct stat sbuf; - /* Linux will dereference the symlink and fail. - That is better in the sense that it means we will not - have to compile and use the lstat wrapper. */ - return lstat ("conftest.sym/", &sbuf) == 0; - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_lstat_dereferences_slashed_symlink=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_lstat_dereferences_slashed_symlink=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -else - # If the `ln -s' command failed, then we probably don't even - # have an lstat function. - ac_cv_func_lstat_dereferences_slashed_symlink=no -fi -rm -f conftest.sym conftest.file - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 -echo "${ECHO_T}$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } - -test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && - -cat >>confdefs.h <<_ACEOF -#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 -_ACEOF - - -if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then - case " $LIBOBJS " in - *" lstat.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS lstat.$ac_objext" - ;; -esac - -fi - -{ echo "$as_me:$LINENO: checking whether lstat accepts an empty string" >&5 -echo $ECHO_N "checking whether lstat accepts an empty string... $ECHO_C" >&6; } -if test "${ac_cv_func_lstat_empty_string_bug+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_lstat_empty_string_bug=yes -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -struct stat sbuf; - return lstat ("", &sbuf) == 0; - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_lstat_empty_string_bug=no -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_lstat_empty_string_bug=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_lstat_empty_string_bug" >&5 -echo "${ECHO_T}$ac_cv_func_lstat_empty_string_bug" >&6; } -if test $ac_cv_func_lstat_empty_string_bug = yes; then - case " $LIBOBJS " in - *" lstat.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS lstat.$ac_objext" - ;; -esac - - -cat >>confdefs.h <<_ACEOF -#define HAVE_LSTAT_EMPTY_STRING_BUG 1 -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5 -echo $ECHO_N "checking whether lstat dereferences a symlink specified with a trailing slash... $ECHO_C" >&6; } -if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - rm -f conftest.sym conftest.file -echo >conftest.file -if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then - if test "$cross_compiling" = yes; then - ac_cv_func_lstat_dereferences_slashed_symlink=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -struct stat sbuf; - /* Linux will dereference the symlink and fail. - That is better in the sense that it means we will not - have to compile and use the lstat wrapper. */ - return lstat ("conftest.sym/", &sbuf) == 0; - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_lstat_dereferences_slashed_symlink=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_lstat_dereferences_slashed_symlink=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -else - # If the `ln -s' command failed, then we probably don't even - # have an lstat function. - ac_cv_func_lstat_dereferences_slashed_symlink=no -fi -rm -f conftest.sym conftest.file - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 -echo "${ECHO_T}$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } - -test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && - -cat >>confdefs.h <<_ACEOF -#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 -_ACEOF - - -if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then - case " $LIBOBJS " in - *" lstat.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS lstat.$ac_objext" - ;; -esac - -fi - - -for ac_header in stdlib.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -{ echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5 -echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6; } -if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_malloc_0_nonnull=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#if defined STDC_HEADERS || defined HAVE_STDLIB_H -# include <stdlib.h> -#else -char *malloc (); -#endif - -int -main () -{ -return ! malloc (0); - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_malloc_0_nonnull=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_malloc_0_nonnull=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5 -echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6; } -if test $ac_cv_func_malloc_0_nonnull = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MALLOC 1 -_ACEOF - -else - cat >>confdefs.h <<\_ACEOF -#define HAVE_MALLOC 0 -_ACEOF - - case " $LIBOBJS " in - *" malloc.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS malloc.$ac_objext" - ;; -esac - - -cat >>confdefs.h <<\_ACEOF -#define malloc rpl_malloc -_ACEOF - -fi - - - -{ echo "$as_me:$LINENO: checking for working memcmp" >&5 -echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; } -if test "${ac_cv_func_memcmp_working+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_memcmp_working=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Some versions of memcmp are not 8-bit clean. */ - char c0 = '\100', c1 = '\200', c2 = '\201'; - if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) - return 1; - - /* The Next x86 OpenStep bug shows up only when comparing 16 bytes - or more and with at least one buffer not starting on a 4-byte boundary. - William Lewis provided this test program. */ - { - char foo[21]; - char bar[21]; - int i; - for (i = 0; i < 4; i++) - { - char *a = foo + i; - char *b = bar + i; - strcpy (a, "--------01111111"); - strcpy (b, "--------10000000"); - if (memcmp (a, b, 16) >= 0) - return 1; - } - return 0; - } - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_memcmp_working=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_memcmp_working=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 -echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; } -test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in - *" memcmp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" - ;; -esac - - - - -for ac_header in stdlib.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_func in getpagesize -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -{ echo "$as_me:$LINENO: checking for working mmap" >&5 -echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } -if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_mmap_fixed_mapped=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -/* malloc might have been renamed as rpl_malloc. */ -#undef malloc - -/* Thanks to Mike Haertel and Jim Avera for this test. - Here is a matrix of mmap possibilities: - mmap private not fixed - mmap private fixed at somewhere currently unmapped - mmap private fixed at somewhere already mapped - mmap shared not fixed - mmap shared fixed at somewhere currently unmapped - mmap shared fixed at somewhere already mapped - For private mappings, we should verify that changes cannot be read() - back from the file, nor mmap's back from the file at a different - address. (There have been systems where private was not correctly - implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the file system buffer cache - like early versions of FreeBSD and possibly contemporary NetBSD.) - For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ - -#include <fcntl.h> -#include <sys/mman.h> - -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -/* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H -# include <sys/param.h> -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -int -main () -{ - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - return 1; - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - return 1; - if (write (fd, data, pagesize) != pagesize) - return 1; - close (fd); - - /* Next, try to mmap the file at a fixed address which already has - something else allocated at it. If we can, also make sure that - we see the same garbage. */ - fd = open ("conftest.mmap", O_RDWR); - if (fd < 0) - return 1; - data2 = (char *) malloc (2 * pagesize); - if (!data2) - return 1; - data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 1; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - return 1; - - /* Finally, make sure that changes to the mapped area do not - percolate back to the file as seen by read(). (This is a bug on - some variants of i386 svr4.0.) */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = (char *) malloc (pagesize); - if (!data3) - return 1; - if (read (fd, data3, pagesize) != pagesize) - return 1; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - return 1; - close (fd); - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_mmap_fixed_mapped=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_mmap_fixed_mapped=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MMAP 1 -_ACEOF - -fi -rm -f conftest.mmap - - -for ac_header in stdlib.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -{ echo "$as_me:$LINENO: checking for GNU libc compatible realloc" >&5 -echo $ECHO_N "checking for GNU libc compatible realloc... $ECHO_C" >&6; } -if test "${ac_cv_func_realloc_0_nonnull+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_realloc_0_nonnull=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#if defined STDC_HEADERS || defined HAVE_STDLIB_H -# include <stdlib.h> -#else -char *realloc (); -#endif - -int -main () -{ -return ! realloc (0, 0); - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_realloc_0_nonnull=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_realloc_0_nonnull=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_realloc_0_nonnull" >&5 -echo "${ECHO_T}$ac_cv_func_realloc_0_nonnull" >&6; } -if test $ac_cv_func_realloc_0_nonnull = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_REALLOC 1 -_ACEOF - -else - cat >>confdefs.h <<\_ACEOF -#define HAVE_REALLOC 0 -_ACEOF - - case " $LIBOBJS " in - *" realloc.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS realloc.$ac_objext" - ;; -esac - - -cat >>confdefs.h <<\_ACEOF -#define realloc rpl_realloc -_ACEOF - -fi - - - - - - - - -for ac_func in gettimeofday memset munmap strcasecmp strdup -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_path_PKG_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 -echo "${ECHO_T}$PKG_CONFIG" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 -echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 -echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - PKG_CONFIG="" - fi - -fi - -pkg_failed=no -{ echo "$as_me:$LINENO: checking for MMCOMMON" >&5 -echo $ECHO_N "checking for MMCOMMON... $ECHO_C" >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$MMCOMMON_CFLAGS"; then - pkg_cv_MMCOMMON_CFLAGS="$MMCOMMON_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mm-common\"") >&5 - ($PKG_CONFIG --exists --print-errors "mm-common") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_MMCOMMON_CFLAGS=`$PKG_CONFIG --cflags "mm-common" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$MMCOMMON_LIBS"; then - pkg_cv_MMCOMMON_LIBS="$MMCOMMON_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mm-common\"") >&5 - ($PKG_CONFIG --exists --print-errors "mm-common") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_MMCOMMON_LIBS=`$PKG_CONFIG --libs "mm-common" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - MMCOMMON_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mm-common"` - else - MMCOMMON_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mm-common"` - fi - # Put the nasty error message in config.log where it belongs - echo "$MMCOMMON_PKG_ERRORS" >&5 - - { { echo "$as_me:$LINENO: error: Package requirements (mm-common) were not met: - -$MMCOMMON_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables MMCOMMON_CFLAGS -and MMCOMMON_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&5 -echo "$as_me: error: Package requirements (mm-common) were not met: - -$MMCOMMON_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables MMCOMMON_CFLAGS -and MMCOMMON_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables MMCOMMON_CFLAGS -and MMCOMMON_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables MMCOMMON_CFLAGS -and MMCOMMON_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - MMCOMMON_CFLAGS=$pkg_cv_MMCOMMON_CFLAGS - MMCOMMON_LIBS=$pkg_cv_MMCOMMON_LIBS - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - : -fi - - - -#PKG_CHECK_MODULES(MMMHAL,mm-mhal) -#AC_SUBST(MMMHAL_CFLAGS) -#AC_SUBST(MMMHAL_LIBS) - - -pkg_failed=no -{ echo "$as_me:$LINENO: checking for MMLOG" >&5 -echo $ECHO_N "checking for MMLOG... $ECHO_C" >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$MMLOG_CFLAGS"; then - pkg_cv_MMLOG_CFLAGS="$MMLOG_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mm-log\"") >&5 - ($PKG_CONFIG --exists --print-errors "mm-log") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_MMLOG_CFLAGS=`$PKG_CONFIG --cflags "mm-log" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$MMLOG_LIBS"; then - pkg_cv_MMLOG_LIBS="$MMLOG_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"mm-log\"") >&5 - ($PKG_CONFIG --exists --print-errors "mm-log") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_MMLOG_LIBS=`$PKG_CONFIG --libs "mm-log" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - MMLOG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mm-log"` - else - MMLOG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mm-log"` - fi - # Put the nasty error message in config.log where it belongs - echo "$MMLOG_PKG_ERRORS" >&5 - - { { echo "$as_me:$LINENO: error: Package requirements (mm-log) were not met: - -$MMLOG_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables MMLOG_CFLAGS -and MMLOG_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&5 -echo "$as_me: error: Package requirements (mm-log) were not met: - -$MMLOG_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables MMLOG_CFLAGS -and MMLOG_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables MMLOG_CFLAGS -and MMLOG_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables MMLOG_CFLAGS -and MMLOG_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - MMLOG_CFLAGS=$pkg_cv_MMLOG_CFLAGS - MMLOG_LIBS=$pkg_cv_MMLOG_LIBS - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - : -fi - - - - - - -pkg_failed=no -{ echo "$as_me:$LINENO: checking for GLIB" >&5 -echo $ECHO_N "checking for GLIB... $ECHO_C" >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$GLIB_CFLAGS"; then - pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0\"") >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$GLIB_LIBS"; then - pkg_cv_GLIB_LIBS="$GLIB_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0\"") >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-2.0"` - else - GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0"` - fi - # Put the nasty error message in config.log where it belongs - echo "$GLIB_PKG_ERRORS" >&5 - - { { echo "$as_me:$LINENO: error: Package requirements (glib-2.0) were not met: - -$GLIB_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables GLIB_CFLAGS -and GLIB_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&5 -echo "$as_me: error: Package requirements (glib-2.0) were not met: - -$GLIB_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables GLIB_CFLAGS -and GLIB_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables GLIB_CFLAGS -and GLIB_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables GLIB_CFLAGS -and GLIB_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS - GLIB_LIBS=$pkg_cv_GLIB_LIBS - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - : -fi - - - - -pkg_failed=no -{ echo "$as_me:$LINENO: checking for GTK" >&5 -echo $ECHO_N "checking for GTK... $ECHO_C" >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$GTK_CFLAGS"; then - pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0\"") >&5 - ($PKG_CONFIG --exists --print-errors "gtk+-2.0") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$GTK_LIBS"; then - pkg_cv_GTK_LIBS="$GTK_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0\"") >&5 - ($PKG_CONFIG --exists --print-errors "gtk+-2.0") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk+-2.0"` - else - GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0"` - fi - # Put the nasty error message in config.log where it belongs - echo "$GTK_PKG_ERRORS" >&5 - - { { echo "$as_me:$LINENO: error: Package requirements (gtk+-2.0) were not met: - -$GTK_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables GTK_CFLAGS -and GTK_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&5 -echo "$as_me: error: Package requirements (gtk+-2.0) were not met: - -$GTK_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables GTK_CFLAGS -and GTK_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables GTK_CFLAGS -and GTK_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables GTK_CFLAGS -and GTK_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - GTK_CFLAGS=$pkg_cv_GTK_CFLAGS - GTK_LIBS=$pkg_cv_GTK_LIBS - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - : -fi - - - - - -pkg_failed=no -{ echo "$as_me:$LINENO: checking for AVCODEC" >&5 -echo $ECHO_N "checking for AVCODEC... $ECHO_C" >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$AVCODEC_CFLAGS"; then - pkg_cv_AVCODEC_CFLAGS="$AVCODEC_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libavcodec\"") >&5 - ($PKG_CONFIG --exists --print-errors "libavcodec") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_AVCODEC_CFLAGS=`$PKG_CONFIG --cflags "libavcodec" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$AVCODEC_LIBS"; then - pkg_cv_AVCODEC_LIBS="$AVCODEC_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libavcodec\"") >&5 - ($PKG_CONFIG --exists --print-errors "libavcodec") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_AVCODEC_LIBS=`$PKG_CONFIG --libs "libavcodec" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - AVCODEC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libavcodec"` - else - AVCODEC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libavcodec"` - fi - # Put the nasty error message in config.log where it belongs - echo "$AVCODEC_PKG_ERRORS" >&5 - - { { echo "$as_me:$LINENO: error: Package requirements (libavcodec) were not met: - -$AVCODEC_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables AVCODEC_CFLAGS -and AVCODEC_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&5 -echo "$as_me: error: Package requirements (libavcodec) were not met: - -$AVCODEC_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables AVCODEC_CFLAGS -and AVCODEC_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables AVCODEC_CFLAGS -and AVCODEC_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables AVCODEC_CFLAGS -and AVCODEC_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - AVCODEC_CFLAGS=$pkg_cv_AVCODEC_CFLAGS - AVCODEC_LIBS=$pkg_cv_AVCODEC_LIBS - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - : -fi - - - - -pkg_failed=no -{ echo "$as_me:$LINENO: checking for AVUTIL" >&5 -echo $ECHO_N "checking for AVUTIL... $ECHO_C" >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$AVUTIL_CFLAGS"; then - pkg_cv_AVUTIL_CFLAGS="$AVUTIL_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libavutil\"") >&5 - ($PKG_CONFIG --exists --print-errors "libavutil") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_AVUTIL_CFLAGS=`$PKG_CONFIG --cflags "libavutil" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$AVUTIL_LIBS"; then - pkg_cv_AVUTIL_LIBS="$AVUTIL_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libavutil\"") >&5 - ($PKG_CONFIG --exists --print-errors "libavutil") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_AVUTIL_LIBS=`$PKG_CONFIG --libs "libavutil" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - AVUTIL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libavutil"` - else - AVUTIL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libavutil"` - fi - # Put the nasty error message in config.log where it belongs - echo "$AVUTIL_PKG_ERRORS" >&5 - - { { echo "$as_me:$LINENO: error: Package requirements (libavutil) were not met: - -$AVUTIL_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables AVUTIL_CFLAGS -and AVUTIL_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&5 -echo "$as_me: error: Package requirements (libavutil) were not met: - -$AVUTIL_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables AVUTIL_CFLAGS -and AVUTIL_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables AVUTIL_CFLAGS -and AVUTIL_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables AVUTIL_CFLAGS -and AVUTIL_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - AVUTIL_CFLAGS=$pkg_cv_AVUTIL_CFLAGS - AVUTIL_LIBS=$pkg_cv_AVUTIL_LIBS - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - : -fi - - - - -pkg_failed=no -{ echo "$as_me:$LINENO: checking for AVFORMAT" >&5 -echo $ECHO_N "checking for AVFORMAT... $ECHO_C" >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$AVFORMAT_CFLAGS"; then - pkg_cv_AVFORMAT_CFLAGS="$AVFORMAT_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libavformat\"") >&5 - ($PKG_CONFIG --exists --print-errors "libavformat") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_AVFORMAT_CFLAGS=`$PKG_CONFIG --cflags "libavformat" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$AVFORMAT_LIBS"; then - pkg_cv_AVFORMAT_LIBS="$AVFORMAT_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libavformat\"") >&5 - ($PKG_CONFIG --exists --print-errors "libavformat") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_AVFORMAT_LIBS=`$PKG_CONFIG --libs "libavformat" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - AVFORMAT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libavformat"` - else - AVFORMAT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libavformat"` - fi - # Put the nasty error message in config.log where it belongs - echo "$AVFORMAT_PKG_ERRORS" >&5 - - { { echo "$as_me:$LINENO: error: Package requirements (libavformat) were not met: - -$AVFORMAT_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables AVFORMAT_CFLAGS -and AVFORMAT_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&5 -echo "$as_me: error: Package requirements (libavformat) were not met: - -$AVFORMAT_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables AVFORMAT_CFLAGS -and AVFORMAT_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables AVFORMAT_CFLAGS -and AVFORMAT_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables AVFORMAT_CFLAGS -and AVFORMAT_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - AVFORMAT_CFLAGS=$pkg_cv_AVFORMAT_CFLAGS - AVFORMAT_LIBS=$pkg_cv_AVFORMAT_LIBS - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - : -fi - - - -# Check whether --enable-drm was given. -if test "${enable_drm+set}" = set; then - enableval=$enable_drm; - case "${enableval}" in - yes) USE_DRM=yes ;; - no) USE_DRM=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-drm" >&5 -echo "$as_me: error: bad value ${enableval} for --enable-drm" >&2;} - { (exit 1); exit 1; }; } ;; - esac - -else - USE_DRM=yes -fi - -if test "x$USE_DRM" = "xyes"; then - -pkg_failed=no -{ echo "$as_me:$LINENO: checking for DRMSERVICE" >&5 -echo $ECHO_N "checking for DRMSERVICE... $ECHO_C" >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$DRMSERVICE_CFLAGS"; then - pkg_cv_DRMSERVICE_CFLAGS="$DRMSERVICE_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"drm-service\"") >&5 - ($PKG_CONFIG --exists --print-errors "drm-service") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_DRMSERVICE_CFLAGS=`$PKG_CONFIG --cflags "drm-service" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$DRMSERVICE_LIBS"; then - pkg_cv_DRMSERVICE_LIBS="$DRMSERVICE_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"drm-service\"") >&5 - ($PKG_CONFIG --exists --print-errors "drm-service") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_DRMSERVICE_LIBS=`$PKG_CONFIG --libs "drm-service" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - DRMSERVICE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "drm-service"` - else - DRMSERVICE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "drm-service"` - fi - # Put the nasty error message in config.log where it belongs - echo "$DRMSERVICE_PKG_ERRORS" >&5 - - { { echo "$as_me:$LINENO: error: Package requirements (drm-service) were not met: - -$DRMSERVICE_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables DRMSERVICE_CFLAGS -and DRMSERVICE_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&5 -echo "$as_me: error: Package requirements (drm-service) were not met: - -$DRMSERVICE_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables DRMSERVICE_CFLAGS -and DRMSERVICE_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables DRMSERVICE_CFLAGS -and DRMSERVICE_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables DRMSERVICE_CFLAGS -and DRMSERVICE_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - DRMSERVICE_CFLAGS=$pkg_cv_DRMSERVICE_CFLAGS - DRMSERVICE_LIBS=$pkg_cv_DRMSERVICE_LIBS - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - : -fi - - -fi - if test "x$USE_DRM" = "xyes"; then - USE_DRM_TRUE= - USE_DRM_FALSE='#' -else - USE_DRM_TRUE='#' - USE_DRM_FALSE= -fi - - - -# Check whether --enable-testmode was given. -if test "${enable_testmode+set}" = set; then - enableval=$enable_testmode; - case "${enableval}" in - yes) USE_TESTMODE=yes ;; - no) USE_TESTMODE=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-testmode" >&5 -echo "$as_me: error: bad value ${enableval} for --enable-testmode" >&2;} - { (exit 1); exit 1; }; } ;; - esac - -else - USE_TESTMODE=no -fi - - if test "x$USE_TESTMODE" = "xyes"; then - USE_TESTMODE_TRUE= - USE_TESTMODE_FALSE='#' -else - USE_TESTMODE_TRUE='#' - USE_TESTMODE_FALSE= -fi - -{ echo "$as_me:$LINENO: result: checking for USE_TESTMODE ... $USE_TESTMODE" >&5 -echo "${ECHO_T}checking for USE_TESTMODE ... $USE_TESTMODE" >&6; } - -# Check whether --enable-dump was given. -if test "${enable_dump+set}" = set; then - enableval=$enable_dump; - case "${enableval}" in - yes) USE_DUMP=yes ;; - no) USE_DUMP=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-dump" >&5 -echo "$as_me: error: bad value ${enableval} for --enable-dump" >&2;} - { (exit 1); exit 1; }; } ;; - esac - -else - USE_DUMP=no -fi - - if test "x$USE_DUMP" = "xyes"; then - USE_DUMP_TRUE= - USE_DUMP_FALSE='#' -else - USE_DUMP_TRUE='#' - USE_DUMP_FALSE= -fi - -{ echo "$as_me:$LINENO: result: checking for USE_DUMP ... $USE_DUMP" >&5 -echo "${ECHO_T}checking for USE_DUMP ... $USE_DUMP" >&6; } - -ac_config_files="$ac_config_files Makefile codecs/Makefile codecs/ffmpeg/Makefile formats/Makefile formats/ffmpeg/Makefile utils/Makefile tests/Makefile mm-fileinfo.pc" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${USE_DRM_TRUE}" && test -z "${USE_DRM_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"USE_DRM\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"USE_DRM\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${USE_TESTMODE_TRUE}" && test -z "${USE_TESTMODE_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"USE_TESTMODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"USE_TESTMODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${USE_DUMP_TRUE}" && test -z "${USE_DUMP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"USE_DUMP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"USE_DUMP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 - -# Save the log message, to keep $[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by libmm-fileinfo $as_me 0.0.1, which was -generated by GNU Autoconf 2.61. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to <bug-autoconf@gnu.org>." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -libmm-fileinfo config.status 0.0.1 -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2006 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL - export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' -macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' -enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' -pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' -host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' -host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' -host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' -build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' -build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' -build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' -SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' -Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' -GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' -EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' -FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' -LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' -NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' -LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' -ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' -exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' -lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' -reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' -AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' -STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' -RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' -compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' -GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' -SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' -ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' -need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' -LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' -libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' -fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' -version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' -runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' -libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' -soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' -old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' -striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# Quote evaled strings. -for var in SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -deplibs_check_method \ -file_magic_cmd \ -AR \ -AR_FLAGS \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -SHELL \ -ECHO \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_wl \ -lt_prog_compiler_pic \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -fix_srcfile_path \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_ECHO in -*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` - ;; -esac - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "codecs/Makefile") CONFIG_FILES="$CONFIG_FILES codecs/Makefile" ;; - "codecs/ffmpeg/Makefile") CONFIG_FILES="$CONFIG_FILES codecs/ffmpeg/Makefile" ;; - "formats/Makefile") CONFIG_FILES="$CONFIG_FILES formats/Makefile" ;; - "formats/ffmpeg/Makefile") CONFIG_FILES="$CONFIG_FILES formats/ffmpeg/Makefile" ;; - "utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;; - "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "mm-fileinfo.pc") CONFIG_FILES="$CONFIG_FILES mm-fileinfo.pc" ;; - - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# -# Set up the sed scripts for CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -am__isrc!$am__isrc$ac_delim -CYGPATH_W!$CYGPATH_W$ac_delim -PACKAGE!$PACKAGE$ac_delim -VERSION!$VERSION$ac_delim -ACLOCAL!$ACLOCAL$ac_delim -AUTOCONF!$AUTOCONF$ac_delim -AUTOMAKE!$AUTOMAKE$ac_delim -AUTOHEADER!$AUTOHEADER$ac_delim -MAKEINFO!$MAKEINFO$ac_delim -install_sh!$install_sh$ac_delim -STRIP!$STRIP$ac_delim -INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim -mkdir_p!$mkdir_p$ac_delim -AWK!$AWK$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -am__leading_dot!$am__leading_dot$ac_delim -AMTAR!$AMTAR$ac_delim -am__tar!$am__tar$ac_delim -am__untar!$am__untar$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -DEPDIR!$DEPDIR$ac_delim -am__include!$am__include$ac_delim -am__quote!$am__quote$ac_delim -AMDEP_TRUE!$AMDEP_TRUE$ac_delim -AMDEP_FALSE!$AMDEP_FALSE$ac_delim -AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim -CCDEPMODE!$CCDEPMODE$ac_delim -am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim -am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim -LIBTOOL!$LIBTOOL$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -SED!$SED$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -FGREP!$FGREP$ac_delim -LD!$LD$ac_delim -DUMPBIN!$DUMPBIN$ac_delim -ac_ct_DUMPBIN!$ac_ct_DUMPBIN$ac_delim -NM!$NM$ac_delim -LN_S!$LN_S$ac_delim -AR!$AR$ac_delim -RANLIB!$RANLIB$ac_delim -lt_ECHO!$lt_ECHO$ac_delim -DSYMUTIL!$DSYMUTIL$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS <conf$$subs.sed -rm -f conf$$subs.sed -cat >>$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof -_ACEOF - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -NMEDIT!$NMEDIT$ac_delim -LIPO!$LIPO$ac_delim -OTOOL!$OTOOL$ac_delim -OTOOL64!$OTOOL64$ac_delim -CPP!$CPP$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -PKG_CONFIG!$PKG_CONFIG$ac_delim -MMCOMMON_CFLAGS!$MMCOMMON_CFLAGS$ac_delim -MMCOMMON_LIBS!$MMCOMMON_LIBS$ac_delim -MMLOG_CFLAGS!$MMLOG_CFLAGS$ac_delim -MMLOG_LIBS!$MMLOG_LIBS$ac_delim -GLIB_CFLAGS!$GLIB_CFLAGS$ac_delim -GLIB_LIBS!$GLIB_LIBS$ac_delim -GTK_CFLAGS!$GTK_CFLAGS$ac_delim -GTK_LIBS!$GTK_LIBS$ac_delim -AVCODEC_CFLAGS!$AVCODEC_CFLAGS$ac_delim -AVCODEC_LIBS!$AVCODEC_LIBS$ac_delim -AVUTIL_CFLAGS!$AVUTIL_CFLAGS$ac_delim -AVUTIL_LIBS!$AVUTIL_LIBS$ac_delim -AVFORMAT_CFLAGS!$AVFORMAT_CFLAGS$ac_delim -AVFORMAT_LIBS!$AVFORMAT_LIBS$ac_delim -DRMSERVICE_CFLAGS!$DRMSERVICE_CFLAGS$ac_delim -DRMSERVICE_LIBS!$DRMSERVICE_LIBS$ac_delim -USE_DRM_TRUE!$USE_DRM_TRUE$ac_delim -USE_DRM_FALSE!$USE_DRM_FALSE$ac_delim -USE_TESTMODE_TRUE!$USE_TESTMODE_TRUE$ac_delim -USE_TESTMODE_FALSE!$USE_TESTMODE_FALSE$ac_delim -USE_DUMP_TRUE!$USE_DUMP_TRUE$ac_delim -USE_DUMP_FALSE!$USE_DUMP_FALSE$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 30; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS <conf$$subs.sed -rm -f conf$$subs.sed -cat >>$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof -_ACEOF - - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ -s/:*$// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF -fi # test -n "$CONFIG_FILES" - - -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; - esac - ac_file_inputs="$ac_file_inputs $ac_f" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - fi - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p -' $ac_file_inputs` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" - case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac - ;; - :H) - # - # CONFIG_HEADER - # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : -do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines conftest.tail - -echo "ac_result=$ac_in" >>$CONFIG_STATUS -cat >>$CONFIG_STATUS <<\_ACEOF - if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f $ac_file - mv "$tmp/config.h" $ac_file - fi - else - echo "/* $configure_input */" - cat "$ac_result" - fi - rm -f "$tmp/out12" -# Compute $ac_file's index in $config_headers. -_am_arg=$ac_file -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || # Autoconf 2.62 quotes --file arguments for eval, but not when files -# are listed without --file. Let's play safe and only enable the eval -# if we detect the quoting. -case $CONFIG_FILES in -*\'*) eval set x "$CONFIG_FILES" ;; -*) set x $CONFIG_FILES ;; -esac -shift -for mf -do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir=$dirpart/$fdir - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="" - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that does not interpret backslashes. -ECHO=$lt_ECHO - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; - - esac -done # for ac_tag - - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/configure.ac b/configure.ac index 86b4542..617fab7 100755 --- a/configure.ac +++ b/configure.ac @@ -9,6 +9,8 @@ AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_MACRO_DIR([m4]) # Checks for programs. +m4_pattern_allow([AM_PROG_AR]) +AM_PROG_AR AC_PROG_CC AC_PROG_LIBTOOL @@ -48,9 +50,13 @@ PKG_CHECK_MODULES(MMCOMMON,mm-common) AC_SUBST(MMCOMMON_CFLAGS) AC_SUBST(MMCOMMON_LIBS) -PKG_CHECK_MODULES(MMLOG,mm-log) -AC_SUBST(MMLOG_CFLAGS) -AC_SUBST(MMLOG_LIBS) +#PKG_CHECK_MODULES(MMMHAL,mm-mhal) +#AC_SUBST(MMMHAL_CFLAGS) +#AC_SUBST(MMMHAL_LIBS) + +PKG_CHECK_MODULES(DLOG,dlog) +AC_SUBST(DLOG_CFLAGS) +AC_SUBST(DLOG_LIBS) PKG_CHECK_MODULES(GLIB, glib-2.0) AC_SUBST(GLIB_CFLAGS) @@ -60,6 +66,7 @@ PKG_CHECK_MODULES(GTK, gtk+-2.0, [HAVE_GTK=yes], [HAVE_GTK=no]) AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) + PKG_CHECK_MODULES(AVCODEC, libavcodec) AC_SUBST(AVCODEC_CFLAGS) AC_SUBST(AVCODEC_LIBS) @@ -83,7 +90,7 @@ AC_SUBST(ICU_LIBS) PKG_CHECK_MODULES(VCONF, vconf) AC_SUBST(VCONF_CFLAGS) AC_SUBST(VCONF_LIBS) - + dnl use dyn -------------------------------------------------------------------------- AC_ARG_ENABLE(dyn, AC_HELP_STRING([--enable-dyn], [using dyn]), [ diff --git a/formats/ffmpeg/Makefile.am b/formats/ffmpeg/Makefile.am index 4d93a50..e1d6b5f 100755 --- a/formats/ffmpeg/Makefile.am +++ b/formats/ffmpeg/Makefile.am @@ -59,8 +59,9 @@ libmmfile_formats_la_LIBADD = $(MMCOMMON_LIBS) \ $(SWSCALE_LIBS) \ $(top_builddir)/utils/libmmfile_utils.la -libmmfile_formats_la_CFLAGS += $(MMLOG_CFLAGS) -DMMF_LOG_OWNER=0x040 -DMMF_DEBUG_PREFIX=\"MMF-FILE-FORMAT-FFMPEG\" -libmmfile_formats_la_LIBADD += $(MMLOG_LIBS) +libmmfile_formats_la_CFLAGS += $(DLOG_CFLAGS) +libmmfile_formats_la_LIBADD += $(DLOG_LIBS) libmmfile_formats_la_CFLAGS += -D__MMFILE_FFMPEG_V100__ libmmfile_formats_la_CFLAGS += -D__MMFILE_FFMPEG_V085__ +libmmfile_formats_la_CFLAGS += -D__MMFILE_LIBAV_VERSION__=11.3 diff --git a/formats/ffmpeg/include/mm_file_format_aac.h b/formats/ffmpeg/include/mm_file_format_aac.h index 177a09a..fbc7a77 100755 --- a/formats/ffmpeg/include/mm_file_format_aac.h +++ b/formats/ffmpeg/include/mm_file_format_aac.h @@ -33,55 +33,55 @@ extern "C" { #define MMFILE_AAC_PARSER_FAIL 0 typedef enum _mmfile_aac_profile_type { - AAC_PROFILE_MAIN, - AAC_PROFILE_LC, - AAC_PROFILE_SSR, - AAC_PROFILE_LTP, - AAC_PROFILE_UNKNOWN + AAC_PROFILE_MAIN, + AAC_PROFILE_LC, + AAC_PROFILE_SSR, + AAC_PROFILE_LTP, + AAC_PROFILE_UNKNOWN }TAacProfileType; typedef void* MMFileAACHandle; typedef struct _mmfileaacstreaminfo { - unsigned int iseekable; - long long duration; - long long fileSize; - unsigned int bitRate; - unsigned int samplingRate; - unsigned int frameRate; - unsigned int numAudioChannels; - unsigned int numTracks; - TAacProfileType profileType; + unsigned int iseekable; + long long duration; + long long fileSize; + unsigned int bitRate; + unsigned int samplingRate; + unsigned int frameRate; + unsigned int numAudioChannels; + unsigned int numTracks; + TAacProfileType profileType; } tMMFILE_AAC_STREAM_INFO; typedef struct _mmfileaactaginfo { - char *title; - char *author; - char *artist; - char *album; - char *album_artist; - char *year; - char *copyright; - char *comment; - char *genre; - char *tracknum; - char *composer; - char *classification; - char *rating; - char *recordDate; - char *conductor; - char *artworkMime; - char *artwork; - unsigned int artworkSize; + char *title; + char *author; + char *artist; + char *album; + char *album_artist; + char *year; + char *copyright; + char *comment; + char *genre; + char *tracknum; + char *composer; + char *classification; + char *rating; + char *recordDate; + char *conductor; + char *artworkMime; + char *artwork; + unsigned int artworkSize; } tMMFILE_AAC_TAG_INFO; -int mmfile_aacparser_open (MMFileAACHandle *handle, const char *src); -int mmfile_aacparser_get_stream_info (MMFileAACHandle handle, tMMFILE_AAC_STREAM_INFO *aacinfo); -int mmfile_aacparser_get_tag_info (MMFileAACHandle handle, tMMFILE_AAC_TAG_INFO *info); -int mmfile_aacparser_get_next_frame (MMFileAACHandle handle, tMMFILE_AAC_STREAM_INFO *aacinfo); -int mmfile_aacparser_close (MMFileAACHandle handle); +int mmfile_aacparser_open(MMFileAACHandle *handle, const char *src); +int mmfile_aacparser_get_stream_info(MMFileAACHandle handle, tMMFILE_AAC_STREAM_INFO *aacinfo); +int mmfile_aacparser_get_tag_info(MMFileAACHandle handle, tMMFILE_AAC_TAG_INFO *info); +int mmfile_aacparser_get_next_frame(MMFileAACHandle handle, tMMFILE_AAC_STREAM_INFO *aacinfo); +int mmfile_aacparser_close(MMFileAACHandle handle); #ifdef __cplusplus } diff --git a/formats/ffmpeg/include/mm_file_format_amr.h b/formats/ffmpeg/include/mm_file_format_amr.h index 4df6dcd..6b4fc4f 100755 --- a/formats/ffmpeg/include/mm_file_format_amr.h +++ b/formats/ffmpeg/include/mm_file_format_amr.h @@ -34,19 +34,19 @@ extern "C" { typedef void* MMFileAMRHandle; typedef struct _mmfileamrstreaminfo { - long long duration; - long long fileSize; - unsigned int bitRate; - unsigned int samplingRate; - unsigned int frameRate; - unsigned int numAudioChannels; - unsigned int numTracks; + long long duration; + long long fileSize; + unsigned int bitRate; + unsigned int samplingRate; + unsigned int frameRate; + unsigned int numAudioChannels; + unsigned int numTracks; } tMMFILE_AMR_STREAM_INFO; -int mmfile_amrparser_open (MMFileAMRHandle *handle, const char *src); -int mmfile_amrparser_get_stream_info (MMFileAMRHandle handle, tMMFILE_AMR_STREAM_INFO *amrinfo); -int mmfile_amrparser_close (MMFileAMRHandle handle); +int mmfile_amrparser_open(MMFileAMRHandle *handle, const char *src); +int mmfile_amrparser_get_stream_info(MMFileAMRHandle handle, tMMFILE_AMR_STREAM_INFO *amrinfo); +int mmfile_amrparser_close(MMFileAMRHandle handle); #ifdef __cplusplus } diff --git a/formats/ffmpeg/include/mm_file_format_audio.h b/formats/ffmpeg/include/mm_file_format_audio.h index 0711395..fb838f7 100755 --- a/formats/ffmpeg/include/mm_file_format_audio.h +++ b/formats/ffmpeg/include/mm_file_format_audio.h @@ -29,7 +29,7 @@ #define MPEG_2_SIZE_LAYER_2_3 (MPEG_1_SIZE_LAYER_2_3 / 2) /* MP3 */ -#define MP3TAGINFO_SIZE 128 // file end 128 byte +#define MP3TAGINFO_SIZE 128 /* file end 128 byte */ #define FRAMES_FLAG 0x0001 #define BYTES_FLAG 0x0002 #define TOC_FLAG 0x0004 @@ -86,61 +86,61 @@ #define AV_MP3HDR_EMPHASIS_M 0x03 #define AV_MP3HDR_EMPHASIS_SHIFT 0 -#define MASK_MPEG 0x18 // 00011000 -#define MASK_MPEG_25 0x00 // 00000000 -#define MASK_MPEG_2 0x10 // 00010000 -#define MASK_MPEG_1 0x18 // 00011000 +#define MASK_MPEG 0x18 /* 00011000 */ +#define MASK_MPEG_25 0x00 /* 00000000 */ +#define MASK_MPEG_2 0x10 /* 00010000 */ +#define MASK_MPEG_1 0x18 /* 00011000 */ -#define MASK_LAYER 0x06 // 00000110 -#define MASK_LAYER_3 0x02 // 00000010 -#define MASK_LAYER_2 0x04 // 00000100 -#define MASK_LAYER_1 0x06 // 00000110 +#define MASK_LAYER 0x06 /* 00000110 */ +#define MASK_LAYER_3 0x02 /* 00000010 */ +#define MASK_LAYER_2 0x04 /* 00000100 */ +#define MASK_LAYER_1 0x06 /* 00000110 */ -#define MASK_CHANNEL 0xC0 // 11000000 -#define MASK_CHANNEL_ST 0x00 // 00000000 -#define MASK_CHANNEL_JS 0x40 // 01000000 -#define MASK_CHANNEL_DC 0x80 // 10000000 -#define MASK_CHANNEL_MN 0xC0 // 11000000 +#define MASK_CHANNEL 0xC0 /* 11000000 */ +#define MASK_CHANNEL_ST 0x00 /* 00000000 */ +#define MASK_CHANNEL_JS 0x40 /* 01000000 */ +#define MASK_CHANNEL_DC 0x80 /* 10000000 */ +#define MASK_CHANNEL_MN 0xC0 /* 11000000 */ -#define MASK_SAMPLERATE 0x0C // 00001100 +#define MASK_SAMPLERATE 0x0C /* 00001100 */ -#define MASK_PADDING 0x02 // 00000010 +#define MASK_PADDING 0x02 /* 00000010 */ -#define _AV_MP3_HEADER_POSITION_MAX (50*1024) // mp3 header should be exist inside this size -#define AV_MP3_HEADER_READ_MAX 200000 // mp3 header should be exist inside this size +#define _AV_MP3_HEADER_POSITION_MAX (50*1024) /* mp3 header should be exist inside this size */ +#define AV_MP3_HEADER_READ_MAX 200000 /* mp3 header should be exist inside this size */ #define AV_WM_LOCALCODE_SIZE_MAX 2 /* * Xing Header Information */ -typedef struct{ - int hId; // from MPEG header, 0=MPEG2, 1=MPEG1 - int sampRate; // determined from MPEG header - int flags; // from Xing header data - int frames; // total bit stream frames from Xing header data - int bytes; // total bit stream bytes from Xing header data - int vbrScale; // encoded vbr scale from Xing header data - unsigned char *toc; // pointer to unsigned char toc_buffer[100] - // may be NULL if toc not desired +typedef struct { + int hId; /* from MPEG header, 0=MPEG2, 1=MPEG1 */ + int sampRate; /* determined from MPEG header */ + int flags; /* from Xing header data */ + int frames; /* total bit stream frames from Xing header data */ + int bytes; /* total bit stream bytes from Xing header data */ + int vbrScale; /* encoded vbr scale from Xing header data */ + unsigned char *toc; /* pointer to unsigned char toc_buffer[100] */ + /* may be NULL if toc not desired */ } AvXHeadData; -typedef struct{ - int hId; // from MPEG header, 0=MPEG2, 1=MPEG1 - int vID; // ver. ID - int sampRate; // determined from MPEG header - float delay; // delay - int qualityIndicator; // qualityIndicator - int bytes; // total bit stream bytes from Xing header data - int frames; // total bit stream frames from Xing header data - int numOfTOC; // numOfTOC - int vbriScale; // encoded vbri scale from VBRI header data - int sizePerTable; // encoded sizePerTable from VBRI header data - int framesPerTable; //encoded framesPerTable from VBRI header data - unsigned char *toc; // pointer to unsigned char toc_buffer[100] - // may be NULL if toc not desired +typedef struct { + int hId; /* from MPEG header, 0=MPEG2, 1=MPEG1 */ + int vID; /* ver. ID */ + int sampRate; /* determined from MPEG header */ + float delay; /* delay */ + int qualityIndicator; /* qualityIndicator */ + int bytes; /* total bit stream bytes from Xing header data */ + int frames; /* total bit stream frames from Xing header data */ + int numOfTOC; /* numOfTOC */ + int vbriScale; /* encoded vbri scale from VBRI header data */ + int sizePerTable; /* encoded sizePerTable from VBRI header data */ + int framesPerTable; /*encoded framesPerTable from VBRI header data */ + unsigned char *toc; /* pointer to unsigned char toc_buffer[100] */ + /* may be NULL if toc not desired */ } AvVBRIHeadData; -typedef enum { +typedef enum { AV_MPEG_VER_RESERVED, /* Reserved */ AV_MPEG_VER_1, /* MPEG Version 1.0 */ @@ -150,16 +150,16 @@ typedef enum { AV_MPEG_VER_UNKNOWN /* Unable to determine version information */ } AvMp3VerEnumType; -typedef enum { +typedef enum { AV_MP3_LAYER_RESERVED = 0, /* Reserved */ - AV_MPEG2_LAYER_AAC = AV_MP3_LAYER_RESERVED, /* MPEG2 AAC compression */ + AV_MPEG2_LAYER_AAC = AV_MP3_LAYER_RESERVED, /* MPEG2 AAC compression */ AV_MP3_LAYER_1, /* MPEG Layer 1 compression */ AV_MP3_LAYER_2, /* MPEG Layer 2 compression */ AV_MP3_LAYER_3, /* MPEG Layer 3 compression */ AV_MP3_LAYER_UNKNOWN /* Unable to determine layer information */ -}AvMpegLayerEnumType; +} AvMpegLayerEnumType; -typedef enum { +typedef enum { AV_MP3_BITRATE_FREE = 0, /* Free bitrate (determined by software) */ AV_MP3_BITRATE_8K = 8, /* Fixed bitrates */ AV_MP3_BITRATE_16K = 16, /* */ diff --git a/formats/ffmpeg/include/mm_file_format_ffmpeg_mem.h b/formats/ffmpeg/include/mm_file_format_ffmpeg_mem.h index 2cf62e2..48a56be 100755 --- a/formats/ffmpeg/include/mm_file_format_ffmpeg_mem.h +++ b/formats/ffmpeg/include/mm_file_format_ffmpeg_mem.h @@ -27,6 +27,7 @@ extern "C" { #endif #include <libavformat/avformat.h> +#include <libavformat/url.h> extern URLProtocol MMFileMEMProtocol; diff --git a/formats/ffmpeg/include/mm_file_format_id3tag.h b/formats/ffmpeg/include/mm_file_format_id3tag.h index f1fe3c7..0bcae37 100755 --- a/formats/ffmpeg/include/mm_file_format_id3tag.h +++ b/formats/ffmpeg/include/mm_file_format_id3tag.h @@ -76,7 +76,7 @@ typedef enum { } AvID3v2PictureType; -#define MP3TAGINFO_SIZE 128 // file end 128 byte +#define MP3TAGINFO_SIZE 128 /* file end 128 byte */ #define MP3_ID3_TITLE_LENGTH 30 #define MP3_ID3_ARTIST_LENGTH 30 #define MP3_ID3_ALBUM_LENGTH 30 @@ -103,7 +103,6 @@ typedef enum { AV_ID3V2_UTF16_BE, AV_ID3V2_UTF8, AV_ID3V2_MAX - } AvID3v2EncodingType; @@ -117,7 +116,6 @@ typedef struct{ int imgDesLen; int imgMimetypeLen; bool bURLInfo; - } AvTagVer2ImageInfo; typedef struct{ @@ -148,14 +146,13 @@ typedef struct{ } AvTagVer2AdditionalData; - -typedef struct -{ + +typedef struct { int titleLen; int artistLen; int authorLen; int copyrightLen; - //int descriptionLen; /*ID3tag official tag name is "COMM" and meaning "Comment"*/ + /*int descriptionLen;*/ /*ID3tag official tag name is "COMM" and meaning "Comment"*/ int commentLen; int ratingLen; int albumLen; @@ -163,72 +160,69 @@ typedef struct int genreLen; int tracknumLen; int recdateLen; - -// for PC Studio Podcast + +/* for PC Studio Podcast */ int contentGroupLen; - -// for ID3V2 Tag + +/* for ID3V2 Tag */ int encbyLen; int urlLen; int originartistLen; int composerLen; -// To send resolution info to appl from OEM - int width; +/* To send resolution info to appl from OEM */ + int width; int height; - + unsigned int bitRate; unsigned int sampleRate; unsigned int channels; -// unsigned long creationTime; +/* unsigned long creationTime; */ unsigned long duration; -// for mp3 Info - char *pToc; // VBR�϶� SeekPosition�� ���ϱ� ���� TOC ���̺��� ������ ��� �ִ� char ï¿½è¿ , 100 ����Ʈ ���� - unsigned int mpegVersion; // 1 : mpeg 1, 2 : mpeg 2, 3 : mpeg2.5 - unsigned int layer; // 1 : layer1, 2 : layer2, 3 : layer3 - unsigned int channelIndex; // 0 : stereo, 1 : joint_stereo, 2 : dual_channel, 3 : mono +/* for mp3 Info */ + char *pToc; /* VBR�϶� SeekPosition�� ���ϱ� ���� TOC ���̺��� ������ ��� �ִ� char �è¿, 100 ����Ʈ ���� */ + unsigned int mpegVersion; /* 1 : mpeg 1, 2 : mpeg 2, 3 : mpeg2.5 */ + unsigned int layer; /* 1 : layer1, 2 : layer2, 3 : layer3 */ + unsigned int channelIndex; /* 0 : stereo, 1 : joint_stereo, 2 : dual_channel, 3 : mono */ unsigned int objectType; unsigned int headerType; - long fileLen; // mp3 ������ ��ü ���� - long headerPos; // mp3 ����� ���� ��Ÿ���� ��ġ - long datafileLen; // ID3Tag���� �����ϰ� ���� mp3 frame���� ���� , VBR�϶� XHEADDATA �� bytes �� �ش��Ѵ� - int frameSize; // mp3 frame �� ���� ũ�� - int frameNum; // mp3 ���Ͽ� �������� � ����ִ°�? - bool bVbr; // VBR mp3? - bool bPadding; // Padding? + long fileLen; /* mp3 ������ ��ü ���� */ + long headerPos; /* mp3 ����� ���� ��Ÿ���� ��ġ */ + long datafileLen; /* ID3Tag���� �����ϰ� ���� mp3 frame���� ����, VBR�϶� XHEADDATA �� bytes �� �ش��Ѵ� */ + int frameSize; /* mp3 frame �� ���� ũ�� */ + int frameNum; /* mp3 ���Ͽ� �������� � ����ִ°�? */ + bool bVbr; /* VBR mp3? */ + bool bPadding; /* Padding? */ bool bV1tagFound; - char *pTitle; //Title/songname/ - char *pArtist; //Lead performer(s)/Soloist(s), - char *pAuthor; //Author + char *pTitle; /*Title/songname/ */ + char *pArtist; /*Lead performer(s)/Soloist(s), */ + char *pAuthor; /*Author */ char *pCopyright; - //char *pDescription; /*ID3tag official tag name is "COMM" and meaning "Comment"*/ + /*char *pDescription;*/ /*ID3tag official tag name is "COMM" and meaning "Comment"*/ char *pComment; char *pRating; - char *pAlbum; //Album/Movie/ + char *pAlbum; /*Album/Movie/ */ char *pAlbum_Artist; char *pYear; - char *pGenre; - char *pTrackNum; //Track number/Position in set - char *pRecDate; //Recording dates - -// for PC Studio Podcast - char *pContentGroup; + char *pGenre; + char *pTrackNum; /*Track number/Position in set */ + char *pRecDate; /*Recording dates */ -// for ID3V2 Tag - char *pEncBy; //Encoded by - char *pURL; //User defined URL link frame for ID3V2 Tag - char *pOriginArtist; //Original artist(s)/performer(s) - char *pComposer; //Composer - AvTagVer2ImageInfo imageInfo; //Album art attached feature - AvTagVer2AdditionalData tagV2Info; //Needed data for ID3 tag parsing +/* for PC Studio Podcast */ + char *pContentGroup; -// for DRM 2.0 - char *pTransactionID; +/* for ID3V2 Tag */ + char *pEncBy; /*Encoded by */ + char *pURL; /*User defined URL link frame for ID3V2 Tag */ + char *pOriginArtist; /*Original artist(s)/performer(s) */ + char *pComposer; /*Composer */ + AvTagVer2ImageInfo imageInfo; /*Album art attached feature */ + AvTagVer2AdditionalData tagV2Info; /*Needed data for ID3 tag parsing */ -//for ID3V1 Tag - unsigned char genre; +/*for ID3V1 Tag */ + unsigned char genre; } AvFileContentInfo; @@ -239,43 +233,38 @@ typedef struct { int height; } AvExtraInfo; -inline static void mm_file_free_AvFileContentInfo (AvFileContentInfo *pInfo) +inline static void mm_file_free_AvFileContentInfo(AvFileContentInfo *pInfo) { if (pInfo) { - if (pInfo->pToc) mmfile_free (pInfo->pToc); - if (pInfo->pTitle) mmfile_free (pInfo->pTitle); - if (pInfo->pArtist) mmfile_free (pInfo->pArtist); - if (pInfo->pAuthor) mmfile_free (pInfo->pAuthor); - if (pInfo->pCopyright) mmfile_free (pInfo->pCopyright); - //if (pInfo->pDescription) mmfile_free (pInfo->pDescription); - if (pInfo->pComment) mmfile_free (pInfo->pComment); - if (pInfo->pRating) mmfile_free (pInfo->pRating); - if (pInfo->pAlbum) mmfile_free (pInfo->pAlbum); - if (pInfo->pAlbum_Artist) mmfile_free (pInfo->pAlbum_Artist); - if (pInfo->pYear) mmfile_free (pInfo->pYear); - if (pInfo->pGenre) mmfile_free (pInfo->pGenre); - if (pInfo->pTrackNum) mmfile_free (pInfo->pTrackNum); - if (pInfo->pRecDate) mmfile_free (pInfo->pRecDate); - - if (pInfo->pContentGroup) mmfile_free (pInfo->pContentGroup); - - if (pInfo->pEncBy) mmfile_free (pInfo->pEncBy); - if (pInfo->pURL) mmfile_free (pInfo->pURL); - if (pInfo->pOriginArtist) mmfile_free (pInfo->pOriginArtist); - if (pInfo->pComposer) mmfile_free (pInfo->pComposer); - - if (pInfo->imageInfo.pImageBuf) mmfile_free (pInfo->imageInfo.pImageBuf); - - if (pInfo->pTransactionID) mmfile_free (pInfo->pTransactionID); + if (pInfo->pToc) mmfile_free(pInfo->pToc); + if (pInfo->pTitle) mmfile_free(pInfo->pTitle); + if (pInfo->pArtist) mmfile_free(pInfo->pArtist); + if (pInfo->pAuthor) mmfile_free(pInfo->pAuthor); + if (pInfo->pCopyright) mmfile_free(pInfo->pCopyright); + /*if (pInfo->pDescription) mmfile_free(pInfo->pDescription); */ + if (pInfo->pComment) mmfile_free(pInfo->pComment); + if (pInfo->pRating) mmfile_free(pInfo->pRating); + if (pInfo->pAlbum) mmfile_free(pInfo->pAlbum); + if (pInfo->pAlbum_Artist) mmfile_free(pInfo->pAlbum_Artist); + if (pInfo->pYear) mmfile_free(pInfo->pYear); + if (pInfo->pGenre) mmfile_free(pInfo->pGenre); + if (pInfo->pTrackNum) mmfile_free(pInfo->pTrackNum); + if (pInfo->pRecDate) mmfile_free(pInfo->pRecDate); + if (pInfo->pContentGroup) mmfile_free(pInfo->pContentGroup); + if (pInfo->pEncBy) mmfile_free(pInfo->pEncBy); + if (pInfo->pURL) mmfile_free(pInfo->pURL); + if (pInfo->pOriginArtist) mmfile_free(pInfo->pOriginArtist); + if (pInfo->pComposer) mmfile_free(pInfo->pComposer); + if (pInfo->imageInfo.pImageBuf) mmfile_free(pInfo->imageInfo.pImageBuf); } } -bool mm_file_id3tag_parse_v110 (AvFileContentInfo* pInfo, unsigned char *buffer); //20050401 Condol : for MP3 content Info. -bool mm_file_id3tag_parse_v222 (AvFileContentInfo* pInfo, unsigned char *buffer); -bool mm_file_id3tag_parse_v223 (AvFileContentInfo* pInfo, unsigned char *buffer); -bool mm_file_id3tag_parse_v224 (AvFileContentInfo* pInfo, unsigned char *buffer); -void mm_file_id3tag_restore_content_info (AvFileContentInfo* pInfo); +bool mm_file_id3tag_parse_v110(AvFileContentInfo* pInfo, unsigned char *buffer); //20050401 Condol : for MP3 content Info. +bool mm_file_id3tag_parse_v222(AvFileContentInfo* pInfo, unsigned char *buffer); +bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer); +bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer); +void mm_file_id3tag_restore_content_info(AvFileContentInfo* pInfo); #ifdef __cplusplus } diff --git a/formats/ffmpeg/include/mm_file_format_imelody.h b/formats/ffmpeg/include/mm_file_format_imelody.h index 41cee55..698a54f 100755 --- a/formats/ffmpeg/include/mm_file_format_imelody.h +++ b/formats/ffmpeg/include/mm_file_format_imelody.h @@ -26,13 +26,12 @@ extern "C" { #endif -typedef struct mmfileimelodytags -{ - char *title; - char *composer; - int beat; - char *copyright; - char *comment; +typedef struct mmfileimelodytags { + char *title; + char *composer; + int beat; + char *copyright; + char *comment; } tMMFileImelodyTagInfo; diff --git a/formats/ffmpeg/include/mm_file_format_midi.h b/formats/ffmpeg/include/mm_file_format_midi.h index 87a3b99..2e582ab 100755 --- a/formats/ffmpeg/include/mm_file_format_midi.h +++ b/formats/ffmpeg/include/mm_file_format_midi.h @@ -38,8 +38,8 @@ typedef struct { char *comment; } MIDI_INFO_SIMPLE; -MIDI_INFO_SIMPLE* mmfile_format_get_midi_infomation (char* uri); -void mmfile_format_free_midi_infomation (MIDI_INFO_SIMPLE *info); +MIDI_INFO_SIMPLE *mmfile_format_get_midi_infomation(char *uri); +void mmfile_format_free_midi_infomation(MIDI_INFO_SIMPLE *info); #ifdef __cplusplus } diff --git a/formats/ffmpeg/include/mm_file_format_private.h b/formats/ffmpeg/include/mm_file_format_private.h index 366d5db..2959dc0 100755 --- a/formats/ffmpeg/include/mm_file_format_private.h +++ b/formats/ffmpeg/include/mm_file_format_private.h @@ -30,18 +30,18 @@ extern "C" { #include "mm_file_formats.h" /* open functions list: the order of list depends on mm-types.h */ -int mmfile_format_open_dummy (MMFileFormatContext *fileContext); -int mmfile_format_open_ffmpg (MMFileFormatContext *fileContext); -int mmfile_format_open_mp3 (MMFileFormatContext *fileContext); -//int mmfile_format_open_3gp (MMFileFormatContext *fileContext); -//int mmfile_format_open_avi (MMFileFormatContext *fileContext); -//int mmfile_format_open_asf (MMFileFormatContext *fileContext); -int mmfile_format_open_mmf (MMFileFormatContext *fileContext); -int mmfile_format_open_amr (MMFileFormatContext *fileContext); -int mmfile_format_open_aac (MMFileFormatContext *fileContext); -int mmfile_format_open_wav (MMFileFormatContext *fileContext); -int mmfile_format_open_mid (MMFileFormatContext *fileContext); -int mmfile_format_open_imy (MMFileFormatContext *fileContext); +int mmfile_format_open_dummy(MMFileFormatContext *fileContext); +int mmfile_format_open_ffmpg(MMFileFormatContext *fileContext); +int mmfile_format_open_mp3(MMFileFormatContext *fileContext); +/*int mmfile_format_open_3gp(MMFileFormatContext *fileContext); */ +/*int mmfile_format_open_avi(MMFileFormatContext *fileContext); */ +/*int mmfile_format_open_asf(MMFileFormatContext *fileContext); */ +int mmfile_format_open_mmf(MMFileFormatContext *fileContext); +int mmfile_format_open_amr(MMFileFormatContext *fileContext); +int mmfile_format_open_aac(MMFileFormatContext *fileContext); +int mmfile_format_open_wav(MMFileFormatContext *fileContext); +int mmfile_format_open_mid(MMFileFormatContext *fileContext); +int mmfile_format_open_imy(MMFileFormatContext *fileContext); #ifdef __cplusplus diff --git a/formats/ffmpeg/include/mm_file_format_tag_id3.h b/formats/ffmpeg/include/mm_file_format_tag_id3.h index e3b4d81..90ba1e9 100755 --- a/formats/ffmpeg/include/mm_file_format_tag_id3.h +++ b/formats/ffmpeg/include/mm_file_format_tag_id3.h @@ -32,21 +32,20 @@ extern "C" { #define MMFILE_ID3TAG_FAIL 0 #define MMFILE_ID3TAG_SUCCESS 1 -typedef void* MMFileID3TagHandle; - -typedef enum mmfileId3TagInfoVersion -{ - MMFILE_ID3TAG_V1_0 = 0, - MMFILE_ID3TAG_V1_1, - MMFILE_ID3TAG_V2_0, - MMFILE_ID3TAG_V2_2, - MMFILE_ID3TAG_V2_3, - MMFILE_ID3TAG_V2_4, - MMFILE_ID3TAG_VMAX, +typedef void *MMFileID3TagHandle; + +typedef enum mmfileId3TagInfoVersion { + MMFILE_ID3TAG_V1_0 = 0, + MMFILE_ID3TAG_V1_1, + MMFILE_ID3TAG_V2_0, + MMFILE_ID3TAG_V2_2, + MMFILE_ID3TAG_V2_3, + MMFILE_ID3TAG_V2_4, + MMFILE_ID3TAG_VMAX, } eMMFileID3TagVersion; -int MMFileID3V1TagFind (MMFileIOHandle *fp, unsigned char bAppended, unsigned int startOffset, unsigned int endOffset, tMMFileTags *out); -int MMFileID3V2TagFind (MMFileIOHandle *fp, unsigned char bAppended, unsigned int startOffset, unsigned int endOffset, tMMFileTags *out); +int MMFileID3V1TagFind(MMFileIOHandle *fp, unsigned char bAppended, unsigned int startOffset, unsigned int endOffset, tMMFileTags *out); +int MMFileID3V2TagFind(MMFileIOHandle *fp, unsigned char bAppended, unsigned int startOffset, unsigned int endOffset, tMMFileTags *out); #ifdef __cplusplus } diff --git a/formats/ffmpeg/include/mm_file_format_tags.h b/formats/ffmpeg/include/mm_file_format_tags.h index eb5100d..c8f84f2 100755 --- a/formats/ffmpeg/include/mm_file_format_tags.h +++ b/formats/ffmpeg/include/mm_file_format_tags.h @@ -26,35 +26,33 @@ extern "C" { #endif -typedef void* MMFileTagsHandle; +typedef void *MMFileTagsHandle; #define MMFILE_TAGS_SUCCESS 1 #define MMFILE_TAGS_FAIL 0 -typedef enum mmfiletagstype -{ - MMFILE_TAG_ID3V1 = 0, - MMFILE_TAG_ID3V2, - MMFILE_TAG_MUSICAL_MATCH, - MMFILE_TAG_LYRICS3, - MMFILE_TAG_APE, - MMFILE_TAG_MAX, +typedef enum mmfiletagstype { + MMFILE_TAG_ID3V1 = 0, + MMFILE_TAG_ID3V2, + MMFILE_TAG_MUSICAL_MATCH, + MMFILE_TAG_LYRICS3, + MMFILE_TAG_APE, + MMFILE_TAG_MAX, } eMMFileTagsType; -typedef struct mmfileTags -{ - eMMFileTagsType typeOfTag; - unsigned char bAppendedTag; - unsigned int version; - unsigned int startOffset; - unsigned int tagSize; - unsigned int endOffset; +typedef struct mmfileTags { + eMMFileTagsType typeOfTag; + unsigned char bAppendedTag; + unsigned int version; + unsigned int startOffset; + unsigned int tagSize; + unsigned int endOffset; } tMMFileTags; -int MMFileOpenTags (MMFileTagsHandle *tagsHandle, const char *uriName); -int MMFileGetFirstTag (MMFileTagsHandle tagsHandle, tMMFileTags *out); -int MMFileGetNextTag (MMFileTagsHandle tagsHandle, tMMFileTags *out); -int MMFileTagsClose (MMFileTagsHandle tagsHandle); +int MMFileOpenTags(MMFileTagsHandle *tagsHandle, const char *uriName); +int MMFileGetFirstTag(MMFileTagsHandle tagsHandle, tMMFileTags *out); +int MMFileGetNextTag(MMFileTagsHandle tagsHandle, tMMFileTags *out); +int MMFileTagsClose(MMFileTagsHandle tagsHandle); #ifdef __cplusplus } diff --git a/formats/ffmpeg/mm_file_format_aac.c b/formats/ffmpeg/mm_file_format_aac.c index 0b0d16a..725ba43 100755 --- a/formats/ffmpeg/mm_file_format_aac.c +++ b/formats/ffmpeg/mm_file_format_aac.c @@ -19,22 +19,22 @@ * */ -#include <stdio.h> +#include <stdio.h> #include <string.h> /*memcmp*/ #include <stdlib.h> /*malloc*/ #include <mm_error.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" #include "mm_file_format_private.h" #include "mm_file_format_aac.h" -// Internal Error Type +/* Internal Error Type */ #define MMFILE_AAC_PARSER_FILE_END 2 - -// Media specific definations + +/* Media specific definations */ #define MMFILE_AAC_ADIF_HEADER_MAX_SIZE 30 #define MMFILE_AAC_ADTS_HEADER_MAX_SIZE 7 #define AAC_ADTS_FRAME_LEN_OFFSET 30 @@ -44,732 +44,722 @@ #define IS_AAC_ADTS_HEADER(buff) (((buff)[0] == 0xff) && (((buff)[1] & 0xf0) == 0xf0)) -// Array to Number conversions -#define GET_INT_NUMBER(buff) (int)( (((int)(buff)[0]) << 24) | \ +/* Array to Number conversions */ +#define GET_INT_NUMBER(buff) (int)((((int)(buff)[0]) << 24) | \ (((int)(buff)[1]) << 16) | \ (((int)(buff)[2]) << 8) | \ (((int)(buff)[3]))) -#define GET_SHORT_NUMBER(buff) (short)( ((short)(buff)[0] << 8) | \ - ((short)(buff)[1]) ) - - - -typedef enum _mmfile_aac_format_type { - AAC_FORMAT_ADIF, - AAC_FORMAT_ADTS, - AAC_FORMAT_UNKNOWN -}TAacFormatType; +#define GET_SHORT_NUMBER(buff) (short)(((short)(buff)[0] << 8) | \ + ((short)(buff)[1])) + + + +typedef enum _mmfile_aac_format_type { + AAC_FORMAT_ADIF, + AAC_FORMAT_ADTS, + AAC_FORMAT_UNKNOWN +} TAacFormatType; typedef enum _mmfile_aac_bitstream_type { - AAC_STREAM_CONSTANT, - AAC_STREAM_VARIABLE -}TAacStreamType; + AAC_STREAM_CONSTANT, + AAC_STREAM_VARIABLE +} TAacStreamType; typedef enum _mmfile_aac_mpeg_type { - AAC_MPEG_4, - AAC_MPEG_2 -}TAacMpegType; + AAC_MPEG_4, + AAC_MPEG_2 +} TAacMpegType; typedef struct _mmfile_aac_handle { - MMFileIOHandle* hFile; - AvFileContentInfo id3Handle; - unsigned int streamOffset; - unsigned int tagOffset; - char isTagPresent; - unsigned int tagInfoSize; - unsigned char tagVersion; - TAacFormatType formatType; - TAacStreamType streamType; - TAacMpegType mpegType; - tMMFILE_AAC_STREAM_INFO streamInfo; - tMMFILE_AAC_TAG_INFO tagInfo; -}tMMFILE_AAC_HANDLE; + MMFileIOHandle *hFile; + AvFileContentInfo id3Handle; + unsigned int streamOffset; + unsigned int tagOffset; + char isTagPresent; + unsigned int tagInfoSize; + unsigned char tagVersion; + TAacFormatType formatType; + TAacStreamType streamType; + TAacMpegType mpegType; + tMMFILE_AAC_STREAM_INFO streamInfo; + tMMFILE_AAC_TAG_INFO tagInfo; +} tMMFILE_AAC_HANDLE; /*Index table for Sampling frequency */ -const int Sampling_freq_table[16] = { 96000, 88200, 64000, 48000, +const int Sampling_freq_table[16] = { 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, - 0, 0, 0, 0 }; - -/* internal APIs */ -void _aac_init_handle(tMMFILE_AAC_HANDLE* privateData); -int _search_id3tag(tMMFILE_AAC_HANDLE* pData); -int _parse_id3_tag(tMMFILE_AAC_HANDLE* pData); -int _get_range_bits_value (unsigned char* buff, int fieldOffset, int fieldSize); -int _parse_aac_adif_header (tMMFILE_AAC_HANDLE* pData); -int _get_next_adts_frame_length(tMMFILE_AAC_HANDLE* pData, int* frameLen); -int _parse_aac_adts_header(tMMFILE_AAC_HANDLE* pData); - - -void _aac_init_handle(tMMFILE_AAC_HANDLE* privateData) + 0, 0, 0, 0 + }; + +/* internal APIs */ +void _aac_init_handle(tMMFILE_AAC_HANDLE *privateData); +int _search_id3tag(tMMFILE_AAC_HANDLE *pData); +int _parse_id3_tag(tMMFILE_AAC_HANDLE *pData); +int _get_range_bits_value(unsigned char *buff, int fieldOffset, int fieldSize); +int _parse_aac_adif_header(tMMFILE_AAC_HANDLE *pData); +int _get_next_adts_frame_length(tMMFILE_AAC_HANDLE *pData, int *frameLen); +int _parse_aac_adts_header(tMMFILE_AAC_HANDLE *pData); + + +void _aac_init_handle(tMMFILE_AAC_HANDLE *privateData) { - /* Default Initializations */ - privateData->streamOffset = 0; - privateData->isTagPresent = FALSE; - privateData->streamOffset = 0; - privateData->tagOffset = 0; - - privateData->streamInfo.fileSize = 0; - privateData->streamInfo.duration = 0; - privateData->streamInfo.bitRate = 0; - privateData->streamInfo.samplingRate = 0; - privateData->streamInfo.frameRate = 0; - privateData->streamInfo.numAudioChannels = 0; - privateData->streamInfo.numTracks = 1; - privateData->streamInfo.profileType = 0; - - privateData->tagInfo.title = NULL; - privateData->tagInfo.author = NULL; - privateData->tagInfo.artist = NULL; - privateData->tagInfo.album = NULL; - privateData->tagInfo.album_artist = NULL; - privateData->tagInfo.year = NULL; - privateData->tagInfo.copyright = NULL; - privateData->tagInfo.comment = NULL; - privateData->tagInfo.genre = NULL; - privateData->tagInfo.composer = NULL; - privateData->tagInfo.classification = NULL; - privateData->tagInfo.rating = NULL; - privateData->tagInfo.recordDate = NULL; - privateData->tagInfo.conductor = NULL; - privateData->tagInfo.artwork = NULL; - privateData->tagInfo.artworkSize = 0; - privateData->tagInfo.artworkMime = NULL; + /* Default Initializations */ + privateData->streamOffset = 0; + privateData->isTagPresent = FALSE; + privateData->streamOffset = 0; + privateData->tagOffset = 0; + + privateData->streamInfo.fileSize = 0; + privateData->streamInfo.duration = 0; + privateData->streamInfo.bitRate = 0; + privateData->streamInfo.samplingRate = 0; + privateData->streamInfo.frameRate = 0; + privateData->streamInfo.numAudioChannels = 0; + privateData->streamInfo.numTracks = 1; + privateData->streamInfo.profileType = 0; + + privateData->tagInfo.title = NULL; + privateData->tagInfo.author = NULL; + privateData->tagInfo.artist = NULL; + privateData->tagInfo.album = NULL; + privateData->tagInfo.album_artist = NULL; + privateData->tagInfo.year = NULL; + privateData->tagInfo.copyright = NULL; + privateData->tagInfo.comment = NULL; + privateData->tagInfo.genre = NULL; + privateData->tagInfo.composer = NULL; + privateData->tagInfo.classification = NULL; + privateData->tagInfo.rating = NULL; + privateData->tagInfo.recordDate = NULL; + privateData->tagInfo.conductor = NULL; + privateData->tagInfo.artwork = NULL; + privateData->tagInfo.artworkSize = 0; + privateData->tagInfo.artworkMime = NULL; } -int _search_id3tag(tMMFILE_AAC_HANDLE* pData) +int _search_id3tag(tMMFILE_AAC_HANDLE *pData) { - unsigned char tagHeader[MP3_TAGv2_HEADER_LEN] = {0,}; - int encSize = 0; - int readed = 0; - - mmfile_seek(pData->hFile, 0, MMFILE_SEEK_SET); - readed = mmfile_read (pData->hFile, tagHeader, MP3_TAGv2_HEADER_LEN); - if (MP3_TAGv2_HEADER_LEN != readed) { + unsigned char tagHeader[MP3_TAGv2_HEADER_LEN] = {0, }; + int encSize = 0; + int readed = 0; + + mmfile_seek(pData->hFile, 0, MMFILE_SEEK_SET); + readed = mmfile_read(pData->hFile, tagHeader, MP3_TAGv2_HEADER_LEN); + if (MP3_TAGv2_HEADER_LEN != readed) { #ifdef __MMFILE_TEST_MODE__ - debug_msg("Read Fail"); + debug_msg("Read Fail"); #endif - return MMFILE_AAC_PARSER_FAIL; - } - - if (!IS_ID3V2_TAG(tagHeader)) { + return MMFILE_AAC_PARSER_FAIL; + } + + if (!IS_ID3V2_TAG(tagHeader)) { #ifdef __MMFILE_TEST_MODE__ - debug_msg("No ID3 Tag"); + debug_msg("No ID3 Tag"); #endif - goto search_end; - } + goto search_end; + } - if (tagHeader[3] == 0xFF || tagHeader[4] == 0xFF || - tagHeader[6] >= 0x80 || tagHeader[7] >= 0x80 || + if (tagHeader[3] == 0xFF || tagHeader[4] == 0xFF || + tagHeader[6] >= 0x80 || tagHeader[7] >= 0x80 || tagHeader[8] >= 0x80 || tagHeader[9] >= 0x80) { #ifdef __MMFILE_TEST_MODE__ - debug_msg("Read Fail"); + debug_msg("Read Fail"); #endif - return MMFILE_AAC_PARSER_FAIL; - } - - pData->tagVersion = tagHeader[3]; + return MMFILE_AAC_PARSER_FAIL; + } + + pData->tagVersion = tagHeader[3]; - if(pData->tagVersion > 4) { + if (pData->tagVersion > 4) { #ifdef __MMFILE_TEST_MODE__ - debug_msg("\nTag version not supported"); + debug_msg("\nTag version not supported"); #endif - return MMFILE_AAC_PARSER_FAIL; - } + return MMFILE_AAC_PARSER_FAIL; + } - encSize = GET_INT_NUMBER(&tagHeader[6]); - pData->tagInfoSize = MP3_TAGv2_HEADER_LEN; + encSize = GET_INT_NUMBER(&tagHeader[6]); + pData->tagInfoSize = MP3_TAGv2_HEADER_LEN; - pData->tagInfoSize += (((encSize & 0x0000007F) >> 0) | ((encSize & 0x00007F00) >> 1) | \ - ((encSize & 0x007F0000) >> 2) | ((encSize & 0x7F000000) >> 3)); + pData->tagInfoSize += (((encSize & 0x0000007F) >> 0) | ((encSize & 0x00007F00) >> 1) | \ + ((encSize & 0x007F0000) >> 2) | ((encSize & 0x7F000000) >> 3)); - if(pData->tagInfoSize > pData->streamInfo.fileSize) { + if (pData->tagInfoSize > pData->streamInfo.fileSize) { #ifdef __MMFILE_TEST_MODE__ - debug_msg("Invalid size"); + debug_msg("Invalid size"); #endif - return MMFILE_AAC_PARSER_FAIL; - } - - pData->isTagPresent = TRUE; - pData->tagOffset = 0; - pData->streamOffset = pData->tagInfoSize; - - /* Filling the information in id3Handle for tag parsing */ - pData->id3Handle.fileLen = pData->streamInfo.fileSize; - pData->id3Handle.tagV2Info.tagLen = pData->tagInfoSize; - pData->id3Handle.tagV2Info.tagVersion = pData->tagVersion; - pData->id3Handle.tagV2Info.tagLen = pData->tagInfoSize; + return MMFILE_AAC_PARSER_FAIL; + } + + pData->isTagPresent = TRUE; + pData->tagOffset = 0; + pData->streamOffset = pData->tagInfoSize; + + /* Filling the information in id3Handle for tag parsing */ + pData->id3Handle.fileLen = pData->streamInfo.fileSize; + pData->id3Handle.tagV2Info.tagLen = pData->tagInfoSize; + pData->id3Handle.tagV2Info.tagVersion = pData->tagVersion; + pData->id3Handle.tagV2Info.tagLen = pData->tagInfoSize; search_end: - return MMFILE_AAC_PARSER_SUCCESS; + return MMFILE_AAC_PARSER_SUCCESS; } -int _parse_id3_tag(tMMFILE_AAC_HANDLE* pData) +int _parse_id3_tag(tMMFILE_AAC_HANDLE *pData) { - unsigned char* tagBuff = NULL; - AvFileContentInfo* hTag = &pData->id3Handle; - int ret = FALSE; - int readed = 0; - - mmfile_seek(pData->hFile, pData->tagOffset, MMFILE_SEEK_SET); - tagBuff = (unsigned char*) mmfile_malloc(hTag->fileLen); - if(tagBuff == NULL) { - ret = MMFILE_AAC_PARSER_FAIL; - debug_error ("failed to memory allocation. %d\n", hTag->fileLen); - goto failure; - } - - readed = mmfile_read(pData->hFile, tagBuff, hTag->fileLen); - if (readed != hTag->fileLen) { - debug_error ("failed to read. %d, %lld\n", readed, hTag->fileLen); - goto failure; - } - - switch(hTag->tagV2Info.tagVersion) { - case 1: - ret = mm_file_id3tag_parse_v110(hTag, tagBuff); - break; - case 2: - ret = mm_file_id3tag_parse_v222(hTag, tagBuff); - break; - case 3: - ret = mm_file_id3tag_parse_v223(hTag, tagBuff); - break; - case 4: - ret = mm_file_id3tag_parse_v224(hTag, tagBuff); - break; - default: - debug_error ("Invalid Tag version [%d]\n", hTag->tagV2Info.tagVersion); - break; - } - - if(ret == FALSE) { - ret = MMFILE_AAC_PARSER_FAIL; - debug_warning ("failed to parse\n"); - 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.album_artist = hTag->pAlbum_Artist; - pData->tagInfo.year = hTag->pYear; - pData->tagInfo.copyright = hTag->pCopyright; - pData->tagInfo.comment = hTag->pComment; - 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; - pData->tagInfo.recordDate = hTag->pRecDate; - pData->tagInfo.conductor = hTag->pConductor; - pData->tagInfo.artworkMime = hTag->imageInfo.imageMIMEType; - pData->tagInfo.artworkSize = hTag->imageInfo.imageLen; - pData->tagInfo.artwork = hTag->imageInfo.pImageBuf; - - ret = MMFILE_AAC_PARSER_SUCCESS; - - + unsigned char *tagBuff = NULL; + AvFileContentInfo *hTag = &pData->id3Handle; + int ret = FALSE; + int readed = 0; + + mmfile_seek(pData->hFile, pData->tagOffset, MMFILE_SEEK_SET); + tagBuff = (unsigned char *) mmfile_malloc(hTag->fileLen); + if (tagBuff == NULL) { + ret = MMFILE_AAC_PARSER_FAIL; + debug_error("failed to memory allocation. %d\n", hTag->fileLen); + goto failure; + } + + readed = mmfile_read(pData->hFile, tagBuff, hTag->fileLen); + if (readed != hTag->fileLen) { + debug_error("failed to read. %d, %lld\n", readed, hTag->fileLen); + goto failure; + } + + switch (hTag->tagV2Info.tagVersion) { + case 1: + ret = mm_file_id3tag_parse_v110(hTag, tagBuff); + break; + case 2: + ret = mm_file_id3tag_parse_v222(hTag, tagBuff); + break; + case 3: + ret = mm_file_id3tag_parse_v223(hTag, tagBuff); + break; + case 4: + ret = mm_file_id3tag_parse_v224(hTag, tagBuff); + break; + default: + debug_error("Invalid Tag version [%d]\n", hTag->tagV2Info.tagVersion); + break; + } + + if (ret == FALSE) { + ret = MMFILE_AAC_PARSER_FAIL; + debug_warning("failed to parse\n"); + 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.album_artist = hTag->pAlbum_Artist; + pData->tagInfo.year = hTag->pYear; + pData->tagInfo.copyright = hTag->pCopyright; + pData->tagInfo.comment = hTag->pComment; + 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; + pData->tagInfo.recordDate = hTag->pRecDate; + pData->tagInfo.conductor = hTag->pConductor; + pData->tagInfo.artworkMime = hTag->imageInfo.imageMIMEType; + pData->tagInfo.artworkSize = hTag->imageInfo.imageLen; + pData->tagInfo.artwork = hTag->imageInfo.pImageBuf; + + ret = MMFILE_AAC_PARSER_SUCCESS; + + failure: - if(tagBuff) { - mmfile_free(tagBuff); - tagBuff = NULL; - } - - return ret; - + if (tagBuff) { + mmfile_free(tagBuff); + tagBuff = NULL; + } + + return ret; + } -int _get_range_bits_value (unsigned char* buff, int fieldOffset, int fieldSize) +int _get_range_bits_value(unsigned char *buff, int fieldOffset, int fieldSize) { - int pos = 0; - unsigned int srcByteStartOff = 0; - unsigned int srcByteEndOff = 0; - unsigned int srcBitStartOff = 0; - unsigned int srcBitEndOff = 0; - unsigned char dest[4] = {0,}; - unsigned int res = 0; - unsigned int i,j, temp; - unsigned char extraByteFlag = 0; - unsigned int occupiedBytes = 0; - unsigned char mask = 0, maskBit = 0x01; - - - srcByteStartOff = (fieldOffset / 8); - srcBitStartOff = (fieldOffset % 8); - - srcByteEndOff = ((fieldOffset + fieldSize - 1) / 8); - srcBitEndOff = ((fieldOffset + fieldSize - 1) % 8); - - occupiedBytes = srcByteEndOff - srcByteStartOff + 1; - - for(i = srcByteStartOff, j = 0; i <= srcByteEndOff && j <= 3; i++,j++) { - dest[j] = buff[i]; - } - - for(pos = 7; pos>= (char)srcBitStartOff; pos--) { - mask = mask | maskBit; - maskBit <<= 1; - } - - dest[0] = dest[0] & mask; - - if(i <= srcByteEndOff) { - extraByteFlag = 1; - } - - res = GET_INT_NUMBER(dest); - - if(!extraByteFlag) { - temp = (4 - occupiedBytes) * 8 + (7 - srcBitEndOff); - res >>= temp; - } - - if(extraByteFlag) { - res <<= srcBitStartOff; - temp = buff[srcByteEndOff] >> (7 - srcBitEndOff); - res = res | (unsigned int)temp; - } - - return res; + int pos = 0; + unsigned int srcByteStartOff = 0; + unsigned int srcByteEndOff = 0; + unsigned int srcBitStartOff = 0; + unsigned int srcBitEndOff = 0; + unsigned char dest[4] = {0, }; + unsigned int res = 0; + unsigned int i, j, temp; + unsigned char extraByteFlag = 0; + unsigned int occupiedBytes = 0; + unsigned char mask = 0, maskBit = 0x01; + + + srcByteStartOff = (fieldOffset / 8); + srcBitStartOff = (fieldOffset % 8); + + srcByteEndOff = ((fieldOffset + fieldSize - 1) / 8); + srcBitEndOff = ((fieldOffset + fieldSize - 1) % 8); + + occupiedBytes = srcByteEndOff - srcByteStartOff + 1; + + for (i = srcByteStartOff, j = 0; i <= srcByteEndOff && j <= 3; i++, j++) { + dest[j] = buff[i]; + } + + for (pos = 7; pos >= (char)srcBitStartOff; pos--) { + mask = mask | maskBit; + maskBit <<= 1; + } + + dest[0] = dest[0] & mask; + + if (i <= srcByteEndOff) { + extraByteFlag = 1; + } + + res = GET_INT_NUMBER(dest); + + if (!extraByteFlag) { + temp = (4 - occupiedBytes) * 8 + (7 - srcBitEndOff); + res >>= temp; + } + + if (extraByteFlag) { + res <<= srcBitStartOff; + temp = buff[srcByteEndOff] >> (7 - srcBitEndOff); + res = res | (unsigned int)temp; + } + + return res; } -int _parse_aac_adif_header (tMMFILE_AAC_HANDLE* pData) +int _parse_aac_adif_header(tMMFILE_AAC_HANDLE *pData) { - unsigned char adifHeader[MMFILE_AAC_ADIF_HEADER_MAX_SIZE] = {0,}; - int currentBitOffset = 0; - unsigned int fieldValue = 0; - int copyRightStatus = 0; - int readed = 0; - - mmfile_seek(pData->hFile, pData->streamOffset, MMFILE_SEEK_SET); - readed = mmfile_read(pData->hFile, adifHeader, MMFILE_AAC_ADIF_HEADER_MAX_SIZE); - if (readed < 0) { - return MMFILE_AAC_PARSER_FAIL; - } - - if(memcmp(adifHeader, "ADIF", 4) != 0) { - return MMFILE_AAC_PARSER_FAIL; - } - currentBitOffset += 32; - - copyRightStatus = _get_range_bits_value(adifHeader, currentBitOffset, 1); - currentBitOffset += 1; - - if(copyRightStatus) { - //skipping Copyright info - currentBitOffset += 72; - } - - //Original/copy - fieldValue = _get_range_bits_value(adifHeader, currentBitOffset, 1); - currentBitOffset += 1; - - //skipping Home status - currentBitOffset += 1; - - //Bit stream type - fieldValue = _get_range_bits_value(adifHeader, currentBitOffset, 1); - currentBitOffset += 1; - if(!fieldValue) { - pData->streamType = AAC_STREAM_CONSTANT; - } - else { - pData->streamType = AAC_STREAM_VARIABLE; - } - - //Bit-rate - pData->streamInfo.bitRate = _get_range_bits_value(adifHeader, currentBitOffset, 23); - currentBitOffset += 23; - - //Num of program config elements - fieldValue = _get_range_bits_value(adifHeader, currentBitOffset, 4); - currentBitOffset += 4; - - //skipping adif buffer fullness - currentBitOffset += 20; - - //skipping element instance tag - currentBitOffset += 4; - - //Profile - pData->streamInfo.profileType = _get_range_bits_value(adifHeader, currentBitOffset, 2); - currentBitOffset += 2; - - //sampling freq index - fieldValue = _get_range_bits_value(adifHeader, currentBitOffset, 4); - currentBitOffset += 4; - pData->streamInfo.samplingRate = Sampling_freq_table[fieldValue]; - - //num_front_channel_elements - pData->streamInfo.numAudioChannels = _get_range_bits_value(adifHeader, currentBitOffset, 4); - currentBitOffset += 4; - - //num_side_channel_elements - pData->streamInfo.numAudioChannels += _get_range_bits_value(adifHeader, currentBitOffset, 4); - currentBitOffset += 4; - - //num_back_channel_elements - pData->streamInfo.numAudioChannels += _get_range_bits_value(adifHeader, currentBitOffset, 4); - currentBitOffset += 4; - - //num_lfe_channel_elements - pData->streamInfo.numAudioChannels += _get_range_bits_value(adifHeader, currentBitOffset, 2); - currentBitOffset += 2; - - return MMFILE_AAC_PARSER_SUCCESS; - + unsigned char adifHeader[MMFILE_AAC_ADIF_HEADER_MAX_SIZE] = {0, }; + int currentBitOffset = 0; + unsigned int fieldValue = 0; + int copyRightStatus = 0; + int readed = 0; + + mmfile_seek(pData->hFile, pData->streamOffset, MMFILE_SEEK_SET); + readed = mmfile_read(pData->hFile, adifHeader, MMFILE_AAC_ADIF_HEADER_MAX_SIZE); + if (readed < 0) { + return MMFILE_AAC_PARSER_FAIL; + } + + if (memcmp(adifHeader, "ADIF", 4) != 0) { + return MMFILE_AAC_PARSER_FAIL; + } + currentBitOffset += 32; + + copyRightStatus = _get_range_bits_value(adifHeader, currentBitOffset, 1); + currentBitOffset += 1; + + if (copyRightStatus) { + /*skipping Copyright info */ + currentBitOffset += 72; + } + + /*Original/copy */ + fieldValue = _get_range_bits_value(adifHeader, currentBitOffset, 1); + currentBitOffset += 1; + + /*skipping Home status */ + currentBitOffset += 1; + + /*Bit stream type */ + fieldValue = _get_range_bits_value(adifHeader, currentBitOffset, 1); + currentBitOffset += 1; + if (!fieldValue) { + pData->streamType = AAC_STREAM_CONSTANT; + } else { + pData->streamType = AAC_STREAM_VARIABLE; + } + + /*Bit-rate */ + pData->streamInfo.bitRate = _get_range_bits_value(adifHeader, currentBitOffset, 23); + currentBitOffset += 23; + + /*Num of program config elements */ + fieldValue = _get_range_bits_value(adifHeader, currentBitOffset, 4); + currentBitOffset += 4; + + /*skipping adif buffer fullness */ + currentBitOffset += 20; + + /*skipping element instance tag */ + currentBitOffset += 4; + + /*Profile */ + pData->streamInfo.profileType = _get_range_bits_value(adifHeader, currentBitOffset, 2); + currentBitOffset += 2; + + /*sampling freq index */ + fieldValue = _get_range_bits_value(adifHeader, currentBitOffset, 4); + currentBitOffset += 4; + pData->streamInfo.samplingRate = Sampling_freq_table[fieldValue]; + + /*num_front_channel_elements */ + pData->streamInfo.numAudioChannels = _get_range_bits_value(adifHeader, currentBitOffset, 4); + currentBitOffset += 4; + + /*num_side_channel_elements */ + pData->streamInfo.numAudioChannels += _get_range_bits_value(adifHeader, currentBitOffset, 4); + currentBitOffset += 4; + + /*num_back_channel_elements */ + pData->streamInfo.numAudioChannels += _get_range_bits_value(adifHeader, currentBitOffset, 4); + currentBitOffset += 4; + + /*num_lfe_channel_elements */ + pData->streamInfo.numAudioChannels += _get_range_bits_value(adifHeader, currentBitOffset, 2); + + return MMFILE_AAC_PARSER_SUCCESS; + } -int _parse_aac_adts_header(tMMFILE_AAC_HANDLE* pData) +int _parse_aac_adts_header(tMMFILE_AAC_HANDLE *pData) { - unsigned char adtsHeader[MMFILE_AAC_ADTS_HEADER_MAX_SIZE] = {0,}; - int currentBitOffset = 0; - unsigned int fieldValue = 0; - int readed = 0; - - mmfile_seek(pData->hFile, pData->streamOffset, MMFILE_SEEK_SET); - readed = mmfile_read(pData->hFile, adtsHeader, MMFILE_AAC_ADTS_HEADER_MAX_SIZE); - if (readed < 0) { - return MMFILE_AAC_PARSER_FAIL; - } - - if(!IS_AAC_ADTS_HEADER(adtsHeader)) { - return MMFILE_AAC_PARSER_FAIL; - } - currentBitOffset += 12; - - //adtsId - fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 1); - currentBitOffset += 1; - pData->mpegType = (fieldValue != 0); - - //LayerType - fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 2); - currentBitOffset += 2; - - //skipping Protection Absent - currentBitOffset += 1; - - //ProfileType - fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 2); - currentBitOffset += 2; - pData->streamInfo.profileType = fieldValue; - - //SamplingrateIndex - fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 4); - currentBitOffset += 4; - pData->streamInfo.samplingRate = Sampling_freq_table[fieldValue]; - - //skipping PrivateBit - currentBitOffset += 1; - - //ChannelConfig - pData->streamInfo.numAudioChannels = _get_range_bits_value(adtsHeader, currentBitOffset, 3); - currentBitOffset += 3; - - //Original/copy status - fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 1); - currentBitOffset += 1; - - //skipping Home status - fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 1); - currentBitOffset += 1; - - //copy right Id status bit - currentBitOffset += 1; - - return MMFILE_AAC_PARSER_SUCCESS; + unsigned char adtsHeader[MMFILE_AAC_ADTS_HEADER_MAX_SIZE] = {0, }; + int currentBitOffset = 0; + unsigned int fieldValue = 0; + int readed = 0; + + mmfile_seek(pData->hFile, pData->streamOffset, MMFILE_SEEK_SET); + readed = mmfile_read(pData->hFile, adtsHeader, MMFILE_AAC_ADTS_HEADER_MAX_SIZE); + if (readed < 0) { + return MMFILE_AAC_PARSER_FAIL; + } + + if (!IS_AAC_ADTS_HEADER(adtsHeader)) { + return MMFILE_AAC_PARSER_FAIL; + } + currentBitOffset += 12; + + /*adtsId */ + fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 1); + currentBitOffset += 1; + pData->mpegType = (fieldValue != 0); + + /*LayerType */ + fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 2); + currentBitOffset += 2; + + /*skipping Protection Absent */ + currentBitOffset += 1; + + /*ProfileType */ + fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 2); + currentBitOffset += 2; + pData->streamInfo.profileType = fieldValue; + + /*SamplingrateIndex */ + fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 4); + currentBitOffset += 4; + pData->streamInfo.samplingRate = Sampling_freq_table[fieldValue]; + + /*skipping PrivateBit */ + currentBitOffset += 1; + + /*ChannelConfig */ + pData->streamInfo.numAudioChannels = _get_range_bits_value(adtsHeader, currentBitOffset, 3); + currentBitOffset += 3; + + /*Original/copy status */ + fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 1); + currentBitOffset += 1; + + /*skipping Home status */ + fieldValue = _get_range_bits_value(adtsHeader, currentBitOffset, 1); + + return MMFILE_AAC_PARSER_SUCCESS; } -int _get_next_adts_frame_length(tMMFILE_AAC_HANDLE* pData, int* frameLen) +int _get_next_adts_frame_length(tMMFILE_AAC_HANDLE *pData, int *frameLen) { - unsigned char adtsHeader[MMFILE_AAC_ADTS_HEADER_MAX_SIZE] = {0,}; - int ret = MMFILE_AAC_PARSER_SUCCESS; - long long filePosBefore = mmfile_tell(pData->hFile); - int readed = 0; + unsigned char adtsHeader[MMFILE_AAC_ADTS_HEADER_MAX_SIZE] = {0, }; + int ret = MMFILE_AAC_PARSER_SUCCESS; + long long filePosBefore = mmfile_tell(pData->hFile); + int readed = 0; + + readed = mmfile_read(pData->hFile, adtsHeader, MMFILE_AAC_ADTS_HEADER_MAX_SIZE); + if (readed < 0) + return MMFILE_AAC_PARSER_FAIL; - readed = mmfile_read(pData->hFile, adtsHeader, MMFILE_AAC_ADTS_HEADER_MAX_SIZE); - if (readed < 0) - return MMFILE_AAC_PARSER_FAIL; - #ifdef __MMFILE_TEST_MODE__ - debug_msg("\nFILE POS: %lld\n", filePosBefore); - debug_msg("\nADTS HEADER: [%2x] [%2x] [%2x] [%2x] [%2x] [%2x]\n", - adtsHeader[0], adtsHeader[1], adtsHeader[2], adtsHeader[3], adtsHeader[4], adtsHeader[5]); + debug_msg("\nFILE POS: %lld\n", filePosBefore); + debug_msg("\nADTS HEADER: [%2x] [%2x] [%2x] [%2x] [%2x] [%2x]\n", + adtsHeader[0], adtsHeader[1], adtsHeader[2], adtsHeader[3], adtsHeader[4], adtsHeader[5]); #endif - - if(mmfile_tell(pData->hFile) >= pData->streamInfo.fileSize) { - *frameLen = 0; - ret = MMFILE_AAC_PARSER_FILE_END; - goto function_end; - } - - if(!IS_AAC_ADTS_HEADER(adtsHeader)) { - *frameLen = 0; - ret = MMFILE_AAC_PARSER_FAIL; - goto function_end; - } - - *frameLen = _get_range_bits_value(adtsHeader, AAC_ADTS_FRAME_LEN_OFFSET, 13); - - if(*frameLen == 0 || *frameLen > (pData->streamInfo.fileSize - filePosBefore)) { - *frameLen = 0; - ret = MMFILE_AAC_PARSER_FAIL; - goto function_end; - } + + if (mmfile_tell(pData->hFile) >= pData->streamInfo.fileSize) { + *frameLen = 0; + ret = MMFILE_AAC_PARSER_FILE_END; + goto function_end; + } + + if (!IS_AAC_ADTS_HEADER(adtsHeader)) { + *frameLen = 0; + ret = MMFILE_AAC_PARSER_FAIL; + goto function_end; + } + + *frameLen = _get_range_bits_value(adtsHeader, AAC_ADTS_FRAME_LEN_OFFSET, 13); + + if (*frameLen == 0 || *frameLen > (pData->streamInfo.fileSize - filePosBefore)) { + *frameLen = 0; + ret = MMFILE_AAC_PARSER_FAIL; + goto function_end; + } function_end: - - mmfile_seek(pData->hFile, filePosBefore + *frameLen, MMFILE_SEEK_SET); - - return ret; + + mmfile_seek(pData->hFile, filePosBefore + *frameLen, MMFILE_SEEK_SET); + + return ret; } -int mmfile_aacparser_open (MMFileAACHandle *handle, const char *filenamec) +int mmfile_aacparser_open(MMFileAACHandle *handle, const char *filenamec) { - tMMFILE_AAC_HANDLE *privateData = NULL; - int ret = 0; - unsigned char header[4] = {0,}; - int firstFrameLen = 0; - int readed = 0; - - if (NULL == filenamec) { - debug_error ("file source is NULL\n"); - return MMFILE_AAC_PARSER_FAIL; - } - - privateData = mmfile_malloc (sizeof(tMMFILE_AAC_HANDLE)); - if (NULL == privateData) { - debug_error ("file source is NULL\n"); - return MMFILE_AAC_PARSER_FAIL; - } - - ret = mmfile_open (&privateData->hFile, filenamec, MMFILE_RDONLY); - if(ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exception; - } - - /* Initialize the members of handle */ - _aac_init_handle(privateData); - - mmfile_seek (privateData->hFile, 0, MMFILE_SEEK_END); - privateData->streamInfo.fileSize= mmfile_tell(privateData->hFile); - - mmfile_seek (privateData->hFile, 0, MMFILE_SEEK_SET); - - /* Search the existance of ID3 tag */ - ret = _search_id3tag(privateData); - if(ret == MMFILE_AAC_PARSER_FAIL) { - debug_error("Error in searching the ID3 tag\n"); - goto exception; - } - - mmfile_seek (privateData->hFile, privateData->streamOffset, MMFILE_SEEK_SET); - readed = mmfile_read (privateData->hFile, header, 4); - if (readed != 4) - goto exception; - - if(IS_AAC_ADIF_HEADER(header)) { - privateData->formatType = AAC_FORMAT_ADIF; - -#ifdef __MMFILE_TEST_MODE__ - debug_msg("AAC Format: ADIF\n"); -#endif - - } - else if(IS_AAC_ADTS_HEADER(header)) { - privateData->formatType = AAC_FORMAT_ADTS; - -#ifdef __MMFILE_TEST_MODE__ - debug_msg("AAC Format: ADTS\n"); -#endif - - /* Verify whether the first frame size is proper */ - mmfile_seek (privateData->hFile, privateData->streamOffset, MMFILE_SEEK_SET); - ret = _get_next_adts_frame_length(privateData, &firstFrameLen); - if(ret == MMFILE_AAC_PARSER_FAIL) { - debug_error("Invalid Frame length in ADTS header\n"); - goto exception; - } - } - else { - privateData->formatType = AAC_FORMAT_UNKNOWN; - debug_error("AAC Format: UNKNOWN\n"); - goto exception; - } - - *handle = privateData; - - return MMFILE_AAC_PARSER_SUCCESS; + tMMFILE_AAC_HANDLE *privateData = NULL; + int ret = 0; + unsigned char header[4] = {0, }; + int firstFrameLen = 0; + int readed = 0; + + if (NULL == filenamec) { + debug_error("file source is NULL\n"); + return MMFILE_AAC_PARSER_FAIL; + } + + privateData = mmfile_malloc(sizeof(tMMFILE_AAC_HANDLE)); + if (NULL == privateData) { + debug_error("file source is NULL\n"); + return MMFILE_AAC_PARSER_FAIL; + } + + ret = mmfile_open(&privateData->hFile, filenamec, MMFILE_RDONLY); + if (ret == MMFILE_UTIL_FAIL) { + debug_error("error: mmfile_open\n"); + goto exception; + } + + /* Initialize the members of handle */ + _aac_init_handle(privateData); + + mmfile_seek(privateData->hFile, 0, MMFILE_SEEK_END); + privateData->streamInfo.fileSize = mmfile_tell(privateData->hFile); + + mmfile_seek(privateData->hFile, 0, MMFILE_SEEK_SET); + + /* Search the existance of ID3 tag */ + ret = _search_id3tag(privateData); + if (ret == MMFILE_AAC_PARSER_FAIL) { + debug_error("Error in searching the ID3 tag\n"); + goto exception; + } + + mmfile_seek(privateData->hFile, privateData->streamOffset, MMFILE_SEEK_SET); + readed = mmfile_read(privateData->hFile, header, 4); + if (readed != 4) + goto exception; + + if (IS_AAC_ADIF_HEADER(header)) { + privateData->formatType = AAC_FORMAT_ADIF; + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("AAC Format: ADIF\n"); +#endif + + } else if (IS_AAC_ADTS_HEADER(header)) { + privateData->formatType = AAC_FORMAT_ADTS; + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("AAC Format: ADTS\n"); +#endif + + /* Verify whether the first frame size is proper */ + mmfile_seek(privateData->hFile, privateData->streamOffset, MMFILE_SEEK_SET); + ret = _get_next_adts_frame_length(privateData, &firstFrameLen); + if (ret == MMFILE_AAC_PARSER_FAIL) { + debug_error("Invalid Frame length in ADTS header\n"); + goto exception; + } + } else { + privateData->formatType = AAC_FORMAT_UNKNOWN; + debug_error("AAC Format: UNKNOWN\n"); + goto exception; + } + + *handle = privateData; + + return MMFILE_AAC_PARSER_SUCCESS; exception: - if (privateData) { - mmfile_close (privateData->hFile); - mmfile_free (privateData); - *handle = NULL; - } - return MMFILE_AAC_PARSER_FAIL; - + if (privateData) { + mmfile_close(privateData->hFile); + mmfile_free(privateData); + *handle = NULL; + } + return MMFILE_AAC_PARSER_FAIL; + } -int mmfile_aacparser_get_stream_info (MMFileAACHandle handle, tMMFILE_AAC_STREAM_INFO *aacinfo) +int mmfile_aacparser_get_stream_info(MMFileAACHandle handle, tMMFILE_AAC_STREAM_INFO *aacinfo) { - tMMFILE_AAC_HANDLE *privateData = NULL; - int frameLen = 0; - long long totalFrames = 0, totalFrameLength = 0; - unsigned long long streamDataSize = 0; - int ret = MMFILE_AAC_PARSER_SUCCESS; - - if (NULL == handle || NULL == aacinfo) { - debug_error ("handle is NULL\n"); - return MMFILE_AAC_PARSER_FAIL; - } - - privateData = (tMMFILE_AAC_HANDLE *) handle; - - if(privateData->formatType == AAC_FORMAT_ADIF) { - ret = _parse_aac_adif_header(privateData); - aacinfo->iseekable = 0; - } - else { - ret = _parse_aac_adts_header(privateData); - aacinfo->iseekable = 1; - } - - if(ret == MMFILE_AAC_PARSER_FAIL) { - debug_error("Error in parsing the stream header\n"); - return ret; - } - - mmfile_seek(privateData->hFile, privateData->streamOffset, MMFILE_SEEK_SET); - - if(privateData->formatType == AAC_FORMAT_ADTS) { - - while(TRUE) { - ret = _get_next_adts_frame_length(privateData, &frameLen); - if(ret != MMFILE_AAC_PARSER_SUCCESS) { - break; - } - totalFrameLength += frameLen - MMFILE_AAC_ADTS_HEADER_MAX_SIZE; - totalFrames++; - } - - if(ret == MMFILE_AAC_PARSER_FAIL) { - debug_error("Found corrupted frames!!! Ignoring\n"); - } - -#ifdef __MMFILE_TEST_MODE__ - debug_msg("No of ADTS frames: %d\n", totalFrames); -#endif - privateData->streamInfo.frameRate = privateData->streamInfo.samplingRate / AAC_ADTS_SAMPLES_PER_FRAME; - - if(privateData->streamInfo.frameRate) - privateData->streamInfo.duration = (totalFrames * 1000) / privateData->streamInfo.frameRate; - else privateData->streamInfo.duration = 0; - - if(privateData->streamInfo.duration) - privateData->streamInfo.bitRate = (totalFrameLength * 8 * 1000) / (privateData->streamInfo.duration); - else privateData->streamInfo.bitRate = 0; - - } - else { - streamDataSize = (unsigned long long)privateData->streamInfo.fileSize - privateData->tagInfoSize; - privateData->streamInfo.duration = streamDataSize * 8 * 1000 / privateData->streamInfo.bitRate; - } - - // Return the stream info structure - memcpy(aacinfo, &(privateData->streamInfo), sizeof(tMMFILE_AAC_STREAM_INFO)); - - return MMFILE_AAC_PARSER_SUCCESS; + tMMFILE_AAC_HANDLE *privateData = NULL; + int frameLen = 0; + long long totalFrames = 0, totalFrameLength = 0; + unsigned long long streamDataSize = 0; + int ret = MMFILE_AAC_PARSER_SUCCESS; + + if (NULL == handle || NULL == aacinfo) { + debug_error("handle is NULL\n"); + return MMFILE_AAC_PARSER_FAIL; + } + + privateData = (tMMFILE_AAC_HANDLE *) handle; + + if (privateData->formatType == AAC_FORMAT_ADIF) { + ret = _parse_aac_adif_header(privateData); + aacinfo->iseekable = 0; + } else { + ret = _parse_aac_adts_header(privateData); + aacinfo->iseekable = 1; + } + + if (ret == MMFILE_AAC_PARSER_FAIL) { + debug_error("Error in parsing the stream header\n"); + return ret; + } + + mmfile_seek(privateData->hFile, privateData->streamOffset, MMFILE_SEEK_SET); + + if (privateData->formatType == AAC_FORMAT_ADTS) { + + while (TRUE) { + ret = _get_next_adts_frame_length(privateData, &frameLen); + if (ret != MMFILE_AAC_PARSER_SUCCESS) { + break; + } + totalFrameLength += frameLen - MMFILE_AAC_ADTS_HEADER_MAX_SIZE; + totalFrames++; + } + + if (ret == MMFILE_AAC_PARSER_FAIL) { + debug_error("Found corrupted frames!!! Ignoring\n"); + } + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("No of ADTS frames: %d\n", totalFrames); +#endif + privateData->streamInfo.frameRate = privateData->streamInfo.samplingRate / AAC_ADTS_SAMPLES_PER_FRAME; + + if (privateData->streamInfo.frameRate) + privateData->streamInfo.duration = (totalFrames * 1000) / privateData->streamInfo.frameRate; + else privateData->streamInfo.duration = 0; + + if (privateData->streamInfo.duration) + privateData->streamInfo.bitRate = (totalFrameLength * 8 * 1000) / (privateData->streamInfo.duration); + else privateData->streamInfo.bitRate = 0; + + } else { + streamDataSize = (unsigned long long)privateData->streamInfo.fileSize - privateData->tagInfoSize; + privateData->streamInfo.duration = streamDataSize * 8 * 1000 / privateData->streamInfo.bitRate; + } + + /* Return the stream info structure */ + memcpy(aacinfo, &(privateData->streamInfo), sizeof(tMMFILE_AAC_STREAM_INFO)); + + return MMFILE_AAC_PARSER_SUCCESS; } -int mmfile_aacparser_get_tag_info (MMFileAACHandle handle, tMMFILE_AAC_TAG_INFO *tagInfo) +int mmfile_aacparser_get_tag_info(MMFileAACHandle handle, tMMFILE_AAC_TAG_INFO *tagInfo) { tMMFILE_AAC_HANDLE *privateData = NULL; int ret = 0; if (NULL == handle || NULL == tagInfo) { - debug_error ("handle is NULL\n"); + debug_error("handle is NULL\n"); return MMFILE_AAC_PARSER_FAIL; } privateData = (tMMFILE_AAC_HANDLE *) handle; - if(privateData->id3Handle.tagV2Info.tagVersion == 0) - { - debug_warning ("There is no Tag info\n"); + if (privateData->id3Handle.tagV2Info.tagVersion == 0) { + debug_warning("There is no Tag info\n"); return MMFILE_AAC_PARSER_SUCCESS; } ret = _parse_id3_tag(privateData); - if(ret == MMFILE_AAC_PARSER_FAIL) { - debug_warning ("Error in parsing the Tag info\n"); + if (ret == MMFILE_AAC_PARSER_FAIL) { + debug_warning("Error in parsing the Tag info\n"); return ret; } - // Return the tag info structure + /* Return the tag info structure */ memcpy(tagInfo, &(privateData->tagInfo), sizeof(tMMFILE_AAC_TAG_INFO)); return MMFILE_AAC_PARSER_SUCCESS; } -int mmfile_aacparser_close (MMFileAACHandle handle) +int mmfile_aacparser_close(MMFileAACHandle handle) { - tMMFILE_AAC_HANDLE *privateData = NULL; + tMMFILE_AAC_HANDLE *privateData = NULL; + + if (NULL == handle) { + debug_error("handle is NULL\n"); + return MMFILE_AAC_PARSER_FAIL; + } - if (NULL == handle) { - debug_error ("handle is NULL\n"); - return MMFILE_AAC_PARSER_FAIL; - } + privateData = (tMMFILE_AAC_HANDLE *) handle; + mm_file_free_AvFileContentInfo(&privateData->id3Handle); - privateData = (tMMFILE_AAC_HANDLE *) handle; - mm_file_free_AvFileContentInfo(&privateData->id3Handle); - - mmfile_close(privateData->hFile); + mmfile_close(privateData->hFile); - return MMFILE_AAC_PARSER_SUCCESS; + return MMFILE_AAC_PARSER_SUCCESS; } - - + + /* mm plugin interface */ -int mmfile_format_read_stream_aac (MMFileFormatContext *formatContext); -int mmfile_format_read_frame_aac (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); -int mmfile_format_read_tag_aac (MMFileFormatContext *formatContext); -int mmfile_format_close_aac (MMFileFormatContext *formatContext); +int mmfile_format_read_stream_aac(MMFileFormatContext *formatContext); +int mmfile_format_read_frame_aac(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); +int mmfile_format_read_tag_aac(MMFileFormatContext *formatContext); +int mmfile_format_close_aac(MMFileFormatContext *formatContext); EXPORT_API -int mmfile_format_open_aac (MMFileFormatContext *formatContext) +int mmfile_format_open_aac(MMFileFormatContext *formatContext) { MMFileAACHandle handle = NULL; int res = MMFILE_FORMAT_FAIL; if (NULL == formatContext || NULL == formatContext->uriFileName) { - debug_error ("error: mmfile_format_open_aac\n"); + debug_error("error: mmfile_format_open_aac\n"); return MMFILE_FORMAT_FAIL; } if (formatContext->pre_checked == 0) { - res = MMFileFormatIsValidAAC (formatContext->uriFileName); + res = MMFileFormatIsValidAAC(NULL, formatContext->uriFileName); if (res == 0) { debug_error("It is not AAC file\n"); - return MMFILE_FORMAT_FAIL; + return MMFILE_FORMAT_FAIL; } } @@ -781,9 +771,9 @@ int mmfile_format_open_aac (MMFileFormatContext *formatContext) formatContext->videoTotalTrackNum = 0; formatContext->audioTotalTrackNum = 1; - res = mmfile_aacparser_open (&handle, formatContext->uriFileName); + res = mmfile_aacparser_open(&handle, formatContext->uriFileName); if (MMFILE_AAC_PARSER_FAIL == res) { - debug_error ("mmfile_aacparser_open\n"); + debug_error("mmfile_aacparser_open\n"); return MMFILE_FORMAT_FAIL; } @@ -793,177 +783,177 @@ int mmfile_format_open_aac (MMFileFormatContext *formatContext) } EXPORT_API -int mmfile_format_read_stream_aac (MMFileFormatContext *formatContext) +int mmfile_format_read_stream_aac(MMFileFormatContext *formatContext) { - MMFileAACHandle handle = NULL; - tMMFILE_AAC_STREAM_INFO aacinfo = {0,}; - MMFileFormatStream *audioStream = NULL; - - int ret = MMFILE_FORMAT_FAIL; - - if (NULL == formatContext ) { - debug_error ("error: invalid params\n"); - ret = MMFILE_FORMAT_FAIL; - goto exception; - } - - handle = formatContext->privateFormatData; - - ret = mmfile_aacparser_get_stream_info (handle, &aacinfo); - if (MMFILE_FORMAT_SUCCESS != ret) { - debug_error ("error: mmfile_aacparser_get_stream_info\n"); - ret = MMFILE_FORMAT_FAIL; - goto exception; - } - - formatContext->isseekable = aacinfo.iseekable; - formatContext->duration = aacinfo.duration; - formatContext->videoStreamId = -1; - formatContext->videoTotalTrackNum = 0; - formatContext->audioTotalTrackNum = aacinfo.numTracks; - formatContext->nbStreams = 1; - - audioStream = mmfile_malloc (sizeof(MMFileFormatStream)); - if (NULL == audioStream) { - debug_error ("error: calloc_audiostream\n"); - ret = MMFILE_FORMAT_FAIL; - goto exception; - } - - audioStream->streamType = MMFILE_AUDIO_STREAM; - audioStream->codecId = MM_AUDIO_CODEC_AAC; - audioStream->bitRate = aacinfo.bitRate; - audioStream->framePerSec = aacinfo.frameRate; - audioStream->width = 0; - audioStream->height = 0; - audioStream->nbChannel = aacinfo.numAudioChannels; - audioStream->samplePerSec = aacinfo.samplingRate; - formatContext->streams[MMFILE_AUDIO_STREAM] = audioStream; - + MMFileAACHandle handle = NULL; + tMMFILE_AAC_STREAM_INFO aacinfo = {0, }; + MMFileFormatStream *audioStream = NULL; + + int ret = MMFILE_FORMAT_FAIL; + + if (NULL == formatContext) { + debug_error("error: invalid params\n"); + ret = MMFILE_FORMAT_FAIL; + goto exception; + } + + handle = formatContext->privateFormatData; + + ret = mmfile_aacparser_get_stream_info(handle, &aacinfo); + if (MMFILE_FORMAT_SUCCESS != ret) { + debug_error("error: mmfile_aacparser_get_stream_info\n"); + ret = MMFILE_FORMAT_FAIL; + goto exception; + } + + formatContext->isseekable = aacinfo.iseekable; + formatContext->duration = aacinfo.duration; + formatContext->videoStreamId = -1; + formatContext->videoTotalTrackNum = 0; + formatContext->audioTotalTrackNum = aacinfo.numTracks; + formatContext->nbStreams = 1; + + audioStream = mmfile_malloc(sizeof(MMFileFormatStream)); + if (NULL == audioStream) { + debug_error("error: calloc_audiostream\n"); + ret = MMFILE_FORMAT_FAIL; + goto exception; + } + + audioStream->streamType = MMFILE_AUDIO_STREAM; + audioStream->codecId = MM_AUDIO_CODEC_AAC; + audioStream->bitRate = aacinfo.bitRate; + audioStream->framePerSec = aacinfo.frameRate; + audioStream->width = 0; + audioStream->height = 0; + audioStream->nbChannel = aacinfo.numAudioChannels; + audioStream->samplePerSec = aacinfo.samplingRate; + formatContext->streams[MMFILE_AUDIO_STREAM] = audioStream; + #ifdef __MMFILE_TEST_MODE__ - mmfile_format_print_contents (formatContext); + mmfile_format_print_contents(formatContext); #endif - return MMFILE_FORMAT_SUCCESS; + return MMFILE_FORMAT_SUCCESS; exception: - return ret; + return ret; } EXPORT_API -int mmfile_format_read_tag_aac (MMFileFormatContext *formatContext) +int mmfile_format_read_tag_aac(MMFileFormatContext *formatContext) { - MMFileAACHandle handle = NULL; - tMMFILE_AAC_TAG_INFO aacinfo = {0,}; - int ret= MMFILE_FORMAT_FAIL; - - if (NULL == formatContext) { - debug_error ("error: invalid params\n"); - ret = MMFILE_FORMAT_FAIL; - goto exception; - } - - handle = formatContext->privateFormatData; - - ret = mmfile_aacparser_get_tag_info (handle, &aacinfo); - if (MMFILE_FORMAT_SUCCESS != ret) { - debug_warning ("error: mmfile_aacparser_get_tag_info\n"); - ret = MMFILE_FORMAT_FAIL; - goto exception; - } - - if(aacinfo.title) - formatContext->title = mmfile_strdup(aacinfo.title); - if(aacinfo.author) - formatContext->author = mmfile_strdup(aacinfo.author); - if(aacinfo.artist) - formatContext->artist = mmfile_strdup(aacinfo.artist); - if(aacinfo.album) - formatContext->album = mmfile_strdup(aacinfo.album); - if(aacinfo.album_artist) - formatContext->album_artist = mmfile_strdup(aacinfo.album_artist); - if(aacinfo.year) - formatContext->year = mmfile_strdup(aacinfo.year); - if(aacinfo.copyright) - formatContext->copyright = mmfile_strdup(aacinfo.copyright); - if(aacinfo.comment) - 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) - formatContext->classification = mmfile_strdup(aacinfo.classification); - if(aacinfo.rating) - formatContext->rating = mmfile_strdup(aacinfo.rating); /*not exist rating tag in id3*/ - if(aacinfo.conductor) - formatContext->conductor = mmfile_strdup(aacinfo.conductor); - if(aacinfo.artworkMime) - formatContext->artworkMime = mmfile_strdup(aacinfo.artworkMime); - if(aacinfo.artwork) { - formatContext->artworkSize = aacinfo.artworkSize; - formatContext->artwork = mmfile_malloc(aacinfo.artworkSize); - if(formatContext->artwork == NULL) { - ret = MMFILE_FORMAT_FAIL; - goto exception; - } - memcpy(formatContext->artwork, aacinfo.artwork, aacinfo.artworkSize); - } + MMFileAACHandle handle = NULL; + tMMFILE_AAC_TAG_INFO aacinfo = {0, }; + int ret = MMFILE_FORMAT_FAIL; + + if (NULL == formatContext) { + debug_error("error: invalid params\n"); + ret = MMFILE_FORMAT_FAIL; + goto exception; + } + + handle = formatContext->privateFormatData; + + ret = mmfile_aacparser_get_tag_info(handle, &aacinfo); + if (MMFILE_FORMAT_SUCCESS != ret) { + debug_warning("error: mmfile_aacparser_get_tag_info\n"); + ret = MMFILE_FORMAT_FAIL; + goto exception; + } + + if (aacinfo.title) + formatContext->title = mmfile_strdup(aacinfo.title); + if (aacinfo.author) + formatContext->author = mmfile_strdup(aacinfo.author); + if (aacinfo.artist) + formatContext->artist = mmfile_strdup(aacinfo.artist); + if (aacinfo.album) + formatContext->album = mmfile_strdup(aacinfo.album); + if (aacinfo.album_artist) + formatContext->album_artist = mmfile_strdup(aacinfo.album_artist); + if (aacinfo.year) + formatContext->year = mmfile_strdup(aacinfo.year); + if (aacinfo.copyright) + formatContext->copyright = mmfile_strdup(aacinfo.copyright); + if (aacinfo.comment) + 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) + formatContext->classification = mmfile_strdup(aacinfo.classification); + if (aacinfo.rating) + formatContext->rating = mmfile_strdup(aacinfo.rating); /*not exist rating tag in id3*/ + if (aacinfo.conductor) + formatContext->conductor = mmfile_strdup(aacinfo.conductor); + if (aacinfo.artworkMime) + formatContext->artworkMime = mmfile_strdup(aacinfo.artworkMime); + if (aacinfo.artwork) { + formatContext->artworkSize = aacinfo.artworkSize; + formatContext->artwork = mmfile_malloc(aacinfo.artworkSize); + if (formatContext->artwork == NULL) { + ret = MMFILE_FORMAT_FAIL; + goto exception; + } + memcpy(formatContext->artwork, aacinfo.artwork, aacinfo.artworkSize); + } #ifdef __MMFILE_TEST_MODE__ - mmfile_format_print_contents (formatContext); + mmfile_format_print_contents(formatContext); #endif - return MMFILE_FORMAT_SUCCESS; + return MMFILE_FORMAT_SUCCESS; exception: - return ret; + return ret; } EXPORT_API -int mmfile_format_read_frame_aac (MMFileFormatContext *formatContext, - unsigned int timestamp, MMFileFormatFrame *frame) +int mmfile_format_read_frame_aac(MMFileFormatContext *formatContext, + unsigned int timestamp, MMFileFormatFrame *frame) { - debug_error ("error: mmfile_format_read_frame_aac, no handling\n"); + debug_error("error: mmfile_format_read_frame_aac, no handling\n"); - return MMFILE_FORMAT_FAIL; + return MMFILE_FORMAT_FAIL; } EXPORT_API -int mmfile_format_close_aac (MMFileFormatContext *formatContext) +int mmfile_format_close_aac(MMFileFormatContext *formatContext) { - MMFileAACHandle handle = NULL; - int ret = MMFILE_FORMAT_FAIL; - - if (NULL == formatContext ) { - debug_error ("error: invalid params\n"); - return MMFILE_FORMAT_FAIL; - } - - handle = formatContext->privateFormatData; - - if(NULL != handle) { - ret = mmfile_aacparser_close(handle); - if(ret == MMFILE_AAC_PARSER_FAIL) { - debug_error("error: mmfile_format_close_aac\n"); - } - } - - if(formatContext->streams[MMFILE_AUDIO_STREAM]) { - mmfile_free(formatContext->streams[MMFILE_AUDIO_STREAM]); - formatContext->streams[MMFILE_AUDIO_STREAM] = NULL; - } - - formatContext->ReadStream = NULL; - formatContext->ReadFrame = NULL; - formatContext->ReadTag = NULL; - formatContext->Close = NULL; - - return MMFILE_FORMAT_SUCCESS; + MMFileAACHandle handle = NULL; + int ret = MMFILE_FORMAT_FAIL; + + if (NULL == formatContext) { + debug_error("error: invalid params\n"); + return MMFILE_FORMAT_FAIL; + } + + handle = formatContext->privateFormatData; + + if (NULL != handle) { + ret = mmfile_aacparser_close(handle); + if (ret == MMFILE_AAC_PARSER_FAIL) { + debug_error("error: mmfile_format_close_aac\n"); + } + } + + if (formatContext->streams[MMFILE_AUDIO_STREAM]) { + mmfile_free(formatContext->streams[MMFILE_AUDIO_STREAM]); + formatContext->streams[MMFILE_AUDIO_STREAM] = NULL; + } + + formatContext->ReadStream = NULL; + formatContext->ReadFrame = NULL; + formatContext->ReadTag = NULL; + formatContext->Close = NULL; + + return MMFILE_FORMAT_SUCCESS; } diff --git a/formats/ffmpeg/mm_file_format_amr.c b/formats/ffmpeg/mm_file_format_amr.c index d15cf62..7edca53 100755 --- a/formats/ffmpeg/mm_file_format_amr.c +++ b/formats/ffmpeg/mm_file_format_amr.c @@ -19,20 +19,20 @@ * */ -#include <stdio.h> +#include <stdio.h> #include <string.h> /*memcmp*/ #include <stdlib.h> /*malloc*/ #include <mm_error.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" #include "mm_file_format_private.h" #include "mm_file_format_amr.h" -// Media specific definations +/* Media specific definations */ #define NUM_AMR_NB_MODES 8 #define NUM_AMR_WB_MODES 9 @@ -47,7 +47,7 @@ #define MMFILE_AMR_MAX_HEADER_SIZE MMFILE_AMR_WB_MULTI_CH_HEADER_SIZE #define MMFILE_AMR_MIN_HEADER_SIZE MMFILE_AMR_SINGLE_CH_HEADER_SIZE - + #define MMFILE_AMR_FRAME_DUR 20 #define AMR_NB_SAMPLES_PER_SEC 8000 #define AMR_WB_SAMPLES_PER_SEC 16000 @@ -58,43 +58,42 @@ typedef enum _mmfile_amr_format_types { - AMR_FORMAT_NB, - AMR_FORMAT_WB, - AMR_FORMAT_UNKNOWN -}eAmrFormatType; + AMR_FORMAT_NB, + AMR_FORMAT_WB, + AMR_FORMAT_UNKNOWN +} eAmrFormatType; typedef enum _mmfile_amr_channel_type { - AMR_CHANNEL_TYPE_SINGLE, - AMR_CHANNEL_TYPE_MULTIPLE, - AMR_CHANNEL_TYPE_UNKNOWN -}eAmrChannelType; + AMR_CHANNEL_TYPE_SINGLE, + AMR_CHANNEL_TYPE_MULTIPLE, + AMR_CHANNEL_TYPE_UNKNOWN +} eAmrChannelType; typedef struct _mmfile_amr_handle { - MMFileIOHandle* hFile; - long long duration; - long long fileSize; - unsigned int streamOffset; - unsigned int bitRate; - unsigned int samplingRate; - unsigned int frameRate; - unsigned int numAudioChannels; - long long numFrames; - unsigned int numTracks; - int amrMode; - eAmrFormatType amrFormat; - eAmrChannelType amrChannelType; -}tMMFILE_AMR_HANDLE; - - + MMFileIOHandle *hFile; + long long duration; + long long fileSize; + unsigned int streamOffset; + unsigned int bitRate; + unsigned int samplingRate; + unsigned int frameRate; + unsigned int numAudioChannels; + long long numFrames; + unsigned int numTracks; + int amrMode; + eAmrFormatType amrFormat; + eAmrChannelType amrChannelType; +} tMMFILE_AMR_HANDLE; + + typedef struct _mmfile_amr_mode_config { - unsigned int bitRate; - unsigned int frameSize; -}tAmrModeConfig; + unsigned int bitRate; + unsigned int frameSize; +} tAmrModeConfig; /*RTP format only supported*/ /*mode vs bitRate-frameSize lookup table; [0]->AMR-NB [1]->AMR-WB */ -const tAmrModeConfig AmrModeConfigTable[2][16] = -{ +const tAmrModeConfig AmrModeConfigTable[2][16] = { { {4750, 13}, {5150, 14}, {5900, 16}, {6700, 18}, {7400, 20}, {7950, 21}, {10200,27}, {12200,32}, @@ -108,79 +107,79 @@ const tAmrModeConfig AmrModeConfigTable[2][16] = {0, 1}, {0, 1}, {0, 1}, {0, 1}, } }; - -/* internal APIs */ -void _amr_init_handle(tMMFILE_AMR_HANDLE* pData) +/* internal APIs */ + +void _amr_init_handle(tMMFILE_AMR_HANDLE *pData) { - pData->hFile = NULL; - pData->duration = 0; - pData->fileSize = 0L; - pData->streamOffset = 0; - pData->bitRate = 0; - pData->samplingRate = 0; - pData->frameRate = 0; - pData->numAudioChannels = 1; - pData->numTracks = 1; - pData->numFrames = 0; - pData->amrChannelType = AMR_CHANNEL_TYPE_SINGLE; + pData->hFile = NULL; + pData->duration = 0; + pData->fileSize = 0L; + pData->streamOffset = 0; + pData->bitRate = 0; + pData->samplingRate = 0; + pData->frameRate = 0; + pData->numAudioChannels = 1; + pData->numTracks = 1; + pData->numFrames = 0; + pData->amrChannelType = AMR_CHANNEL_TYPE_SINGLE; } -int _parse_amr_header(tMMFILE_AMR_HANDLE* pData) +int _parse_amr_header(tMMFILE_AMR_HANDLE *pData) { - - unsigned char header[MMFILE_AMR_MAX_HEADER_SIZE]; - int ret = MMFILE_AMR_PARSER_SUCCESS; - - ret = mmfile_read(pData->hFile, header, MMFILE_AMR_MAX_HEADER_SIZE); - if(ret != MMFILE_AMR_MAX_HEADER_SIZE) { - return MMFILE_AMR_PARSER_FAIL; - } - -#ifdef __MMFILE_TEST_MODE__ - debug_msg("\nAMR HEADER: [%2x] [%2x] [%2x] [%2x] [%2x]\n \ + + unsigned char header[MMFILE_AMR_MAX_HEADER_SIZE]; + int ret = MMFILE_AMR_PARSER_SUCCESS; + + ret = mmfile_read(pData->hFile, header, MMFILE_AMR_MAX_HEADER_SIZE); + if (ret != MMFILE_AMR_MAX_HEADER_SIZE) { + return MMFILE_AMR_PARSER_FAIL; + } + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("\nAMR HEADER: [%2x] [%2x] [%2x] [%2x] [%2x]\n \ [%2x] [%2x] [%2x] [%2x] [%2x]\n \ - [%2x] [%2x] [%2x] [%2x] [%2x]\n", - header[0], header[1], header[2], header[3],header[4], - header[5], header[6], header[7], header[8],header[9], - header[10],header[11],header[12],header[13],header[14]); + [%2x] [%2x] [%2x] [%2x] [%2x]\n", + header[0], header[1], header[2], header[3], header[4], + header[5], header[6], header[7], header[8], header[9], + header[10], header[11], header[12], header[13], header[14]); #endif - if(!(memcmp(header, MMFILE_AMR_SINGLE_CH_HEADER, MMFILE_AMR_SINGLE_CH_HEADER_SIZE))) { - pData->amrFormat = AMR_FORMAT_NB; - pData->amrChannelType = AMR_CHANNEL_TYPE_SINGLE; - pData->streamOffset = MMFILE_AMR_SINGLE_CH_HEADER_SIZE; - } - - else if(!(memcmp(header, MMFILE_AMR_WB_SINGLE_CH_HEADER, MMFILE_AMR_WB_SINGLE_CH_HEADER_SIZE))) { - pData->amrFormat = AMR_FORMAT_WB; - pData->amrChannelType = AMR_CHANNEL_TYPE_SINGLE; - pData->streamOffset = MMFILE_AMR_WB_SINGLE_CH_HEADER_SIZE; - } - - else if(!(memcmp(header, MMFILE_AMR_MULTI_CH_HEADER, MMFILE_AMR_MULTI_CH_HEADER_SIZE))){ - pData->amrFormat = AMR_FORMAT_NB; - pData->amrChannelType = AMR_CHANNEL_TYPE_MULTIPLE; - pData->streamOffset = MMFILE_AMR_MULTI_CH_HEADER_SIZE; - } - - else if(!(memcmp(header, MMFILE_AMR_WB_MULTI_CH_HEADER, MMFILE_AMR_WB_MULTI_CH_HEADER_SIZE))) { - pData->amrFormat = AMR_FORMAT_WB; - pData->amrChannelType = AMR_CHANNEL_TYPE_MULTIPLE; - pData->streamOffset = MMFILE_AMR_WB_MULTI_CH_HEADER_SIZE; - } - - else { - pData->amrFormat = AMR_FORMAT_UNKNOWN; - pData->amrChannelType = AMR_CHANNEL_TYPE_UNKNOWN; - ret = MMFILE_AMR_PARSER_FAIL; - } - - return ret; + if (!(memcmp(header, MMFILE_AMR_SINGLE_CH_HEADER, MMFILE_AMR_SINGLE_CH_HEADER_SIZE))) { + pData->amrFormat = AMR_FORMAT_NB; + pData->amrChannelType = AMR_CHANNEL_TYPE_SINGLE; + pData->streamOffset = MMFILE_AMR_SINGLE_CH_HEADER_SIZE; + } + + else if (!(memcmp(header, MMFILE_AMR_WB_SINGLE_CH_HEADER, MMFILE_AMR_WB_SINGLE_CH_HEADER_SIZE))) { + pData->amrFormat = AMR_FORMAT_WB; + pData->amrChannelType = AMR_CHANNEL_TYPE_SINGLE; + pData->streamOffset = MMFILE_AMR_WB_SINGLE_CH_HEADER_SIZE; + } + + else if (!(memcmp(header, MMFILE_AMR_MULTI_CH_HEADER, MMFILE_AMR_MULTI_CH_HEADER_SIZE))) { + pData->amrFormat = AMR_FORMAT_NB; + pData->amrChannelType = AMR_CHANNEL_TYPE_MULTIPLE; + pData->streamOffset = MMFILE_AMR_MULTI_CH_HEADER_SIZE; + } + + else if (!(memcmp(header, MMFILE_AMR_WB_MULTI_CH_HEADER, MMFILE_AMR_WB_MULTI_CH_HEADER_SIZE))) { + pData->amrFormat = AMR_FORMAT_WB; + pData->amrChannelType = AMR_CHANNEL_TYPE_MULTIPLE; + pData->streamOffset = MMFILE_AMR_WB_MULTI_CH_HEADER_SIZE; + } + + else { + pData->amrFormat = AMR_FORMAT_UNKNOWN; + pData->amrChannelType = AMR_CHANNEL_TYPE_UNKNOWN; + ret = MMFILE_AMR_PARSER_FAIL; + } + + return ret; } -int _parse_amr_stream(tMMFILE_AMR_HANDLE* pData) +int _parse_amr_stream(tMMFILE_AMR_HANDLE *pData) { int frameLen = 0; unsigned char amrMode = 0; @@ -191,19 +190,19 @@ int _parse_amr_stream(tMMFILE_AMR_HANDLE* pData) int pos; long long sum_bitrate = 0; long long frames_bitrate = 0; - - buf = mmfile_malloc (AMR_MAX_READ_BUF_SZ); + + buf = mmfile_malloc(AMR_MAX_READ_BUF_SZ); if (!buf) { - debug_error ("failed to memory allocaion.\n"); + debug_error("failed to memory allocaion.\n"); return MMFILE_AMR_PARSER_FAIL; } for (readed = 0;;) { - readed = mmfile_read (pData->hFile, buf, AMR_MAX_READ_BUF_SZ); + readed = mmfile_read(pData->hFile, buf, AMR_MAX_READ_BUF_SZ); if (readed <= 0) break; for (p = buf, pos = 0;;) { - amrMode = AMR_GET_MODE ((*(char *)p)); + amrMode = AMR_GET_MODE((*(char *)p)); frameLen = AmrModeConfigTable[pData->amrFormat][amrMode].frameSize; sum_bitrate += AmrModeConfigTable[pData->amrFormat][amrMode].bitRate; pData->numFrames++; @@ -214,18 +213,18 @@ int _parse_amr_stream(tMMFILE_AMR_HANDLE* pData) if (pos == readed) { break; } else if (pos > readed) { - mmfile_seek (pData->hFile, (pos - readed), MMFILE_SEEK_CUR); + mmfile_seek(pData->hFile, (pos - readed), MMFILE_SEEK_CUR); break; } } } - mmfile_free (buf); + mmfile_free(buf); - pData->duration = pData->numFrames * MMFILE_AMR_FRAME_DUR; + pData->duration = pData->numFrames * MMFILE_AMR_FRAME_DUR; pData->frameRate = 1000 / MMFILE_AMR_FRAME_DUR; - if(frames_bitrate) { + if (frames_bitrate) { pData->bitRate = sum_bitrate / frames_bitrate; } @@ -233,142 +232,141 @@ int _parse_amr_stream(tMMFILE_AMR_HANDLE* pData) } -int mmfile_amrparser_open (MMFileAMRHandle *handle, const char *filenamec) +int mmfile_amrparser_open(MMFileAMRHandle *handle, const char *filenamec) { - tMMFILE_AMR_HANDLE *privateData = NULL; - int ret = 0; - - if (NULL == filenamec || NULL == handle) { - debug_error ("file source is NULL\n"); - return MMFILE_AMR_PARSER_FAIL; - } - - privateData = mmfile_malloc (sizeof(tMMFILE_AMR_HANDLE)); - if (NULL == privateData) { - debug_error ("file source is NULL\n"); - return MMFILE_AMR_PARSER_FAIL; - } - - /* Initialize the members of handle */ - _amr_init_handle(privateData); - - ret = mmfile_open (&privateData->hFile, filenamec, MMFILE_RDONLY); - if(ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exception; - } - - mmfile_seek (privateData->hFile, 0, MMFILE_SEEK_END); - privateData->fileSize= mmfile_tell(privateData->hFile); - mmfile_seek (privateData->hFile, 0, MMFILE_SEEK_SET); - - if(privateData->fileSize < MMFILE_AMR_MIN_HEADER_SIZE) { - debug_error("Too small file to parse!!\n"); - goto exception; - } - - ret = _parse_amr_header(privateData); - if(ret == MMFILE_AMR_PARSER_FAIL) { - debug_error("Invalid AMR header\n"); - goto exception; - } - - if(privateData->amrChannelType != AMR_CHANNEL_TYPE_SINGLE) { - debug_error("Unsupported channel mode\n"); /*Need to study AMR_Format.txt, Pg:36*/ - goto exception; - } - -#ifdef __MMFILE_TEST_MODE__ - debug_msg("AMR Format Type: %s\n", \ - privateData->amrFormat == AMR_FORMAT_NB? "AMR-NB":"AMR-WB"); + tMMFILE_AMR_HANDLE *privateData = NULL; + int ret = 0; + + if (NULL == filenamec || NULL == handle) { + debug_error("file source is NULL\n"); + return MMFILE_AMR_PARSER_FAIL; + } + + privateData = mmfile_malloc(sizeof(tMMFILE_AMR_HANDLE)); + if (NULL == privateData) { + debug_error("file source is NULL\n"); + return MMFILE_AMR_PARSER_FAIL; + } + + /* Initialize the members of handle */ + _amr_init_handle(privateData); + + ret = mmfile_open(&privateData->hFile, filenamec, MMFILE_RDONLY); + if (ret == MMFILE_UTIL_FAIL) { + debug_error("error: mmfile_open\n"); + goto exception; + } + + mmfile_seek(privateData->hFile, 0, MMFILE_SEEK_END); + privateData->fileSize = mmfile_tell(privateData->hFile); + mmfile_seek(privateData->hFile, 0, MMFILE_SEEK_SET); + + if (privateData->fileSize < MMFILE_AMR_MIN_HEADER_SIZE) { + debug_error("Too small file to parse!!\n"); + goto exception; + } + + ret = _parse_amr_header(privateData); + if (ret == MMFILE_AMR_PARSER_FAIL) { + debug_error("Invalid AMR header\n"); + goto exception; + } + + if (privateData->amrChannelType != AMR_CHANNEL_TYPE_SINGLE) { + debug_error("Unsupported channel mode\n"); /*Need to study AMR_Format.txt, Pg:36*/ + goto exception; + } + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("AMR Format Type: %s\n", \ + privateData->amrFormat == AMR_FORMAT_NB ? "AMR-NB" : "AMR-WB"); #endif - *handle = privateData; + *handle = privateData; + + return MMFILE_AMR_PARSER_SUCCESS; - return MMFILE_AMR_PARSER_SUCCESS; - exception: - if (privateData) { - mmfile_close (privateData->hFile); - mmfile_free (privateData); - *handle = NULL; - } - return MMFILE_AMR_PARSER_FAIL; - + if (privateData) { + mmfile_close(privateData->hFile); + mmfile_free(privateData); + *handle = NULL; + } + return MMFILE_AMR_PARSER_FAIL; + } -int mmfile_amrparser_get_stream_info (MMFileAMRHandle handle, tMMFILE_AMR_STREAM_INFO *amrinfo) +int mmfile_amrparser_get_stream_info(MMFileAMRHandle handle, tMMFILE_AMR_STREAM_INFO *amrinfo) { - tMMFILE_AMR_HANDLE *privateData = NULL; - int ret; - - if (NULL == handle || NULL == amrinfo) { - debug_error ("handle is NULL\n"); - return MMFILE_AMR_PARSER_FAIL; - } - - privateData = (tMMFILE_AMR_HANDLE *) handle; - - mmfile_seek(privateData->hFile, privateData->streamOffset, MMFILE_SEEK_SET); - - ret = _parse_amr_stream(privateData); - if(ret == MMFILE_AMR_PARSER_FAIL) { - debug_error("Error in parsing the stream\n"); - return ret; - } - - amrinfo->duration = privateData->duration; - amrinfo->fileSize = privateData->fileSize; - amrinfo->bitRate = privateData->bitRate; - amrinfo->frameRate = privateData->frameRate; - amrinfo->numAudioChannels = 1; - amrinfo->numTracks = 1; - - if(privateData->amrFormat == AMR_FORMAT_NB) { - amrinfo->samplingRate = AMR_NB_SAMPLES_PER_SEC; - } - else { - amrinfo->samplingRate = AMR_WB_SAMPLES_PER_SEC; - } - - return MMFILE_AMR_PARSER_SUCCESS; + tMMFILE_AMR_HANDLE *privateData = NULL; + int ret; + + if (NULL == handle || NULL == amrinfo) { + debug_error("handle is NULL\n"); + return MMFILE_AMR_PARSER_FAIL; + } + + privateData = (tMMFILE_AMR_HANDLE *) handle; + + mmfile_seek(privateData->hFile, privateData->streamOffset, MMFILE_SEEK_SET); + + ret = _parse_amr_stream(privateData); + if (ret == MMFILE_AMR_PARSER_FAIL) { + debug_error("Error in parsing the stream\n"); + return ret; + } + + amrinfo->duration = privateData->duration; + amrinfo->fileSize = privateData->fileSize; + amrinfo->bitRate = privateData->bitRate; + amrinfo->frameRate = privateData->frameRate; + amrinfo->numAudioChannels = 1; + amrinfo->numTracks = 1; + + if (privateData->amrFormat == AMR_FORMAT_NB) { + amrinfo->samplingRate = AMR_NB_SAMPLES_PER_SEC; + } else { + amrinfo->samplingRate = AMR_WB_SAMPLES_PER_SEC; + } + + return MMFILE_AMR_PARSER_SUCCESS; } -int mmfile_amrparser_close (MMFileAMRHandle handle) +int mmfile_amrparser_close(MMFileAMRHandle handle) { - tMMFILE_AMR_HANDLE *privateData = NULL; + tMMFILE_AMR_HANDLE *privateData = NULL; + + if (NULL == handle) { + debug_error("handle is NULL\n"); + return MMFILE_AMR_PARSER_FAIL; + } - if (NULL == handle) { - debug_error ("handle is NULL\n"); - return MMFILE_AMR_PARSER_FAIL; - } + privateData = (tMMFILE_AMR_HANDLE *) handle; - privateData = (tMMFILE_AMR_HANDLE *) handle; - - mmfile_close(privateData->hFile); + mmfile_close(privateData->hFile); - return MMFILE_AMR_PARSER_SUCCESS; + return MMFILE_AMR_PARSER_SUCCESS; } - - - + + + /* mm plugin interface */ -int mmfile_format_read_stream_amr (MMFileFormatContext *formatContext); -int mmfile_format_read_frame_amr (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); -int mmfile_format_read_tag_amr (MMFileFormatContext *formatContext); -int mmfile_format_close_amr (MMFileFormatContext *formatContext); +int mmfile_format_read_stream_amr(MMFileFormatContext *formatContext); +int mmfile_format_read_frame_amr(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); +int mmfile_format_read_tag_amr(MMFileFormatContext *formatContext); +int mmfile_format_close_amr(MMFileFormatContext *formatContext); EXPORT_API -int mmfile_format_open_amr (MMFileFormatContext *formatContext) +int mmfile_format_open_amr(MMFileFormatContext *formatContext) { MMFileAMRHandle handle = NULL; int res = MMFILE_FORMAT_FAIL; if (NULL == formatContext || NULL == formatContext->uriFileName) { - debug_error ("error: mmfile_format_open_amr\n"); + debug_error("error: mmfile_format_open_amr\n"); return MMFILE_FORMAT_FAIL; } @@ -380,9 +378,9 @@ int mmfile_format_open_amr (MMFileFormatContext *formatContext) formatContext->videoTotalTrackNum = 0; formatContext->audioTotalTrackNum = 1; - res = mmfile_amrparser_open (&handle, formatContext->uriFileName); + res = mmfile_amrparser_open(&handle, formatContext->uriFileName); if (MMFILE_AMR_PARSER_FAIL == res) { - debug_error ("mmfile_amrparser_open\n"); + debug_error("mmfile_amrparser_open\n"); return MMFILE_FORMAT_FAIL; } @@ -392,110 +390,110 @@ int mmfile_format_open_amr (MMFileFormatContext *formatContext) } EXPORT_API -int mmfile_format_read_stream_amr (MMFileFormatContext *formatContext) +int mmfile_format_read_stream_amr(MMFileFormatContext *formatContext) { - MMFileAMRHandle handle = NULL; - tMMFILE_AMR_STREAM_INFO amrinfo = {0,}; - MMFileFormatStream *audioStream = NULL; - - int ret = MMFILE_FORMAT_FAIL; - - if (NULL == formatContext ) { - debug_error ("error: invalid params\n"); - ret = MMFILE_FORMAT_FAIL; - goto exception; - } - - handle = formatContext->privateFormatData; - - ret = mmfile_amrparser_get_stream_info (handle, &amrinfo); - if (MMFILE_FORMAT_SUCCESS != ret) { - debug_error ("error: mmfile_amrparser_get_stream_info\n"); - ret = MMFILE_FORMAT_FAIL; - goto exception; - } - - formatContext->duration = amrinfo.duration; - formatContext->videoStreamId = -1; - formatContext->videoTotalTrackNum = 0; - formatContext->audioTotalTrackNum = amrinfo.numTracks; - formatContext->nbStreams = 1; - - audioStream = mmfile_malloc (sizeof(MMFileFormatStream)); - if (NULL == audioStream) { - debug_error ("error: calloc_audiostream\n"); - ret = MMFILE_FORMAT_FAIL; - goto exception; - } - - audioStream->streamType = MMFILE_AUDIO_STREAM; - audioStream->codecId = MM_AUDIO_CODEC_AMR; - audioStream->bitRate = amrinfo.bitRate; - audioStream->framePerSec = amrinfo.frameRate; - audioStream->width = 0; - audioStream->height = 0; - audioStream->nbChannel = amrinfo.numAudioChannels; - audioStream->samplePerSec = amrinfo.samplingRate; - formatContext->streams[MMFILE_AUDIO_STREAM] = audioStream; - + MMFileAMRHandle handle = NULL; + tMMFILE_AMR_STREAM_INFO amrinfo = {0, }; + MMFileFormatStream *audioStream = NULL; + + int ret = MMFILE_FORMAT_FAIL; + + if (NULL == formatContext) { + debug_error("error: invalid params\n"); + ret = MMFILE_FORMAT_FAIL; + goto exception; + } + + handle = formatContext->privateFormatData; + + ret = mmfile_amrparser_get_stream_info(handle, &amrinfo); + if (MMFILE_FORMAT_SUCCESS != ret) { + debug_error("error: mmfile_amrparser_get_stream_info\n"); + ret = MMFILE_FORMAT_FAIL; + goto exception; + } + + formatContext->duration = amrinfo.duration; + formatContext->videoStreamId = -1; + formatContext->videoTotalTrackNum = 0; + formatContext->audioTotalTrackNum = amrinfo.numTracks; + formatContext->nbStreams = 1; + + audioStream = mmfile_malloc(sizeof(MMFileFormatStream)); + if (NULL == audioStream) { + debug_error("error: calloc_audiostream\n"); + ret = MMFILE_FORMAT_FAIL; + goto exception; + } + + audioStream->streamType = MMFILE_AUDIO_STREAM; + audioStream->codecId = MM_AUDIO_CODEC_AMR; + audioStream->bitRate = amrinfo.bitRate; + audioStream->framePerSec = amrinfo.frameRate; + audioStream->width = 0; + audioStream->height = 0; + audioStream->nbChannel = amrinfo.numAudioChannels; + audioStream->samplePerSec = amrinfo.samplingRate; + formatContext->streams[MMFILE_AUDIO_STREAM] = audioStream; + #ifdef __MMFILE_TEST_MODE__ - mmfile_format_print_contents (formatContext); + mmfile_format_print_contents(formatContext); #endif - return MMFILE_FORMAT_SUCCESS; + return MMFILE_FORMAT_SUCCESS; exception: - return ret; + return ret; } EXPORT_API -int mmfile_format_read_tag_amr (MMFileFormatContext *formatContext) +int mmfile_format_read_tag_amr(MMFileFormatContext *formatContext) { - return MMFILE_FORMAT_SUCCESS; + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_read_frame_amr (MMFileFormatContext *formatContext, - unsigned int timestamp, MMFileFormatFrame *frame) +int mmfile_format_read_frame_amr(MMFileFormatContext *formatContext, + unsigned int timestamp, MMFileFormatFrame *frame) { - debug_error ("error: mmfile_format_read_frame_amr, no handling\n"); - - return MMFILE_FORMAT_FAIL; + debug_error("error: mmfile_format_read_frame_amr, no handling\n"); + + return MMFILE_FORMAT_FAIL; } EXPORT_API -int mmfile_format_close_amr (MMFileFormatContext *formatContext) +int mmfile_format_close_amr(MMFileFormatContext *formatContext) { - MMFileAMRHandle handle = NULL; - int ret = MMFILE_FORMAT_FAIL; - - if (NULL == formatContext ) { - debug_error ("error: invalid params\n"); - return MMFILE_FORMAT_FAIL; - } - - handle = formatContext->privateFormatData; - - if(NULL != handle) { - ret = mmfile_amrparser_close(handle); - if(ret == MMFILE_AMR_PARSER_FAIL) { - debug_error("error: mmfile_format_close_amr\n"); - } - } - - if(formatContext->streams[MMFILE_AUDIO_STREAM]) { - mmfile_free(formatContext->streams[MMFILE_AUDIO_STREAM]); - formatContext->streams[MMFILE_AUDIO_STREAM] = NULL; - } - - formatContext->ReadStream = NULL; - formatContext->ReadFrame = NULL; - formatContext->ReadTag = NULL; - formatContext->Close = NULL; - - return MMFILE_FORMAT_SUCCESS; + MMFileAMRHandle handle = NULL; + int ret = MMFILE_FORMAT_FAIL; + + if (NULL == formatContext) { + debug_error("error: invalid params\n"); + return MMFILE_FORMAT_FAIL; + } + + handle = formatContext->privateFormatData; + + if (NULL != handle) { + ret = mmfile_amrparser_close(handle); + if (ret == MMFILE_AMR_PARSER_FAIL) { + debug_error("error: mmfile_format_close_amr\n"); + } + } + + if (formatContext->streams[MMFILE_AUDIO_STREAM]) { + mmfile_free(formatContext->streams[MMFILE_AUDIO_STREAM]); + formatContext->streams[MMFILE_AUDIO_STREAM] = NULL; + } + + formatContext->ReadStream = NULL; + formatContext->ReadFrame = NULL; + formatContext->ReadTag = NULL; + formatContext->Close = NULL; + + return MMFILE_FORMAT_SUCCESS; } diff --git a/formats/ffmpeg/mm_file_format_dummy.c b/formats/ffmpeg/mm_file_format_dummy.c index b8f7a19..9ecd927 100755 --- a/formats/ffmpeg/mm_file_format_dummy.c +++ b/formats/ffmpeg/mm_file_format_dummy.c @@ -24,7 +24,7 @@ #include <mm_error.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_format_private.h" #include "mm_file_format_dummy.h" @@ -34,58 +34,57 @@ /* plugin manadatory API */ -int mmfile_format_read_stream_dummy (MMFileFormatContext *formatContext); -int mmfile_format_read_frame_dummy (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); -int mmfile_format_read_tag_dummy (MMFileFormatContext *formatContext); -int mmfile_format_close_dummy (MMFileFormatContext *formatContext); +int mmfile_format_read_stream_dummy(MMFileFormatContext *formatContext); +int mmfile_format_read_frame_dummy(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); +int mmfile_format_read_tag_dummy(MMFileFormatContext *formatContext); +int mmfile_format_close_dummy(MMFileFormatContext *formatContext); EXPORT_API -int mmfile_format_open_dummy (MMFileFormatContext *formatContext) +int mmfile_format_open_dummy(MMFileFormatContext *formatContext) { - debug_warning ("called mmfile_format_open_dummy\n"); - - formatContext->ReadStream = mmfile_format_read_stream_dummy; - formatContext->ReadFrame = mmfile_format_read_frame_dummy; - formatContext->ReadTag = mmfile_format_read_tag_dummy; - formatContext->Close = mmfile_format_close_dummy; - - return MMFILE_FORMAT_SUCCESS; + debug_warning("called mmfile_format_open_dummy\n"); + + formatContext->ReadStream = mmfile_format_read_stream_dummy; + formatContext->ReadFrame = mmfile_format_read_frame_dummy; + formatContext->ReadTag = mmfile_format_read_tag_dummy; + formatContext->Close = mmfile_format_close_dummy; + + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_read_stream_dummy (MMFileFormatContext * formatContext) +int mmfile_format_read_stream_dummy(MMFileFormatContext *formatContext) { - debug_warning ("called mmfile_format_read_stream_dummy\n"); - return MMFILE_FORMAT_SUCCESS; + debug_warning("called mmfile_format_read_stream_dummy\n"); + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_read_frame_dummy (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) +int mmfile_format_read_frame_dummy(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) { - debug_warning ("called mmfile_format_read_frame_dummy\n"); - return MMFILE_FORMAT_SUCCESS; + debug_warning("called mmfile_format_read_frame_dummy\n"); + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_read_tag_dummy (MMFileFormatContext *formatContext) +int mmfile_format_read_tag_dummy(MMFileFormatContext *formatContext) { - debug_warning ("called mmfile_format_read_tag_dummy\n"); - return MMFILE_FORMAT_SUCCESS; + debug_warning("called mmfile_format_read_tag_dummy\n"); + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_close_dummy (MMFileFormatContext *formatContext) +int mmfile_format_close_dummy(MMFileFormatContext *formatContext) { - debug_warning ("called mmfile_format_close_dummy\n"); - if (formatContext) - { - formatContext->ReadStream = NULL; - formatContext->ReadFrame = NULL; - formatContext->ReadTag = NULL; - formatContext->Close = NULL; - } - - return MMFILE_FORMAT_SUCCESS; + debug_warning("called mmfile_format_close_dummy\n"); + if (formatContext) { + formatContext->ReadStream = NULL; + formatContext->ReadFrame = NULL; + formatContext->ReadTag = NULL; + formatContext->Close = NULL; + } + + return MMFILE_FORMAT_SUCCESS; } diff --git a/formats/ffmpeg/mm_file_format_ffmpeg.c b/formats/ffmpeg/mm_file_format_ffmpeg.c index 2091b97..9309669 100755 --- a/formats/ffmpeg/mm_file_format_ffmpeg.c +++ b/formats/ffmpeg/mm_file_format_ffmpeg.c @@ -18,11 +18,12 @@ * limitations under the License. * */ - + #include <string.h> #include <stdlib.h> #include <libavformat/avformat.h> +#include <libavformat/url.h> #include <libavcodec/avcodec.h> #include <libavutil/samplefmt.h> #ifdef __MMFILE_FFMPEG_V085__ @@ -30,52 +31,50 @@ #endif #include <mm_error.h> #include <mm_types.h> - -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_formats.h" #include "mm_file_utils.h" #include "mm_file_format_ffmpeg.h" - #include "mm_file_format_ffmpeg_mem.h" #include <sys/time.h> #define _SHORT_MEDIA_LIMIT 2000 /* under X seconds duration*/ -extern int img_convert (AVPicture *dst, int dst_pix_fmt, const AVPicture *src, int src_pix_fmt,int src_width, int src_height); +extern int img_convert(AVPicture *dst, int dst_pix_fmt, const AVPicture *src, int src_pix_fmt, int src_width, int src_height); /* internal functions */ -static int _is_good_pgm (unsigned char *buf, int wrap, int xsize, int ysize); +static int _is_good_pgm(unsigned char *buf, int wrap, int xsize, int ysize); #ifdef MMFILE_FORMAT_DEBUG_DUMP -static void _save_pgm (unsigned char *buf, int wrap, int xsize, int ysize, char *filename); +static void _save_pgm(unsigned char *buf, int wrap, int xsize, int ysize, char *filename); #endif #ifdef __MMFILE_TEST_MODE__ -static void _dump_av_packet (AVPacket *pkt); +static void _dump_av_packet(AVPacket *pkt); #endif -static int _get_video_fps (int frame_cnt, int duration, AVRational r_frame_rate, int is_roundup); -static int _get_first_good_video_frame (AVFormatContext *pFormatCtx, AVCodecContext *pCodecCtx, int videoStream, AVFrame **pFrame, int cdis); +static int _get_video_fps(int frame_cnt, int duration, AVRational r_frame_rate, int is_roundup); +static int _get_first_good_video_frame(AVFormatContext *pFormatCtx, AVCodecContext *pCodecCtx, int videoStream, AVFrame **pFrame, int cdis); -static int ConvertVideoCodecEnum (int AVVideoCodecID); -static int ConvertAudioCodecEnum (int AVAudioCodecID); +static int ConvertVideoCodecEnum(int AVVideoCodecID); +static int ConvertAudioCodecEnum(int AVAudioCodecID); /* plugin manadatory API */ -int mmfile_format_read_stream_ffmpg (MMFileFormatContext * formatContext); -int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); -int mmfile_format_read_tag_ffmpg (MMFileFormatContext *formatContext); -int mmfile_format_close_ffmpg (MMFileFormatContext *formatContext); -static int getMimeType(int formatId, char *mimeType); +int mmfile_format_read_stream_ffmpg(MMFileFormatContext *formatContext); +int mmfile_format_read_frame_ffmpg(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); +int mmfile_format_read_tag_ffmpg(MMFileFormatContext *formatContext); +int mmfile_format_close_ffmpg(MMFileFormatContext *formatContext); +static int getMimeType(int formatId, char *mimeType, int buf_size); EXPORT_API -int mmfile_format_open_ffmpg (MMFileFormatContext *formatContext) +int mmfile_format_open_ffmpg(MMFileFormatContext *formatContext) { AVFormatContext *pFormatCtx = NULL; AVInputFormat *grab_iformat = NULL; int ret = 0; - int i; - char ffmpegFormatName[MMFILE_FILE_FMT_MAX_LEN] = {0,}; - char mimeType[MMFILE_MIMETYPE_MAX_LEN] = {0,}; + unsigned int i; + char ffmpegFormatName[MMFILE_FILE_FMT_MAX_LEN] = {0, }; + char mimeType[MMFILE_MIMETYPE_MAX_LEN] = {0, }; formatContext->ReadStream = mmfile_format_read_stream_ffmpg; formatContext->ReadFrame = mmfile_format_read_frame_ffmpg; @@ -83,7 +82,7 @@ int mmfile_format_open_ffmpg (MMFileFormatContext *formatContext) formatContext->Close = mmfile_format_close_ffmpg; #ifdef __MMFILE_TEST_MODE__ - debug_msg ("ffmpeg version: %d\n", avformat_version ()); + debug_msg("ffmpeg version: %d\n", avformat_version()); /** * FFMPEG DEBUG LEVEL * AV_LOG_QUIET -1 @@ -93,46 +92,46 @@ int mmfile_format_open_ffmpg (MMFileFormatContext *formatContext) * AV_LOG_INFO 1 * AV_LOG_VERBOSE 1 * AV_LOG_DEBUG 2 - */ - av_log_set_level (AV_LOG_DEBUG); + */ + av_log_set_level(AV_LOG_DEBUG); #else - av_log_set_level (AV_LOG_QUIET); + av_log_set_level(AV_LOG_QUIET); #endif av_register_all(); if (formatContext->filesrc->type == MM_FILE_SRC_TYPE_MEMORY) { -#ifdef __MMFILE_FFMPEG_V085__ - ffurl_register_protocol(&MMFileMEMProtocol, sizeof (URLProtocol)); +#if (defined __MMFILE_FFMPEG_V085__ && !defined __MMFILE_LIBAV_VERSION__) + ffurl_register_protocol(&MMFileMEMProtocol, sizeof(URLProtocol)); #else - register_protocol (&MMFileMEMProtocol); -#endif - if(getMimeType(formatContext->filesrc->memory.format,mimeType)< 0) { - debug_error ("error: Error in MIME Type finding\n"); + ffurl_register_protocol(&MMFileMEMProtocol); +#endif + if (getMimeType(formatContext->filesrc->memory.format, mimeType, MMFILE_MIMETYPE_MAX_LEN) < 0) { + debug_error("error: Error in MIME Type finding\n"); return MMFILE_FORMAT_FAIL; } - memset (ffmpegFormatName, 0x00, MMFILE_FILE_FMT_MAX_LEN); - - ret = mmfile_util_get_ffmpeg_format (mimeType,ffmpegFormatName); + memset(ffmpegFormatName, 0x00, MMFILE_FILE_FMT_MAX_LEN); + + ret = mmfile_util_get_ffmpeg_format(mimeType, ffmpegFormatName); if (MMFILE_UTIL_SUCCESS != ret) { - debug_error ("error: mmfile_util_get_ffmpeg_format\n"); + debug_error("error: mmfile_util_get_ffmpeg_format\n"); return MMFILE_FORMAT_FAIL; } - grab_iformat = av_find_input_format (ffmpegFormatName); + grab_iformat = av_find_input_format(ffmpegFormatName); if (NULL == grab_iformat) { - debug_error ("error: cannot find format\n"); + debug_error("error: cannot find format\n"); goto exception; } #ifdef __MMFILE_FFMPEG_V085__ - ret = avformat_open_input (&pFormatCtx, formatContext->uriFileName, grab_iformat, NULL); + ret = avformat_open_input(&pFormatCtx, formatContext->uriFileName, grab_iformat, NULL); #else - ret = av_open_input_file (&pFormatCtx, formatContext->uriFileName, grab_iformat, 0, NULL); + 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); @@ -140,7 +139,7 @@ int mmfile_format_open_ffmpg (MMFileFormatContext *formatContext) } formatContext->privateFormatData = pFormatCtx; } - + if (formatContext->filesrc->type == MM_FILE_SRC_TYPE_FILE) { #ifdef __MMFILE_FFMPEG_V085__ ret = avformat_open_input(&pFormatCtx, formatContext->filesrc->file.path, NULL, NULL); @@ -151,71 +150,72 @@ int mmfile_format_open_ffmpg (MMFileFormatContext *formatContext) debug_error("error: cannot open %s %d\n", formatContext->filesrc->file.path, ret); goto exception; } + formatContext->privateFormatData = pFormatCtx; } - if (!pFormatCtx || !(pFormatCtx->nb_streams > 0)) { - debug_warning ("failed to find av stream. maybe corrupted data.\n"); + if (!pFormatCtx/* || !(pFormatCtx->nb_streams > 0)*/) { + debug_warning("failed to find av stream. maybe corrupted data.\n"); goto exception; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("number of stream: %d\n", pFormatCtx->nb_streams); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("number of stream: %d\n", pFormatCtx->nb_streams); +#endif formatContext->videoTotalTrackNum = 0; formatContext->audioTotalTrackNum = 0; - for(i = 0; i < pFormatCtx->nb_streams; i++) { -#ifdef __MMFILE_FFMPEG_V085__ + for (i = 0; i < pFormatCtx->nb_streams; i++) { +#ifdef __MMFILE_FFMPEG_V085__ if (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("FFMPEG video codec id: 0x%08X\n", pFormatCtx->streams[i]->codec->codec_id); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("FFMPEG video codec id: 0x%08X\n", pFormatCtx->streams[i]->codec->codec_id); +#endif AVPacket pkt = pFormatCtx->streams[i]->attached_pic; - if((pkt.data != NULL) && (pkt.size > 0)) + if ((pkt.data != NULL) && (pkt.size > 0)) continue; - //eventhough codec_id is 0, avformat_find_stream_info() can find proper codec_id. + /*eventhough codec_id is 0, avformat_find_stream_info() can find proper codec_id. */ formatContext->videoTotalTrackNum += 1; } if (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("FFMPEG audio codec id: 0x%08X\n", pFormatCtx->streams[i]->codec->codec_id); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("FFMPEG audio codec id: 0x%08X\n", pFormatCtx->streams[i]->codec->codec_id); +#endif formatContext->audioTotalTrackNum += 1; } -#else - if (pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("FFMPEG video codec id: 0x%08X\n", pFormatCtx->streams[i]->codec->codec_id); - #endif +#else + if (pFormatCtx->streams[i]->codec->codec_type == AV_CODEC_TYPE_VIDEO) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("FFMPEG video codec id: 0x%08X\n", pFormatCtx->streams[i]->codec->codec_id); +#endif formatContext->videoTotalTrackNum += 1; } - if (pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("FFMPEG audio codec id: 0x%08X\n", pFormatCtx->streams[i]->codec->codec_id); - #endif + if (pFormatCtx->streams[i]->codec->codec_type == AV_CODEC_TYPE_AUDIO) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("FFMPEG audio codec id: 0x%08X\n", pFormatCtx->streams[i]->codec->codec_id); +#endif formatContext->audioTotalTrackNum += 1; } #endif } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("format: %s (%s)\n", pFormatCtx->iformat->name, pFormatCtx->iformat->long_name); - #ifdef __MMFILE_FFMPEG_V085__ - av_dump_format (pFormatCtx, 0, formatContext->filesrc->file.path, 0); - #else - dump_format (pFormatCtx, 0, formatContext->filesrc->file.path, 0); - #endif - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("format: %s (%s)\n", pFormatCtx->iformat->name, pFormatCtx->iformat->long_name); +#ifdef __MMFILE_FFMPEG_V085__ + av_dump_format(pFormatCtx, 0, formatContext->filesrc->file.path, 0); +#else + dump_format(pFormatCtx, 0, formatContext->filesrc->file.path, 0); +#endif +#endif return MMFILE_FORMAT_SUCCESS; exception: /* fail to get content information */ - mmfile_format_close_ffmpg (formatContext); + mmfile_format_close_ffmpg(formatContext); formatContext->privateFormatData = NULL; return MMFILE_FORMAT_FAIL; @@ -242,7 +242,7 @@ static bool __check_uhqa(int sample_rate, enum AVSampleFormat sample_fmt_info) } EXPORT_API -int mmfile_format_read_stream_ffmpg (MMFileFormatContext * formatContext) +int mmfile_format_read_stream_ffmpg(MMFileFormatContext *formatContext) { AVFormatContext *pFormatCtx = NULL; AVCodecContext *pAudioCodecCtx = NULL; @@ -253,7 +253,7 @@ int mmfile_format_read_stream_ffmpg (MMFileFormatContext * formatContext) int ret = 0; if (NULL == formatContext || NULL == formatContext->privateFormatData) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_FORMAT_FAIL; } @@ -266,47 +266,48 @@ int mmfile_format_read_stream_ffmpg (MMFileFormatContext * formatContext) */ #ifdef __MMFILE_FFMPEG_V100__ if (formatContext->cdis != 1) - ret = avformat_find_stream_info (pFormatCtx, NULL); + ret = avformat_find_stream_info(pFormatCtx, NULL); else ret = 0; #else - ret = av_find_stream_info (pFormatCtx); + ret = av_find_stream_info(pFormatCtx); #endif - if ( ret < 0 ) { - debug_warning ("failed to find stream info. errcode = %d\n", ret); + if (ret < 0) { + debug_warning("failed to find stream info. errcode = %d\n", ret); goto exception; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("FFMPEG: dur %lld, start %lld\n", pFormatCtx->duration, pFormatCtx->start_time); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("FFMPEG: dur %lld, start %lld\n", pFormatCtx->duration, pFormatCtx->start_time); +#endif /** *@note asf has long duration bug. and Some content's start time is wrong(negative number). */ - if(pFormatCtx->start_time < 0) { - debug_warning ("Wrong Start time = %lld\n", pFormatCtx->start_time); + if (pFormatCtx->start_time < 0) { + debug_warning("Wrong Start time = %lld\n", pFormatCtx->start_time); formatContext->duration = (long long)(pFormatCtx->duration) * 1000 / AV_TIME_BASE; - } - else { + } else { formatContext->duration = (long long)(pFormatCtx->duration + pFormatCtx->start_time) * 1000 / AV_TIME_BASE; } formatContext->videoStreamId = -1; formatContext->audioStreamId = -1; formatContext->nbStreams = 0; + formatContext->videoTotalTrackNum = 0; + formatContext->audioTotalTrackNum = 0; - int i = 0; - for ( i = 0; i < pFormatCtx->nb_streams; i++ ) { -#ifdef __MMFILE_FFMPEG_V085__ - if ( pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) { + unsigned int i = 0; + for (i = 0; i < pFormatCtx->nb_streams; i++) { +#ifdef __MMFILE_FFMPEG_V085__ + if (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) { #else - if ( pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO) { + if (pFormatCtx->streams[i]->codec->codec_type == AV_CODEC_TYPE_VIDEO) { #endif if (formatContext->videoStreamId == -1) { - videoStream = mmfile_malloc (sizeof(MMFileFormatStream)); + videoStream = mmfile_malloc(sizeof(MMFileFormatStream)); if (NULL == videoStream) { - debug_error ("mmfile_malloc error\n"); + debug_error("mmfile_malloc error\n"); goto exception; } @@ -314,10 +315,11 @@ int mmfile_format_read_stream_ffmpg (MMFileFormatContext * formatContext) formatContext->streams[MMFILE_VIDEO_STREAM] = videoStream; formatContext->nbStreams += 1; formatContext->videoStreamId = i; + formatContext->videoTotalTrackNum += 1; pVideoCodecCtx = pFormatCtx->streams[i]->codec; if (pVideoCodecCtx) { - videoStream->codecId = ConvertVideoCodecEnum (pVideoCodecCtx->codec_id); + videoStream->codecId = ConvertVideoCodecEnum(pVideoCodecCtx->codec_id); if (videoStream->codecId == MM_VIDEO_CODEC_NONE) { debug_error("Proper codec is not found in [%d] stream", i); formatContext->videoStreamId = -1; @@ -332,29 +334,34 @@ int mmfile_format_read_stream_ffmpg (MMFileFormatContext * formatContext) * 1. try to get average fps of video stream. * 2. if (1) failed, try to get fps of media container. */ - videoStream->framePerSec = _get_video_fps (pFormatCtx->streams[i]->nb_frames, - pFormatCtx->streams[i]->duration, - pFormatCtx->streams[i]->time_base, - 1); - - if (videoStream->framePerSec == 0) - videoStream->framePerSec = av_q2d (pFormatCtx->streams[i]->r_frame_rate); + videoStream->framePerSec = _get_video_fps(pFormatCtx->streams[i]->nb_frames, + pFormatCtx->streams[i]->duration, + pFormatCtx->streams[i]->time_base, + 1); + + if (videoStream->framePerSec == 0) { +#ifndef __MMFILE_LIBAV_VERSION__ + videoStream->framePerSec = av_q2d(pFormatCtx->streams[i]->r_frame_rate); +#else + videoStream->framePerSec = av_q2d(pFormatCtx->streams[i]->avg_frame_rate); +#endif + } videoStream->width = pVideoCodecCtx->width; videoStream->height = pVideoCodecCtx->height; videoStream->bitRate = pVideoCodecCtx->bit_rate; } } - } + } #ifdef __MMFILE_FFMPEG_V085__ - else if ( pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO ) { + else if (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) { #else - else if ( pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO ) { + else if (pFormatCtx->streams[i]->codec->codec_type == AV_CODEC_TYPE_AUDIO) { #endif if (formatContext->audioStreamId == -1) { - audioStream = mmfile_malloc (sizeof(MMFileFormatStream)); + audioStream = mmfile_malloc(sizeof(MMFileFormatStream)); if (NULL == audioStream) { - debug_error ("mmfile_malloc error\n"); + debug_error("mmfile_malloc error\n"); goto exception; } @@ -362,47 +369,51 @@ int mmfile_format_read_stream_ffmpg (MMFileFormatContext * formatContext) formatContext->streams[MMFILE_AUDIO_STREAM] = audioStream; formatContext->nbStreams += 1; formatContext->audioStreamId = i; + formatContext->audioTotalTrackNum += 1; pAudioCodecCtx = pFormatCtx->streams[i]->codec; if (pAudioCodecCtx) { - audioStream->codecId = ConvertAudioCodecEnum (pAudioCodecCtx->codec_id); + audioStream->codecId = ConvertAudioCodecEnum(pAudioCodecCtx->codec_id); audioStream->bitRate = pAudioCodecCtx->bit_rate; audioStream->nbChannel = pAudioCodecCtx->channels; audioStream->samplePerSec = pAudioCodecCtx->sample_rate; - audioStream->bitPerSample = pAudioCodecCtx->bits_per_raw_sample; + if (audioStream->codecId == MM_AUDIO_CODEC_FLAC) + audioStream->bitPerSample = pAudioCodecCtx->bits_per_raw_sample; + else + audioStream->bitPerSample = pAudioCodecCtx->bits_per_coded_sample; audioStream->is_uhqa = __check_uhqa(audioStream->samplePerSec, pFormatCtx->streams[i]->codec->sample_fmt); } } } } - if ( formatContext->nbStreams == 0 ) { + if (formatContext->nbStreams == 0) { debug_error("error: there is no audio and video track\n"); goto exception; } - #ifdef __MMFILE_TEST_MODE__ - mmfile_format_print_contents (formatContext); - #endif +#ifdef __MMFILE_TEST_MODE__ + mmfile_format_print_contents(formatContext); +#endif return MMFILE_FORMAT_SUCCESS; exception: if (videoStream) { - mmfile_free (videoStream); + mmfile_free(videoStream); formatContext->streams[MMFILE_VIDEO_STREAM] = NULL; } if (audioStream) { - mmfile_free (audioStream); + mmfile_free(audioStream); formatContext->streams[MMFILE_AUDIO_STREAM] = NULL; } if (pFormatCtx) { #ifdef __MMFILE_FFMPEG_V100__ - avformat_close_input (&pFormatCtx); + avformat_close_input(&pFormatCtx); #else - av_close_input_file (pFormatCtx); + av_close_input_file(pFormatCtx); #endif formatContext->privateFormatData = NULL; } @@ -416,39 +427,39 @@ exception: #define DATA_LENGTH 4 #define POS_OF_MIME_LEN DATA_LENGTH -#define CONVERT_TO_INT(dest, src) {dest = 0; dest |= (0 |src[0] << 24) | (0 | src[1] << 16) | (0 | src[2] << 8) | (0 | src[3]);} +#define CONVERT_TO_INT(dest, src) {dest = 0; dest |= (0 | src[0] << 24) | (0 | src[1] << 16) | (0 | src[2] << 8) | (0 | src[3]);} EXPORT_API -int mmfile_format_read_tag_ffmpg (MMFileFormatContext *formatContext) +int mmfile_format_read_tag_ffmpg(MMFileFormatContext *formatContext) { AVFormatContext *pFormatCtx = NULL; if (NULL == formatContext || NULL == formatContext->privateFormatData) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_FORMAT_FAIL; } pFormatCtx = formatContext->privateFormatData; - if (formatContext->formatType == MM_FILE_FORMAT_3GP ||formatContext->formatType == MM_FILE_FORMAT_MP4) { - MMFileUtilGetMetaDataFromMP4 (formatContext); + if (formatContext->formatType == MM_FILE_FORMAT_3GP || formatContext->formatType == MM_FILE_FORMAT_MP4) { + MMFileUtilGetMetaDataFromMP4(formatContext); } #ifdef __MMFILE_FFMPEG_V085__ -/*metadata extracted by ffmpeg*/ - int idx = 0; + /*metadata extracted by ffmpeg*/ + unsigned int idx = 0; - if(pFormatCtx != NULL) { - for(idx = 0; idx < pFormatCtx->nb_streams + 1; idx++) { + if (pFormatCtx != NULL) { + for (idx = 0; idx < pFormatCtx->nb_streams + 1; idx++) { AVDictionary *metainfo = NULL; AVStream *st = NULL; - if(idx < pFormatCtx->nb_streams) { //Check metadata of normal stream like audio, video, video cover art(cover art saved in new stream). refer to mov_read_covr() in ffmpeg. + if (idx < pFormatCtx->nb_streams) { /*Check metadata of normal stream like audio, video, video cover art(cover art saved in new stream). refer to mov_read_covr() in ffmpeg. */ st = pFormatCtx->streams[idx]; - if(st != NULL) - metainfo = st->metadata; - } else { //Check metadata of Content - if(pFormatCtx->metadata != NULL) { + if (st != NULL) + metainfo = st->metadata; + } else { /*Check metadata of Content */ + if (pFormatCtx->metadata != NULL) { metainfo = pFormatCtx->metadata; } else { continue; @@ -456,79 +467,80 @@ int mmfile_format_read_tag_ffmpg (MMFileFormatContext *formatContext) } /*refer to mov_read_covr() in ffmpeg.*/ - if(st != NULL) { + if (st != NULL) { AVPacket pkt = st->attached_pic; int codec_id = st->codec->codec_id; - if((pkt.data != NULL) && (pkt.size > 0)) { + if ((pkt.data != NULL) && (pkt.size > 0)) { /*Set mime type*/ - if (formatContext->artworkMime) mmfile_free (formatContext->artworkMime); + if (formatContext->artworkMime) mmfile_free(formatContext->artworkMime); - if(codec_id == AV_CODEC_ID_MJPEG) + if (codec_id == AV_CODEC_ID_MJPEG) formatContext->artworkMime = mmfile_strdup("image/jpeg"); - else if(codec_id == AV_CODEC_ID_PNG) + else if (codec_id == AV_CODEC_ID_PNG) formatContext->artworkMime = mmfile_strdup("image/png"); - else if(codec_id == AV_CODEC_ID_BMP) + else if (codec_id == AV_CODEC_ID_BMP) formatContext->artworkMime = mmfile_strdup("image/bmp"); else - debug_error ("Unknown cover type: 0x%x\n", codec_id); + debug_error("Unknown cover type: 0x%x\n", codec_id); /*Copy artwork*/ - if (formatContext->artwork) mmfile_free (formatContext->artwork); + if (formatContext->artwork) mmfile_free(formatContext->artwork); formatContext->artworkSize = pkt.size; - formatContext->artwork = mmfile_malloc (pkt.size); - memcpy (formatContext->artwork, pkt.data, pkt.size); + formatContext->artwork = mmfile_malloc(pkt.size); + if(formatContext->artwork != NULL) + memcpy(formatContext->artwork, pkt.data, pkt.size); } } - if(metainfo != NULL) { + if (metainfo != NULL) { AVDictionaryEntry *tag = NULL; - while((tag=av_dict_get(metainfo, "", tag, AV_DICT_IGNORE_SUFFIX))) { - if(tag->key != NULL) { - if(!strcasecmp(tag->key, "title")) { - if (formatContext->title) free (formatContext->title); - formatContext->title = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "artist")) { - if (formatContext->artist) free (formatContext->artist); - formatContext->artist = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "composer")) { - if (formatContext->composer) free (formatContext->composer); - formatContext->composer = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "album")) { - if (formatContext->album) free (formatContext->album); - formatContext->album = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "album_artist")) { - if (formatContext->album_artist) free (formatContext->album_artist); - formatContext->album_artist = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "copyright")) { - if (formatContext->copyright) free (formatContext->copyright); - formatContext->copyright = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "comment")) { - if (formatContext->comment) free (formatContext->comment); - formatContext->comment = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "description")) { - if (formatContext->description) free (formatContext->description); - formatContext->description = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "genre")) { - if (formatContext->genre) free (formatContext->genre); - formatContext->genre = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "date")) { - if (formatContext->year) free (formatContext->year); - formatContext->year = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "creation_time")) { - if (formatContext->recDate) free (formatContext->recDate); - formatContext->recDate = mmfile_strdup (tag->value); - } else if((!strcasecmp(tag->key, "track")) || (!strcasecmp(tag->key, "tracknumber"))) { - if (formatContext->tagTrackNum) free (formatContext->tagTrackNum); - formatContext->tagTrackNum = mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "lyrics")) { - if (formatContext->unsyncLyrics) free (formatContext->unsyncLyrics); - formatContext->unsyncLyrics= mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "rotate")) { //can be "90", "180", "270" - if (formatContext->rotate) free (formatContext->rotate); - formatContext->rotate= mmfile_strdup (tag->value); - } else if(!strcasecmp(tag->key, "metadata_block_picture")) { + while ((tag = av_dict_get(metainfo, "", tag, AV_DICT_IGNORE_SUFFIX))) { + if (tag->key != NULL) { + if (!strcasecmp(tag->key, "title")) { + if (formatContext->title) free(formatContext->title); + formatContext->title = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "artist")) { + if (formatContext->artist) free(formatContext->artist); + formatContext->artist = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "composer")) { + if (formatContext->composer) free(formatContext->composer); + formatContext->composer = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "album")) { + if (formatContext->album) free(formatContext->album); + formatContext->album = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "album_artist")) { + if (formatContext->album_artist) free(formatContext->album_artist); + formatContext->album_artist = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "copyright")) { + if (formatContext->copyright) free(formatContext->copyright); + formatContext->copyright = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "comment")) { + if (formatContext->comment) free(formatContext->comment); + formatContext->comment = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "description")) { + if (formatContext->description) free(formatContext->description); + formatContext->description = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "genre")) { + if (formatContext->genre) free(formatContext->genre); + formatContext->genre = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "date")) { + if (formatContext->year) free(formatContext->year); + formatContext->year = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "creation_time")) { + if (formatContext->recDate) free(formatContext->recDate); + formatContext->recDate = mmfile_strdup(tag->value); + } else if ((!strcasecmp(tag->key, "track")) || (!strcasecmp(tag->key, "tracknumber"))) { + if (formatContext->tagTrackNum) free(formatContext->tagTrackNum); + formatContext->tagTrackNum = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "lyrics")) { + if (formatContext->unsyncLyrics) free(formatContext->unsyncLyrics); + formatContext->unsyncLyrics = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "rotate")) { /*can be "90", "180", "270" */ + if (formatContext->rotate) free(formatContext->rotate); + formatContext->rotate = mmfile_strdup(tag->value); + } else if (!strcasecmp(tag->key, "metadata_block_picture")) { gsize len = 0; guchar *meta_data = NULL; @@ -562,80 +574,80 @@ int mmfile_format_read_tag_ffmpg (MMFileFormatContext *formatContext) /* set mime type */ current_pos = POS_OF_MIME_LEN + DATA_LENGTH; /*current position is mime type */ - if (formatContext->artworkMime) mmfile_free (formatContext->artworkMime); - formatContext->artworkMime = strndup((const char*)meta_data + current_pos, mime_len); + if (formatContext->artworkMime) mmfile_free(formatContext->artworkMime); + formatContext->artworkMime = strndup((const char *)meta_data + current_pos, mime_len); /* set art work data */ current_pos = mime_len + description_len + (DATA_LENGTH * 8); /*current position is picture data */ - if (formatContext->artwork) mmfile_free (formatContext->artwork); + if (formatContext->artwork) mmfile_free(formatContext->artwork); - formatContext->artwork = mmfile_malloc (data_len); - if(formatContext->artwork != NULL) + formatContext->artwork = mmfile_malloc(data_len); + if (formatContext->artwork != NULL) memcpy(formatContext->artwork, meta_data + current_pos, data_len); g_free(meta_data); } } else { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_log("Not support metadata. [%s:%s]", tag->key, tag->value); - #endif +#endif } } } } #ifdef __MMFILE_TEST_MODE__ - mmfile_format_print_tags (formatContext); + mmfile_format_print_tags(formatContext); #endif } } #else if (pFormatCtx->title[0]) { if (formatContext->title) - free (formatContext->title); - formatContext->title = mmfile_strdup (pFormatCtx->title); + free(formatContext->title); + formatContext->title = mmfile_strdup(pFormatCtx->title); } - if (pFormatCtx->author[0]){ + if (pFormatCtx->author[0]) { if (formatContext->author) - free (formatContext->author); - formatContext->author = mmfile_strdup (pFormatCtx->author); + free(formatContext->author); + formatContext->author = mmfile_strdup(pFormatCtx->author); } if (pFormatCtx->copyright[0]) { if (formatContext->copyright) - free (formatContext->copyright); - formatContext->copyright = mmfile_strdup (pFormatCtx->copyright); + free(formatContext->copyright); + formatContext->copyright = mmfile_strdup(pFormatCtx->copyright); } if (pFormatCtx->comment[0]) { if (formatContext->comment) - free (formatContext->comment); - formatContext->comment = mmfile_strdup (pFormatCtx->comment); + free(formatContext->comment); + formatContext->comment = mmfile_strdup(pFormatCtx->comment); } if (pFormatCtx->album[0]) { if (formatContext->album) - free (formatContext->album); - formatContext->album = mmfile_strdup (pFormatCtx->album); + free(formatContext->album); + formatContext->album = mmfile_strdup(pFormatCtx->album); } if (pFormatCtx->genre[0]) { if (formatContext->genre) - free (formatContext->genre); - formatContext->genre = mmfile_strdup (pFormatCtx->genre); + free(formatContext->genre); + formatContext->genre = mmfile_strdup(pFormatCtx->genre); } if (pFormatCtx->year) { - char year[10] = {0,}; - snprintf (year, 10, "%d", pFormatCtx->year); + char year[10] = {0, }; + snprintf(year, 10, "%d", pFormatCtx->year); year[9] = '\0'; if (formatContext->year) - free (formatContext->year); - formatContext->year = mmfile_strdup (year); + free(formatContext->year); + formatContext->year = mmfile_strdup(year); } if (pFormatCtx->track) { - char tracknum[10] = {0,}; - snprintf (tracknum, 10, "%d", pFormatCtx->track); + char tracknum[10] = {0, }; + snprintf(tracknum, 10, "%d", pFormatCtx->track); tracknum[9] = '\0'; if (formatContext->tagTrackNum) - free (formatContext->tagTrackNum); - formatContext->tagTrackNum = mmfile_strdup (tracknum); + free(formatContext->tagTrackNum); + formatContext->tagTrackNum = mmfile_strdup(tracknum); } #endif @@ -644,7 +656,7 @@ int mmfile_format_read_tag_ffmpg (MMFileFormatContext *formatContext) EXPORT_API -int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) +int mmfile_format_read_frame_ffmpg(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) { AVFormatContext *pFormatCtx = NULL; AVCodecContext *pVideoCodecCtx = NULL; @@ -658,16 +670,11 @@ int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigne int ret = 0; if (NULL == formatContext || - NULL == frame || - NULL == formatContext->privateFormatData || - formatContext->videoTotalTrackNum <= 0) { + NULL == frame || + NULL == formatContext->privateFormatData || + formatContext->videoTotalTrackNum <= 0) { - debug_error ("invalid param\n"); - return MMFILE_FORMAT_FAIL; - } - - if (formatContext->isdrm == MM_FILE_DRM_PROTECTED) { - debug_error ("This is protected drm file\n"); + debug_error("invalid param\n"); return MMFILE_FORMAT_FAIL; } @@ -676,27 +683,27 @@ int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigne if (formatContext->videoStreamId != -1) { pVideoCodecCtx = pFormatCtx->streams[formatContext->videoStreamId]->codec; if (NULL == pVideoCodecCtx) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_FORMAT_FAIL; } - pVideoCodec = avcodec_find_decoder (pVideoCodecCtx->codec_id); - if ( NULL == pVideoCodec ) { - debug_error ("error: avcodec_find_decoder failed\n"); + pVideoCodec = avcodec_find_decoder(pVideoCodecCtx->codec_id); + if (NULL == pVideoCodec) { + debug_error("error: avcodec_find_decoder failed\n"); return MMFILE_FORMAT_FAIL; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("flag: 0x%08X\n", pVideoCodec->capabilities); - // debug_msg (" DRAW_HORIZ_BAND : %d\n", pVideoCodec->capabilities & CODEC_CAP_DRAW_HORIZ_BAND ? 1 : 0); - // debug_msg (" DR1 : %d\n", pVideoCodec->capabilities & CODEC_CAP_DR1 ? 1 : 0); - // debug_msg (" PARSE_ONLY : %d\n", pVideoCodec->capabilities & CODEC_CAP_PARSE_ONLY ? 1 : 0); - // debug_msg (" TRUNCATED : %d\n", pVideoCodec->capabilities & CODEC_CAP_TRUNCATED ? 1 : 0); - // debug_msg (" HWACCEL : %d\n", pVideoCodec->capabilities & CODEC_CAP_HWACCEL ? 1 : 0); - // debug_msg (" DELAY : %d\n", pVideoCodec->capabilities & CODEC_CAP_DELAY ? 1 : 0); - // debug_msg (" SMALL_LAST_FRAME: %d\n", pVideoCodec->capabilities & CODEC_CAP_SMALL_LAST_FRAME ? 1 : 0); - // debug_msg (" HWACCEL_VDPAU : %d\n", pVideoCodec->capabilities & CODEC_CAP_HWACCEL_VDPAU ? 1 : 0); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("flag: 0x%08X\n", pVideoCodec->capabilities); + /* debug_msg(" DRAW_HORIZ_BAND : %d\n", pVideoCodec->capabilities & CODEC_CAP_DRAW_HORIZ_BAND ? 1 : 0); */ + /* debug_msg(" DR1 : %d\n", pVideoCodec->capabilities & CODEC_CAP_DR1 ? 1 : 0); */ + /* debug_msg(" PARSE_ONLY : %d\n", pVideoCodec->capabilities & CODEC_CAP_PARSE_ONLY ? 1 : 0); */ + /* debug_msg(" TRUNCATED : %d\n", pVideoCodec->capabilities & CODEC_CAP_TRUNCATED ? 1 : 0); */ + /* debug_msg(" HWACCEL : %d\n", pVideoCodec->capabilities & CODEC_CAP_HWACCEL ? 1 : 0); */ + /* debug_msg(" DELAY : %d\n", pVideoCodec->capabilities & CODEC_CAP_DELAY ? 1 : 0); */ + /* debug_msg(" SMALL_LAST_FRAME: %d\n", pVideoCodec->capabilities & CODEC_CAP_SMALL_LAST_FRAME ? 1 : 0); */ + /* debug_msg(" HWACCEL_VDPAU : %d\n", pVideoCodec->capabilities & CODEC_CAP_HWACCEL_VDPAU ? 1 : 0); */ +#endif if (pVideoCodec->capabilities & CODEC_CAP_TRUNCATED) { pVideoCodecCtx->flags |= CODEC_FLAG_TRUNCATED; @@ -706,47 +713,47 @@ int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigne pVideoCodecCtx->workaround_bugs = FF_BUG_AUTODETECT; #ifdef __MMFILE_FFMPEG_V100__ /* this is solution for PLM issue P13091703323 */ - /* If using thread when decoding frame, the result of decoding is not always same. + /* If using thread when decoding frame, the result of decoding is not always same. Thumbnail of video content is different with original file when copying file. */ pVideoCodecCtx->thread_type = 0; pVideoCodecCtx->thread_count = 0; - ret = avcodec_open2 (pVideoCodecCtx, pVideoCodec, NULL); + ret = avcodec_open2(pVideoCodecCtx, pVideoCodec, NULL); #else - ret = avcodec_open (pVideoCodecCtx, pVideoCodec); + ret = avcodec_open(pVideoCodecCtx, pVideoCodec); #endif if (ret < 0) { - debug_error ("error: avcodec_open fail.\n"); + debug_error("error: avcodec_open fail.\n"); return MMFILE_FORMAT_FAIL; } - pFrameRGB = avcodec_alloc_frame (); + pFrameRGB = av_frame_alloc(); if (!pFrameRGB) { - debug_error ("error: pFrame or pFrameRGB is NULL\n"); + debug_error("error: pFrame or pFrameRGB is NULL\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } /* search & decode */ - // seek_ts = formatContext->duration > _SHORT_MEDIA_LIMIT ? seek_ts : 0; /*if short media, seek first key frame*/ - ret = _get_first_good_video_frame (pFormatCtx, pVideoCodecCtx, formatContext->videoStreamId, &pFrame, formatContext->cdis); - if ( ret != MMFILE_FORMAT_SUCCESS ) { - debug_error ("error: get key frame\n"); + /* seek_ts = formatContext->duration > _SHORT_MEDIA_LIMIT ? seek_ts : 0; */ /*if short media, seek first key frame*/ + ret = _get_first_good_video_frame(pFormatCtx, pVideoCodecCtx, formatContext->videoStreamId, &pFrame, formatContext->cdis); + if (ret != MMFILE_FORMAT_SUCCESS) { + debug_error("error: get key frame\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("Video default resolution = [%dx%d]\n", pVideoCodecCtx->coded_width, pVideoCodecCtx->coded_height); - debug_msg ("Video coded resolution = [%dx%d]\n", pVideoCodecCtx->width, pVideoCodecCtx->height); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Video default resolution = [%dx%d]\n", pVideoCodecCtx->coded_width, pVideoCodecCtx->coded_height); + debug_msg("Video coded resolution = [%dx%d]\n", pVideoCodecCtx->width, pVideoCodecCtx->height); +#endif /*sometimes, ffmpeg's width/height is wrong*/ - #if 0 /*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 - if((pVideoCodecCtx->width == 0) || (pVideoCodecCtx->height == 0)) { +#endif + if ((pVideoCodecCtx->width == 0) || (pVideoCodecCtx->height == 0)) { width = pVideoCodecCtx->coded_width; height = pVideoCodecCtx->coded_height; } else { @@ -756,21 +763,21 @@ int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigne numBytes = avpicture_get_size(PIX_FMT_RGB24, width, height); if (numBytes < 0) { - debug_error ("error: avpicture_get_size. [%d x %d]\n", width, height); + debug_error("error: avpicture_get_size. [%d x %d]\n", width, height); ret = MMFILE_FORMAT_FAIL; goto exception; } - frame->frameData = mmfile_malloc (numBytes); + frame->frameData = mmfile_malloc(numBytes); if (NULL == frame->frameData) { - debug_error ("error: avpicture_get_size. [%d]\n", numBytes); + debug_error("error: avpicture_get_size. [%d]\n", numBytes); ret = MMFILE_FORMAT_FAIL; goto exception; } - ret = avpicture_fill ((AVPicture *)pFrameRGB, frame->frameData, PIX_FMT_RGB24, width, height); + ret = avpicture_fill((AVPicture *)pFrameRGB, frame->frameData, PIX_FMT_RGB24, width, height); if (ret < 0) { - debug_error ("error: avpicture_fill fail. errcode = 0x%08X\n", ret); + debug_error("error: avpicture_fill fail. errcode = 0x%08X\n", ret); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -778,19 +785,19 @@ int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigne #ifdef __MMFILE_FFMPEG_V085__ struct SwsContext *img_convert_ctx = NULL; - img_convert_ctx = sws_getContext (width, height, pVideoCodecCtx->pix_fmt, - width, height, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL); + 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"); + 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 = 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; sws_freeContext(img_convert_ctx); img_convert_ctx = NULL; @@ -800,9 +807,9 @@ int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigne sws_freeContext(img_convert_ctx); img_convert_ctx = NULL; #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 = 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; } @@ -813,8 +820,8 @@ int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigne frame->configLenth = 0; frame->bCompressed = 0; /* false */ - if (pFrame) av_free (pFrame); - if (pFrameRGB) av_free (pFrameRGB); + if (pFrame) av_free(pFrame); + if (pFrameRGB) av_free(pFrameRGB); avcodec_close(pVideoCodecCtx); @@ -823,10 +830,13 @@ int mmfile_format_read_frame_ffmpg (MMFileFormatContext *formatContext, unsigne exception: - if (pVideoCodecCtx) avcodec_close (pVideoCodecCtx); - if (frame->frameData) { mmfile_free (frame->frameData); frame->frameData = NULL; } - if (pFrame) av_free (pFrame); - if (pFrameRGB) av_free (pFrameRGB); + if (pVideoCodecCtx) avcodec_close(pVideoCodecCtx); + if (frame->frameData) { + mmfile_free(frame->frameData); + frame->frameData = NULL; + } + if (pFrame) av_free(pFrame); + if (pFrameRGB) av_free(pFrameRGB); return ret; } @@ -841,10 +851,14 @@ int mmfile_format_close_ffmpg(MMFileFormatContext *formatContext) #ifdef __MMFILE_FFMPEG_V100__ avformat_close_input(&pFormatCtx); #else - av_close_input_file (pFormatCtx); + av_close_input_file(pFormatCtx); #endif formatContext->privateFormatData = NULL; } + + if (formatContext->filesrc->type == MM_FILE_SRC_TYPE_MEMORY) { + ffurl_deregister_protocol(&MMFileMEMProtocol); + } } return MMFILE_FORMAT_SUCCESS; @@ -853,12 +867,12 @@ int mmfile_format_close_ffmpg(MMFileFormatContext *formatContext) /** * return average of difference */ -static unsigned int _diff_memory (const void *s1, const void *s2, unsigned int n) +static unsigned int _diff_memory(const void *s1, const void *s2, unsigned int n) { char *s = (char *)s1; char *d = (char *)s2; - int i; - int ret; + unsigned int i; + unsigned int ret; int tmp; for (i = 0, ret = 0; i < n; i++) { @@ -874,7 +888,7 @@ static unsigned int _diff_memory (const void *s1, const void *s2, unsigned int n int64_t gettime(void) { struct timeval tv; - gettimeofday(&tv,NULL); + gettimeofday(&tv, NULL); return (int64_t)tv.tv_sec * 1000000 + tv.tv_usec; } @@ -884,7 +898,7 @@ int64_t gettime(void) /** * compare with center line. */ -static int _is_good_pgm (unsigned char *buf, int wrap, int xsize, int ysize) +static int _is_good_pgm(unsigned char *buf, int wrap, int xsize, int ysize) { #define _MM_CHUNK_NUM 8 /*FIXME*/ #define _MM_CHUNK_LIMIT (_MM_CHUNK_NUM / 2) @@ -903,9 +917,9 @@ static int _is_good_pgm (unsigned char *buf, int wrap, int xsize, int ysize) cnt_offset = (ysize / 2); cnt = buf + cnt_offset * wrap; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("checking frame. %p, %d, %d, %d\n", buf, wrap, xsize, ysize); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("checking frame. %p, %d, %d, %d\n", buf, wrap, xsize, ysize); +#endif /*if too small, always ok return.*/ if (ysize < _MM_CHUNK_NUM) @@ -913,26 +927,26 @@ static int _is_good_pgm (unsigned char *buf, int wrap, int xsize, int ysize) for (point = 0, sum_diff = 0, i = step; i < ysize; i += step) { if (i != cnt_offset) { - + /*binary compare*/ - is_different = _diff_memory (cnt, buf + i * wrap, xsize); + is_different = _diff_memory(cnt, buf + i * wrap, xsize); point += (is_different == 0 ? 0 : 1); sum_diff += is_different; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("check %04d line. %s [%d]\n", i, (is_different == 0 ? "same" : "different"), is_different); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("check %04d line. %s [%d]\n", i, (is_different == 0 ? "same" : "different"), is_different); +#endif if (point >= _MM_CHUNK_LIMIT) { if (sum_diff > _MM_CHUNK_DIFF_LIMIT) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("Good :-)\n"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Good :-)\n"); +#endif return 1; } else { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("Bad :-(\n"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Bad :-(\n"); +#endif return 0; } } @@ -941,20 +955,20 @@ static int _is_good_pgm (unsigned char *buf, int wrap, int xsize, int ysize) } return 0; } -#else // IS_GOOD_OLD_METHOD +#else /* IS_GOOD_OLD_METHOD */ /* ToDo : for enhancement */ -#endif // IS_GOOD_OLD_METHOD +#endif /* IS_GOOD_OLD_METHOD */ static int -_get_video_fps (int frame_cnt, int duration, AVRational r_frame_rate, int is_roundup) +_get_video_fps(int frame_cnt, int duration, AVRational r_frame_rate, int is_roundup) { double fps, round; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("frame count: %d, dur: %d, num: %d, den: %d\n", frame_cnt, duration, r_frame_rate.num, r_frame_rate.den) - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("frame count: %d, dur: %d, num: %d, den: %d\n", frame_cnt, duration, r_frame_rate.num, r_frame_rate.den); +#endif if (duration <= 0 || r_frame_rate.num <= 0 || r_frame_rate.den <= 0) return 0; @@ -967,62 +981,62 @@ _get_video_fps (int frame_cnt, int duration, AVRational r_frame_rate, int is_rou } #ifdef MMFILE_FORMAT_DEBUG_DUMP -static void _save_pgm (unsigned char *buf,int wrap, int xsize,int ysize,char *filename) +static void _save_pgm(unsigned char *buf, int wrap, int xsize, int ysize, char *filename) { FILE *f; int i; - f = fopen(filename,"w"); + f = fopen(filename, "w"); if (f) { - fprintf (f,"P5\n%d %d\n%d\n",xsize,ysize,255); + fprintf(f, "P5\n%d %d\n%d\n", xsize, ysize, 255); for (i = 0; i < ysize; i++) - fwrite (buf + i * wrap, 1, xsize, f); - fclose (f); + fwrite(buf + i * wrap, 1, xsize, f); + fclose(f); } } #endif #ifdef __MMFILE_TEST_MODE__ -static void _dump_av_packet (AVPacket *pkt) +static void _dump_av_packet(AVPacket *pkt) { - debug_msg ("--------- AV Packet -----------\n"); - 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->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" : "_"); + debug_msg("--------- AV Packet -----------\n"); + 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->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 - debug_msg (" flags: 0x%08X, %s\n", pkt->flags, (pkt->flags & PKT_FLAG_KEY) ? "Keyframe" : "_"); + debug_msg(" flags: 0x%08X, %s\n", pkt->flags, (pkt->flags & PKT_FLAG_KEY) ? "Keyframe" : "_"); #endif - debug_msg (" duration: %d\n", pkt->duration); - debug_msg (" destruct: %p\n", pkt->destruct); - debug_msg (" priv: %p\n", pkt->priv); - debug_msg (" pos: %lld\n", pkt->pos); - debug_msg (" convergence_duration: %lld\n", pkt->convergence_duration); - debug_msg ("-------------------------------\n"); + debug_msg(" duration: %d\n", pkt->duration); + /*debug_msg(" destruct: %p\n", pkt->destruct);*/ + /*debug_msg(" priv: %p\n", pkt->priv);*/ + debug_msg(" pos: %lld\n", pkt->pos); + debug_msg(" convergence_duration: %lld\n", pkt->convergence_duration); + debug_msg("-------------------------------\n"); } #endif -static int _get_first_good_video_frame (AVFormatContext *pFormatCtx, AVCodecContext *pCodecCtx, int videoStream, AVFrame **pFrame, int cdis) +static int _get_first_good_video_frame(AVFormatContext *pFormatCtx, AVCodecContext *pCodecCtx, int videoStream, AVFrame **pFrame, int cdis) { - // AVStream *st = NULL; + /* AVStream *st = NULL; */ AVPacket pkt; AVFrame *frame = NULL; AVFrame *tmp_frame = NULL; AVFrame *first_frame = NULL; - // long long timestamp; - int stream_id = videoStream; + /* long long timestamp; */ + /*int stream_id = videoStream;*/ int ret; int found = 0; - int i,v, len, got_picture; + int i, v, len, got_picture; int retry = 0; int key_detected; #ifdef MMFILE_FORMAT_DEBUG_DUMP - char pgm_name[256] = {0,}; + char pgm_name[256] = {0, }; #endif int key_search_limit = 0; int frame_search_limit = 0; @@ -1035,19 +1049,19 @@ static int _get_first_good_video_frame (AVFormatContext *pFormatCtx, AVCodecCont #define _KEY_SEARCH_LIMIT_CDIS (_RETRY_SEARCH_LIMIT*2) /*2 = 1 read. some frame need to read one more*/ #define _FRAME_SEARCH_LIMIT_CDIS 10 - first_frame = avcodec_alloc_frame (); - tmp_frame = avcodec_alloc_frame (); + first_frame = av_frame_alloc(); + tmp_frame = av_frame_alloc(); if (!first_frame || !tmp_frame) { - debug_error ("failed to alloc frame.\n"); - if (first_frame) av_free (first_frame); - if (tmp_frame) av_free (tmp_frame); + debug_error("failed to alloc frame.\n"); + if (first_frame) av_free(first_frame); + if (tmp_frame) av_free(tmp_frame); return MMFILE_FORMAT_FAIL; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("frame: 1. %p, 2. %p\n", first_frame, tmp_frame); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("frame: 1. %p, 2. %p\n", first_frame, tmp_frame); +#endif #ifdef __MMFILE_FFMPEG_V085__ pCodecCtx->skip_frame = AVDISCARD_BIDIR; @@ -1063,68 +1077,68 @@ static int _get_first_good_video_frame (AVFormatContext *pFormatCtx, AVCodecCont frame_search_limit = _FRAME_SEARCH_LIMIT; } - for(i = 0, v = 0, key_detected = 0, frame = first_frame; i < key_search_limit && v < frame_search_limit;) { - av_init_packet (&pkt); + for (i = 0, v = 0, key_detected = 0, frame = first_frame; i < key_search_limit && v < frame_search_limit;) { + av_init_packet(&pkt); got_picture = 0; - ret = av_read_frame (pFormatCtx, &pkt); + ret = av_read_frame(pFormatCtx, &pkt); if (ret < 0) { - debug_error ("read failed. (maybe EOF or broken)\n"); + debug_error("read failed. (maybe EOF or broken)\n"); break; } else { - if (pkt.stream_index == stream_id) { + if (avcodec_get_type(pFormatCtx->streams[pkt.stream_index]->codec->codec_id) == AVMEDIA_TYPE_VIDEO) { v++; -#ifdef __MMFILE_FFMPEG_V085__ - if ((pkt.flags & AV_PKT_FLAG_KEY ) || (key_detected == 1)) +#ifdef __MMFILE_FFMPEG_V085__ + if ((pkt.flags & AV_PKT_FLAG_KEY) || (key_detected == 1)) #else - if ((pkt.flags & PKT_FLAG_KEY ) || (key_detected == 1)) + if ((pkt.flags & PKT_FLAG_KEY) || (key_detected == 1)) #endif { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("video frame: %d, %d, %d\n", retry, i, v); - _dump_av_packet (&pkt); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("video frame: %d, %d, %d\n", retry, i, v); + _dump_av_packet(&pkt); +#endif i++; key_detected = 0; #ifdef __MMFILE_FFMPEG_V085__ - len = avcodec_decode_video2 (pCodecCtx, frame, &got_picture, &pkt); + len = avcodec_decode_video2(pCodecCtx, frame, &got_picture, &pkt); #else - len = avcodec_decode_video (pCodecCtx, frame, &got_picture, pkt.data, pkt.size); + len = avcodec_decode_video(pCodecCtx, frame, &got_picture, pkt.data, pkt.size); #endif if (len < 0) { - debug_warning ("Error while decoding frame %dth\n", i); + debug_warning("Error while decoding frame %dth\n", i); } else if (got_picture) { if (frame->key_frame) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("key frame!\n"); - #endif - #ifdef MMFILE_FORMAT_DEBUG_DUMP - sprintf (pgm_name, "./key_%d_%d_%d.pgm", retry, i, v); - _save_pgm (frame->data[0], frame->linesize[0], pCodecCtx->width, pCodecCtx->height, pgm_name); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("key frame!\n"); +#endif +#ifdef MMFILE_FORMAT_DEBUG_DUMP + sprintf(pgm_name, "./key_%d_%d_%d.pgm", retry, i, v); + _save_pgm(frame->data[0], frame->linesize[0], pCodecCtx->width, pCodecCtx->height, pgm_name); +#endif found++; - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ int64_t ti; ti = gettime(); - #endif - ret = _is_good_pgm (frame->data[0], frame->linesize[0], pCodecCtx->width, pCodecCtx->height); - #ifdef __MMFILE_TEST_MODE__ +#endif + ret = _is_good_pgm(frame->data[0], frame->linesize[0], pCodecCtx->width, pCodecCtx->height); +#ifdef __MMFILE_TEST_MODE__ ti = gettime() - ti; - debug_msg ("Elapsed time = %lld\n", ti); - #endif + debug_msg("Elapsed time = %lld\n", ti); +#endif if (ret != 0) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("is good frame.\n"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("is good frame.\n"); +#endif break; } else { /*reset video frame count & retry searching*/ - #ifdef __MMFILE_TEST_MODE__ - debug_warning ("not good fame. retry scanning.\n"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_warning("not good fame. retry scanning.\n"); +#endif i = 0; v = 0; retry++; @@ -1137,52 +1151,52 @@ static int _get_first_good_video_frame (AVFormatContext *pFormatCtx, AVCodecCont if (retry > _RETRY_SEARCH_LIMIT) break; } else { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("skip (not key frame).\n"); - #endif - #ifdef MMFILE_FORMAT_DEBUG_DUMP - sprintf (pgm_name, "./not_key_%d_%d_%d.pgm", retry, i, v); - _save_pgm (frame->data[0], frame->linesize[0], pCodecCtx->width, pCodecCtx->height, pgm_name); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("skip (not key frame).\n"); +#endif +#ifdef MMFILE_FORMAT_DEBUG_DUMP + sprintf(pgm_name, "./not_key_%d_%d_%d.pgm", retry, i, v); + _save_pgm(frame->data[0], frame->linesize[0], pCodecCtx->width, pCodecCtx->height, pgm_name); +#endif } } else { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("decode not completed.\n"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("decode not completed.\n"); +#endif key_detected = 1; } } } } - av_free_packet (&pkt); + av_free_packet(&pkt); } /*free pkt after loop breaking*/ - if (pkt.data) av_free_packet (&pkt); + if (pkt.data) av_free_packet(&pkt); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("found: %d, retry: %d\n", found, retry); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("found: %d, retry: %d\n", found, retry); +#endif /*set decode frame to output*/ if (found > 0) { ret = MMFILE_FORMAT_SUCCESS; if (retry == 0 || found == retry) { *pFrame = first_frame; - if (tmp_frame) av_free (tmp_frame); + if (tmp_frame) av_free(tmp_frame); } else { *pFrame = tmp_frame; - if (first_frame) av_free (first_frame); + if (first_frame) av_free(first_frame); } } else { ret = MMFILE_FORMAT_FAIL; - if (first_frame) av_free (first_frame); - if (tmp_frame) av_free (tmp_frame); + if (first_frame) av_free(first_frame); + if (tmp_frame) av_free(tmp_frame); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("out frame: %p\n", *pFrame); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("out frame: %p\n", *pFrame); +#endif #ifdef __MMFILE_FFMPEG_V085__ pCodecCtx->skip_frame = AVDISCARD_NONE; @@ -1193,22 +1207,20 @@ static int _get_first_good_video_frame (AVFormatContext *pFormatCtx, AVCodecCont return ret; } -static int ConvertVideoCodecEnum (int AVVideoCodecID) +static int ConvertVideoCodecEnum(int AVVideoCodecID) { int ret_codecid = 0; - switch (AVVideoCodecID) - { + switch (AVVideoCodecID) { case AV_CODEC_ID_NONE: ret_codecid = MM_VIDEO_CODEC_NONE; break; case AV_CODEC_ID_MPEG1VIDEO: ret_codecid = MM_VIDEO_CODEC_MPEG1; break; - case AV_CODEC_ID_MPEG2VIDEO: ///< preferred ID for MPEG-1/2 video decoding - ret_codecid = MM_VIDEO_CODEC_MPEG2; - break; + case AV_CODEC_ID_MPEG2VIDEO: /*/< preferred ID for MPEG-1/2 video decoding */ case AV_CODEC_ID_MPEG2VIDEO_XVMC: + case AV_CODEC_ID_MPEG2TS: ret_codecid = MM_VIDEO_CODEC_MPEG2; break; case AV_CODEC_ID_H261: @@ -1259,8 +1271,8 @@ static int ConvertVideoCodecEnum (int AVVideoCodecID) case AV_CODEC_ID_CINEPAK: ret_codecid = MM_VIDEO_CODEC_CINEPAK; break; -#ifndef __MMFILE_FFMPEG_V085__ - case CODEC_ID_XVID: +#if (!defined __MMFILE_FFMPEG_V085__ && !defined __MMFILE_LIBAV_VERSION__) + case AV_CODEC_ID_XVID: ret_codecid = MM_VIDEO_CODEC_XVID; break; #endif @@ -1274,8 +1286,17 @@ static int ConvertVideoCodecEnum (int AVVideoCodecID) ret_codecid = MM_VIDEO_CODEC_AVS; break; case AV_CODEC_ID_RL2: + case AV_CODEC_ID_RV10: /* RealVideo 1 */ + case AV_CODEC_ID_RV20: /* RealVideo 2 */ + case AV_CODEC_ID_RV30: /* RealVideo 3 */ + case AV_CODEC_ID_RV40: /* RealVideo 4 */ ret_codecid = MM_VIDEO_CODEC_REAL; break; +#ifdef __MMFILE_LIBAV_VERSION__ + case AV_CODEC_ID_HEVC: + ret_codecid = MM_VIDEO_CODEC_MPEG4; + break; +#endif default: ret_codecid = MM_VIDEO_CODEC_NONE; break; @@ -1285,19 +1306,19 @@ static int ConvertVideoCodecEnum (int AVVideoCodecID) } -static int ConvertAudioCodecEnum (int AVAudioCodecID) +static int ConvertAudioCodecEnum(int AVAudioCodecID) { int ret_codecid = 0; - switch (AVAudioCodecID) - { + switch (AVAudioCodecID) { case AV_CODEC_ID_AMR_NB: case AV_CODEC_ID_AMR_WB: ret_codecid = MM_AUDIO_CODEC_AMR; break; /* RealAudio codecs*/ - case AV_CODEC_ID_RA_144: - case AV_CODEC_ID_RA_288: + case AV_CODEC_ID_RA_144: /* RealAudio 1 */ + case AV_CODEC_ID_RA_288: /* RealAudio 2 */ + case AV_CODEC_ID_COOK: /* RealAudio 6 */ ret_codecid = MM_AUDIO_CODEC_REAL; break; case AV_CODEC_ID_MP2: @@ -1338,6 +1359,12 @@ static int ConvertAudioCodecEnum (int AVAudioCodecID) case AV_CODEC_ID_EAC3: ret_codecid = MM_AUDIO_CODEC_AC3; break; + case AV_CODEC_ID_PCM_S8: + case AV_CODEC_ID_PCM_S16BE: + case AV_CODEC_ID_PCM_S24BE: + case AV_CODEC_ID_PCM_S32BE: + ret_codecid = MM_AUDIO_CODEC_PCM; + break; default: ret_codecid = MM_AUDIO_CODEC_NONE; break; @@ -1348,81 +1375,93 @@ static int ConvertAudioCodecEnum (int AVAudioCodecID) -static int getMimeType(int formatId, char *mimeType) +static int getMimeType(int formatId, char *mimeType, int buf_size) { int ret = 0; /*default: success*/ - switch(formatId) { + switch (formatId) { case MM_FILE_FORMAT_3GP: case MM_FILE_FORMAT_MP4: - sprintf(mimeType,"video/3gpp"); + snprintf(mimeType, buf_size, "video/3gpp"); break; case MM_FILE_FORMAT_ASF: case MM_FILE_FORMAT_WMA: case MM_FILE_FORMAT_WMV: - sprintf(mimeType,"video/x-ms-asf"); + snprintf(mimeType, buf_size, "video/x-ms-asf"); break; case MM_FILE_FORMAT_AVI: - sprintf(mimeType,"video/avi"); + snprintf(mimeType, buf_size, "video/avi"); break; case MM_FILE_FORMAT_OGG: - sprintf(mimeType,"video/ogg"); + snprintf(mimeType, buf_size, "video/ogg"); break; case MM_FILE_FORMAT_REAL: - sprintf(mimeType,"video/vnd.rn-realvideo"); + snprintf(mimeType, buf_size, "video/vnd.rn-realmedia"); break; case MM_FILE_FORMAT_AMR: - sprintf(mimeType,"audio/AMR"); + snprintf(mimeType, buf_size, "audio/AMR"); break; case MM_FILE_FORMAT_AAC: - sprintf(mimeType,"audio/aac"); + snprintf(mimeType, buf_size, "audio/aac"); break; case MM_FILE_FORMAT_MP3: - sprintf(mimeType,"audio/mp3"); + snprintf(mimeType, buf_size, "audio/mp3"); break; case MM_FILE_FORMAT_AIFF: case MM_FILE_FORMAT_WAV: - sprintf(mimeType,"audio/wave"); + snprintf(mimeType, buf_size, "audio/wave"); break; case MM_FILE_FORMAT_MID: - sprintf(mimeType,"audio/midi"); + snprintf(mimeType, buf_size, "audio/midi"); break; case MM_FILE_FORMAT_MMF: - sprintf(mimeType,"audio/mmf"); + snprintf(mimeType, buf_size, "audio/mmf"); break; case MM_FILE_FORMAT_DIVX: - sprintf(mimeType,"video/divx"); + snprintf(mimeType, buf_size, "video/divx"); break; case MM_FILE_FORMAT_IMELODY: - sprintf(mimeType,"audio/iMelody"); + snprintf(mimeType, buf_size, "audio/iMelody"); break; case MM_FILE_FORMAT_JPG: - sprintf(mimeType,"image/jpeg"); + snprintf(mimeType, buf_size, "image/jpeg"); break; case MM_FILE_FORMAT_AU: - sprintf(mimeType,"audio/basic"); + snprintf(mimeType, buf_size, "audio/basic"); break; case MM_FILE_FORMAT_VOB: - sprintf(mimeType,"video/mpeg"); + snprintf(mimeType, buf_size, "video/dvd"); break; case MM_FILE_FORMAT_FLV: - sprintf(mimeType,"video/x-flv"); + snprintf(mimeType, buf_size, "video/x-flv"); break; case MM_FILE_FORMAT_QT: - sprintf(mimeType,"video/quicktime"); + snprintf(mimeType, buf_size, "video/quicktime"); break; case MM_FILE_FORMAT_MATROSKA: - sprintf(mimeType,"video/x-matroska"); + snprintf(mimeType, buf_size, "video/x-matroska"); break; case MM_FILE_FORMAT_FLAC: - sprintf(mimeType,"audio/x-flac"); + snprintf(mimeType, buf_size, "audio/x-flac"); + break; + case MM_FILE_FORMAT_M2TS: + snprintf(mimeType, buf_size, "video/MP2T"); + break; + case MM_FILE_FORMAT_M2PS: + snprintf(mimeType, buf_size, "video/MP2P"); + break; + case MM_FILE_FORMAT_M1AUDIO: + snprintf(mimeType, buf_size, "audio/x-mpegaudio"); + break; + case MM_FILE_FORMAT_M1VIDEO: + snprintf(mimeType, buf_size, "video/mpeg"); break; default: ret = -1; } #ifdef __MMFILE_TEST_MODE__ - debug_msg ("id: %d, mimetype: %s\n", formatId, mimeType); + debug_msg("id: %d, mimetype: %s\n", formatId, mimeType); #endif return ret; diff --git a/formats/ffmpeg/mm_file_format_ffmpeg_mem.c b/formats/ffmpeg/mm_file_format_ffmpeg_mem.c index b117132..d02d2e0 100755 --- a/formats/ffmpeg/mm_file_format_ffmpeg_mem.c +++ b/formats/ffmpeg/mm_file_format_ffmpeg_mem.c @@ -18,15 +18,16 @@ * limitations under the License. * */ - + #include <stdio.h> #include <stdlib.h> #include <string.h> #include <libavformat/avformat.h> #include <libavformat/avio.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" +#include "mm_file_format_ffmpeg_mem.h" typedef struct { @@ -36,213 +37,196 @@ typedef struct { int state; } MMFmemIOHandle; -static int mmf_mem_open (URLContext *handle, const char *filename, int flags) +static int mmf_mem_open(URLContext *handle, const char *filename, int flags) { - MMFmemIOHandle *memHandle = NULL; - char **splitedString = NULL; - - - if (!handle || !filename || !handle->prot) - { - debug_error ("invalid param\n"); - return MMFILE_UTIL_FAIL; - } - - filename += strlen(handle->prot->name) + 3; /* ://%d:%d means (memory addr:mem size)*/ - - splitedString = mmfile_strsplit (filename, ":"); - if (splitedString == NULL) - { - debug_error ("invalid param\n"); - return MMFILE_UTIL_FAIL; - } - - if (!splitedString[0] || !splitedString[1]) - - { - debug_error ("invalid param\n"); - goto exception; - } - - memHandle = mmfile_malloc (sizeof(MMFmemIOHandle)); - if (!memHandle) - { - debug_error ("error: mmfile_malloc memHandle\n"); - goto exception; - } - - memHandle->ptr = (unsigned char *) atoll(splitedString[0]); //memory allocation address changed. memHandle->ptr = (unsigned char *) atoi(splitedString[0]); - memHandle->size = atoi(splitedString[1]); - memHandle->offset = 0; - memHandle->state = 0; - - handle->priv_data = (void*) memHandle; - - // Imp to reset them otherwise file seek will fail - handle->is_streamed = 0; /*FALSE*/ - handle->max_packet_size = 0; - - if (splitedString) - { - mmfile_strfreev (splitedString); - } - - return MMFILE_UTIL_SUCCESS; + MMFmemIOHandle *memHandle = NULL; + char **splitedString = NULL; + + + if (!handle || !filename || !handle->prot) { + debug_error("invalid param\n"); + return MMFILE_UTIL_FAIL; + } + + filename += strlen(handle->prot->name) + 3; /* ://%d:%d means (memory addr:mem size)*/ + + splitedString = mmfile_strsplit(filename, ":"); + if (splitedString == NULL) { + debug_error("invalid param\n"); + return MMFILE_UTIL_FAIL; + } + + if (!splitedString[0] || !splitedString[1]) + + { + debug_error("invalid param\n"); + goto exception; + } + + memHandle = mmfile_malloc(sizeof(MMFmemIOHandle)); + if (!memHandle) { + debug_error("error: mmfile_malloc memHandle\n"); + goto exception; + } + + memHandle->ptr = (unsigned char *)atoll(splitedString[0]); /*memory allocation address changed. memHandle->ptr = (unsigned char *) atoi(splitedString[0]); */ + memHandle->size = atoi(splitedString[1]); + memHandle->offset = 0; + memHandle->state = 0; + + handle->priv_data = (void *) memHandle; + + /* Imp to reset them otherwise file seek will fail */ + handle->is_streamed = 0; /*FALSE*/ + handle->max_packet_size = 0; + + if (splitedString) { + mmfile_strfreev(splitedString); + } + + return MMFILE_UTIL_SUCCESS; exception: - if (splitedString) - { - mmfile_strfreev (splitedString); - } - -#if 0 //dead code - if (memHandle) - { - mmfile_free (memHandle); - handle->priv_data = NULL; - } + if (splitedString) { + mmfile_strfreev(splitedString); + } + +#if 0 /*dead code */ + if (memHandle) { + mmfile_free(memHandle); + handle->priv_data = NULL; + } #endif - return MMFILE_UTIL_FAIL; + return MMFILE_UTIL_FAIL; } -static int mmf_mem_read (URLContext *h, unsigned char *buf, int size) +static int mmf_mem_read(URLContext *h, unsigned char *buf, int size) { - MMFmemIOHandle *memHandle = NULL; - const unsigned char *c = NULL; - int len = 0; + MMFmemIOHandle *memHandle = NULL; + const unsigned char *c = NULL; + int len = 0; - - if (!h || !h->priv_data || !buf) - { - debug_error ("invalid para\n"); - return MMFILE_UTIL_FAIL; - } - memHandle = h->priv_data; + if (!h || !h->priv_data || !buf) { + debug_error("invalid para\n"); + return MMFILE_UTIL_FAIL; + } - if (!memHandle->ptr) - { - debug_error ("invalid para\n"); - return MMFILE_UTIL_FAIL; - } + memHandle = h->priv_data; + + if (!memHandle->ptr) { + debug_error("invalid para\n"); + return MMFILE_UTIL_FAIL; + } if (memHandle->offset >= memHandle->size) { - // for some file formats last file read - debug_error ("File Read is beyond the file Size\n"); + /* for some file formats last file read */ + debug_error("File Read is beyond the file Size\n"); return MMFILE_UTIL_FAIL; - - } - - c = memHandle->ptr + memHandle->offset; - - if (memHandle->state != EOF) - { - len = size; - if (len + memHandle->offset > memHandle->size) - { - len = memHandle->size - memHandle->offset; - } - } - - memcpy (buf, c, len); - - memHandle->offset += len; - - if ( memHandle->offset == memHandle->size) - { - memHandle->state = EOF; - } - - return len; + + } + + c = memHandle->ptr + memHandle->offset; + + if (memHandle->state != EOF) { + len = size; + if (len + memHandle->offset > memHandle->size) { + len = memHandle->size - memHandle->offset; + } + } + + memcpy(buf, c, len); + + memHandle->offset += len; + + if (memHandle->offset == memHandle->size) { + memHandle->state = EOF; + } + + return len; } -static int mmf_mem_write (URLContext *h, unsigned char *buf, int size) +static int mmf_mem_write(URLContext *h, const unsigned char *buf, int size) { - if (!h || !h->priv_data || !buf) - { - debug_error ("invalid para\n"); - return MMFILE_UTIL_FAIL; - } - - debug_error ("NOTE PERMITTED\n"); - return MMFILE_UTIL_FAIL; + if (!h || !h->priv_data || !buf) { + debug_error("invalid para\n"); + return MMFILE_UTIL_FAIL; + } + + debug_error("NOTE PERMITTED\n"); + return MMFILE_UTIL_FAIL; } -static long long mmf_mem_seek (URLContext *h, long long pos, int whence) +static int64_t mmf_mem_seek(URLContext *h, int64_t pos, int whence) { - MMFmemIOHandle *memHandle = NULL; - long long tmp_offset = 0; - - - if (!h || !h->priv_data) - { - debug_error ("invalid para\n"); - return MMFILE_UTIL_FAIL; - } - - memHandle = h->priv_data; - - switch (whence) - { - case SEEK_SET: - tmp_offset = 0 + pos; - break; - case SEEK_CUR: - tmp_offset = memHandle->offset + pos; - break; - case SEEK_END: - tmp_offset = memHandle->size + pos; - break; - case AVSEEK_SIZE: /*FFMPEG specific*/ - return memHandle->size; - default: - return MMFILE_UTIL_FAIL; - } - - /*check validation*/ - if (tmp_offset < 0 && tmp_offset > memHandle->size) - { - debug_error ("invalid file offset\n"); - return MMFILE_UTIL_FAIL; - } - - /*set */ - memHandle->state = (tmp_offset >= memHandle->size) ? EOF : !EOF; - memHandle->offset = (unsigned int) tmp_offset; - - return tmp_offset; + MMFmemIOHandle *memHandle = NULL; + long long tmp_offset = 0; + + + if (!h || !h->priv_data) { + debug_error("invalid para\n"); + return MMFILE_UTIL_FAIL; + } + + memHandle = h->priv_data; + + switch (whence) { + case SEEK_SET: + tmp_offset = 0 + pos; + break; + case SEEK_CUR: + tmp_offset = memHandle->offset + pos; + break; + case SEEK_END: + tmp_offset = memHandle->size + pos; + break; + case AVSEEK_SIZE: /*FFMPEG specific*/ + return memHandle->size; + default: + return MMFILE_UTIL_FAIL; + } + + /*check validation*/ + if (tmp_offset < 0 && tmp_offset > memHandle->size) { + debug_error("invalid file offset\n"); + return MMFILE_UTIL_FAIL; + } + + /*set */ + memHandle->state = (tmp_offset >= memHandle->size) ? EOF : !EOF; + memHandle->offset = (unsigned int) tmp_offset; + + return tmp_offset; } -static int mmf_mem_close (URLContext *h) +static int mmf_mem_close(URLContext *h) { - MMFmemIOHandle *memHandle = NULL; + MMFmemIOHandle *memHandle = NULL; - if (!h || !h->priv_data) - { - debug_error ("invalid para\n"); - return MMFILE_UTIL_FAIL; - } + if (!h || !h->priv_data) { + debug_error("invalid para\n"); + return MMFILE_UTIL_FAIL; + } - memHandle = h->priv_data; + memHandle = h->priv_data; - if (memHandle) - { - mmfile_free (memHandle); - h->priv_data = NULL; - } + if (memHandle) { + mmfile_free(memHandle); + h->priv_data = NULL; + } - return MMFILE_UTIL_SUCCESS; + return MMFILE_UTIL_SUCCESS; } URLProtocol MMFileMEMProtocol = { - .name = "mem", - .url_open = mmf_mem_open, - .url_read = mmf_mem_read, - .url_write = mmf_mem_write, - .url_seek = mmf_mem_seek, - .url_close = mmf_mem_close, + .name = "mem", + .url_open = mmf_mem_open, + .url_read = mmf_mem_read, + .url_write = mmf_mem_write, + .url_seek = mmf_mem_seek, + .url_close = mmf_mem_close, }; diff --git a/formats/ffmpeg/mm_file_format_frame.c b/formats/ffmpeg/mm_file_format_frame.c index 15f5bd1..e87cea4 100755 --- a/formats/ffmpeg/mm_file_format_frame.c +++ b/formats/ffmpeg/mm_file_format_frame.c @@ -24,7 +24,7 @@ #include <libswscale/swscale.h> #include <mm_types.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_formats.h" #include "mm_file_utils.h" #include "mm_file_format_ffmpeg_mem.h" @@ -34,102 +34,116 @@ #ifdef MMFILE_FORMAT_DEBUG_DUMP static void __save_frame(AVFrame *pFrame, int width, int height, int iFrame); -void __save_frame(AVFrame *pFrame, int width, int height, int iFrame) { +void __save_frame(AVFrame *pFrame, int width, int height, int iFrame) +{ FILE *pFile; char szFilename[32]; int y; - // Open file + /* Open file */ sprintf(szFilename, "frame%d.ppm", iFrame); - pFile=fopen(szFilename, "wb"); - if(pFile==NULL) + pFile = fopen(szFilename, "wb"); + if (pFile == NULL) return; - // Write header + /* Write header */ fprintf(pFile, "P6\n%d %d\n255\n", width, height); - // Write pixel data - for(y=0; y<height; y++) - fwrite(pFrame->data[0]+y*pFrame->linesize[0], 1, width*3, pFile); + /* Write pixel data */ + for (y = 0; y < height; y++) + fwrite(pFrame->data[0] + y * pFrame->linesize[0], 1, width * 3, pFile); - // Close file + /* Close file */ fclose(pFile); } #endif -static int __getMimeType(int formatId, char *mimeType) +static int __getMimeType(int formatId, char *mimeType, int buf_size) { int ret = 0; /*default: success*/ - switch(formatId) { + switch (formatId) { case MM_FILE_FORMAT_3GP: case MM_FILE_FORMAT_MP4: - sprintf(mimeType,"video/3gpp"); + snprintf(mimeType, buf_size, "video/3gpp"); break; case MM_FILE_FORMAT_ASF: case MM_FILE_FORMAT_WMA: case MM_FILE_FORMAT_WMV: - sprintf(mimeType,"video/x-ms-asf"); + snprintf(mimeType, buf_size, "video/x-ms-asf"); break; case MM_FILE_FORMAT_AVI: - sprintf(mimeType,"video/avi"); + snprintf(mimeType, buf_size, "video/avi"); break; case MM_FILE_FORMAT_OGG: - sprintf(mimeType,"video/ogg"); + snprintf(mimeType, buf_size, "video/ogg"); break; case MM_FILE_FORMAT_REAL: - sprintf(mimeType,"video/vnd.rn-realvideo"); + snprintf(mimeType, buf_size, "video/vnd.rn-realmedia"); break; case MM_FILE_FORMAT_AMR: - sprintf(mimeType,"audio/AMR"); + snprintf(mimeType, buf_size, "audio/AMR"); break; case MM_FILE_FORMAT_AAC: - sprintf(mimeType,"audio/aac"); + snprintf(mimeType, buf_size, "audio/aac"); break; case MM_FILE_FORMAT_MP3: - sprintf(mimeType,"audio/mp3"); + snprintf(mimeType, buf_size, "audio/mp3"); break; case MM_FILE_FORMAT_AIFF: case MM_FILE_FORMAT_WAV: - sprintf(mimeType,"audio/wave"); + snprintf(mimeType, buf_size, "audio/wave"); break; case MM_FILE_FORMAT_MID: - sprintf(mimeType,"audio/midi"); + snprintf(mimeType, buf_size, "audio/midi"); break; case MM_FILE_FORMAT_MMF: - sprintf(mimeType,"audio/mmf"); + snprintf(mimeType, buf_size, "audio/mmf"); break; case MM_FILE_FORMAT_DIVX: - sprintf(mimeType,"video/divx"); + snprintf(mimeType, buf_size, "video/divx"); break; case MM_FILE_FORMAT_IMELODY: - sprintf(mimeType,"audio/iMelody"); + snprintf(mimeType, buf_size, "audio/iMelody"); break; case MM_FILE_FORMAT_JPG: - sprintf(mimeType,"image/jpeg"); + snprintf(mimeType, buf_size, "image/jpeg"); break; case MM_FILE_FORMAT_AU: - sprintf(mimeType,"audio/basic"); + snprintf(mimeType, buf_size, "audio/basic"); break; case MM_FILE_FORMAT_VOB: - sprintf(mimeType,"video/mpeg"); + snprintf(mimeType, buf_size, "video/dvd"); break; case MM_FILE_FORMAT_FLV: - sprintf(mimeType,"video/x-flv"); + snprintf(mimeType, buf_size, "video/x-flv"); break; case MM_FILE_FORMAT_QT: - sprintf(mimeType,"video/quicktime"); + snprintf(mimeType, buf_size, "video/quicktime"); break; case MM_FILE_FORMAT_MATROSKA: - sprintf(mimeType,"video/x-matroska"); + snprintf(mimeType, buf_size, "video/x-matroska"); break; case MM_FILE_FORMAT_FLAC: - sprintf(mimeType,"audio/x-flac"); + snprintf(mimeType, buf_size, "audio/x-flac"); + break; + case MM_FILE_FORMAT_M2TS: + snprintf(mimeType, buf_size, "video/MP2T"); + break; + case MM_FILE_FORMAT_M2PS: + snprintf(mimeType, buf_size, "video/MP2P"); + break; + case MM_FILE_FORMAT_M1VIDEO: + snprintf(mimeType, buf_size, "video/mpeg"); + break; + case MM_FILE_FORMAT_M1AUDIO: + snprintf(mimeType, buf_size, "audio/x-mpegaudio"); break; default: ret = -1; + break; } #ifdef __MMFILE_TEST_MODE__ - debug_msg ("id: %d, mimetype: %s\n", formatId, mimeType); + debug_msg("id: %d, mimetype: %s\n", formatId, mimeType); #endif return ret; @@ -137,20 +151,31 @@ static int __getMimeType(int formatId, char *mimeType) static int __get_fileformat(const char *urifilename, int *format) { int index; + int ret = 0; + MMFileIOHandle *fp = NULL; debug_error("%s\n", urifilename); + ret = mmfile_open(&fp, urifilename, MMFILE_RDONLY); + + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + if (fp) + mmfile_close(fp); + return MMFILE_FORMAT_FAIL; + } + for (index = 0; index < MM_FILE_FORMAT_NUM; index++) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("search index = [%d]\n", index); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("search index = [%d]\n", index); +#endif switch (index) { case MM_FILE_FORMAT_QT: case MM_FILE_FORMAT_3GP: case MM_FILE_FORMAT_MP4: { - if (MMFileFormatIsValidMP4 (urifilename)) { + if (MMFileFormatIsValidMP4(fp, NULL)) { *format = MM_FILE_FORMAT_3GP; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } @@ -158,34 +183,74 @@ static int __get_fileformat(const char *urifilename, int *format) case MM_FILE_FORMAT_ASF: case MM_FILE_FORMAT_WMA: case MM_FILE_FORMAT_WMV: { - if (MMFileFormatIsValidASF (urifilename)) { + if (MMFileFormatIsValidASF(fp, NULL)) { *format = MM_FILE_FORMAT_ASF; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_DIVX: case MM_FILE_FORMAT_AVI: { - if (MMFileFormatIsValidAVI(urifilename)) { + if (MMFileFormatIsValidAVI(fp, NULL)) { *format = MM_FILE_FORMAT_AVI; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_MATROSKA: { - if (MMFileFormatIsValidMatroska (urifilename)) { + if (MMFileFormatIsValidMatroska(fp, NULL)) { *format = MM_FILE_FORMAT_MATROSKA; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_FLV: { - if (MMFileFormatIsValidFLV (urifilename)) { + if (MMFileFormatIsValidFLV(fp, NULL)) { *format = MM_FILE_FORMAT_FLV; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; + } + break; + } + + case MM_FILE_FORMAT_M2TS: { + if (MMFileFormatIsValidMPEGTS(fp, NULL)) { + *format = MM_FILE_FORMAT_M2TS; + goto FILE_FORMAT_SUCCESS; + } + break; + } + + case MM_FILE_FORMAT_M2PS: { + if (MMFileFormatIsValidMPEGPS(fp, NULL)) { + *format = MM_FILE_FORMAT_M2PS; + goto FILE_FORMAT_SUCCESS; + } + break; + } + + case MM_FILE_FORMAT_REAL: { + if (MMFileFormatIsValidREAL(fp, NULL)) { + *format = MM_FILE_FORMAT_REAL; + goto FILE_FORMAT_SUCCESS; + } + break; + } + + case MM_FILE_FORMAT_M1AUDIO: { + if (MMFileFormatIsValidMPEGAUDIO(fp, NULL)) { + *format = MM_FILE_FORMAT_M1AUDIO; + goto FILE_FORMAT_SUCCESS; + } + break; + } + + case MM_FILE_FORMAT_M1VIDEO: { + if (MMFileFormatIsValidMPEGVIDEO(fp, NULL)) { + *format = MM_FILE_FORMAT_M1VIDEO; + goto FILE_FORMAT_SUCCESS; } break; } @@ -203,14 +268,13 @@ static int __get_fileformat(const char *urifilename, int *format) break; /* not supported file */ case MM_FILE_FORMAT_NUT: - case MM_FILE_FORMAT_REAL: case MM_FILE_FORMAT_AIFF: case MM_FILE_FORMAT_AU: case MM_FILE_FORMAT_VOB: case MM_FILE_FORMAT_JPG: break; default: { - debug_error ("error: invaild format enum[%d]\n", index); + debug_error("error: invaild format enum[%d]\n", index); break; } } @@ -221,13 +285,23 @@ static int __get_fileformat(const char *urifilename, int *format) } *format = -1; + + if (fp) + mmfile_close(fp); + return MMFILE_FORMAT_FAIL; + +FILE_FORMAT_SUCCESS: + if (fp) + mmfile_close(fp); + + return MMFILE_FORMAT_SUCCESS; } static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height) { - int i = 0; + unsigned int i = 0; int len = 0; int ret = MMFILE_FORMAT_SUCCESS; int videoStream = -1; @@ -244,9 +318,9 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo /* Retrieve stream information */ #ifdef __MMFILE_FFMPEG_V100__ - if(avformat_find_stream_info(pFormatCtx, NULL) < 0) { + if (avformat_find_stream_info(pFormatCtx, NULL) < 0) { #else - if(av_find_stream_info(pFormatCtx) < 0) { + if (av_find_stream_info(pFormatCtx) < 0) { #endif debug_error("error : av_find_stream_info failed"); ret = MMFILE_FORMAT_FAIL; @@ -254,30 +328,30 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo } /* Find the first video stream */ - for(i = 0; i < pFormatCtx->nb_streams; i++) { - if(pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) { + for (i = 0; i < pFormatCtx->nb_streams; i++) { + if (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) { videoStream = i; break; } } - if(videoStream == -1) { + if (videoStream == -1) { debug_error("error : videoStream == -1"); ret = MMFILE_FORMAT_FAIL; goto exception; /* Didn't find a video stream */ } /* Get a pointer to the codec context for the video stream */ - pVideoCodecCtx=pFormatCtx->streams[videoStream]->codec; + pVideoCodecCtx = pFormatCtx->streams[videoStream]->codec; if (pVideoCodecCtx == NULL) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } /* Find the decoder for the video stream */ pVideoCodec = avcodec_find_decoder(pVideoCodecCtx->codec_id); - if(pVideoCodec == NULL) { + if (pVideoCodec == NULL) { debug_error("error : Unsupported codec"); ret = MMFILE_FORMAT_FAIL; goto exception; /* Codec not found */ @@ -287,9 +361,9 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo #ifdef __MMFILE_FFMPEG_V100__ pVideoCodecCtx->thread_type = 0; pVideoCodecCtx->thread_count = 0; - if(avcodec_open2(pVideoCodecCtx, pVideoCodec, NULL) < 0) { + if (avcodec_open2(pVideoCodecCtx, pVideoCodec, NULL) < 0) { #else - if(avcodec_open(pVideoCodecCtx, pVideoCodec) < 0) { + if (avcodec_open(pVideoCodecCtx, pVideoCodec) < 0) { #endif debug_error("error : avcodec_open failed"); ret = MMFILE_FORMAT_FAIL; @@ -298,17 +372,17 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo /* Storing Data */ /* Allocate video frame */ - pFrame = avcodec_alloc_frame(); - if(pFrame == NULL) { - debug_error ("error: pFrame is NULL\n"); + pFrame = av_frame_alloc(); + 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"); + pFrameRGB = av_frame_alloc(); + if (pFrameRGB == NULL) { + debug_error("error: pFrameRGB is NULL\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -330,7 +404,7 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo } #endif duration = duration * MILLION; - if ((duration <= 0) ||(duration <= pos)) { + if ((duration <= 0) || (duration <= pos)) { debug_error("duration error duration[%f] pos[%f]", duration, pos); ret = MMFILE_FORMAT_FAIL; goto exception; @@ -349,18 +423,18 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo av_init_packet(&packet); - while(av_read_frame(pFormatCtx, &packet) >= 0) { + while (av_read_frame(pFormatCtx, &packet) >= 0) { got_picture = 0; - // Is this a packet from the video stream? - if(packet.stream_index == videoStream) { + /* Is this a packet from the video stream? */ + if (packet.stream_index == videoStream) { #ifdef __MMFILE_TEST_MODE__ debug_msg("find Video Stream+++++++[%2d]", idx++); #endif /* Decode video frame*/ len = avcodec_decode_video2(pVideoCodecCtx, pFrame, &got_picture, &packet); if (len < 0) { - debug_warning ("Error while decoding frame"); + debug_warning("Error while decoding frame"); } else if ((packet.flags & AV_PKT_FLAG_KEY) || (key_detected == 1)) { key_detected = 0; @@ -372,42 +446,42 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo Go back to previousto Key frame and decode frame until time stamp's frame*/ if (got_picture) { - if(pFrame->key_frame) { - #ifdef __MMFILE_TEST_MODE__ + if (pFrame->key_frame) { +#ifdef __MMFILE_TEST_MODE__ debug_msg("find Video Stream+++++++Find key frame"); - #endif +#endif } else { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("find Video Stream+++++++ not key frame"); - #endif +#endif } /*eventhough decoded pFrame is not key frame, if packet.flags is AV_PKT_FLAG_KEY then can extract frame*/ find = true; } else { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("find Video Stream+++++++Find key but no frame"); - #endif +#endif key_detected = 1; } } } else { - if(is_accurate) { + if (is_accurate) { if (first_seek) { - pts = (packet.pts == AV_NOPTS_VALUE) ? (packet.dts * av_q2d(pStream->time_base)) : packet.pts; + pts = (packet.pts == (int64_t)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; + tmpPts = (packet.pts == (int64_t)AV_NOPTS_VALUE) ? (packet.dts * av_q2d(pStream->time_base)) : packet.pts; if (pts == tmpPts) find = true; } } } - if(find && got_picture) { + if (find && got_picture) { break; } } @@ -418,16 +492,16 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo } /*free pkt after loop breaking*/ - av_free_packet (&packet); + av_free_packet(&packet); /* Did we get a video frame?*/ - if(got_picture && find) { + if (got_picture && find) { #ifdef __MMFILE_TEST_MODE__ debug_msg("Find Frame"); #endif /* return frame infromations*/ - if((pVideoCodecCtx->width == 0) || (pVideoCodecCtx->height == 0)) { + if ((pVideoCodecCtx->width == 0) || (pVideoCodecCtx->height == 0)) { *width = pVideoCodecCtx->coded_width; *height = pVideoCodecCtx->coded_height; } else { @@ -436,9 +510,12 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo } *size = avpicture_get_size(PIX_FMT_RGB24, *width, *height); - *frame = mmfile_malloc (*size); + + if (*size > 0) + *frame = mmfile_malloc(*size); + if (NULL == *frame) { - debug_error ("error: avpicture_get_size. [%d]\n", size); + debug_error("error: avpicture_get_size. [%d]\n", size); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -449,9 +526,9 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo debug_msg("height : %d", *height); debug_msg("frame : %x", *frame); #endif - ret = avpicture_fill ((AVPicture *)pFrameRGB, *frame, PIX_FMT_RGB24, *width, *height); + ret = avpicture_fill((AVPicture *)pFrameRGB, *frame, PIX_FMT_RGB24, *width, *height); if (ret < 0) { - debug_error ("error: avpicture_fill fail. errcode = 0x%08X\n", ret); + debug_error("error: avpicture_fill fail. errcode = 0x%08X\n", ret); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -459,19 +536,19 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo #ifdef __MMFILE_FFMPEG_V085__ struct SwsContext *img_convert_ctx = NULL; - img_convert_ctx = sws_getContext (*width, *height, pVideoCodecCtx->pix_fmt, - *width, *height, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL); + 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"); + 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 = 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"); sws_freeContext(img_convert_ctx); img_convert_ctx = NULL; ret = MMFILE_FORMAT_FAIL; @@ -481,41 +558,42 @@ static int __mmfile_get_frame(AVFormatContext *pFormatCtx, double timestamp, boo sws_freeContext(img_convert_ctx); img_convert_ctx = NULL; #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 = 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 #ifdef MMFILE_FORMAT_DEBUG_DUMP - __save_frame(pFrameRGB, pVideoCodecCtx->width, pVideoCodecCtx->height, (int)(pos/1000)); + __save_frame(pFrameRGB, pVideoCodecCtx->width, pVideoCodecCtx->height, (int)(pos / 1000)); #endif - } - else - { + } else { debug_error("Not Found Proper Frame[%d][%d]", got_picture, find); ret = MMFILE_FORMAT_FAIL; goto exception; } - if (pFrame) av_free (pFrame); - if (pFrameRGB) av_free (pFrameRGB); + if (pFrame) av_free(pFrame); + if (pFrameRGB) av_free(pFrameRGB); if (pVideoCodecCtx) avcodec_close(pVideoCodecCtx); return MMFILE_FORMAT_SUCCESS; exception: - if (*frame) { mmfile_free (*frame); *frame = NULL; } - if (pFrame) av_free (pFrame); - if (pFrameRGB) av_free (pFrameRGB); - if (pVideoCodecCtx) avcodec_close (pVideoCodecCtx); + if (*frame) { + mmfile_free(*frame); + *frame = NULL; + } + if (pFrame) av_free(pFrame); + if (pFrameRGB) av_free(pFrameRGB); + if (pVideoCodecCtx) avcodec_close(pVideoCodecCtx); return ret; } -int mmfile_format_get_frame(const char* path, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height) +int mmfile_format_get_frame(const char *path, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height) { int ret = MMFILE_FORMAT_SUCCESS; AVFormatContext *pFormatCtx = NULL; @@ -527,13 +605,13 @@ int mmfile_format_get_frame(const char* path, double timestamp, bool is_accurate av_register_all(); /* Open video file */ - if(avformat_open_input(&pFormatCtx, path, NULL, NULL) != 0) { + if (avformat_open_input(&pFormatCtx, path, NULL, NULL) != 0) { debug_error("error : avformat_open_input failed"); return MMFILE_FORMAT_FAIL; /* Couldn't open file */ } if (!pFormatCtx) { - debug_warning ("failed to find av stream. maybe corrupted data.\n"); + debug_warning("failed to find av stream. maybe corrupted data.\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -545,15 +623,15 @@ exception: if (pFormatCtx) avformat_close_input(&pFormatCtx); return ret; - } +} int mmfile_format_get_frame_from_memory(const void *data, unsigned int datasize, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height) { int ret = MMFILE_FORMAT_SUCCESS; int format = -1; - char mimeType[MMFILE_MIMETYPE_MAX_LEN] = {0,}; - char ffmpegFormatName[MMFILE_FILE_FMT_MAX_LEN] = {0,}; - char tempURIBuffer[MMFILE_URI_MAX_LEN] = {0,}; + char mimeType[MMFILE_MIMETYPE_MAX_LEN] = {0, }; + char ffmpegFormatName[MMFILE_FILE_FMT_MAX_LEN] = {0, }; + char tempURIBuffer[MMFILE_URI_MAX_LEN] = {0, }; char *urifilename = NULL; AVFormatContext *pFormatCtx = NULL; AVInputFormat *grab_iformat = NULL; @@ -564,10 +642,10 @@ int mmfile_format_get_frame_from_memory(const void *data, unsigned int datasize, av_register_all(); - sprintf (tempURIBuffer, "%s%u:%u", MMFILE_MEM_URI, (unsigned int)data, datasize); - urifilename = mmfile_strdup (tempURIBuffer); + snprintf(tempURIBuffer, MMFILE_URI_MAX_LEN, "%s%u:%u", MMFILE_MEM_URI, (unsigned int)data, datasize); + urifilename = mmfile_strdup(tempURIBuffer); if (!urifilename) { - debug_error ("error: uri is NULL\n"); + debug_error("error: uri is NULL\n"); return MMFILE_FORMAT_FAIL; } @@ -575,41 +653,41 @@ int mmfile_format_get_frame_from_memory(const void *data, unsigned int datasize, ret = __get_fileformat(urifilename, &format); if (ret != MMFILE_FORMAT_SUCCESS) { - debug_error ("error: file format is invalid\n"); + debug_error("error: file format is invalid\n"); return MMFILE_FORMAT_FAIL; } -#ifdef __MMFILE_FFMPEG_V085__ - ffurl_register_protocol(&MMFileMEMProtocol, sizeof (URLProtocol)); +#if (defined __MMFILE_FFMPEG_V085__ && !defined __MMFILE_LIBAV_VERSION__) + ffurl_register_protocol(&MMFileMEMProtocol, sizeof(URLProtocol)); #else - register_protocol (&MMFileMEMProtocol); + ffurl_register_protocol(&MMFileMEMProtocol); #endif - if(__getMimeType(format,mimeType)< 0) { - debug_error ("error: Error in MIME Type finding\n"); + if (__getMimeType(format, mimeType, MMFILE_MIMETYPE_MAX_LEN) < 0) { + debug_error("error: Error in MIME Type finding\n"); return MMFILE_FORMAT_FAIL; } - memset (ffmpegFormatName, 0x00, MMFILE_FILE_FMT_MAX_LEN); + memset(ffmpegFormatName, 0x00, MMFILE_FILE_FMT_MAX_LEN); - ret = mmfile_util_get_ffmpeg_format (mimeType,ffmpegFormatName); + ret = mmfile_util_get_ffmpeg_format(mimeType, ffmpegFormatName); if (MMFILE_UTIL_SUCCESS != ret) { - debug_error ("error: mmfile_util_get_ffmpeg_format\n"); + debug_error("error: mmfile_util_get_ffmpeg_format\n"); return MMFILE_FORMAT_FAIL; } - grab_iformat = av_find_input_format (ffmpegFormatName); + grab_iformat = av_find_input_format(ffmpegFormatName); if (NULL == grab_iformat) { - debug_error ("error: cannot find format\n"); + debug_error("error: cannot find format\n"); goto exception; } #ifdef __MMFILE_FFMPEG_V085__ - ret = avformat_open_input (&pFormatCtx, urifilename, grab_iformat, NULL); + ret = avformat_open_input(&pFormatCtx, urifilename, grab_iformat, NULL); #else - ret = av_open_input_file (&pFormatCtx, urifilename, grab_iformat, 0, NULL); + ret = av_open_input_file(&pFormatCtx, urifilename, grab_iformat, 0, NULL); #endif if (ret < 0) { debug_error("error: cannot open %s %d\n", urifilename, ret); @@ -617,7 +695,7 @@ int mmfile_format_get_frame_from_memory(const void *data, unsigned int datasize, } if (!pFormatCtx) { - debug_warning ("failed to find av stream. maybe corrupted data.\n"); + debug_warning("failed to find av stream. maybe corrupted data.\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -628,5 +706,7 @@ exception: /* Close video file */ if (pFormatCtx) avformat_close_input(&pFormatCtx); + ffurl_deregister_protocol(&MMFileMEMProtocol); + return ret; - } +} diff --git a/formats/ffmpeg/mm_file_format_imelody.c b/formats/ffmpeg/mm_file_format_imelody.c index 24384fc..4b3a1d5 100755 --- a/formats/ffmpeg/mm_file_format_imelody.c +++ b/formats/ffmpeg/mm_file_format_imelody.c @@ -23,7 +23,7 @@ #include <string.h> /*memcmp*/ #include <stdlib.h> /*malloc*/ -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" #include "mm_file_format_private.h" #include "mm_file_format_imelody.h" @@ -39,14 +39,15 @@ #define MIDI_MAX 255 #define VOL_INTERVAL 12 - + #define MIDI_HEADER_LENGTH 52 static unsigned char midiData[AV_MIDI_COUNT_MAX] ; -static unsigned char midiHeader[MIDI_HEADER_LENGTH]= {0x4d,0x54,0x68,0x64,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x30,0x4d,0x54, - 0x72,0x6b,0x00,0x00,0x00,0x00,0x00,0xff,0x58,0x04,0x04,0x02,0x18,0x08,0x00,0xff, - 0x59,0x02,0x00,0x00,0x00,0xff,0x51,0x03,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0xb0, - 0x07,0x00,0x00,0x90}; +static unsigned char midiHeader[MIDI_HEADER_LENGTH] = {0x4d, 0x54, 0x68, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x30, 0x4d, 0x54, + 0x72, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x58, 0x04, 0x04, 0x02, 0x18, 0x08, 0x00, 0xff, + 0x59, 0x02, 0x00, 0x00, 0x00, 0xff, 0x51, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xb0, + 0x07, 0x00, 0x00, 0x90 + }; static unsigned char noteTotal[AV_MIDI_COUNT_MAX]; @@ -71,7 +72,7 @@ static struct { } noteData[AV_MIDI_NOTE_MAX]; /*imelody key string (to validatation check)*/ -static const char *g_imy_key_str [] = { +static const char *g_imy_key_str[] = { "BEGIN:IMELODY", "VERSION:", "FORMAT:", @@ -80,24 +81,24 @@ static const char *g_imy_key_str [] = { }; -static int __is_good_imelody (unsigned char *src, unsigned int size); -static unsigned char* __get_load_memory (char *src, int *out_size); -static unsigned char __AvMIDISetVolume(char* pMelodyBuf); -static int __AvMIDISetBeat(char* pMelodyBuf); -static char __AvMIDISetStyle(char* pMelodyBuf); -static unsigned char* __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen); -static int __get_imelody_tag (const char *uriname, tMMFileImelodyTagInfo *tags); +static int __is_good_imelody(unsigned char *src, unsigned int size); +static unsigned char *__get_load_memory(char *src, int *out_size); +static unsigned char __AvMIDISetVolume(char *pMelodyBuf); +static int __AvMIDISetBeat(char *pMelodyBuf); +static char __AvMIDISetStyle(char *pMelodyBuf); +static unsigned char *__AvConvertIMelody2MIDI(char *pMelodyBuf, unsigned int *pBufLen); +static int __get_imelody_tag(const char *uriname, tMMFileImelodyTagInfo *tags); + - /* interface functions */ -int mmfile_format_read_stream_imy (MMFileFormatContext *formatContext); -int mmfile_format_read_frame_imy (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); -int mmfile_format_read_tag_imy (MMFileFormatContext *formatContext); -int mmfile_format_close_imy (MMFileFormatContext *formatContext); +int mmfile_format_read_stream_imy(MMFileFormatContext *formatContext); +int mmfile_format_read_frame_imy(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); +int mmfile_format_read_tag_imy(MMFileFormatContext *formatContext); +int mmfile_format_close_imy(MMFileFormatContext *formatContext); EXPORT_API -int mmfile_format_open_imy (MMFileFormatContext *formatContext) +int mmfile_format_open_imy(MMFileFormatContext *formatContext) { int ret = 0; @@ -107,10 +108,10 @@ int mmfile_format_open_imy (MMFileFormatContext *formatContext) } if (formatContext->pre_checked == 0) { - ret = MMFileFormatIsValidIMY (formatContext->uriFileName); + ret = MMFileFormatIsValidIMY(NULL, formatContext->uriFileName); if (ret == 0) { debug_error("It is not imelody file\n"); - return MMFILE_FORMAT_FAIL; + return MMFILE_FORMAT_FAIL; } } @@ -128,7 +129,7 @@ int mmfile_format_open_imy (MMFileFormatContext *formatContext) } EXPORT_API -int mmfile_format_read_stream_imy (MMFileFormatContext *formatContext) +int mmfile_format_read_stream_imy(MMFileFormatContext *formatContext) { MIDI_INFO_SIMPLE *info = NULL; MMFileFormatStream *audioStream = NULL; @@ -136,8 +137,8 @@ int mmfile_format_read_stream_imy (MMFileFormatContext *formatContext) unsigned char *imy = NULL; int imy_size = 0; unsigned char *midi = NULL; - unsigned int midi_size = 0; - char src2[MMFILE_URI_MAX_LEN]; + unsigned int midi_size = 0; + char src2[MMFILE_URI_MAX_LEN]; int ret = 0; @@ -147,30 +148,30 @@ int mmfile_format_read_stream_imy (MMFileFormatContext *formatContext) } /*convert iMelody to Midi*/ - imy = __get_load_memory (formatContext->uriFileName, &imy_size); + imy = __get_load_memory(formatContext->uriFileName, &imy_size); if (!imy) { - debug_error ("failed to load memory.\n"); + debug_error("failed to load memory.\n"); goto exception; } - ret = __is_good_imelody (imy, imy_size); + ret = __is_good_imelody(imy, imy_size); if (ret != MMFILE_FORMAT_SUCCESS) { - debug_error ("it's broken file.\n"); + debug_error("it's broken file.\n"); goto exception; } - midi = __AvConvertIMelody2MIDI ((char *)imy, &midi_size); + midi = __AvConvertIMelody2MIDI((char *)imy, &midi_size); if (!midi) { - debug_error ("failed to convert."); + debug_error("failed to convert."); goto exception; } - + /*make uri*/ - memset (src2, 0x00, MMFILE_URI_MAX_LEN); - sprintf (src2, "%s%u:%u", MMFILE_MEM_URI, (unsigned int)midi, midi_size); + memset(src2, 0x00, MMFILE_URI_MAX_LEN); + snprintf(src2, sizeof(src2), "%s%u:%u", MMFILE_MEM_URI, (unsigned int)midi, midi_size); /*get infomation*/ - info = mmfile_format_get_midi_infomation (src2); + info = mmfile_format_get_midi_infomation(src2); if (!info) { - debug_error ("failed to get infomation"); + debug_error("failed to get infomation"); goto exception; } @@ -181,9 +182,9 @@ int mmfile_format_read_stream_imy (MMFileFormatContext *formatContext) formatContext->nbStreams = 1; - audioStream = mmfile_malloc (sizeof(MMFileFormatStream)); + audioStream = mmfile_malloc(sizeof(MMFileFormatStream)); if (NULL == audioStream) { - debug_error ("error: mmfile_malloc audiostream\n"); + debug_error("error: mmfile_malloc audiostream\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -197,344 +198,320 @@ int mmfile_format_read_stream_imy (MMFileFormatContext *formatContext) audioStream->nbChannel = 1; audioStream->samplePerSec = 0; formatContext->streams[MMFILE_AUDIO_STREAM] = audioStream; - - #ifdef __MMFILE_TEST_MODE__ - mmfile_format_print_contents (formatContext); - #endif - - mmfile_free (imy); - mmfile_free (midi); - mmfile_format_free_midi_infomation (info); + +#ifdef __MMFILE_TEST_MODE__ + mmfile_format_print_contents(formatContext); +#endif + + mmfile_free(imy); + mmfile_free(midi); + mmfile_format_free_midi_infomation(info); return MMFILE_FORMAT_SUCCESS; exception: - mmfile_free (imy); - mmfile_free (midi); - mmfile_format_free_midi_infomation (info); - mmfile_free (audioStream); + mmfile_free(imy); + mmfile_free(midi); + mmfile_format_free_midi_infomation(info); + mmfile_free(audioStream); return MMFILE_FORMAT_FAIL; } EXPORT_API -int mmfile_format_read_frame_imy (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) +int mmfile_format_read_frame_imy(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) { - return MMFILE_FORMAT_SUCCESS; + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_read_tag_imy (MMFileFormatContext *formatContext) +int mmfile_format_read_tag_imy(MMFileFormatContext *formatContext) { - tMMFileImelodyTagInfo taginfo = {0,}; + tMMFileImelodyTagInfo taginfo = {0, }; unsigned int tag_len; unsigned int cnv_len; - const char *locale = MMFileUtilGetLocale (NULL); + const char *locale = MMFileUtilGetLocale(NULL); if (!formatContext) { debug_error("formatContext is NULL\n"); return MMFILE_FORMAT_FAIL; } - __get_imelody_tag (formatContext->uriFileName, &taginfo); + __get_imelody_tag(formatContext->uriFileName, &taginfo); /** * UTF8 convert */ if (taginfo.title) { - tag_len = strlen (taginfo.title); + tag_len = strlen(taginfo.title); cnv_len = 0; - formatContext->title = mmfile_string_convert ((const char*)taginfo.title, - tag_len, - "UTF-8", - locale, - NULL, - (unsigned int*)&cnv_len); - + formatContext->title = mmfile_string_convert((const char *)taginfo.title, + tag_len, + "UTF-8", + locale, + NULL, + (unsigned int *)&cnv_len); + if (formatContext->title == NULL) { - debug_warning ("failed to UTF8 convert.\n"); - formatContext->title = mmfile_strdup (taginfo.title); + debug_warning("failed to UTF8 convert.\n"); + formatContext->title = mmfile_strdup(taginfo.title); } - mmfile_free (taginfo.title); + mmfile_free(taginfo.title); } if (taginfo.composer) { - tag_len = strlen (taginfo.composer); + tag_len = strlen(taginfo.composer); cnv_len = 0; - formatContext->composer = mmfile_string_convert ((const char*)taginfo.composer, - tag_len, - "UTF-8", - locale, - NULL, - (unsigned int*)&cnv_len); + formatContext->composer = mmfile_string_convert((const char *)taginfo.composer, + tag_len, + "UTF-8", + locale, + NULL, + (unsigned int *)&cnv_len); if (formatContext->composer == NULL) { - debug_warning ("failed to UTF8 convert.\n"); - formatContext->composer = mmfile_strdup (taginfo.composer); + debug_warning("failed to UTF8 convert.\n"); + formatContext->composer = mmfile_strdup(taginfo.composer); } - mmfile_free (taginfo.composer); + mmfile_free(taginfo.composer); } if (taginfo.comment) { - tag_len = strlen (taginfo.comment); + tag_len = strlen(taginfo.comment); cnv_len = 0; - formatContext->comment = mmfile_string_convert ((const char*)taginfo.comment, - tag_len, - "UTF-8", - locale, - NULL, - (unsigned int*)&cnv_len); + formatContext->comment = mmfile_string_convert((const char *)taginfo.comment, + tag_len, + "UTF-8", + locale, + NULL, + (unsigned int *)&cnv_len); if (formatContext->comment == NULL) { - debug_warning ("failed to UTF8 convert.\n"); - formatContext->comment = mmfile_strdup (taginfo.comment); + debug_warning("failed to UTF8 convert.\n"); + formatContext->comment = mmfile_strdup(taginfo.comment); } - mmfile_free (taginfo.comment); + mmfile_free(taginfo.comment); } if (taginfo.copyright) { - tag_len = strlen (taginfo.copyright); + tag_len = strlen(taginfo.copyright); cnv_len = 0; - formatContext->copyright = mmfile_string_convert ((const char*)taginfo.copyright, - tag_len, - "UTF-8", - locale, - NULL, - (unsigned int*)&cnv_len); + formatContext->copyright = mmfile_string_convert((const char *)taginfo.copyright, + tag_len, + "UTF-8", + locale, + NULL, + (unsigned int *)&cnv_len); if (formatContext->copyright == NULL) { - debug_warning ("failed to UTF8 convert.\n"); - formatContext->copyright = mmfile_strdup (taginfo.copyright); + debug_warning("failed to UTF8 convert.\n"); + formatContext->copyright = mmfile_strdup(taginfo.copyright); } - mmfile_free (taginfo.copyright); + mmfile_free(taginfo.copyright); } return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_close_imy (MMFileFormatContext *formatContext) +int mmfile_format_close_imy(MMFileFormatContext *formatContext) { return MMFILE_FORMAT_SUCCESS; } -static int __get_imelody_tag (const char *uriname, tMMFileImelodyTagInfo *tags) +static int __get_imelody_tag(const char *uriname, tMMFileImelodyTagInfo *tags) { #define _MMFILE_IMY_TAG_BUFFER_LENGTH 512 #define _MMFILE_IMY_HEADER_LENGTH 20 #define _MMFILE_IMY_KEY_BUFFER_LENGTH 20 #define _MMFILE_IMY_VALUE_BUFFER_LENGTH 128 - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_IMY_TAG_BUFFER_LENGTH] = {0,}; - int readed = 0; - long long filesize = 0; - unsigned int startoffset = 0; - unsigned int endoffset = 0; - unsigned int i = 0, j = 0; - char imy_key_buffer[_MMFILE_IMY_KEY_BUFFER_LENGTH] = {0,}; - unsigned int imy_key_buffer_index = 0; - char imy_value_buffer[_MMFILE_IMY_VALUE_BUFFER_LENGTH] = {0,}; - unsigned int imy_value_buffer_index = 0; - int isKeyBuffer = 1; - int isDone = 0; - - int ret = MMFILE_FORMAT_FAIL; - - if (!uriname || !tags) - { - debug_error("uriname or tags is NULL\n"); - return MMFILE_FORMAT_FAIL; - } - - ret = mmfile_open (&fp, uriname, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) - { - debug_error ( "open failed.\n"); - return MMFILE_FORMAT_FAIL; - } - - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell (fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); - - if (filesize < _MMFILE_IMY_HEADER_LENGTH) - { - debug_error ( "header is too small.\n"); - ret = MMFILE_FORMAT_FAIL; - goto exit; - } - - /* set begin and end point at the file */ - startoffset = 0; - endoffset = filesize; - - i = startoffset; - isKeyBuffer = 1; - while (i < endoffset) - { - mmfile_seek (fp, i, MMFILE_SEEK_SET); - readed = mmfile_read (fp, buffer, _MMFILE_IMY_TAG_BUFFER_LENGTH); - if (readed < 0) - { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); - ret = 0; - break; - } - - j = 0; - while (j < readed) - { - if ( *(buffer+j) == 0x3a ) - { - isKeyBuffer = 0; - } - else if ( *(buffer+j) == 0x0d ) - { - } - else if ( *(buffer+j) == 0x0a ) - { - isKeyBuffer = 1; - isDone = 1; - } - else - { - if (isKeyBuffer) - { - if (imy_key_buffer_index < _MMFILE_IMY_KEY_BUFFER_LENGTH) - { - imy_key_buffer[imy_key_buffer_index++] = *(buffer+j); - } - - } - else - { - if (imy_value_buffer_index < _MMFILE_IMY_VALUE_BUFFER_LENGTH) - { - imy_value_buffer[imy_value_buffer_index++] = *(buffer+j); - } - } - } - - if (isDone) - { - if (!strncmp (imy_key_buffer, "NAME", 4)) - { - if(tags->title != NULL) + MMFileIOHandle *fp = NULL; + unsigned char buffer[_MMFILE_IMY_TAG_BUFFER_LENGTH] = {0, }; + long long filesize = 0; + unsigned int startoffset = 0; + unsigned int endoffset = 0, i = 0; + int readed = 0, j = 0; + char imy_key_buffer[_MMFILE_IMY_KEY_BUFFER_LENGTH] = {0, }; + unsigned int imy_key_buffer_index = 0; + char imy_value_buffer[_MMFILE_IMY_VALUE_BUFFER_LENGTH] = {0, }; + unsigned int imy_value_buffer_index = 0; + int isKeyBuffer = 1; + int isDone = 0; + + int ret = MMFILE_FORMAT_FAIL; + + if (!uriname || !tags) { + debug_error("uriname or tags is NULL\n"); + return MMFILE_FORMAT_FAIL; + } + + ret = mmfile_open(&fp, uriname, MMFILE_RDONLY); + if (ret == MMFILE_UTIL_FAIL) { + debug_error("open failed.\n"); + return MMFILE_FORMAT_FAIL; + } + + mmfile_seek(fp, 0, MMFILE_SEEK_END); + filesize = mmfile_tell(fp); + mmfile_seek(fp, 0, MMFILE_SEEK_SET); + + if (filesize < _MMFILE_IMY_HEADER_LENGTH) { + debug_error("header is too small.\n"); + ret = MMFILE_FORMAT_FAIL; + goto exit; + } + + /* set begin and end point at the file */ + startoffset = 0; + endoffset = filesize; + + i = startoffset; + isKeyBuffer = 1; + while (i < endoffset) { + mmfile_seek(fp, i, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_IMY_TAG_BUFFER_LENGTH); + if (readed < 0) { + debug_error("read error. size = %d. Maybe end of file.\n", readed); + ret = 0; + break; + } + + j = 0; + while (j < readed) { + if (*(buffer + j) == 0x3a) { + isKeyBuffer = 0; + } else if (*(buffer + j) == 0x0d) { + } else if (*(buffer + j) == 0x0a) { + isKeyBuffer = 1; + isDone = 1; + } else { + if (isKeyBuffer) { + if (imy_key_buffer_index < _MMFILE_IMY_KEY_BUFFER_LENGTH) { + imy_key_buffer[imy_key_buffer_index++] = *(buffer + j); + } + + } else { + if (imy_value_buffer_index < _MMFILE_IMY_VALUE_BUFFER_LENGTH) { + imy_value_buffer[imy_value_buffer_index++] = *(buffer + j); + } + } + } + + if (isDone) { + if (!strncmp(imy_key_buffer, "NAME", 4)) { + if (tags->title != NULL) mmfile_free(tags->title); - tags->title = mmfile_strdup (imy_value_buffer); - } - else if (!strncmp (imy_key_buffer, "COMPOSER", 8)) - { - if(tags->composer != NULL) + tags->title = mmfile_strdup(imy_value_buffer); + } else if (!strncmp(imy_key_buffer, "COMPOSER", 8)) { + if (tags->composer != NULL) mmfile_free(tags->composer); - tags->composer = mmfile_strdup (imy_value_buffer); - } - else if (!strncmp (imy_key_buffer, "COPYRIGHT", 9)) - { - if(tags->copyright != NULL) + tags->composer = mmfile_strdup(imy_value_buffer); + } else if (!strncmp(imy_key_buffer, "COPYRIGHT", 9)) { + if (tags->copyright != NULL) mmfile_free(tags->copyright); - tags->copyright = mmfile_strdup (imy_value_buffer); - } - - memset (imy_key_buffer, 0x00, _MMFILE_IMY_KEY_BUFFER_LENGTH); - memset (imy_value_buffer, 0x00, _MMFILE_IMY_VALUE_BUFFER_LENGTH); - imy_key_buffer_index = 0; - imy_value_buffer_index = 0; - isDone = 0; - } - - j++; - } - - memset (buffer, 0x00, _MMFILE_IMY_TAG_BUFFER_LENGTH); - - i = i + j; - } + tags->copyright = mmfile_strdup(imy_value_buffer); + } + + memset(imy_key_buffer, 0x00, _MMFILE_IMY_KEY_BUFFER_LENGTH); + memset(imy_value_buffer, 0x00, _MMFILE_IMY_VALUE_BUFFER_LENGTH); + imy_key_buffer_index = 0; + imy_value_buffer_index = 0; + isDone = 0; + } + + j++; + } + + memset(buffer, 0x00, _MMFILE_IMY_TAG_BUFFER_LENGTH); + + i = i + j; + } exit: - mmfile_close (fp); - return ret; + mmfile_close(fp); + return ret; } static unsigned char * -__get_load_memory (char *src, int *out_size) +__get_load_memory(char *src, int *out_size) { unsigned char *buf = NULL; MMFileIOHandle *fp = NULL; long long src_size = 0L; - int readed =0; + int readed = 0; int ret = 0; /*open*/ - ret = mmfile_open (&fp, src, MMFILE_RDONLY); + ret = mmfile_open(&fp, src, MMFILE_RDONLY); if (ret == MMFILE_UTIL_FAIL) { - debug_error ( "open failed.\n"); + debug_error("open failed.\n"); return NULL; } /*get file size*/ - mmfile_seek (fp, 0L, MMFILE_SEEK_END); - src_size = mmfile_tell (fp); - mmfile_seek (fp, 0L, MMFILE_SEEK_SET); + mmfile_seek(fp, 0L, MMFILE_SEEK_END); + src_size = mmfile_tell(fp); + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); if (src_size <= 0) { - debug_error ("failed to get file size.\n"); + debug_error("failed to get file size.\n"); goto failed; } /*alloc read buffer*/ - if ((buf = mmfile_malloc (src_size)) == NULL) { - debug_error ( "memory allocation failed.\n"); + if ((buf = mmfile_malloc(src_size)) == NULL) { + debug_error("memory allocation failed.\n"); goto failed; } /*read data*/ - if ((readed = mmfile_read (fp, buf, src_size) ) != src_size) { - debug_error ( "read error. size = %d\n", readed); + if ((readed = mmfile_read(fp, buf, src_size)) != src_size) { + debug_error("read error. size = %d\n", readed); goto failed; } *out_size = (int)src_size; - mmfile_close (fp); + mmfile_close(fp); return buf; - + failed: - if (buf) mmfile_free (buf); - if (fp) mmfile_close (fp); + if (buf) mmfile_free(buf); + if (fp) mmfile_close(fp); return NULL; } static int -__is_good_imelody (unsigned char *src, unsigned int size) +__is_good_imelody(unsigned char *src, unsigned int size) { - int i, j; + unsigned int i, j; int key_len; int is_found; unsigned char *p; - int num = sizeof (g_imy_key_str) / sizeof (g_imy_key_str[0]); + unsigned int num = sizeof(g_imy_key_str) / sizeof(g_imy_key_str[0]); for (i = 0; i < num; i++) { - key_len = strlen (g_imy_key_str[i]); + key_len = strlen(g_imy_key_str[i]); p = src; is_found = 0; for (j = 0; j <= size - key_len; j++, p++) { - if (memcmp (g_imy_key_str[i], p, key_len) == 0) { + if (memcmp(g_imy_key_str[i], p, key_len) == 0) { is_found = 1; break; } } - if (is_found) continue; else return MMFILE_FORMAT_FAIL; + if (is_found) continue; + else return MMFILE_FORMAT_FAIL; } return MMFILE_FORMAT_SUCCESS; } -static unsigned char* -__AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) +static unsigned char * +__AvConvertIMelody2MIDI(char *pMelodyBuf, unsigned int *pBufLen) { - unsigned char* pConvertBuf; - char* pStart; - char* pMelodyStart; + unsigned char *pConvertBuf; + char *pStart; + char *pMelodyStart; char noteBase[6]; int octaveCount; int octaveValue; @@ -552,17 +529,15 @@ __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) char vol = '%'; int volInterval = 0; - for(count = 0;count < AV_MIDI_NOTE_MAX;count++) - { + for (count = 0; count < AV_MIDI_NOTE_MAX; count++) { restSpec[count] = 0; durationSpec[count] = 0; } - for(octaveCount = 0;octaveCount < AV_MIDI_NOTE_MAX;octaveCount++) + for (octaveCount = 0; octaveCount < AV_MIDI_NOTE_MAX; octaveCount++) octave[octaveCount] = '%'; - for(MelodyCount = 0;MelodyCount < AV_MIDI_NOTE_MAX;MelodyCount++) - { + for (MelodyCount = 0; MelodyCount < AV_MIDI_NOTE_MAX; MelodyCount++) { Melody[MelodyCount].flat_sharp = '%'; Melody[MelodyCount].note = '%'; Melody[MelodyCount].duration = '%'; @@ -572,8 +547,7 @@ __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) Melody[MelodyCount].vol = '%'; } - for(MelodyCount = 0;MelodyCount < AV_MIDI_NOTE_MAX;MelodyCount++) - { + for (MelodyCount = 0; MelodyCount < AV_MIDI_NOTE_MAX; MelodyCount++) { noteData[MelodyCount].note = 0; noteData[MelodyCount].duration_on = 0; noteData[MelodyCount].duration_off = 0; @@ -591,8 +565,7 @@ __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) tempoValue = __AvMIDISetBeat(pMelodyBuf); - for(number = 0;tempoValue != 0;number++) - { + for (number = 0; tempoValue != 0; number++) { tempoData[0] = tempoValue % 16; tempoValue = tempoValue / 16; @@ -601,18 +574,17 @@ __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) tempoData[2] = tempoData[0] + tempoData[1] * 16; - midiData[42-number] = tempoData[2]; + midiData[42 - number] = tempoData[2]; } pMelodyBuf = pStart; - while(!(*pMelodyBuf == '@' || (*pMelodyBuf == 'E' && *(pMelodyBuf+2) == 'D'))) + while (!(*pMelodyBuf == '@' || (*pMelodyBuf == 'E' && *(pMelodyBuf + 2) == 'D'))) pMelodyBuf++; pMelodyBuf++; - if(*pMelodyBuf >= '1' && *pMelodyBuf <= '9') - { + if (*pMelodyBuf >= '1' && *pMelodyBuf <= '9') { repeat = *pMelodyBuf - '0'; pMelodyBuf++; @@ -624,7 +596,7 @@ __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) pMelodyBuf = pMelodyBuf + 42; - while(!(*pMelodyBuf == 'M' && *(pMelodyBuf+5) == 'Y' && *(pMelodyBuf+6) == ':')) //2007-02-28 AVMS_Sound:k2bogus - UMTS200073205;imy play, [MELODY:] extract fix + while (!(*pMelodyBuf == 'M' && *(pMelodyBuf + 5) == 'Y' && *(pMelodyBuf + 6) == ':')) /*2007-02-28 AVMS_Sound:k2bogus - UMTS200073205;imy play, [MELODY:] extract fix */ pMelodyBuf++; pMelodyBuf = pMelodyBuf + 6; @@ -635,60 +607,52 @@ __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) * why? mobileBAE player stopped at newline. * 2009/08/12 */ - while(!((*pMelodyBuf == 'E' && *(pMelodyBuf+2) == 'D') || (*pMelodyBuf == '\n'))) - { - if(noteCount>=AV_MIDI_NOTE_MAX) - { - debug_warning ("__AvConvertIMelody2MIDI : noteCount>=AV_MIDI_NOTE_MAX\n"); + while (!((*pMelodyBuf == 'E' && *(pMelodyBuf + 2) == 'D') || (*pMelodyBuf == '\n'))) { + if (noteCount >= AV_MIDI_NOTE_MAX) { + debug_warning("__AvConvertIMelody2MIDI : noteCount>=AV_MIDI_NOTE_MAX\n"); break; } - + pMelodyBuf++; - - if(*pMelodyBuf == '*') - { + + if (*pMelodyBuf == '*') { pMelodyBuf++; - if(*pMelodyBuf >= '0' && *pMelodyBuf <= '8') + if (*pMelodyBuf >= '0' && *pMelodyBuf <= '8') octave[noteCount] = *pMelodyBuf; } - if(*pMelodyBuf == '#' || *pMelodyBuf == '&') + if (*pMelodyBuf == '#' || *pMelodyBuf == '&') Melody[noteCount].flat_sharp = *pMelodyBuf; - if(*pMelodyBuf == 'r') - { + if (*pMelodyBuf == 'r') { pMelodyBuf++; - if(*pMelodyBuf >= '0' && *pMelodyBuf <= '5') - { + if (*pMelodyBuf >= '0' && *pMelodyBuf <= '5') { Melody[noteCount].rest = *pMelodyBuf; pMelodyBuf++; - if(*pMelodyBuf == '.' || *pMelodyBuf == ':' || *pMelodyBuf == ';') + if (*pMelodyBuf == '.' || *pMelodyBuf == ':' || *pMelodyBuf == ';') Melody[noteCount].rest_specifier = *pMelodyBuf; } } - - if(*pMelodyBuf == 'V') - { + + if (*pMelodyBuf == 'V') { pMelodyBuf++; - if(*pMelodyBuf == '+' || *pMelodyBuf == '-') + if (*pMelodyBuf == '+' || *pMelodyBuf == '-') Melody[noteCount].vol = *pMelodyBuf; } - if(*pMelodyBuf >= 'a' && *pMelodyBuf <= 'g') - { + if (*pMelodyBuf >= 'a' && *pMelodyBuf <= 'g') { Melody[noteCount].note = *pMelodyBuf; pMelodyBuf++; - - if(*pMelodyBuf >= '0' && *pMelodyBuf <= '5') - { + + if (*pMelodyBuf >= '0' && *pMelodyBuf <= '5') { Melody[noteCount].duration = *pMelodyBuf; pMelodyBuf++; - if(*pMelodyBuf == '.' || *pMelodyBuf == ':' || *pMelodyBuf == ';') + if (*pMelodyBuf == '.' || *pMelodyBuf == ':' || *pMelodyBuf == ';') Melody[noteCount].duration_specifier = *pMelodyBuf; else @@ -699,81 +663,89 @@ __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) } } - for(octaveCount = 1;octaveCount < noteCount;octaveCount++) - { - if(octave[octaveCount] == '%') - octave[octaveCount] = octave[octaveCount-1]; + for (octaveCount = 1; octaveCount < noteCount; octaveCount++) { + if (octave[octaveCount] == '%') + octave[octaveCount] = octave[octaveCount - 1]; } - for(number = 0;number < noteCount;number++) - { - if(octave[0] == '%' && octave[number] == '%') + for (number = 0; number < noteCount; number++) { + if (octave[0] == '%' && octave[number] == '%') octaveValue = 4; - + else octaveValue = octave[number] - '0'; octaveValue = octaveValue * 12; - if(Melody[number].flat_sharp == '#') - { - switch(Melody[number].note) - { - case 'c': noteData[number].note = octaveValue + 1; - break; - case 'd': noteData[number].note = octaveValue + 3; - break; - case 'f': noteData[number].note = octaveValue + 6; - break; - case 'g': noteData[number].note = octaveValue + 8; - break; - case 'a': noteData[number].note = octaveValue + 10; - break; - default : - break; + if (Melody[number].flat_sharp == '#') { + switch (Melody[number].note) { + case 'c': + noteData[number].note = octaveValue + 1; + break; + case 'd': + noteData[number].note = octaveValue + 3; + break; + case 'f': + noteData[number].note = octaveValue + 6; + break; + case 'g': + noteData[number].note = octaveValue + 8; + break; + case 'a': + noteData[number].note = octaveValue + 10; + break; + default: + break; } } - else - if(Melody[number].flat_sharp == '&') - { - switch(Melody[number].note) - { - case 'd': noteData[number].note = octaveValue + 1; - break; - case 'e': noteData[number].note = octaveValue + 3; - break; - case 'g': noteData[number].note = octaveValue + 6; - break; - case 'a': noteData[number].note = octaveValue + 8; - break; - case 'b': noteData[number].note = octaveValue + 10; - break; - default : - break; + else if (Melody[number].flat_sharp == '&') { + switch (Melody[number].note) { + case 'd': + noteData[number].note = octaveValue + 1; + break; + case 'e': + noteData[number].note = octaveValue + 3; + break; + case 'g': + noteData[number].note = octaveValue + 6; + break; + case 'a': + noteData[number].note = octaveValue + 8; + break; + case 'b': + noteData[number].note = octaveValue + 10; + break; + default: + break; } } - else - { - switch(Melody[number].note) - { - case 'c': noteData[number].note = octaveValue; - break; - case 'd': noteData[number].note = octaveValue + 2; - break; - case 'e': noteData[number].note = octaveValue + 4; - break; - case 'f': noteData[number].note = octaveValue + 5; - break; - case 'g': noteData[number].note = octaveValue + 7; - break; - case 'a': noteData[number].note = octaveValue + 9; - break; - case 'b': noteData[number].note = octaveValue + 11; - break; - default : - break; + else { + switch (Melody[number].note) { + case 'c': + noteData[number].note = octaveValue; + break; + case 'd': + noteData[number].note = octaveValue + 2; + break; + case 'e': + noteData[number].note = octaveValue + 4; + break; + case 'f': + noteData[number].note = octaveValue + 5; + break; + case 'g': + noteData[number].note = octaveValue + 7; + break; + case 'a': + noteData[number].note = octaveValue + 9; + break; + case 'b': + noteData[number].note = octaveValue + 11; + break; + default: + break; } } } @@ -782,448 +754,456 @@ __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) style = __AvMIDISetStyle(pMelodyBuf); - for(number = 0;number < noteCount;number++) - { - if(style == '0') - { - switch(Melody[number].duration) - { - case '0': noteData[number].duration_on = 183; - noteData[number].duration_off = 9; - break; - case '1': noteData[number].duration_on = 91; - noteData[number].duration_off = 5; - break; - case '2': noteData[number].duration_on = 46; - noteData[number].duration_off = 2; - break; - case '3': noteData[number].duration_on = 23; - noteData[number].duration_off = 1; - break; - case '4': noteData[number].duration_on = 11; - noteData[number].duration_off = 1; - break; - case '5': noteData[number].duration_on = 5; - noteData[number].duration_off = 1; - break; - default : - break; + for (number = 0; number < noteCount; number++) { + if (style == '0') { + switch (Melody[number].duration) { + case '0': + noteData[number].duration_on = 183; + noteData[number].duration_off = 9; + break; + case '1': + noteData[number].duration_on = 91; + noteData[number].duration_off = 5; + break; + case '2': + noteData[number].duration_on = 46; + noteData[number].duration_off = 2; + break; + case '3': + noteData[number].duration_on = 23; + noteData[number].duration_off = 1; + break; + case '4': + noteData[number].duration_on = 11; + noteData[number].duration_off = 1; + break; + case '5': + noteData[number].duration_on = 5; + noteData[number].duration_off = 1; + break; + default: + break; } } - else - if(style == '1') - { - switch(Melody[number].duration) - { - case '0': noteData[number].duration_on = 192; - noteData[number].duration_off = 0; - break; - case '1': noteData[number].duration_on = 96; - noteData[number].duration_off = 0; - break; - case '2': noteData[number].duration_on = 48; - noteData[number].duration_off = 0; - break; - case '3': noteData[number].duration_on = 24; - noteData[number].duration_off = 0; - break; - case '4': noteData[number].duration_on = 12; - noteData[number].duration_off = 0; - break; - case '5': noteData[number].duration_on = 6; - noteData[number].duration_off = 0; - break; - default : - break; + else if (style == '1') { + switch (Melody[number].duration) { + case '0': + noteData[number].duration_on = 192; + noteData[number].duration_off = 0; + break; + case '1': + noteData[number].duration_on = 96; + noteData[number].duration_off = 0; + break; + case '2': + noteData[number].duration_on = 48; + noteData[number].duration_off = 0; + break; + case '3': + noteData[number].duration_on = 24; + noteData[number].duration_off = 0; + break; + case '4': + noteData[number].duration_on = 12; + noteData[number].duration_off = 0; + break; + case '5': + noteData[number].duration_on = 6; + noteData[number].duration_off = 0; + break; + default: + break; } } - else - { - switch(Melody[number].duration) - { - case '0': noteData[number].duration_on = 96; - noteData[number].duration_off = 96; - break; - case '1': noteData[number].duration_on = 48; - noteData[number].duration_off = 48; - break; - case '2': noteData[number].duration_on = 24; - noteData[number].duration_off = 24; - break; - case '3': noteData[number].duration_on = 12; - noteData[number].duration_off = 12; - break; - case '4': noteData[number].duration_on = 6; - noteData[number].duration_off = 6; - break; - case '5': noteData[number].duration_on = 3; - noteData[number].duration_off = 3; - break; - default : - break; + else { + switch (Melody[number].duration) { + case '0': + noteData[number].duration_on = 96; + noteData[number].duration_off = 96; + break; + case '1': + noteData[number].duration_on = 48; + noteData[number].duration_off = 48; + break; + case '2': + noteData[number].duration_on = 24; + noteData[number].duration_off = 24; + break; + case '3': + noteData[number].duration_on = 12; + noteData[number].duration_off = 12; + break; + case '4': + noteData[number].duration_on = 6; + noteData[number].duration_off = 6; + break; + case '5': + noteData[number].duration_on = 3; + noteData[number].duration_off = 3; + break; + default: + break; } } - switch(Melody[number].duration) - { - case '0': durationSpec[number] = 192; - break; - case '1': durationSpec[number] = 96; - break; - case '2': durationSpec[number] = 48; - break; - case '3': durationSpec[number] = 24; - break; - case '4': durationSpec[number] = 12; - break; - case '5': durationSpec[number] = 6; - break; - default : - break; + switch (Melody[number].duration) { + case '0': + durationSpec[number] = 192; + break; + case '1': + durationSpec[number] = 96; + break; + case '2': + durationSpec[number] = 48; + break; + case '3': + durationSpec[number] = 24; + break; + case '4': + durationSpec[number] = 12; + break; + case '5': + durationSpec[number] = 6; + break; + default: + break; } - if(Melody[number].duration_specifier != '%') - { - switch(Melody[number].duration_specifier) - { - case '.': noteData[number].duration_on += (durationSpec[number] / 2); - break; - case ':': noteData[number].duration_on += durationSpec[number]; - break; - case ';': noteData[number].duration_on -= (durationSpec[number] / 3); - break; - default : - break; + if (Melody[number].duration_specifier != '%') { + switch (Melody[number].duration_specifier) { + case '.': + noteData[number].duration_on += (durationSpec[number] / 2); + break; + case ':': + noteData[number].duration_on += durationSpec[number]; + break; + case ';': + noteData[number].duration_on -= (durationSpec[number] / 3); + break; + default: + break; } - if(noteData[number].duration_on > MIDI_MAX) + if (noteData[number].duration_on > MIDI_MAX) noteData[number].duration_on = MIDI_LIMIT; } } - for(number = 1;number < noteCount;number++) - { - if(Melody[number].rest >= '0' && Melody[number].rest <= '5') - { - switch(Melody[number].rest) - { - case '0': noteData[number-1].duration_off += 192; - restSpec[number] = 192; - break; - case '1': noteData[number-1].duration_off += 96; - restSpec[number] = 96; - break; - case '2': noteData[number-1].duration_off += 48; - restSpec[number] = 48; - break; - case '3': noteData[number-1].duration_off += 24; - restSpec[number] = 24; - break; - case '4': noteData[number-1].duration_off += 12; - restSpec[number] = 12; - break; - case '5': noteData[number-1].duration_off += 6; - restSpec[number] = 6; - break; - default : - break; + for (number = 1; number < noteCount; number++) { + if (Melody[number].rest >= '0' && Melody[number].rest <= '5') { + switch (Melody[number].rest) { + case '0': + noteData[number - 1].duration_off += 192; + restSpec[number] = 192; + break; + case '1': + noteData[number - 1].duration_off += 96; + restSpec[number] = 96; + break; + case '2': + noteData[number - 1].duration_off += 48; + restSpec[number] = 48; + break; + case '3': + noteData[number - 1].duration_off += 24; + restSpec[number] = 24; + break; + case '4': + noteData[number - 1].duration_off += 12; + restSpec[number] = 12; + break; + case '5': + noteData[number - 1].duration_off += 6; + restSpec[number] = 6; + break; + default: + break; } - if(noteData[number-1].duration_off > MIDI_MAX && Melody[number].rest_specifier == '%') - noteData[number-1].duration_off = MIDI_LIMIT; + if (noteData[number - 1].duration_off > MIDI_MAX && Melody[number].rest_specifier == '%') + noteData[number - 1].duration_off = MIDI_LIMIT; } - if(Melody[number].rest_specifier != '%') - { - switch(Melody[number].rest_specifier) - { - case '.': noteData[number-1].duration_off += (restSpec[number] / 2); - break; - case ':': noteData[number-1].duration_off += restSpec[number]; - break; - case ';': noteData[number-1].duration_off -= (restSpec[number] / 3); - break; - default : - break; + if (Melody[number].rest_specifier != '%') { + switch (Melody[number].rest_specifier) { + case '.': + noteData[number - 1].duration_off += (restSpec[number] / 2); + break; + case ':': + noteData[number - 1].duration_off += restSpec[number]; + break; + case ';': + noteData[number - 1].duration_off -= (restSpec[number] / 3); + break; + default: + break; } - if(noteData[number-1].duration_off > MIDI_MAX) - noteData[number-1].duration_off = MIDI_LIMIT; + if (noteData[number - 1].duration_off > MIDI_MAX) + noteData[number - 1].duration_off = MIDI_LIMIT; } } - if(Melody[0].rest >= '0' && Melody[0].rest <= '5') - { - switch(Melody[0].rest) - { - case '0': midiData[50] += 192; - restSpec[0] = 192; - break; - case '1': midiData[50] += 96; - restSpec[0] = 96; - break; - case '2': midiData[50] += 48; - restSpec[0] = 48; - break; - case '3': midiData[50] += 24; - restSpec[0] = 24; - break; - case '4': midiData[50] += 12; - restSpec[0] = 12; - break; - case '5': midiData[50] += 6; - restSpec[0] = 6; - break; - default : - break; + if (Melody[0].rest >= '0' && Melody[0].rest <= '5') { + switch (Melody[0].rest) { + case '0': + midiData[50] += 192; + restSpec[0] = 192; + break; + case '1': + midiData[50] += 96; + restSpec[0] = 96; + break; + case '2': + midiData[50] += 48; + restSpec[0] = 48; + break; + case '3': + midiData[50] += 24; + restSpec[0] = 24; + break; + case '4': + midiData[50] += 12; + restSpec[0] = 12; + break; + case '5': + midiData[50] += 6; + restSpec[0] = 6; + break; + default: + break; } - - if(Melody[0].rest_specifier != '%') - { - switch(Melody[0].rest_specifier) - { - case '.': midiData[50] += (restSpec[0] / 2); - break; - case ':': midiData[50] += restSpec[0]; - break; - case ';': midiData[50] -= (restSpec[0] / 3); - break; - default : - break; + + if (Melody[0].rest_specifier != '%') { + switch (Melody[0].rest_specifier) { + case '.': + midiData[50] += (restSpec[0] / 2); + break; + case ':': + midiData[50] += restSpec[0]; + break; + case ';': + midiData[50] -= (restSpec[0] / 3); + break; + default: + break; } } - if(midiData[50] > MIDI_LIMIT) + if (midiData[50] > MIDI_LIMIT) midiData[50] = MIDI_LIMIT; - if(Melody[0].rest == '0') + if (Melody[0].rest == '0') midiData[50] = MIDI_LIMIT; } - for(number = 0;number < noteCount;number++) - { + for (number = 0; number < noteCount; number++) { noteBase[0] = noteData[number].note; noteBase[2] = noteData[number].duration_on; noteBase[3] = noteData[number].note; noteBase[5] = noteData[number].duration_off; - noteTotal[6*number] = noteBase[0]; - noteTotal[6*number+2] = noteBase[2]; - noteTotal[6*number+3] = noteBase[3]; - noteTotal[6*number+5] = noteBase[5]; - noteTotal[6*number+4] = 0; + noteTotal[6 * number] = noteBase[0]; + noteTotal[6 * number + 2] = noteBase[2]; + noteTotal[6 * number + 3] = noteBase[3]; + noteTotal[6 * number + 5] = noteBase[5]; + noteTotal[6 * number + 4] = 0; - if(noteTotal[6*number+2] > MIDI_LIMIT) - noteTotal[6*number+2] = MIDI_LIMIT; + if (noteTotal[6 * number + 2] > MIDI_LIMIT) + noteTotal[6 * number + 2] = MIDI_LIMIT; - if(noteTotal[6*number+5] > MIDI_LIMIT) - noteTotal[6*number+5] = MIDI_LIMIT; + if (noteTotal[6 * number + 5] > MIDI_LIMIT) + noteTotal[6 * number + 5] = MIDI_LIMIT; } - for(number = 1;number < noteCount;number++) - { + for (number = 1; number < noteCount; number++) { noteTotal[1] = 84; - if(Melody[0].vol == '+') + if (Melody[0].vol == '+') noteTotal[1] = 84 + VOL_INTERVAL; - if(Melody[0].vol == '-') + if (Melody[0].vol == '-') noteTotal[1] = 84 - VOL_INTERVAL; - switch(Melody[number].vol) - { - case '+': noteTotal[6*number+1] = noteTotal[6*(number-1)+1] + VOL_INTERVAL; - break; - case '-': noteTotal[6*number+1] = noteTotal[6*(number-1)+1] - VOL_INTERVAL; - break; - default : - break; + switch (Melody[number].vol) { + case '+': + noteTotal[6 * number + 1] = noteTotal[6 * (number - 1) + 1] + VOL_INTERVAL; + break; + case '-': + noteTotal[6 * number + 1] = noteTotal[6 * (number - 1) + 1] - VOL_INTERVAL; + break; + default: + break; } - if(noteTotal[6*number+1] > MIDI_LIMIT) - noteTotal[6*number+1] = MIDI_LIMIT; + if (noteTotal[6 * number + 1] > MIDI_LIMIT) + noteTotal[6 * number + 1] = MIDI_LIMIT; - if((noteTotal[6*(number-1)+1] == 0 || noteTotal[6*(number-1)+1] == 7) && Melody[number].vol == '-') - noteTotal[6*number+1] = 0; + if ((noteTotal[6 * (number - 1) + 1] == 0 || noteTotal[6 * (number - 1) + 1] == 7) && Melody[number].vol == '-') + noteTotal[6 * number + 1] = 0; - if(Melody[number].vol == '%') - noteTotal[6*number+1] = noteTotal[6*(number-1)+1]; + if (Melody[number].vol == '%') + noteTotal[6 * number + 1] = noteTotal[6 * (number - 1) + 1]; } - for(number = 0;number < 6 * noteCount;number++) - midiData[52+number] = noteTotal[number]; + for (number = 0; number < 6 * noteCount; number++) + midiData[52 + number] = noteTotal[number]; - for(number = 6 * noteCount;number < 6 * noteCount * (repeat + 1);number++) - { + for (number = 6 * noteCount; number < 6 * noteCount * (repeat + 1); number++) { noteTotal[number] = noteTotal[repeatCount]; - midiData[52+number] = noteTotal[number]; + midiData[52 + number] = noteTotal[number]; repeatCount++; - if(repeatCount == 6 * noteCount) + if (repeatCount == 6 * noteCount) repeatCount = 0; } - if(vol != '%') - { - switch(vol) - { - case '+': midiData[52+(6*noteCount+1)] = midiData[52+(6*(noteCount-1)+1)] + VOL_INTERVAL; - break; - case '-': midiData[52+(6*noteCount+1)] = midiData[52+(6*(noteCount-1)+1)] - VOL_INTERVAL; - break; - default : - break; + if (vol != '%') { + switch (vol) { + case '+': + midiData[52 + (6 * noteCount + 1)] = midiData[52 + (6 * (noteCount - 1) + 1)] + VOL_INTERVAL; + break; + case '-': + midiData[52 + (6 * noteCount + 1)] = midiData[52 + (6 * (noteCount - 1) + 1)] - VOL_INTERVAL; + break; + default: + break; } - if(Melody[0].vol != '%') - { - switch(Melody[0].vol) - { - case '+': midiData[52+(6*noteCount+1)] += VOL_INTERVAL; - break; - case '-': midiData[52+(6*noteCount+1)] -= VOL_INTERVAL; - break; - default : - break; + if (Melody[0].vol != '%') { + switch (Melody[0].vol) { + case '+': + midiData[52 + (6 * noteCount + 1)] += VOL_INTERVAL; + break; + case '-': + midiData[52 + (6 * noteCount + 1)] -= VOL_INTERVAL; + break; + default: + break; } } - if(midiData[52+(6*noteCount+1)] > MIDI_LIMIT) - midiData[52+(6*noteCount+1)] = MIDI_LIMIT; + if (midiData[52 + (6 * noteCount + 1)] > MIDI_LIMIT) + midiData[52 + (6 * noteCount + 1)] = MIDI_LIMIT; - if((midiData[52+(6*(noteCount-1)+1)] == 0 || midiData[52+(6*(noteCount-1)+1)] == 7) && vol == '-') - { - midiData[52+(6*noteCount+1)] = 0; + if ((midiData[52 + (6 * (noteCount - 1) + 1)] == 0 || midiData[52 + (6 * (noteCount - 1) + 1)] == 7) && vol == '-') { + midiData[52 + (6 * noteCount + 1)] = 0; - if(Melody[0].vol == '+') - midiData[52+(6*noteCount+1)] = 12; + if (Melody[0].vol == '+') + midiData[52 + (6 * noteCount + 1)] = 12; } - if((midiData[52+(6*(noteCount-1)+1)] == 12 || midiData[52+(6*(noteCount-1)+1)] == 19) && vol == '-' && Melody[0].vol == '-') - midiData[52+(6*noteCount+1)] = 0; + if ((midiData[52 + (6 * (noteCount - 1) + 1)] == 12 || midiData[52 + (6 * (noteCount - 1) + 1)] == 19) && vol == '-' && Melody[0].vol == '-') + midiData[52 + (6 * noteCount + 1)] = 0; } - else - if(Melody[0].vol != '%' && vol == '%' && repeat != 0) - { - switch(Melody[0].vol) - { - case '+': midiData[52+(6*noteCount+1)] = midiData[52+(6*(noteCount-1)+1)] + VOL_INTERVAL; - break; - case '-': midiData[52+(6*noteCount+1)] = midiData[52+(6*(noteCount-1)+1)] - VOL_INTERVAL; - break; - default : - break; + else if (Melody[0].vol != '%' && vol == '%' && repeat != 0) { + switch (Melody[0].vol) { + case '+': + midiData[52 + (6 * noteCount + 1)] = midiData[52 + (6 * (noteCount - 1) + 1)] + VOL_INTERVAL; + break; + case '-': + midiData[52 + (6 * noteCount + 1)] = midiData[52 + (6 * (noteCount - 1) + 1)] - VOL_INTERVAL; + break; + default: + break; } - if(midiData[52+(6*noteCount+1)] > MIDI_LIMIT) - midiData[52+(6*noteCount+1)] = MIDI_LIMIT; + if (midiData[52 + (6 * noteCount + 1)] > MIDI_LIMIT) + midiData[52 + (6 * noteCount + 1)] = MIDI_LIMIT; - if((midiData[52+(6*(noteCount-1)+1)] == 0 || midiData[52+(6*(noteCount-1)+1)] == 7) && Melody[0].vol == '-') - midiData[52+(6*noteCount+1)] = 0; + if ((midiData[52 + (6 * (noteCount - 1) + 1)] == 0 || midiData[52 + (6 * (noteCount - 1) + 1)] == 7) && Melody[0].vol == '-') + midiData[52 + (6 * noteCount + 1)] = 0; } - else - if(Melody[0].vol == '%' && vol == '%' && repeat != 0) - midiData[52+(6*noteCount+1)] = midiData[52+(6*(noteCount-1)+1)]; + else if (Melody[0].vol == '%' && vol == '%' && repeat != 0) + midiData[52 + (6 * noteCount + 1)] = midiData[52 + (6 * (noteCount - 1) + 1)]; - volInterval = midiData[52+(6*noteCount+1)] - midiData[53]; + volInterval = midiData[52 + (6 * noteCount + 1)] - midiData[53]; - for(repeatCount = 0;repeatCount < repeat;repeatCount++) - for(number = 6 * noteCount * repeatCount + 1;number < 6 * noteCount * (repeatCount + 1);number = number + 6) - { - midiData[52+(number+6*noteCount)] = midiData[52+number] + volInterval; + for (repeatCount = 0; repeatCount < repeat; repeatCount++) + for (number = 6 * noteCount * repeatCount + 1; number < 6 * noteCount * (repeatCount + 1); number = number + 6) { + midiData[52 + (number + 6 * noteCount)] = midiData[52 + number] + volInterval; - if(midiData[52+number] + volInterval > MIDI_LIMIT) - midiData[52+(number+6*noteCount)] = MIDI_LIMIT; + if (midiData[52 + number] + volInterval > MIDI_LIMIT) + midiData[52 + (number + 6 * noteCount)] = MIDI_LIMIT; - if(midiData[52+number] < volInterval * (-1)) - midiData[52+(number+6*noteCount)] = 0; + if (midiData[52 + number] < volInterval * (-1)) + midiData[52 + (number + 6 * noteCount)] = 0; } - for(number = 1;number < 6 * noteCount * (repeat + 1);number = number + 6) - { - if(midiData[52+number] > MIDI_LIMIT) - midiData[52+number] = MIDI_LIMIT; + for (number = 1; number < 6 * noteCount * (repeat + 1); number = number + 6) { + if (midiData[52 + number] > MIDI_LIMIT) + midiData[52 + number] = MIDI_LIMIT; } pMelodyBuf = pMelodyStart; count = noteCount; - if(repeat != 0) - { - while(*pMelodyBuf != '@') + if (repeat != 0) { + while (*pMelodyBuf != '@') pMelodyBuf++; - + pMelodyBuf++; - if(vol !='%') + if (vol != '%') pMelodyBuf = pMelodyBuf + 2; - while(!(*pMelodyBuf == '*' || *pMelodyBuf == '#' || *pMelodyBuf == '&' || *pMelodyBuf == 'r' || *pMelodyBuf == 'V' || *pMelodyBuf == 'E' || (*pMelodyBuf >= 'a' && *pMelodyBuf <= 'g'))) + while (!(*pMelodyBuf == '*' || *pMelodyBuf == '#' || *pMelodyBuf == '&' || *pMelodyBuf == 'r' || *pMelodyBuf == 'V' || *pMelodyBuf == 'E' || (*pMelodyBuf >= 'a' && *pMelodyBuf <= 'g'))) pMelodyBuf++; } - if(*pMelodyBuf != 'E' && *pMelodyBuf != ':') - { + if (*pMelodyBuf != 'E' && *pMelodyBuf != ':') { pMelodyBuf--; - while(*pMelodyBuf != 'E') - { - if(noteCount>=AV_MIDI_NOTE_MAX) - { - debug_warning ("__AvConvertIMelody2MIDI : noteCount>=AV_MIDI_NOTE_MAX\n"); + while (*pMelodyBuf != 'E') { + if (noteCount >= AV_MIDI_NOTE_MAX) { + debug_warning("__AvConvertIMelody2MIDI : noteCount>=AV_MIDI_NOTE_MAX\n"); break; } - + pMelodyBuf++; - - if(*pMelodyBuf == '*') - { + + if (*pMelodyBuf == '*') { pMelodyBuf++; - if(*pMelodyBuf >= '0' && *pMelodyBuf <= '8') + if (*pMelodyBuf >= '0' && *pMelodyBuf <= '8') octave[noteCount] = *pMelodyBuf; } - if(*pMelodyBuf == '#' || *pMelodyBuf == '&') + if (*pMelodyBuf == '#' || *pMelodyBuf == '&') Melody[noteCount].flat_sharp = *pMelodyBuf; - if(*pMelodyBuf == 'r') - { + if (*pMelodyBuf == 'r') { pMelodyBuf++; - if(*pMelodyBuf >= '0' && *pMelodyBuf <= '5') - { + if (*pMelodyBuf >= '0' && *pMelodyBuf <= '5') { Melody[noteCount].rest = *pMelodyBuf; pMelodyBuf++; - if(*pMelodyBuf == '.' || *pMelodyBuf == ':' || *pMelodyBuf == ';') + if (*pMelodyBuf == '.' || *pMelodyBuf == ':' || *pMelodyBuf == ';') Melody[noteCount].rest_specifier = *pMelodyBuf; } } - - if(*pMelodyBuf == 'V') - { + + if (*pMelodyBuf == 'V') { pMelodyBuf++; - if(*pMelodyBuf == '+' || *pMelodyBuf == '-') + if (*pMelodyBuf == '+' || *pMelodyBuf == '-') Melody[noteCount].vol = *pMelodyBuf; } - if(*pMelodyBuf >= 'a' && *pMelodyBuf <= 'g') - { + if (*pMelodyBuf >= 'a' && *pMelodyBuf <= 'g') { Melody[noteCount].note = *pMelodyBuf; pMelodyBuf++; - if(*pMelodyBuf >= '0' && *pMelodyBuf <= '5') - { + if (*pMelodyBuf >= '0' && *pMelodyBuf <= '5') { Melody[noteCount].duration = *pMelodyBuf; pMelodyBuf++; - if(*pMelodyBuf == '.' || *pMelodyBuf == ':' || *pMelodyBuf == ';') + if (*pMelodyBuf == '.' || *pMelodyBuf == ':' || *pMelodyBuf == ';') Melody[noteCount].duration_specifier = *pMelodyBuf; else @@ -1234,384 +1214,415 @@ __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) } } - for(octaveCount = count; octaveCount < noteCount && octaveCount < AV_MIDI_NOTE_MAX; octaveCount++) - { - if(octave[octaveCount] == '%') - octave[octaveCount] = octave[octaveCount-1]; + for (octaveCount = count; octaveCount < noteCount && octaveCount < AV_MIDI_NOTE_MAX; octaveCount++) { + if (octave[octaveCount] == '%') + octave[octaveCount] = octave[octaveCount - 1]; } - - for(number = count; number < noteCount && number < AV_MIDI_NOTE_MAX; number++) - { + + for (number = count; number < noteCount && number < AV_MIDI_NOTE_MAX; number++) { octaveValue = octave[number] - '0'; octaveValue = octaveValue * 12; - if(Melody[number].flat_sharp == '#') - { - switch(Melody[number].note) - { - case 'c': noteData[number].note = octaveValue + 1; - break; - case 'd': noteData[number].note = octaveValue + 3; - break; - case 'f': noteData[number].note = octaveValue + 6; - break; - case 'g': noteData[number].note = octaveValue + 8; - break; - case 'a': noteData[number].note = octaveValue + 10; - break; - default : - break; + if (Melody[number].flat_sharp == '#') { + switch (Melody[number].note) { + case 'c': + noteData[number].note = octaveValue + 1; + break; + case 'd': + noteData[number].note = octaveValue + 3; + break; + case 'f': + noteData[number].note = octaveValue + 6; + break; + case 'g': + noteData[number].note = octaveValue + 8; + break; + case 'a': + noteData[number].note = octaveValue + 10; + break; + default: + break; } } - else - if(Melody[number].flat_sharp == '&') - { - switch(Melody[number].note) - { - case 'd': noteData[number].note = octaveValue + 1; - break; - case 'e': noteData[number].note = octaveValue + 3; - break; - case 'g': noteData[number].note = octaveValue + 6; - break; - case 'a': noteData[number].note = octaveValue + 8; - break; - case 'b': noteData[number].note = octaveValue + 10; - break; - default : - break; + else if (Melody[number].flat_sharp == '&') { + switch (Melody[number].note) { + case 'd': + noteData[number].note = octaveValue + 1; + break; + case 'e': + noteData[number].note = octaveValue + 3; + break; + case 'g': + noteData[number].note = octaveValue + 6; + break; + case 'a': + noteData[number].note = octaveValue + 8; + break; + case 'b': + noteData[number].note = octaveValue + 10; + break; + default: + break; } } - else - { - switch(Melody[number].note) - { - case 'c': noteData[number].note = octaveValue; - break; - case 'd': noteData[number].note = octaveValue + 2; - break; - case 'e': noteData[number].note = octaveValue + 4; - break; - case 'f': noteData[number].note = octaveValue + 5; - break; - case 'g': noteData[number].note = octaveValue + 7; - break; - case 'a': noteData[number].note = octaveValue + 9; - break; - case 'b': noteData[number].note = octaveValue + 11; - break; - default : - break; + else { + switch (Melody[number].note) { + case 'c': + noteData[number].note = octaveValue; + break; + case 'd': + noteData[number].note = octaveValue + 2; + break; + case 'e': + noteData[number].note = octaveValue + 4; + break; + case 'f': + noteData[number].note = octaveValue + 5; + break; + case 'g': + noteData[number].note = octaveValue + 7; + break; + case 'a': + noteData[number].note = octaveValue + 9; + break; + case 'b': + noteData[number].note = octaveValue + 11; + break; + default: + break; } } - if(style == '0') - { - switch(Melody[number].duration) - { - case '0': noteData[number].duration_on = 183; - noteData[number].duration_off = 9; - break; - case '1': noteData[number].duration_on = 91; - noteData[number].duration_off = 5; - break; - case '2': noteData[number].duration_on = 46; - noteData[number].duration_off = 2; - break; - case '3': noteData[number].duration_on = 23; - noteData[number].duration_off = 1; - break; - case '4': noteData[number].duration_on = 11; - noteData[number].duration_off = 1; - break; - case '5': noteData[number].duration_on = 5; - noteData[number].duration_off = 1; - break; - default : - break; + if (style == '0') { + switch (Melody[number].duration) { + case '0': + noteData[number].duration_on = 183; + noteData[number].duration_off = 9; + break; + case '1': + noteData[number].duration_on = 91; + noteData[number].duration_off = 5; + break; + case '2': + noteData[number].duration_on = 46; + noteData[number].duration_off = 2; + break; + case '3': + noteData[number].duration_on = 23; + noteData[number].duration_off = 1; + break; + case '4': + noteData[number].duration_on = 11; + noteData[number].duration_off = 1; + break; + case '5': + noteData[number].duration_on = 5; + noteData[number].duration_off = 1; + break; + default: + break; } } - else - if(style == '1') - { - switch(Melody[number].duration) - { - case '0': noteData[number].duration_on = 192; - noteData[number].duration_off = 0; - break; - case '1': noteData[number].duration_on = 96; - noteData[number].duration_off = 0; - break; - case '2': noteData[number].duration_on = 48; - noteData[number].duration_off = 0; - break; - case '3': noteData[number].duration_on = 24; - noteData[number].duration_off = 0; - break; - case '4': noteData[number].duration_on = 12; - noteData[number].duration_off = 0; - break; - case '5': noteData[number].duration_on = 6; - noteData[number].duration_off = 0; - break; - default : - break; + else if (style == '1') { + switch (Melody[number].duration) { + case '0': + noteData[number].duration_on = 192; + noteData[number].duration_off = 0; + break; + case '1': + noteData[number].duration_on = 96; + noteData[number].duration_off = 0; + break; + case '2': + noteData[number].duration_on = 48; + noteData[number].duration_off = 0; + break; + case '3': + noteData[number].duration_on = 24; + noteData[number].duration_off = 0; + break; + case '4': + noteData[number].duration_on = 12; + noteData[number].duration_off = 0; + break; + case '5': + noteData[number].duration_on = 6; + noteData[number].duration_off = 0; + break; + default: + break; } } - else - { - switch(Melody[number].duration) - { - case '0': noteData[number].duration_on = 96; - noteData[number].duration_off = 96; - break; - case '1': noteData[number].duration_on = 48; - noteData[number].duration_off = 48; - break; - case '2': noteData[number].duration_on = 24; - noteData[number].duration_off = 24; - break; - case '3': noteData[number].duration_on = 12; - noteData[number].duration_off = 12; - break; - case '4': noteData[number].duration_on = 6; - noteData[number].duration_off = 6; - break; - case '5': noteData[number].duration_on = 3; - noteData[number].duration_off = 3; - break; - default : - break; + else { + switch (Melody[number].duration) { + case '0': + noteData[number].duration_on = 96; + noteData[number].duration_off = 96; + break; + case '1': + noteData[number].duration_on = 48; + noteData[number].duration_off = 48; + break; + case '2': + noteData[number].duration_on = 24; + noteData[number].duration_off = 24; + break; + case '3': + noteData[number].duration_on = 12; + noteData[number].duration_off = 12; + break; + case '4': + noteData[number].duration_on = 6; + noteData[number].duration_off = 6; + break; + case '5': + noteData[number].duration_on = 3; + noteData[number].duration_off = 3; + break; + default: + break; } } - - switch(Melody[number].duration) - { - case '0': durationSpec[number] = 192; - break; - case '1': durationSpec[number] = 96; - break; - case '2': durationSpec[number] = 48; - break; - case '3': durationSpec[number] = 24; - break; - case '4': durationSpec[number] = 12; - break; - case '5': durationSpec[number] = 6; - break; - default : - break; + + switch (Melody[number].duration) { + case '0': + durationSpec[number] = 192; + break; + case '1': + durationSpec[number] = 96; + break; + case '2': + durationSpec[number] = 48; + break; + case '3': + durationSpec[number] = 24; + break; + case '4': + durationSpec[number] = 12; + break; + case '5': + durationSpec[number] = 6; + break; + default: + break; } - if(Melody[number].duration_specifier != '%') - { - switch(Melody[number].duration_specifier) - { - case '.': noteData[number].duration_on += (durationSpec[number] / 2); - break; - case ':': noteData[number].duration_on += durationSpec[number]; - break; - case ';': noteData[number].duration_on -= (durationSpec[number] / 3); - break; - default : - break; + if (Melody[number].duration_specifier != '%') { + switch (Melody[number].duration_specifier) { + case '.': + noteData[number].duration_on += (durationSpec[number] / 2); + break; + case ':': + noteData[number].duration_on += durationSpec[number]; + break; + case ';': + noteData[number].duration_on -= (durationSpec[number] / 3); + break; + default: + break; } - if(noteData[number].duration_on > MIDI_MAX) - noteData[number].duration_on = MIDI_LIMIT; + if (noteData[number].duration_on > MIDI_MAX) + noteData[number].duration_on = MIDI_LIMIT; } } - for(number = count + 1; number < noteCount && number < AV_MIDI_NOTE_MAX; number++) - { - if(Melody[number].rest >= '0' && Melody[number].rest <= '5') - { - switch(Melody[number].rest) - { - case '0': noteData[number-1].duration_off += 192; - restSpec[number] = 192; - break; - case '1': noteData[number-1].duration_off += 96; - restSpec[number] = 96; - break; - case '2': noteData[number-1].duration_off += 48; - restSpec[number] = 48; - break; - case '3': noteData[number-1].duration_off += 24; - restSpec[number] = 24; - break; - case '4': noteData[number-1].duration_off += 12; - restSpec[number] = 12; - break; - case '5': noteData[number-1].duration_off += 6; - restSpec[number] = 6; - break; - default : - break; + for (number = count + 1; number < noteCount && number < AV_MIDI_NOTE_MAX; number++) { + if (Melody[number].rest >= '0' && Melody[number].rest <= '5') { + switch (Melody[number].rest) { + case '0': + noteData[number - 1].duration_off += 192; + restSpec[number] = 192; + break; + case '1': + noteData[number - 1].duration_off += 96; + restSpec[number] = 96; + break; + case '2': + noteData[number - 1].duration_off += 48; + restSpec[number] = 48; + break; + case '3': + noteData[number - 1].duration_off += 24; + restSpec[number] = 24; + break; + case '4': + noteData[number - 1].duration_off += 12; + restSpec[number] = 12; + break; + case '5': + noteData[number - 1].duration_off += 6; + restSpec[number] = 6; + break; + default: + break; } - if(noteData[number-1].duration_off > MIDI_MAX && Melody[number].rest_specifier == '%') - noteData[number-1].duration_off = MIDI_LIMIT; + if (noteData[number - 1].duration_off > MIDI_MAX && Melody[number].rest_specifier == '%') + noteData[number - 1].duration_off = MIDI_LIMIT; } - if(Melody[number].rest_specifier != '%') - { - switch(Melody[number].rest_specifier) - { - case '.': noteData[number-1].duration_off += (restSpec[number] / 2); - break; - case ':': noteData[number-1].duration_off += restSpec[number]; - break; - case ';': noteData[number-1].duration_off -= (restSpec[number] / 3); - break; - default : - break; + if (Melody[number].rest_specifier != '%') { + switch (Melody[number].rest_specifier) { + case '.': + noteData[number - 1].duration_off += (restSpec[number] / 2); + break; + case ':': + noteData[number - 1].duration_off += restSpec[number]; + break; + case ';': + noteData[number - 1].duration_off -= (restSpec[number] / 3); + break; + default: + break; } - if(noteData[number-1].duration_off > MIDI_MAX) - noteData[number-1].duration_off = MIDI_LIMIT; + if (noteData[number - 1].duration_off > MIDI_MAX) + noteData[number - 1].duration_off = MIDI_LIMIT; } } - if(Melody[count].rest >= '0' && Melody[count].rest <= '5') - { - switch(Melody[count].rest) - { - case '0': midiData[52+(6*count*(repeat+1)-1)] += 192; - restSpec[count] = 192; - break; - case '1': midiData[52+(6*count*(repeat+1)-1)] += 96; - restSpec[count] = 96; - break; - case '2': midiData[52+(6*count*(repeat+1)-1)] += 48; - restSpec[count] = 48; - break; - case '3': midiData[52+(6*count*(repeat+1)-1)] += 24; - restSpec[count] = 24; - break; - case '4': midiData[52+(6*count*(repeat+1)-1)] += 12; - restSpec[count] = 12; - break; - case '5': midiData[52+(6*count*(repeat+1)-1)] += 6; - restSpec[count] = 6; - break; - default : - break; + if (Melody[count].rest >= '0' && Melody[count].rest <= '5') { + switch (Melody[count].rest) { + case '0': + midiData[52 + (6 * count * (repeat + 1) - 1)] += 192; + restSpec[count] = 192; + break; + case '1': + midiData[52 + (6 * count * (repeat + 1) - 1)] += 96; + restSpec[count] = 96; + break; + case '2': + midiData[52 + (6 * count * (repeat + 1) - 1)] += 48; + restSpec[count] = 48; + break; + case '3': + midiData[52 + (6 * count * (repeat + 1) - 1)] += 24; + restSpec[count] = 24; + break; + case '4': + midiData[52 + (6 * count * (repeat + 1) - 1)] += 12; + restSpec[count] = 12; + break; + case '5': + midiData[52 + (6 * count * (repeat + 1) - 1)] += 6; + restSpec[count] = 6; + break; + default: + break; } - if(Melody[count].rest_specifier != '%') - { - switch(Melody[count].rest_specifier) - { - case '.': midiData[52+(6*count*(repeat+1)-1)] += (restSpec[count] / 2); - break; - case ':': midiData[52+(6*count*(repeat+1)-1)] += restSpec[count]; - break; - case ';': midiData[52+(6*count*(repeat+1)-1)] -= (restSpec[count] / 3); - break; - default : - break; + if (Melody[count].rest_specifier != '%') { + switch (Melody[count].rest_specifier) { + case '.': + midiData[52 + (6 * count * (repeat + 1) - 1)] += (restSpec[count] / 2); + break; + case ':': + midiData[52 + (6 * count * (repeat + 1) - 1)] += restSpec[count]; + break; + case ';': + midiData[52 + (6 * count * (repeat + 1) - 1)] -= (restSpec[count] / 3); + break; + default: + break; } } - if(midiData[52+(6*count*(repeat+1)-1)] > MIDI_LIMIT) - midiData[52+(6*count*(repeat+1)-1)] = MIDI_LIMIT; + if (midiData[52 + (6 * count * (repeat + 1) - 1)] > MIDI_LIMIT) + midiData[52 + (6 * count * (repeat + 1) - 1)] = MIDI_LIMIT; - if(Melody[count].rest == '0') - midiData[52+(6*count*(repeat+1)-1)] = MIDI_LIMIT; + if (Melody[count].rest == '0') + midiData[52 + (6 * count * (repeat + 1) - 1)] = MIDI_LIMIT; } - for(number = count;number < noteCount;number++) - { + for (number = count; number < noteCount; number++) { noteBase[0] = noteData[number].note; noteBase[2] = noteData[number].duration_on; noteBase[3] = noteData[number].note; noteBase[5] = noteData[number].duration_off; - noteTotal[6*number] = noteBase[0]; - noteTotal[6*number+2] = noteBase[2]; - noteTotal[6*number+3] = noteBase[3]; - noteTotal[6*number+5] = noteBase[5]; - noteTotal[6*number+4] = 0; + noteTotal[6 * number] = noteBase[0]; + noteTotal[6 * number + 2] = noteBase[2]; + noteTotal[6 * number + 3] = noteBase[3]; + noteTotal[6 * number + 5] = noteBase[5]; + noteTotal[6 * number + 4] = 0; - if(noteTotal[6*number+2] > MIDI_LIMIT) - noteTotal[6*number+2] = MIDI_LIMIT; + if (noteTotal[6 * number + 2] > MIDI_LIMIT) + noteTotal[6 * number + 2] = MIDI_LIMIT; - if(noteTotal[6*number+5] > MIDI_LIMIT) - noteTotal[6*number+5] = MIDI_LIMIT; + if (noteTotal[6 * number + 5] > MIDI_LIMIT) + noteTotal[6 * number + 5] = MIDI_LIMIT; } - for(number = count + 1;number < noteCount;number++) - { - noteTotal[6*count+1] = midiData[52+(6*count*(repeat+1)-5)]; + for (number = count + 1; number < noteCount; number++) { + noteTotal[6 * count + 1] = midiData[52 + (6 * count * (repeat + 1) - 5)]; - if(Melody[count].vol == '+') - noteTotal[6*count+1] = noteTotal[6*count+1] + VOL_INTERVAL; + if (Melody[count].vol == '+') + noteTotal[6 * count + 1] = noteTotal[6 * count + 1] + VOL_INTERVAL; - if(Melody[count].vol == '-' && (noteTotal[6*count+1] == 0 || noteTotal[6*count+1] == 7)) - noteTotal[6*count+1] = 0; + if (Melody[count].vol == '-' && (noteTotal[6 * count + 1] == 0 || noteTotal[6 * count + 1] == 7)) + noteTotal[6 * count + 1] = 0; - if(Melody[count].vol == '-' && noteTotal[6*count+1] >= 12) - noteTotal[6*count+1] = noteTotal[6*count+1] - VOL_INTERVAL; + if (Melody[count].vol == '-' && noteTotal[6 * count + 1] >= 12) + noteTotal[6 * count + 1] = noteTotal[6 * count + 1] - VOL_INTERVAL; - if(noteTotal[6*count+1] > MIDI_LIMIT) - noteTotal[6*count+1] = MIDI_LIMIT; + if (noteTotal[6 * count + 1] > MIDI_LIMIT) + noteTotal[6 * count + 1] = MIDI_LIMIT; - switch(Melody[number].vol) - { - case '+': noteTotal[6*number+1] = noteTotal[6*(number-1)+1] + VOL_INTERVAL; - break; - case '-': noteTotal[6*number+1] = noteTotal[6*(number-1)+1] - VOL_INTERVAL; - break; - default : - break; + switch (Melody[number].vol) { + case '+': + noteTotal[6 * number + 1] = noteTotal[6 * (number - 1) + 1] + VOL_INTERVAL; + break; + case '-': + noteTotal[6 * number + 1] = noteTotal[6 * (number - 1) + 1] - VOL_INTERVAL; + break; + default: + break; } - if(noteTotal[6*number+1] > MIDI_LIMIT) - noteTotal[6*number+1] = MIDI_LIMIT; + if (noteTotal[6 * number + 1] > MIDI_LIMIT) + noteTotal[6 * number + 1] = MIDI_LIMIT; - if((noteTotal[6*(number-1)+1] == 0 || noteTotal[6*(number-1)+1] == 7) && Melody[number].vol == '-') - noteTotal[6*number+1] = 0; + if ((noteTotal[6 * (number - 1) + 1] == 0 || noteTotal[6 * (number - 1) + 1] == 7) && Melody[number].vol == '-') + noteTotal[6 * number + 1] = 0; - if(Melody[number].vol == '%') - noteTotal[6*number+1] = noteTotal[6*(number-1)+1]; + if (Melody[number].vol == '%') + noteTotal[6 * number + 1] = noteTotal[6 * (number - 1) + 1]; } numberCount = 6 * count; - for(number = 6 * count * (repeat + 1);number < 6 * (count * (repeat + 1) + (noteCount - count));number++) - { - midiData[52+number] = noteTotal[numberCount]; + for (number = 6 * count * (repeat + 1); number < 6 * (count * (repeat + 1) + (noteCount - count)); number++) { + midiData[52 + number] = noteTotal[numberCount]; numberCount++; } } - noteTotal[6*(count*(repeat+1)+(noteCount-count))] = 0; //0x00 - noteTotal[6*(count*(repeat+1)+(noteCount-count))+1] = MIDI_MAX; //0xff - noteTotal[6*(count*(repeat+1)+(noteCount-count))+2] = 47; //0x2f - noteTotal[6*(count*(repeat+1)+(noteCount-count))+3] = 0; //0x00 + noteTotal[6 * (count * (repeat + 1) + (noteCount - count))] = 0; /*0x00 */ + noteTotal[6 * (count * (repeat + 1) + (noteCount - count)) + 1] = MIDI_MAX; /*0xff */ + noteTotal[6 * (count * (repeat + 1) + (noteCount - count)) + 2] = 47; /*0x2f */ + noteTotal[6 * (count * (repeat + 1) + (noteCount - count)) + 3] = 0; /*0x00 */ - for(number = 6 * (count * (repeat + 1) + (noteCount - count));number <= 6 * (count * (repeat + 1) + (noteCount - count)) + 3;number++) - midiData[51+number] = noteTotal[number]; + for (number = 6 * (count * (repeat + 1) + (noteCount - count)); number <= 6 * (count * (repeat + 1) + (noteCount - count)) + 3; number++) + midiData[51 + number] = noteTotal[number]; - trackSize = (6 * (count * (repeat + 1) + (noteCount - count)) + 56) - 22 -1 ; + trackSize = (6 * (count * (repeat + 1) + (noteCount - count)) + 56) - 22 - 1 ; midiData[20] = (trackSize & 0xff00) >> 8; midiData[21] = (trackSize & 0x00ff); - *pBufLen = 6 * (count * (repeat + 1) + (noteCount - count)) + 56 -1; + *pBufLen = 6 * (count * (repeat + 1) + (noteCount - count)) + 56 - 1; - pConvertBuf = (unsigned char*) mmfile_malloc (*pBufLen); - if(pConvertBuf == NULL) - { - debug_error ("__AvConvertIMelody2MIDI: malloc failed!\n"); + pConvertBuf = (unsigned char *) mmfile_malloc(*pBufLen); + if (pConvertBuf == NULL) { + debug_error("__AvConvertIMelody2MIDI: malloc failed!\n"); return NULL; } @@ -1621,114 +1632,122 @@ __AvConvertIMelody2MIDI(char* pMelodyBuf, unsigned int* pBufLen) } static unsigned char -__AvMIDISetVolume(char* pMelodyBuf) +__AvMIDISetVolume(char *pMelodyBuf) { unsigned char midiVol; pMelodyBuf = pMelodyBuf + 42; - while(!((*pMelodyBuf == 'V' && (*(pMelodyBuf+1) < 'a' || *(pMelodyBuf+1) > 'z')) || (*pMelodyBuf == 'M' && *(pMelodyBuf+5) == 'Y' && *(pMelodyBuf+6) == ':'))) //2007-02-28 AVMS_Sound:k2bogus - UMTS200073205;imy play, [MELODY:] extract fix + while (!((*pMelodyBuf == 'V' && (*(pMelodyBuf + 1) < 'a' || *(pMelodyBuf + 1) > 'z')) || (*pMelodyBuf == 'M' && *(pMelodyBuf + 5) == 'Y' && *(pMelodyBuf + 6) == ':'))) /*2007-02-28 AVMS_Sound:k2bogus - UMTS200073205;imy play, [MELODY:] extract fix */ pMelodyBuf++; - if(*pMelodyBuf != 'V') + if (*pMelodyBuf != 'V') midiVol = AV_MIDI_VOL_MAX; - else - { + else { pMelodyBuf = pMelodyBuf + 5; - if(*pMelodyBuf == 'E') + if (*pMelodyBuf == 'E') pMelodyBuf = pMelodyBuf + 3; else pMelodyBuf = pMelodyBuf - 4; - if(*pMelodyBuf == '1') - { + if (*pMelodyBuf == '1') { pMelodyBuf++; - switch(*pMelodyBuf) - { - case '0': midiVol = AV_MIDI_VOL_MAX; - break; - case '1': midiVol = AV_MIDI_VOL_MAX; - break; - case '2': midiVol = AV_MIDI_VOL_MAX; - break; - case '3': midiVol = AV_MIDI_VOL_MAX; - break; - case '4': midiVol = AV_MIDI_VOL_MAX; - break; - case '5': midiVol = AV_MIDI_VOL_MAX; - break; - default : midiVol = AV_MIDI_VOL_MAX; - break; + switch (*pMelodyBuf) { + case '0': + midiVol = AV_MIDI_VOL_MAX; + break; + case '1': + midiVol = AV_MIDI_VOL_MAX; + break; + case '2': + midiVol = AV_MIDI_VOL_MAX; + break; + case '3': + midiVol = AV_MIDI_VOL_MAX; + break; + case '4': + midiVol = AV_MIDI_VOL_MAX; + break; + case '5': + midiVol = AV_MIDI_VOL_MAX; + break; + default: + midiVol = AV_MIDI_VOL_MAX; + break; } } - + else - switch(*pMelodyBuf) - { - case '0': midiVol = 0; - break; - case '2': midiVol = AV_MIDI_VOL_MAX; - break; - case '3': midiVol = AV_MIDI_VOL_MAX; - break; - case '4': midiVol = AV_MIDI_VOL_MAX; - break; - case '5': midiVol = AV_MIDI_VOL_MAX; - break; - case '6': midiVol = AV_MIDI_VOL_MAX; - break; - case '7': midiVol = AV_MIDI_VOL_MAX; - break; - case '8': midiVol = AV_MIDI_VOL_MAX; - break; - case '9': midiVol = AV_MIDI_VOL_MAX; - break; - default : midiVol = AV_MIDI_VOL_MAX; - break; - } + switch (*pMelodyBuf) { + case '0': + midiVol = 0; + break; + case '2': + midiVol = AV_MIDI_VOL_MAX; + break; + case '3': + midiVol = AV_MIDI_VOL_MAX; + break; + case '4': + midiVol = AV_MIDI_VOL_MAX; + break; + case '5': + midiVol = AV_MIDI_VOL_MAX; + break; + case '6': + midiVol = AV_MIDI_VOL_MAX; + break; + case '7': + midiVol = AV_MIDI_VOL_MAX; + break; + case '8': + midiVol = AV_MIDI_VOL_MAX; + break; + case '9': + midiVol = AV_MIDI_VOL_MAX; + break; + default: + midiVol = AV_MIDI_VOL_MAX; + break; + } } return midiVol; } static int -__AvMIDISetBeat(char* pMelodyBuf) +__AvMIDISetBeat(char *pMelodyBuf) { int bpmValue[4] = {0}; int beatValue; pMelodyBuf = pMelodyBuf + 42; - while(!((*pMelodyBuf == 'B' && (*(pMelodyBuf+1) < 'a' || *(pMelodyBuf+1) > 'z')) || (*pMelodyBuf == 'M' && *(pMelodyBuf+5) == 'Y' && *(pMelodyBuf+6) == ':'))) //2007-02-28 AVMS_Sound:k2bogus - UMTS200073205;imy play, [MELODY:] extract fix + while (!((*pMelodyBuf == 'B' && (*(pMelodyBuf + 1) < 'a' || *(pMelodyBuf + 1) > 'z')) || (*pMelodyBuf == 'M' && *(pMelodyBuf + 5) == 'Y' && *(pMelodyBuf + 6) == ':'))) /*2007-02-28 AVMS_Sound:k2bogus - UMTS200073205;imy play, [MELODY:] extract fix */ pMelodyBuf++; - if(*pMelodyBuf != 'B') + if (*pMelodyBuf != 'B') bpmValue[3] = 120; - else - { + else { pMelodyBuf = pMelodyBuf + 4; - if(*pMelodyBuf == ':') - { + if (*pMelodyBuf == ':') { pMelodyBuf++; - if(*pMelodyBuf >= '1' && *pMelodyBuf <= '9') - { + if (*pMelodyBuf >= '1' && *pMelodyBuf <= '9') { bpmValue[0] = *pMelodyBuf - '0'; pMelodyBuf++; - if(*pMelodyBuf >= '0' && *pMelodyBuf <= '9') - { + if (*pMelodyBuf >= '0' && *pMelodyBuf <= '9') { bpmValue[1] = *pMelodyBuf - '0'; pMelodyBuf++; - if(*pMelodyBuf >= '0' && *pMelodyBuf <= '9') - { + if (*pMelodyBuf >= '0' && *pMelodyBuf <= '9') { bpmValue[2] = *pMelodyBuf - '0'; bpmValue[0] = bpmValue[0] * 100; @@ -1745,48 +1764,47 @@ __AvMIDISetBeat(char* pMelodyBuf) } } - if(bpmValue[3] < 25 || bpmValue[3] > 900) + if (bpmValue[3] < 25 || bpmValue[3] > 900) bpmValue[3] = 120; - if(*pMelodyBuf >= '0' && *pMelodyBuf <= '9') + if (*pMelodyBuf >= '0' && *pMelodyBuf <= '9') bpmValue[3] = 120; beatValue = 1000000 * 60 / bpmValue[3]; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("beat: %d = 1000000 * 60 / %d\n", beatValue, bpmValue[3]); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("beat: %d = 1000000 * 60 / %d\n", beatValue, bpmValue[3]); +#endif return beatValue; } static char -__AvMIDISetStyle(char* pMelodyBuf) +__AvMIDISetStyle(char *pMelodyBuf) { char styleValue = '0'; - while(*pMelodyBuf != 'S') + while (*pMelodyBuf != 'S') pMelodyBuf--; pMelodyBuf++; - if(*pMelodyBuf >= '0' && *pMelodyBuf <= '2') + if (*pMelodyBuf >= '0' && *pMelodyBuf <= '2') pMelodyBuf++; - if(*pMelodyBuf != '.') - { + if (*pMelodyBuf != '.') { pMelodyBuf--; styleValue = *pMelodyBuf; } - if(styleValue < '0' || styleValue > '2') { - debug_warning ("unknown style. use default(S0)\n"); + if (styleValue < '0' || styleValue > '2') { + debug_warning("unknown style. use default(S0)\n"); styleValue = '0'; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("style: '%c'\n", styleValue); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("style: '%c'\n", styleValue); +#endif return styleValue; } diff --git a/formats/ffmpeg/mm_file_format_midi.c b/formats/ffmpeg/mm_file_format_midi.c index 4da002f..c6c1ad0 100755 --- a/formats/ffmpeg/mm_file_format_midi.c +++ b/formats/ffmpeg/mm_file_format_midi.c @@ -18,13 +18,13 @@ * limitations under the License. * */ - + #include <string.h> /*memcmp*/ #include <stdio.h> #include <stdlib.h> /*malloc*/ #include <mm_error.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" #include "mm_file_format_private.h" #include "mm_file_format_midi.h" @@ -96,7 +96,7 @@ enum { #define MAX_SMF_MESSAGES 256 /* */ #define MAX_SMF_TRACKS 32 /* Should be <= 32 */ #define SMF_MAX_GAIN 76 /* - 6[dB] : 90 */ - /* -18[dB] : 45 */ +/* -18[dB] : 45 */ #define MINIMUM_LENGTH (20) #define MELODY_MAP (0) @@ -107,8 +107,7 @@ enum { /*--------------------------------------------------------------------------*/ /* Types */ /*--------------------------------------------------------------------------*/ -typedef struct _tagMidChInfo -{ +typedef struct _tagMidChInfo { UINT32 dBank; /* BankH&L (0x00:00..0x7F7F) */ UINT32 dCurrBank; /* BankH&L (0x00:00..0x7F7F) */ UINT32 dProg; /* ProgramChange (0..127) */ @@ -130,40 +129,36 @@ typedef struct _tagMidChInfo UINT32 dCoaseTune; /* 0..0x7F */ } MIDCHINFO, *PMIDCHINFO; -typedef struct _tagMIDPACKET -{ +typedef struct _tagMIDPACKET { SINT32 sdDeltaTime; - UINT32 dMsgID; - UINT32 dP1; - UINT32 dP2; - UINT32 dP3; + UINT32 dMsgID; + UINT32 dP1; + UINT32 dP2; + UINT32 dP3; } MIDPACKET, *PMIDPACKET; -typedef struct _tagTrack -{ +typedef struct _tagTrack { UINT32 dSmfCmd; /* CMD @ now */ UINT32 dSize; /* [byte] 0 measns nothing in it. */ - UINT8* pbBase; /* NULL measns nothing in it. */ + UINT8 *pbBase; /* NULL measns nothing in it. */ UINT32 dOffset; /* offset byte */ SINT32 sdTicks; /* */ } TRACKINFO, *PTRACKINFO; -typedef struct _tagOrderList -{ - struct _tagOrderList* pPrev; - struct _tagOrderList* pNext; +typedef struct _tagOrderList { + struct _tagOrderList *pPrev; + struct _tagOrderList *pNext; UINT32 dTrack; UINT32 dTicks; } ORDERLIST, *PORDERLIST; -typedef struct _tagMidInfo -{ +typedef struct _tagMidInfo { UINT32 dTimeResolution; /* 0..0x7fff */ - UINT8* pbText; /* */ + UINT8 *pbText; /* */ UINT32 dSizeText; /* */ - UINT8* pbTitle; /* */ + UINT8 *pbTitle; /* */ UINT32 dSizeTitle; /* */ - UINT8* pbCopyright; /* */ + UINT8 *pbCopyright; /* */ UINT32 dSizeCopyright; /* */ UINT32 dNumOfTracks; /* 1..32 */ UINT32 dSmfFormat; /* 0..1 */ @@ -176,11 +171,11 @@ typedef struct _tagMidInfo SINT32 sdDelta; /* (22.10)[ms] */ UINT32 dEndFlag; /* */ - TRACKINFO TrackInfo[MAX_SMF_TRACKS]; - - struct _tagOrderList* pTopOrderList; - struct _tagOrderList* pDoneOrderList; - struct _tagOrderList* pBottomOrderList; + TRACKINFO TrackInfo[MAX_SMF_TRACKS]; + + struct _tagOrderList *pTopOrderList; + struct _tagOrderList *pDoneOrderList; + struct _tagOrderList *pBottomOrderList; ORDERLIST OrderList[MAX_SMF_TRACKS + 3]; MIDCHINFO ChInfo[16]; /* */ @@ -189,8 +184,7 @@ typedef struct _tagMidInfo UINT8 bVoiceMap[NUM_OF_MAPS][128];/* 0:Empty, 1:Valid */ } MIDINFO, *PMIDINFO; -typedef struct _tagMidGlobals -{ +typedef struct _tagMidGlobals { SINT32 sdSeqID; /* Sequence ID */ SINT32 sdFileID; /* File ID */ UINT32 dEnable; /* 0:disable */ @@ -233,41 +227,41 @@ static PMIDGLOBAL gpMidInfo; static PMIDINFO gPi; -static SINT32 __AvMidFile_Initialize (void); -static void __AvMidFile_Deinitialize (void); -static void __AvMidInitializeOrderList (PMIDINFO pI); -static void __AvMidSortOrderList (PMIDINFO pI); -static void __AvMidInsertOrderList (PMIDINFO pI, UINT32 dTrack, SINT32 sdTicks); -static void __AvMidRemoveFromOrderList (PMIDINFO pI); -static SINT32 __AvMidGetTrackTime (PMIDINFO pI, UINT32 dTrack); -static SINT32 __AvMidUpdateTrackTime (PMIDINFO pI, UINT32 dTrack); -static void __AvMidResetTimeInfo (PMIDINFO pI); -static SINT32 __AvMidGetLeastTimeTrack (PMIDINFO pI); -static SINT32 __AvGetSizeOfFileInfo (PMIDINFO pI); -static SINT32 __AvCheckSizeOfMidFile (UINT8* fp, UINT32 dFsize); -static int __AvParseSkipXmf2Mid (UINT8* pbFile, UINT32 dFSize); -static int __AvGetMidiDuration (char* szFileName, MIDI_INFO_SIMPLE *info); +static SINT32 __AvMidFile_Initialize(void); +static void __AvMidFile_Deinitialize(void); +static void __AvMidInitializeOrderList(PMIDINFO pI); +static void __AvMidSortOrderList(PMIDINFO pI); +static void __AvMidInsertOrderList(PMIDINFO pI, UINT32 dTrack, SINT32 sdTicks); +static void __AvMidRemoveFromOrderList(PMIDINFO pI); +static SINT32 __AvMidGetTrackTime(PMIDINFO pI, UINT32 dTrack); +static SINT32 __AvMidUpdateTrackTime(PMIDINFO pI, UINT32 dTrack); +static void __AvMidResetTimeInfo(PMIDINFO pI); +static SINT32 __AvMidGetLeastTimeTrack(PMIDINFO pI); +static SINT32 __AvGetSizeOfFileInfo(PMIDINFO pI); +static SINT32 __AvCheckSizeOfMidFile(UINT8 *fp, UINT32 dFsize); +static int __AvParseSkipXmf2Mid(UINT8 *pbFile, UINT32 dFSize); +static int __AvGetMidiDuration(char *szFileName, MIDI_INFO_SIMPLE *info); /* mm plugin interface */ -int mmfile_format_read_stream_mid (MMFileFormatContext *formatContext); -int mmfile_format_read_frame_mid (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); -int mmfile_format_read_tag_mid (MMFileFormatContext *formatContext); -int mmfile_format_close_mid (MMFileFormatContext *formatContext); +int mmfile_format_read_stream_mid(MMFileFormatContext *formatContext); +int mmfile_format_read_frame_mid(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); +int mmfile_format_read_tag_mid(MMFileFormatContext *formatContext); +int mmfile_format_close_mid(MMFileFormatContext *formatContext); EXPORT_API -int mmfile_format_open_mid (MMFileFormatContext *formatContext) +int mmfile_format_open_mid(MMFileFormatContext *formatContext) { int res = MMFILE_FORMAT_FAIL; if (NULL == formatContext || NULL == formatContext->uriFileName) { - debug_error ("error: mmfile_format_open_mid\n"); + debug_error("error: mmfile_format_open_mid\n"); return MMFILE_FORMAT_FAIL; } if (formatContext->pre_checked == 0) { - res = MMFileFormatIsValidMID (formatContext->uriFileName); - if ( res == 0 ) { + res = MMFileFormatIsValidMID(NULL, formatContext->uriFileName); + if (res == 0) { debug_error("It is not MIDI file\n"); return MMFILE_FORMAT_FAIL; } @@ -287,22 +281,22 @@ int mmfile_format_open_mid (MMFileFormatContext *formatContext) } EXPORT_API -int mmfile_format_read_stream_mid (MMFileFormatContext *formatContext) +int mmfile_format_read_stream_mid(MMFileFormatContext *formatContext) { MMFileFormatStream *audioStream = NULL; int ret = MMFILE_FORMAT_FAIL; MIDI_INFO_SIMPLE *info = NULL; if (NULL == formatContext) { - debug_error ("error: invalid params\n"); + debug_error("error: invalid params\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } /*get infomation*/ - info = mmfile_format_get_midi_infomation (formatContext->uriFileName); + info = mmfile_format_get_midi_infomation(formatContext->uriFileName); if (!info) { - debug_error ("failed to get infomation"); + debug_error("failed to get infomation"); goto exception; } @@ -312,9 +306,9 @@ int mmfile_format_read_stream_mid (MMFileFormatContext *formatContext) formatContext->audioTotalTrackNum = info->track_num; formatContext->nbStreams = 1; - audioStream = mmfile_malloc (sizeof(MMFileFormatStream)); + audioStream = mmfile_malloc(sizeof(MMFileFormatStream)); if (NULL == audioStream) { - debug_error ("error: mmfile_malloc audiostream\n"); + debug_error("error: mmfile_malloc audiostream\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -325,43 +319,43 @@ int mmfile_format_read_stream_mid (MMFileFormatContext *formatContext) audioStream->framePerSec = 0; audioStream->width = 0; audioStream->height = 0; - audioStream->nbChannel = 1; + audioStream->nbChannel = 1; audioStream->samplePerSec = 0; formatContext->streams[MMFILE_AUDIO_STREAM] = audioStream; - #ifdef __MMFILE_TEST_MODE__ - mmfile_format_print_contents (formatContext); - #endif +#ifdef __MMFILE_TEST_MODE__ + mmfile_format_print_contents(formatContext); +#endif - mmfile_format_free_midi_infomation (info); + mmfile_format_free_midi_infomation(info); return MMFILE_FORMAT_SUCCESS; exception: - mmfile_format_free_midi_infomation (info); - mmfile_free (audioStream); + mmfile_format_free_midi_infomation(info); + mmfile_free(audioStream); return ret; } EXPORT_API -int mmfile_format_read_tag_mid (MMFileFormatContext *formatContext) +int mmfile_format_read_tag_mid(MMFileFormatContext *formatContext) { - int ret= MMFILE_FORMAT_FAIL; + int ret = MMFILE_FORMAT_FAIL; MIDI_INFO_SIMPLE *info = NULL; - const char *locale = MMFileUtilGetLocale (NULL); + const char *locale = MMFileUtilGetLocale(NULL); unsigned int tag_len; unsigned int cnv_len; if (NULL == formatContext) { - debug_error ("error: invalid params\n"); + debug_error("error: invalid params\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } /*get infomation*/ - info = mmfile_format_get_midi_infomation (formatContext->uriFileName); + info = mmfile_format_get_midi_infomation(formatContext->uriFileName); if (!info) { - debug_error ("failed to get infomation"); + debug_error("failed to get infomation"); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -370,79 +364,79 @@ int mmfile_format_read_tag_mid (MMFileFormatContext *formatContext) * UTF8 converting. */ if (info->title) { - tag_len = strlen (info->title); + tag_len = strlen(info->title); cnv_len = 0; - formatContext->title = mmfile_string_convert ((const char*)info->title, - tag_len, - "UTF-8", - locale, - NULL, - (unsigned int*)&cnv_len); + formatContext->title = mmfile_string_convert((const char *)info->title, + tag_len, + "UTF-8", + locale, + NULL, + (unsigned int *)&cnv_len); if (formatContext->title == NULL) { - debug_warning ("failed to UTF8 convert.\n"); - formatContext->title = mmfile_strdup (info->title); + debug_warning("failed to UTF8 convert.\n"); + formatContext->title = mmfile_strdup(info->title); } } if (info->copyright) { - tag_len = strlen (info->copyright); + tag_len = strlen(info->copyright); cnv_len = 0; - formatContext->copyright = mmfile_string_convert ((const char*)info->copyright, - tag_len, - "UTF-8", - locale, - NULL, - (unsigned int*)&cnv_len); + formatContext->copyright = mmfile_string_convert((const char *)info->copyright, + tag_len, + "UTF-8", + locale, + NULL, + (unsigned int *)&cnv_len); if (formatContext->copyright == NULL) { - debug_warning ("failed to UTF8 convert.\n"); - formatContext->copyright = mmfile_strdup (info->copyright); + debug_warning("failed to UTF8 convert.\n"); + formatContext->copyright = mmfile_strdup(info->copyright); } } if (info->comment) { - tag_len = strlen (info->comment); + tag_len = strlen(info->comment); cnv_len = 0; - formatContext->comment = mmfile_string_convert ((const char*)info->comment, - tag_len, - "UTF-8", - locale, - NULL, - (unsigned int*)&cnv_len); + formatContext->comment = mmfile_string_convert((const char *)info->comment, + tag_len, + "UTF-8", + locale, + NULL, + (unsigned int *)&cnv_len); if (formatContext->comment == NULL) { - debug_warning ("failed to UTF8 convert.\n"); - formatContext->comment = mmfile_strdup (info->comment); + debug_warning("failed to UTF8 convert.\n"); + formatContext->comment = mmfile_strdup(info->comment); } } #ifdef __MMFILE_TEST_MODE__ - mmfile_format_print_contents (formatContext); + mmfile_format_print_contents(formatContext); #endif - mmfile_format_free_midi_infomation (info); + mmfile_format_free_midi_infomation(info); return MMFILE_FORMAT_SUCCESS; exception: - mmfile_format_free_midi_infomation (info); + mmfile_format_free_midi_infomation(info); return ret; } EXPORT_API -int mmfile_format_read_frame_mid (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) +int mmfile_format_read_frame_mid(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) { - debug_error ("error: mmfile_format_read_frame_midi, no handling\n"); + debug_error("error: mmfile_format_read_frame_midi, no handling\n"); - return MMFILE_FORMAT_FAIL; + return MMFILE_FORMAT_FAIL; } EXPORT_API -int mmfile_format_close_mid (MMFileFormatContext *formatContext) +int mmfile_format_close_mid(MMFileFormatContext *formatContext) { - if (NULL == formatContext ) { - debug_error ("error: invalid params\n"); + if (NULL == formatContext) { + debug_error("error: invalid params\n"); return MMFILE_FORMAT_FAIL; } - if(formatContext->streams[MMFILE_AUDIO_STREAM]) { + if (formatContext->streams[MMFILE_AUDIO_STREAM]) { mmfile_free(formatContext->streams[MMFILE_AUDIO_STREAM]); formatContext->streams[MMFILE_AUDIO_STREAM] = NULL; } @@ -455,41 +449,41 @@ int mmfile_format_close_mid (MMFileFormatContext *formatContext) return MMFILE_FORMAT_SUCCESS; } -static char * _lc_strdup (const char *str, unsigned int size) +static char *_lc_strdup(const char *str, unsigned int size) { char *t = NULL; - t = mmfile_malloc (size+1); + t = mmfile_malloc(size + 1); if (t) { - memset (t, 0x00, size+1); - memcpy (t, str, size); + memset(t, 0x00, size + 1); + memcpy(t, str, size); } return t; } MIDI_INFO_SIMPLE * -mmfile_format_get_midi_infomation (char* szFileName) +mmfile_format_get_midi_infomation(char *szFileName) { - int duration = -1; + /*int duration = -1;*/ MIDI_INFO_SIMPLE *info = NULL; - info = mmfile_malloc (sizeof (MIDI_INFO_SIMPLE)); + info = mmfile_malloc(sizeof(MIDI_INFO_SIMPLE)); if (!info) return NULL; /*get infomation*/ - duration = __AvGetMidiDuration (szFileName, info); + /*duration = */__AvGetMidiDuration(szFileName, info); return info; } void -mmfile_format_free_midi_infomation (MIDI_INFO_SIMPLE *info) +mmfile_format_free_midi_infomation(MIDI_INFO_SIMPLE *info) { if (info) { - if (info->title) mmfile_free (info->title); - if (info->copyright) mmfile_free (info->copyright); - if (info->comment) mmfile_free (info->comment); - mmfile_free (info); + if (info->title) mmfile_free(info->title); + if (info->copyright) mmfile_free(info->copyright); + if (info->comment) mmfile_free(info->comment); + mmfile_free(info); } } @@ -513,68 +507,68 @@ mmfile_format_free_midi_infomation (MIDI_INFO_SIMPLE *info) * Return * >= 0 : FileID, < 0 : Error code ****************************************************************************/ -static int -__AvGetMidiDuration(char* szFileName, MIDI_INFO_SIMPLE *info) +static int +__AvGetMidiDuration(char *szFileName, MIDI_INFO_SIMPLE *info) { - int xmfheaderSkip=0; - MMFileIOHandle * hFile = NULL; - UINT8 * pbFile= NULL; - UINT8 * pIMYbuf= NULL; + int xmfheaderSkip = 0; + MMFileIOHandle *hFile = NULL; + UINT8 *pbFile = NULL; + UINT8 *pIMYbuf = NULL; SINT32 dFileSize; int sdCurrentTime = 0; - // void* pvExtArgs = "mid"; - int readed =0; + /* void* pvExtArgs = "mid"; */ + int readed = 0; int ret; int codecType = AV_DEC_AUDIO_MIDI; int is_xmf = 0; - if ( szFileName == NULL || info == NULL) + if (szFileName == NULL || info == NULL) return -1; - // debug_msg ("URI: %s\n", szFileName); + /* debug_msg("URI: %s\n", szFileName); */ /*open*/ - ret = mmfile_open (&hFile, szFileName, MMFILE_RDONLY); + ret = mmfile_open(&hFile, szFileName, MMFILE_RDONLY); if (ret == MMFILE_UTIL_FAIL) { - debug_error ( "open failed.\n"); + debug_error("open failed.\n"); return -1; } /*get file size*/ - mmfile_seek (hFile, 0L, MMFILE_SEEK_END); - dFileSize = mmfile_tell (hFile); - mmfile_seek (hFile, 0L, MMFILE_SEEK_SET); + mmfile_seek(hFile, 0L, MMFILE_SEEK_END); + dFileSize = mmfile_tell(hFile); + mmfile_seek(hFile, 0L, MMFILE_SEEK_SET); if (dFileSize <= 0) { - debug_error ("failed to get file size.\n"); + debug_error("failed to get file size.\n"); goto _RELEASE_RESOURCE; } /*alloc read buffer*/ - pbFile = (UINT8 *) mmfile_malloc (sizeof(UINT8) * (dFileSize + 1)); + pbFile = (UINT8 *) mmfile_malloc(sizeof(UINT8) * (dFileSize + 1)); if (!pbFile) { - debug_error ( "memory allocation failed.\n"); + debug_error("memory allocation failed.\n"); goto _RELEASE_RESOURCE; } /*read data*/ - if ((readed = mmfile_read (hFile, pbFile, dFileSize) ) != dFileSize) { - debug_error ( "read error. size = %d\n", readed); + if ((readed = mmfile_read(hFile, pbFile, dFileSize)) != dFileSize) { + debug_error("read error. size = %d\n", readed); goto _RELEASE_RESOURCE; } /*init global workspace*/ - if(__AvMidFile_Initialize()) + if (__AvMidFile_Initialize()) goto _RELEASE_RESOURCE; /*check format*/ - if (!(memcmp (pbFile, MMFILE_XMF_100, 8)) || - !(memcmp (pbFile, MMFILE_XMF_101, 8)) || - !(memcmp (pbFile, MMFILE_MXMF_200, 8))) { + if (!(memcmp(pbFile, MMFILE_XMF_100, 8)) || + !(memcmp(pbFile, MMFILE_XMF_101, 8)) || + !(memcmp(pbFile, MMFILE_MXMF_200, 8))) { is_xmf = 1; codecType = AV_DEC_AUDIO_XMF; - } else if (!(memcmp (pbFile, MMFILE_RMF, 4))) { + } else if (!(memcmp(pbFile, MMFILE_RMF, 4))) { is_xmf = 0; codecType = AV_DEC_AUDIO_RMF; } else { @@ -592,40 +586,40 @@ __AvGetMidiDuration(char* szFileName, MIDI_INFO_SIMPLE *info) } else { /*get duration. XMF/MIDI*/ - if(codecType == AV_DEC_AUDIO_XMF) { + if (codecType == AV_DEC_AUDIO_XMF) { xmfheaderSkip = __AvParseSkipXmf2Mid(pbFile, dFileSize); - if(xmfheaderSkip == -1) + if (xmfheaderSkip == -1) goto _RELEASE_RESOURCE; - sdCurrentTime = __AvCheckSizeOfMidFile(pbFile+xmfheaderSkip, dFileSize); + sdCurrentTime = __AvCheckSizeOfMidFile(pbFile + xmfheaderSkip, dFileSize); } else { sdCurrentTime = __AvCheckSizeOfMidFile(pbFile, dFileSize); } - if(sdCurrentTime < 0) { - debug_error ("__AvGetMidiDuration: sdResult's error Code!(%d)\n", sdCurrentTime); + if (sdCurrentTime < 0) { + debug_error("__AvGetMidiDuration: sdResult's error Code!(%d)\n", sdCurrentTime); goto _RELEASE_RESOURCE; } - if(sdCurrentTime > 0) + if (sdCurrentTime > 0) sdCurrentTime /= 1000; info->duration = sdCurrentTime; info->track_num = gPi->dNumOfTracks; info->is_xmf = is_xmf; - info->title = _lc_strdup ((const char *)gPi->pbTitle, gPi->dSizeTitle); - info->copyright = _lc_strdup ((const char *)gPi->pbCopyright, gPi->dSizeCopyright); - info->comment = _lc_strdup ((const char *)gPi->pbText, gPi->dSizeText); + info->title = _lc_strdup((const char *)gPi->pbTitle, gPi->dSizeTitle); + info->copyright = _lc_strdup((const char *)gPi->pbCopyright, gPi->dSizeCopyright); + info->comment = _lc_strdup((const char *)gPi->pbText, gPi->dSizeText); } _RELEASE_RESOURCE: /*resource release*/ - __AvMidFile_Deinitialize (); - mmfile_close (hFile); - mmfile_free (pbFile); - mmfile_free (pIMYbuf); + __AvMidFile_Deinitialize(); + mmfile_close(hFile); + mmfile_free(pbFile); + mmfile_free(pIMYbuf); return sdCurrentTime; } @@ -633,12 +627,12 @@ _RELEASE_RESOURCE: static SINT32 __AvMidFile_Initialize(void) { - gpMidInfo = mmfile_malloc (sizeof (MIDGLOBAL)); + gpMidInfo = mmfile_malloc(sizeof(MIDGLOBAL)); if (!gpMidInfo) return (AvSMW_ERROR); - memset (gpMidInfo, 0x00, sizeof (MIDGLOBAL)); + memset(gpMidInfo, 0x00, sizeof(MIDGLOBAL)); gpMidInfo->sdSeqID = -1; /* Sequence ID */ gpMidInfo->sdFileID = -1; /* File ID */ @@ -652,7 +646,7 @@ __AvMidFile_Initialize(void) static void __AvMidFile_Deinitialize(void) { - mmfile_free (gpMidInfo); + mmfile_free(gpMidInfo); } @@ -670,13 +664,12 @@ __AvMidFile_Deinitialize(void) * Return: * none ****************************************************************************/ -static void +static void __AvMidInitializeOrderList(PMIDINFO pI) { int ix2; - for (ix2 = 1; ix2 <= MAX_SMF_TRACKS + 1; ix2++) - { + for (ix2 = 1; ix2 <= MAX_SMF_TRACKS + 1; ix2++) { pI->OrderList[ix2].pPrev = &pI->OrderList[ix2 - 1]; pI->OrderList[ix2].pNext = &pI->OrderList[ix2 + 1]; pI->OrderList[ix2].dTrack = 0xFF; @@ -702,7 +695,7 @@ __AvMidInitializeOrderList(PMIDINFO pI) * Return: * none ****************************************************************************/ -static void +static void __AvMidSortOrderList(PMIDINFO pI) { PORDERLIST pSlot; @@ -714,8 +707,7 @@ __AvMidSortOrderList(PMIDINFO pI) pSlot->dTicks = ((UINT32)pI->TrackInfo[pSlot->dTrack].sdTicks << 5) + pSlot->dTrack; pTerget = pSlot->pNext; - while (pTerget != pI->pDoneOrderList) - { + while (pTerget != pI->pDoneOrderList) { if (pSlot->dTicks <= pTerget->dTicks) break; pTerget = pTerget->pNext; } @@ -747,7 +739,7 @@ __AvMidInsertOrderList(PMIDINFO pI, UINT32 dTrack, SINT32 sdTicks) pTerget = pI->pDoneOrderList->pNext; if (pTerget == pI->pBottomOrderList) return; - + pI->pDoneOrderList->pNext = pTerget->pNext; (pTerget->pNext)->pPrev = pI->pDoneOrderList; @@ -757,7 +749,7 @@ __AvMidInsertOrderList(PMIDINFO pI, UINT32 dTrack, SINT32 sdTicks) pTerget->pNext = (pI->pTopOrderList)->pNext; ((pI->pTopOrderList)->pNext)->pPrev = pTerget; (pI->pTopOrderList)->pNext = pTerget; - + __AvMidSortOrderList(pI); } @@ -772,7 +764,7 @@ __AvMidInsertOrderList(PMIDINFO pI, UINT32 dTrack, SINT32 sdTicks) * Return: * none ****************************************************************************/ -static void +static void __AvMidRemoveFromOrderList(PMIDINFO pI) { PORDERLIST pSlot; @@ -781,7 +773,7 @@ __AvMidRemoveFromOrderList(PMIDINFO pI) pSlot = (pI->pTopOrderList)->pNext; (pSlot->pPrev)->pNext = pSlot->pNext; (pSlot->pNext)->pPrev = pSlot->pPrev; - + pTerget = pI->pBottomOrderList; (pTerget->pPrev)->pNext = pSlot; pSlot->pPrev = pTerget->pPrev; @@ -813,17 +805,15 @@ __AvMidGetTrackTime(PMIDINFO pI, UINT32 dTrack) pMt = &(pI->TrackInfo[dTrack]); dTime = 0; - do - { - if (pMt->dOffset >= pMt->dSize) - { + do { + if (pMt->dOffset >= pMt->dSize) { pI->dEndFlag &= ~(1L << dTrack); return (-1); } dTemp = (UINT32)pMt->pbBase[pMt->dOffset++]; dTime = (dTime << 7) + (dTemp & 0x7f); } while (dTemp >= 0x80); - //debug_msg("dTime is %d\n", dTime); + /*debug_msg("dTime is %d\n", dTime); */ pMt->sdTicks += dTime; return (0); @@ -848,21 +838,17 @@ __AvMidUpdateTrackTime(PMIDINFO pI, UINT32 dTrack) SINT32 dTime; PTRACKINFO pMt; - if (pI->dNumOfTracks == 1) - { + if (pI->dNumOfTracks == 1) { /* Single track */ - if (((pI->dEndFlag >> dTrack) & 0x01) == 0) - { + if (((pI->dEndFlag >> dTrack) & 0x01) == 0) { return (-1); } pMt = &(pI->TrackInfo[dTrack]); dTime = 0; - do - { - if (pMt->dOffset >= pMt->dSize) - { + do { + if (pMt->dOffset >= pMt->dSize) { pI->dEndFlag &= ~(1L << dTrack); return (-1); } @@ -871,12 +857,9 @@ __AvMidUpdateTrackTime(PMIDINFO pI, UINT32 dTrack) } while (dTemp >= 0x80); pMt->sdTicks += dTime; - } - else - { + } else { /* Multi track */ - if (((pI->dEndFlag >> dTrack) & 0x01) == 0) - { + if (((pI->dEndFlag >> dTrack) & 0x01) == 0) { __AvMidRemoveFromOrderList(pI); return (-1); } @@ -884,10 +867,8 @@ __AvMidUpdateTrackTime(PMIDINFO pI, UINT32 dTrack) pMt = &(pI->TrackInfo[dTrack]); dTime = 0; - do - { - if (pMt->dOffset >= pMt->dSize) - { + do { + if (pMt->dOffset >= pMt->dSize) { pI->dEndFlag &= ~(1L << dTrack); __AvMidRemoveFromOrderList(pI); return (-1); @@ -917,13 +898,12 @@ __AvMidUpdateTrackTime(PMIDINFO pI, UINT32 dTrack) static void __AvMidResetTimeInfo(PMIDINFO pI) { - SINT32 sdTrack; + UINT32 sdTrack; PTRACKINFO pMt; pI->dEndFlag = 0; - for (sdTrack = 0; sdTrack < (UINT32)pI->dNumOfTracks; sdTrack++) - { + for (sdTrack = 0; sdTrack < (UINT32)pI->dNumOfTracks; sdTrack++) { pMt = &(pI->TrackInfo[sdTrack]); pMt->dSmfCmd = 0; @@ -931,20 +911,18 @@ __AvMidResetTimeInfo(PMIDINFO pI) pMt->sdTicks = 0; if (pMt->dSize > 0) pI->dEndFlag |= (1L << sdTrack); } - + __AvMidInitializeOrderList(pI); - if((UINT32)pI->dNumOfTracks > MAX_SMF_TRACKS) - { - debug_error ("__AvMidResetTimeInfo: Num of tracks is over MAX track number. !!\n"); + if ((UINT32)pI->dNumOfTracks > MAX_SMF_TRACKS) { + debug_error("__AvMidResetTimeInfo: Num of tracks is over MAX track number. !!\n"); return; } - for (sdTrack = 0; sdTrack < (UINT32)pI->dNumOfTracks; sdTrack++) - { + for (sdTrack = 0; sdTrack < (UINT32)pI->dNumOfTracks; sdTrack++) { __AvMidGetTrackTime(pI, (UINT32)sdTrack); pMt = &(pI->TrackInfo[sdTrack]); - __AvMidInsertOrderList(pI, (UINT32)sdTrack, pMt->sdTicks); + __AvMidInsertOrderList(pI, (UINT32)sdTrack, pMt->sdTicks); } } @@ -987,10 +965,10 @@ __AvGetSizeOfFileInfo(PMIDINFO pI) UINT32 dCmd; UINT32 dCmd2; UINT32 dSize; - + UINT32 dTemp; UINT32 dTime; - SINT32 sdTotalTicks; + UINT32 sdTotalTicks; SINT32 sdCurrentTime; SINT32 sdDelta; PMIDCHINFO pCh; @@ -1002,7 +980,7 @@ __AvGetSizeOfFileInfo(PMIDINFO pI) static UINT32 dBank[16]; static UINT32 dCurrBank[16]; - + SINT32 sdNonConductorTime; SINT32 sdNonConductorTicks; UINT32 dConductorNote; @@ -1023,18 +1001,15 @@ __AvGetSizeOfFileInfo(PMIDINFO pI) pI->dStart = 0; pI->dSetupBar = 0; pI->dVibNoteVoice = 0; - - for (dCh = 0; dCh < NUM_OF_MAPS; dCh++) - { - for (dTemp = 0; dTemp < 128; dTemp++) - { + + for (dCh = 0; dCh < NUM_OF_MAPS; dCh++) { + for (dTemp = 0; dTemp < 128; dTemp++) { pI->bVoiceMap[dCh][dTemp] = 0; } } pI->bVoiceMap[MELODY_MAP][0] = 1; /* GM Default Piano */ - for (dCh = 0; dCh < 16; dCh++) - { + for (dCh = 0; dCh < 16; dCh++) { dBank[dCh] = 0; dCurrBank[dCh] = 0; pCh = &pI->ChInfo[dCh]; @@ -1047,269 +1022,244 @@ __AvGetSizeOfFileInfo(PMIDINFO pI) if (pI->dSmfFormat != 0) dSetup |= 0x20; - while (pI->dEndFlag != 0) - { - if ((pI->dEndFlag == 1) && (sdNonConductorTime == 0x7FFFFFFF)) - { + while (pI->dEndFlag != 0) { + if ((pI->dEndFlag == 1) && (sdNonConductorTime == 0x7FFFFFFF)) { sdNonConductorTime = sdCurrentTime; sdNonConductorTicks = sdTotalTicks; dConductorNote |= 2; } - - if (pI->dNumOfTracks == 1) - { + + if (pI->dNumOfTracks == 1) { sdTr = 0; - } - else - { + } else { sdTr = __AvMidGetLeastTimeTrack(pI); if (sdTr < 0) break; } pMt = &(pI->TrackInfo[sdTr]); - + dTime = pMt->sdTicks - sdTotalTicks; sdCurrentTime += dTime * sdDelta; sdTotalTicks = pMt->sdTicks; - if ((sdCurrentTime < 0) || (sdTotalTicks > 0x07FFFFFFL)) - { + if ((sdCurrentTime < 0) || (sdTotalTicks > 0x07FFFFFFL)) { return (AvSMW_ERROR_LONG_LENGTH); } dCmd = (UINT32)pMt->pbBase[pMt->dOffset++]; - if (dCmd < 0xf0) - { + if (dCmd < 0xf0) { /*--- MidiMsg ---*/ - if (dCmd < 0x80) - { + if (dCmd < 0x80) { dCmd = pMt->dSmfCmd; if (dCmd < 0x80) return (AvSMW_ERROR_SMF_CMD); pMt->dOffset--; } else { pMt->dSmfCmd = dCmd; } - + dCh = dCmd & 0x0f; - - switch (dCmd & 0xf0) - { - case 0x90: /* NoteOn */ - /* Conductor Track Note Check */ - if (sdTr == 0) dConductorNote |= 1; - switch (dCurrBank[dCh] >> 8) - { - case 0x79: - /* Melody */ - break; - case 0x78: - /* Drum */ - pI->bVoiceMap[DRUM_MAP][pMt->pbBase[pMt->dOffset] & 0x7F] = 1; + switch (dCmd & 0xf0) { + case 0x90: /* NoteOn */ + /* Conductor Track Note Check */ + if (sdTr == 0) dConductorNote |= 1; + switch (dCurrBank[dCh] >> 8) { + case 0x79: + /* Melody */ + break; + + case 0x78: + /* Drum */ + pI->bVoiceMap[DRUM_MAP][pMt->pbBase[pMt->dOffset] & 0x7F] = 1; + break; + + default: + if (dCh == 9) { + /* Unknown: default GM Drum */ + pI->bVoiceMap[DRUM_MAP][pMt->pbBase[pMt->dOffset] & 0x7F] = 1; + } + } + pMt->dOffset += 2; break; - default: - if (dCh == 9) - { - /* Unknown: default GM Drum */ - pI->bVoiceMap[DRUM_MAP][pMt->pbBase[pMt->dOffset] & 0x7F] = 1; - } - } - pMt->dOffset += 2; - break; - - case 0xC0: /* Program change */ - switch (dBank[dCh] >> 8) - { - case 0x79: - if (dBank[dCh] != 0x7906) - { - /* Melody */ - pI->bVoiceMap[MELODY_MAP][pMt->pbBase[pMt->dOffset] & 0x7F] = 1; - } - else - { - /* Vibration Note */ - pI->dVibNoteVoice = 1; + case 0xC0: /* Program change */ + switch (dBank[dCh] >> 8) { + case 0x79: + if (dBank[dCh] != 0x7906) { + /* Melody */ + pI->bVoiceMap[MELODY_MAP][pMt->pbBase[pMt->dOffset] & 0x7F] = 1; + } else { + /* Vibration Note */ + pI->dVibNoteVoice = 1; + } + break; + + case 0x78: + /* Drum */ + break; + + default: + /* default GM Melody */ + if (dCh != 9) { + pI->bVoiceMap[MELODY_MAP][pMt->pbBase[pMt->dOffset] & 0x7F] = 1; + } } + + dCurrBank[dCh] = dBank[dCh]; + pMt->dOffset++; break; - case 0x78: - /* Drum */ + case 0xD0: /* Channel pressure */ + pMt->dOffset++; break; - default: - /* default GM Melody */ - if (dCh != 9) - { - pI->bVoiceMap[MELODY_MAP][pMt->pbBase[pMt->dOffset] & 0x7F] = 1; + case 0xB0: /* Control Change */ + switch (pMt->pbBase[pMt->dOffset]) { + case 0x00: /* Bank select(MSB) */ + dBank[dCh] = (dBank[dCh] & 0x00FF) | (pMt->pbBase[pMt->dOffset + 1] << 8); + break; + + case 0x20: /* Bank select (LSB) */ + dBank[dCh] = (dBank[dCh] & 0xFF00) | pMt->pbBase[pMt->dOffset + 1]; + break; + default: + break; } - } - - dCurrBank[dCh] = dBank[dCh]; - pMt->dOffset++; - break; - - case 0xD0: /* Channel pressure */ - pMt->dOffset++; - break; - - case 0xB0: /* Control Change */ - switch (pMt->pbBase[pMt->dOffset]) - { - case 0x00: /* Bank select(MSB) */ - dBank[dCh] = (dBank[dCh] & 0x00FF) | (pMt->pbBase[pMt->dOffset + 1] << 8); + pMt->dOffset += 2; break; - - case 0x20: /* Bank select (LSB) */ - dBank[dCh] = (dBank[dCh] & 0xFF00) | pMt->pbBase[pMt->dOffset + 1]; + + default: + pMt->dOffset += 2; break; - } - pMt->dOffset += 2; - break; - - default: - pMt->dOffset += 2; } - } - else - { - switch (dCmd) - { - case 0xF0: /* SysEx */ - case 0xF7: /* SysEx */ - pMt->dSmfCmd = 0; - dSize = 0; - do - { - dTemp = (UINT32)pMt->pbBase[pMt->dOffset++]; - dSize = (dSize << 7) + (dTemp & 0x7f); - } while (dTemp >= 0x80); - - if ((dSize == 5) && - (pMt->pbBase[pMt->dOffset] == 0x7e) && - (pMt->pbBase[pMt->dOffset + 1] == 0x7f) && - (pMt->pbBase[pMt->dOffset + 2] == 0x09) && - (pMt->pbBase[pMt->dOffset + 3] == 0x01)) - { - /* System On */ - if (sdTotalTicks == 0) - { - dSetup |= 0x04; - } - } - else - { - if (pI->dSetupBar == 0) - { - if ((dSize == 22) && - (pMt->pbBase[pMt->dOffset] == 0x43) && - (pMt->pbBase[pMt->dOffset + 1] == 0x79) && - (pMt->pbBase[pMt->dOffset + 2] == 0x06) && - (pMt->pbBase[pMt->dOffset + 3] == 0x7C)&& - (pMt->pbBase[pMt->dOffset + 4] == 0x02)) - { - /* Channel status */ - for (dCh = 0; dCh < 16; dCh++) - { - pCh = &pI->ChInfo[dCh]; - dTemp = pMt->pbBase[pMt->dOffset + 5 + dCh]; - pCh->dKeyCon = (dTemp >> 2) & 0x03; - pCh->dVibSync = (dTemp >> 1) & 0x01; - pCh->dLedSync = dTemp & 0x01; + } else { + switch (dCmd) { + case 0xF0: /* SysEx */ + case 0xF7: /* SysEx */ + pMt->dSmfCmd = 0; + dSize = 0; + do { + dTemp = (UINT32)pMt->pbBase[pMt->dOffset++]; + dSize = (dSize << 7) + (dTemp & 0x7f); + } while (dTemp >= 0x80); + + if ((dSize == 5) && + (pMt->pbBase[pMt->dOffset] == 0x7e) && + (pMt->pbBase[pMt->dOffset + 1] == 0x7f) && + (pMt->pbBase[pMt->dOffset + 2] == 0x09) && + (pMt->pbBase[pMt->dOffset + 3] == 0x01)) { + /* System On */ + if (sdTotalTicks == 0) { + dSetup |= 0x04; + } + } else { + if (pI->dSetupBar == 0) { + if ((dSize == 22) && + (pMt->pbBase[pMt->dOffset] == 0x43) && + (pMt->pbBase[pMt->dOffset + 1] == 0x79) && + (pMt->pbBase[pMt->dOffset + 2] == 0x06) && + (pMt->pbBase[pMt->dOffset + 3] == 0x7C) && + (pMt->pbBase[pMt->dOffset + 4] == 0x02)) { + /* Channel status */ + for (dCh = 0; dCh < 16; dCh++) { + pCh = &pI->ChInfo[dCh]; + dTemp = pMt->pbBase[pMt->dOffset + 5 + dCh]; + pCh->dKeyCon = (dTemp >> 2) & 0x03; + pCh->dVibSync = (dTemp >> 1) & 0x01; + pCh->dLedSync = dTemp & 0x01; + } } } } - } - - pMt->dOffset += dSize; - break; - - case 0xF1: /* System Msg */ - case 0xF3: /* System Msg */ - pMt->dOffset++; - break; - - case 0xF2: /* System Msg */ - pMt->dOffset += 2; - break; - - case 0xFF: /* Meta */ - dCmd2 = (UINT32)pMt->pbBase[pMt->dOffset++]; /* Meta Command */ - dSize = 0; /* Size */ - do - { - dTemp = (UINT32)pMt->pbBase[pMt->dOffset++]; - dSize = (dSize << 7) + (dTemp & 0x7f); - } while (dTemp >= 0x80); - - switch (dCmd2) - { - case 0x01: /* Text */ - if (pI->pbText == NULL) - { - pI->pbText = &pMt->pbBase[pMt->dOffset]; - pI->dSizeText = dSize; - } - break; - case 0x02: /* Copyright */ - if (pI->pbCopyright == NULL) - { - pI->pbCopyright = &pMt->pbBase[pMt->dOffset]; - pI->dSizeCopyright = dSize; - } + pMt->dOffset += dSize; break; - case 0x06: /* Title */ - if (pI->pbTitle == NULL) - { - pI->pbTitle = &pMt->pbBase[pMt->dOffset]; - pI->dSizeTitle = dSize; - } + case 0xF1: /* System Msg */ + case 0xF3: /* System Msg */ + pMt->dOffset++; break; - case 0x2f: /* End */ - pI->dEndFlag &= ~(1L << sdTr); + case 0xF2: /* System Msg */ + pMt->dOffset += 2; break; - - case 0x51: /* Set Tempo */ - switch (dSize) - { - case 3: - case 4: - dTime = ((UINT32)pMt->pbBase[pMt->dOffset] << 16) + - ((UINT32)pMt->pbBase[pMt->dOffset + 1] << 8) + - (UINT32)pMt->pbBase[pMt->dOffset + 2]; - if ((sdTotalTicks == 0) && (dTime == 250000)) dSetup |= 0x02; - if (sdTotalTicks == (UINT32)pI->dTimeResolution) dSetup |= 0x08; - - /*<== I Think that Below Code is Trash!! and Erase it! (Actually I Don Know ^^) - dTime = (dTime << 7) / 125; */ - - sdDelta = (UINT32)(dTime / pI->dTimeResolution); + + case 0xFF: /* Meta */ + dCmd2 = (UINT32)pMt->pbBase[pMt->dOffset++]; /* Meta Command */ + dSize = 0; /* Size */ + do { + dTemp = (UINT32)pMt->pbBase[pMt->dOffset++]; + dSize = (dSize << 7) + (dTemp & 0x7f); + } while (dTemp >= 0x80); + + switch (dCmd2) { + case 0x01: /* Text */ + if (pI->pbText == NULL) { + pI->pbText = &pMt->pbBase[pMt->dOffset]; + pI->dSizeText = dSize; + } + break; + + case 0x02: /* Copyright */ + if (pI->pbCopyright == NULL) { + pI->pbCopyright = &pMt->pbBase[pMt->dOffset]; + pI->dSizeCopyright = dSize; + } + break; + + case 0x06: /* Title */ + if (pI->pbTitle == NULL) { + pI->pbTitle = &pMt->pbBase[pMt->dOffset]; + pI->dSizeTitle = dSize; + } + break; + + case 0x2f: /* End */ + pI->dEndFlag &= ~(1L << sdTr); + break; + + case 0x51: /* Set Tempo */ + switch (dSize) { + case 3: + case 4: + dTime = ((UINT32)pMt->pbBase[pMt->dOffset] << 16) + + ((UINT32)pMt->pbBase[pMt->dOffset + 1] << 8) + + (UINT32)pMt->pbBase[pMt->dOffset + 2]; + if ((sdTotalTicks == 0) && (dTime == 250000)) dSetup |= 0x02; + if (sdTotalTicks == (UINT32)pI->dTimeResolution) dSetup |= 0x08; + + /*<== I Think that Below Code is Trash!! and Erase it! (Actually I Don Know ^^) + dTime = (dTime << 7) / 125; */ + + sdDelta = (UINT32)(dTime / (pI->dTimeResolution > 0 ? pI->dTimeResolution : 1)); + break; + + default: + break; + } + break; + + case 0x58: /* Set TimeSignature */ + if ((sdTotalTicks == 0) && + (pMt->pbBase[pMt->dOffset] == 1) && + (pMt->pbBase[pMt->dOffset + 1] == 2)) dSetup |= 0x01; + break; + default: + break; } + pMt->dOffset += dSize; break; - - case 0x58: /* Set TimeSignature */ - if ((sdTotalTicks == 0) && - (pMt->pbBase[pMt->dOffset] == 1) && - (pMt->pbBase[pMt->dOffset + 1] == 2)) dSetup |= 0x01; + default: break; - } - pMt->dOffset += dSize; - break; } } - - if((UINT32)sdTr >= MAX_SMF_TRACKS) - { - debug_error ("__AvGetSizeOfFileInfo: Num of tracks is over MAX track number. !!\n"); + + if ((UINT32)sdTr >= MAX_SMF_TRACKS) { + debug_error("__AvGetSizeOfFileInfo: Num of tracks is over MAX track number. !!\n"); return AvSMW_ERROR_SMF_CMD; } __AvMidUpdateTrackTime(pI, (UINT32)sdTr); - - if (dSetup == 0x0F) - { + + if (dSetup == 0x0F) { dSetup |= 0x10; sdCurrentTime = 0; pI->dSetupBar = 1; @@ -1317,21 +1267,16 @@ __AvGetSizeOfFileInfo(PMIDINFO pI) } } - if ((dConductorNote != 2) || (pI->dSmfFormat == 0)) - { + if ((dConductorNote != 2) || (pI->dSmfFormat == 0)) { pI->sdTotalTicks = sdTotalTicks; pI->sdDataEndTime = sdCurrentTime; - } - else - { + } else { pI->sdTotalTicks = sdNonConductorTicks; pI->sdDataEndTime = sdNonConductorTime; } - - if (pI->dSetupBar == 0) - { - for (dCh = 0; dCh < 16; dCh++) - { + + if (pI->dSetupBar == 0) { + for (dCh = 0; dCh < 16; dCh++) { pCh = &pI->ChInfo[dCh]; pCh->dKeyCon = 0; pCh->dVibSync = 0; @@ -1340,7 +1285,7 @@ __AvGetSizeOfFileInfo(PMIDINFO pI) } if ((pI->sdDataEndTime >> 10) <= MINIMUM_LENGTH) return (AvSMW_ERROR_SHORT_LENGTH); - // debug_msg("__AvGetSizeOfFileInfo/Done\n"); + /* debug_msg("__AvGetSizeOfFileInfo/Done\n"); */ return pI->sdDataEndTime; } @@ -1359,7 +1304,7 @@ __AvGetSizeOfFileInfo(PMIDINFO pI) * 0 : NoError, < 0 : Error ****************************************************************************/ static SINT32 -__AvCheckSizeOfMidFile(UINT8* src_fp, UINT32 dFsize) +__AvCheckSizeOfMidFile(UINT8 *src_fp, UINT32 dFsize) { UINT32 dTemp; UINT32 dSize; @@ -1368,21 +1313,19 @@ __AvCheckSizeOfMidFile(UINT8* src_fp, UINT32 dFsize) UINT32 dNumOfTracks; UINT32 i; UINT8 *fp = src_fp; - // debug_msg ("input param: %p, %d\n", fp , dFsize); - while (dFsize >= 22) - { + /* debug_msg("input param: %p, %d\n", fp, dFsize); */ + while (dFsize >= 22) { dTemp = ((UINT32)fp[0] << 24) + ((UINT32)fp[1] << 16) + ((UINT32)fp[2] << 8) + (UINT32)fp[3]; if (dTemp == 0x4D546864) break; /* 'MThd' */ - fp ++; - dFsize --; + fp++; + dFsize--; } - - // debug_msg("__AvCheckSizeOfMidFile(): MThd Position is dFsize(%d)\n", dFsize); - - if (dFsize < 22) - { - debug_error ("__AvCheckSizeOfMidFile Error / Too small size\n"); + + /* debug_msg("__AvCheckSizeOfMidFile(): MThd Position is dFsize(%d)\n", dFsize); */ + + if (dFsize < 22) { + debug_error("__AvCheckSizeOfMidFile Error / Too small size\n"); return (AvSMW_ERROR_FILE); } @@ -1392,73 +1335,65 @@ __AvCheckSizeOfMidFile(UINT8* src_fp, UINT32 dFsize) /*--- Check size ----------------------------------------------------*/ dTemp = ((UINT32)fp[0] << 24) + ((UINT32)fp[1] << 16) + ((UINT32)fp[2] << 8) + (UINT32)fp[3]; - - if (dTemp != 6) - { - debug_error ("__AvCheckSizeOfMidFile Error / Size != 6\n"); + + if (dTemp != 6) { + debug_error("__AvCheckSizeOfMidFile Error / Size != 6\n"); return (AvSMW_ERROR_CHUNK_SIZE); } - + fp += 4; dFsize -= 4; if (gpMidInfo->DataInfo[1].dValid == 1) return (AvSMW_ERROR); - pI = &gpMidInfo->DataInfo[1]; - + pI = &gpMidInfo->DataInfo[1]; + /** * set global val */ /*--- Check format -------------------------------------------------*/ dFormat = ((UINT32)fp[0] << 8) + (UINT32)fp[1]; - if (dFormat > 1) - { - debug_error ("__AvCheckSizeOfMidFile Error/ Not Format 0 or 1\n"); + if (dFormat > 1) { + debug_error("__AvCheckSizeOfMidFile Error/ Not Format 0 or 1\n"); return (AvSMW_ERROR_SMF_FORMAT); } - + /*--- Check number of tracks ---------------------------------------*/ dNumOfTracks = (SINT32)((UINT32)fp[2] << 8) + (UINT32)fp[3]; - if (dNumOfTracks == 0) - { - debug_error ("__AvCheckSizeOfMidFile Error/ Number of Tracks = 0\n"); + if (dNumOfTracks == 0) { + debug_error("__AvCheckSizeOfMidFile Error/ Number of Tracks = 0\n"); return (AvSMW_ERROR_SMF_TRACKNUM); } - if ((dFormat == 0) && (dNumOfTracks != 1)) - { - debug_error ("__AvCheckSizeOfMidFile Error/ Number of Tracks > 1\n"); + if ((dFormat == 0) && (dNumOfTracks != 1)) { + debug_error("__AvCheckSizeOfMidFile Error/ Number of Tracks > 1\n"); return (AvSMW_ERROR_SMF_TRACKNUM); } - + if (dNumOfTracks > MAX_SMF_TRACKS) dNumOfTracks = MAX_SMF_TRACKS; pI->dNumOfTracks = (UINT8)dNumOfTracks; /*--- Check Time unit --------------------------------------------*/ dTemp = ((UINT32)fp[4] << 8) + (UINT32)fp[5]; pI->dTimeResolution = dTemp & 0x7fff; - if (((dTemp & 0x8000) != 0) || (pI->dTimeResolution == 0)) - { - debug_error ("__AvCheckSizeOfMidFile Error/ Unknown TimeUnit\n"); + if (((dTemp & 0x8000) != 0) || (pI->dTimeResolution == 0)) { + debug_error("__AvCheckSizeOfMidFile Error/ Unknown TimeUnit\n"); return (AvSMW_ERROR_SMF_TIMEUNIT); } fp += 6; dFsize -= 6; - - for (i = 0; i < dNumOfTracks; i++) - { + + for (i = 0; i < dNumOfTracks; i++) { /*--- Check chunk name --------------------------------------------*/ - while (dFsize >= 8) - { + while (dFsize >= 8) { dTemp = ((UINT32)fp[0] << 24) + ((UINT32)fp[1] << 16) + ((UINT32)fp[2] << 8) + (UINT32)fp[3]; if (dTemp == 0x4D54726B) break; /* 'MTrk' */ - fp ++; - dFsize --; + fp++; + dFsize--; } - if (dFsize < 8) - { - debug_error ("__AvCheckSizeOfMidFile Error/ Bad size\n"); + if (dFsize < 8) { + debug_error("__AvCheckSizeOfMidFile Error/ Bad size\n"); return (AvSMW_ERROR_CHUNK_SIZE); } @@ -1466,9 +1401,8 @@ __AvCheckSizeOfMidFile(UINT8* src_fp, UINT32 dFsize) dSize = ((UINT32)fp[4] << 24) + ((UINT32)fp[5] << 16) + ((UINT32)fp[6] << 8) + (UINT32)fp[7]; - if (dFsize < (dSize + 8)) - { - debug_error ("__AvCheckSizeOfMidFile Error/ Bad size [%ld] vs [%ld]\n", dFsize, dSize + 22); + if (dFsize < (dSize + 8)) { + debug_error("__AvCheckSizeOfMidFile Error/ Bad size [%ld] vs [%ld]\n", dFsize, dSize + 22); return (AvSMW_ERROR_CHUNK_SIZE); } pI->TrackInfo[i].pbBase = &fp[8]; @@ -1482,37 +1416,32 @@ __AvCheckSizeOfMidFile(UINT8* src_fp, UINT32 dFsize) * set global */ gPi = pI; - + return (__AvGetSizeOfFileInfo(pI)); } static int -__AvParseSkipXmf2Mid(UINT8* pbFile, UINT32 dFSize) +__AvParseSkipXmf2Mid(UINT8 *pbFile, UINT32 dFSize) { - UINT32 skipVal = 0, sizeOfpbFile= dFSize; - while(1) - { - if(pbFile[skipVal] == 'M' && pbFile[skipVal+1] == 'T' && pbFile[skipVal+2] == 'h' && pbFile[skipVal+3] == 'd') - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("__AvParseSkipForXMF : MThd Header found!\n"); - #endif + UINT32 skipVal = 0, sizeOfpbFile = dFSize; + while (1) { + if (pbFile[skipVal] == 'M' && pbFile[skipVal + 1] == 'T' && pbFile[skipVal + 2] == 'h' && pbFile[skipVal + 3] == 'd') { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("__AvParseSkipForXMF : MThd Header found!\n"); +#endif break; - } - else - { + } else { skipVal++; - if(skipVal >= sizeOfpbFile) - { - debug_error ("__AvParseSkipForXMF : MThd Header is not found!\n"); - debug_error ("__AvParseSkipForXMF :skipVal(%d) sizeOfpbFile(%d) \n", skipVal, sizeOfpbFile); + if (skipVal >= sizeOfpbFile) { + debug_error("__AvParseSkipForXMF : MThd Header is not found!\n"); + debug_error("__AvParseSkipForXMF :skipVal(%d) sizeOfpbFile(%d) \n", skipVal, sizeOfpbFile); return -1; } } } - // debug_msg("__AvParseSkipForXMF : skip value(%d)\n", skipVal); - + /* debug_msg("__AvParseSkipForXMF : skip value(%d)\n", skipVal); */ + return skipVal; } diff --git a/formats/ffmpeg/mm_file_format_mmf.c b/formats/ffmpeg/mm_file_format_mmf.c index 7b93f50..b2176e4 100755 --- a/formats/ffmpeg/mm_file_format_mmf.c +++ b/formats/ffmpeg/mm_file_format_mmf.c @@ -22,7 +22,7 @@ #include <string.h> /*memcmp*/ #include <stdlib.h> /*malloc*/ -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" #include "mm_file_format_mmf.h" @@ -67,7 +67,7 @@ #define AVMASMW_ERROR_HV_CONFLICT (-26) /* conflict about HV resource */ #define AVMALIB_MAKEDWORD(a, b, c, d) (unsigned int)(((unsigned int)(a) << 24) | \ - ((unsigned int)(b) << 16) | ((unsigned int)(c) << 8) | (unsigned int)(d)) + ((unsigned int)(b) << 16) | ((unsigned int)(c) << 8) | (unsigned int)(d)) /**************************************************************************** * define @@ -106,38 +106,38 @@ * table ****************************************************************************/ static const unsigned short g_crc_tbl[256] = { - 0x0000U,0x1021U,0x2042U,0x3063U,0x4084U,0x50A5U,0x60C6U,0x70E7U, - 0x8108U,0x9129U,0xA14AU,0xB16BU,0xC18CU,0xD1ADU,0xE1CEU,0xF1EFU, - 0x1231U,0x0210U,0x3273U,0x2252U,0x52B5U,0x4294U,0x72F7U,0x62D6U, - 0x9339U,0x8318U,0xB37BU,0xA35AU,0xD3BDU,0xC39CU,0xF3FFU,0xE3DEU, - 0x2462U,0x3443U,0x0420U,0x1401U,0x64E6U,0x74C7U,0x44A4U,0x5485U, - 0xA56AU,0xB54BU,0x8528U,0x9509U,0xE5EEU,0xF5CFU,0xC5ACU,0xD58DU, - 0x3653U,0x2672U,0x1611U,0x0630U,0x76D7U,0x66F6U,0x5695U,0x46B4U, - 0xB75BU,0xA77AU,0x9719U,0x8738U,0xF7DFU,0xE7FEU,0xD79DU,0xC7BCU, - 0x48C4U,0x58E5U,0x6886U,0x78A7U,0x0840U,0x1861U,0x2802U,0x3823U, - 0xC9CCU,0xD9EDU,0xE98EU,0xF9AFU,0x8948U,0x9969U,0xA90AU,0xB92BU, - 0x5AF5U,0x4AD4U,0x7AB7U,0x6A96U,0x1A71U,0x0A50U,0x3A33U,0x2A12U, - 0xDBFDU,0xCBDCU,0xFBBFU,0xEB9EU,0x9B79U,0x8B58U,0xBB3BU,0xAB1AU, - 0x6CA6U,0x7C87U,0x4CE4U,0x5CC5U,0x2C22U,0x3C03U,0x0C60U,0x1C41U, - 0xEDAEU,0xFD8FU,0xCDECU,0xDDCDU,0xAD2AU,0xBD0BU,0x8D68U,0x9D49U, - 0x7E97U,0x6EB6U,0x5ED5U,0x4EF4U,0x3E13U,0x2E32U,0x1E51U,0x0E70U, - 0xFF9FU,0xEFBEU,0xDFDDU,0xCFFCU,0xBF1BU,0xAF3AU,0x9F59U,0x8F78U, - 0x9188U,0x81A9U,0xB1CAU,0xA1EBU,0xD10CU,0xC12DU,0xF14EU,0xE16FU, - 0x1080U,0x00A1U,0x30C2U,0x20E3U,0x5004U,0x4025U,0x7046U,0x6067U, - 0x83B9U,0x9398U,0xA3FBU,0xB3DAU,0xC33DU,0xD31CU,0xE37FU,0xF35EU, - 0x02B1U,0x1290U,0x22F3U,0x32D2U,0x4235U,0x5214U,0x6277U,0x7256U, - 0xB5EAU,0xA5CBU,0x95A8U,0x8589U,0xF56EU,0xE54FU,0xD52CU,0xC50DU, - 0x34E2U,0x24C3U,0x14A0U,0x0481U,0x7466U,0x6447U,0x5424U,0x4405U, - 0xA7DBU,0xB7FAU,0x8799U,0x97B8U,0xE75FU,0xF77EU,0xC71DU,0xD73CU, - 0x26D3U,0x36F2U,0x0691U,0x16B0U,0x6657U,0x7676U,0x4615U,0x5634U, - 0xD94CU,0xC96DU,0xF90EU,0xE92FU,0x99C8U,0x89E9U,0xB98AU,0xA9ABU, - 0x5844U,0x4865U,0x7806U,0x6827U,0x18C0U,0x08E1U,0x3882U,0x28A3U, - 0xCB7DU,0xDB5CU,0xEB3FU,0xFB1EU,0x8BF9U,0x9BD8U,0xABBBU,0xBB9AU, - 0x4A75U,0x5A54U,0x6A37U,0x7A16U,0x0AF1U,0x1AD0U,0x2AB3U,0x3A92U, - 0xFD2EU,0xED0FU,0xDD6CU,0xCD4DU,0xBDAAU,0xAD8BU,0x9DE8U,0x8DC9U, - 0x7C26U,0x6C07U,0x5C64U,0x4C45U,0x3CA2U,0x2C83U,0x1CE0U,0x0CC1U, - 0xEF1FU,0xFF3EU,0xCF5DU,0xDF7CU,0xAF9BU,0xBFBAU,0x8FD9U,0x9FF8U, - 0x6E17U,0x7E36U,0x4E55U,0x5E74U,0x2E93U,0x3EB2U,0x0ED1U,0x1EF0U + 0x0000U, 0x1021U, 0x2042U, 0x3063U, 0x4084U, 0x50A5U, 0x60C6U, 0x70E7U, + 0x8108U, 0x9129U, 0xA14AU, 0xB16BU, 0xC18CU, 0xD1ADU, 0xE1CEU, 0xF1EFU, + 0x1231U, 0x0210U, 0x3273U, 0x2252U, 0x52B5U, 0x4294U, 0x72F7U, 0x62D6U, + 0x9339U, 0x8318U, 0xB37BU, 0xA35AU, 0xD3BDU, 0xC39CU, 0xF3FFU, 0xE3DEU, + 0x2462U, 0x3443U, 0x0420U, 0x1401U, 0x64E6U, 0x74C7U, 0x44A4U, 0x5485U, + 0xA56AU, 0xB54BU, 0x8528U, 0x9509U, 0xE5EEU, 0xF5CFU, 0xC5ACU, 0xD58DU, + 0x3653U, 0x2672U, 0x1611U, 0x0630U, 0x76D7U, 0x66F6U, 0x5695U, 0x46B4U, + 0xB75BU, 0xA77AU, 0x9719U, 0x8738U, 0xF7DFU, 0xE7FEU, 0xD79DU, 0xC7BCU, + 0x48C4U, 0x58E5U, 0x6886U, 0x78A7U, 0x0840U, 0x1861U, 0x2802U, 0x3823U, + 0xC9CCU, 0xD9EDU, 0xE98EU, 0xF9AFU, 0x8948U, 0x9969U, 0xA90AU, 0xB92BU, + 0x5AF5U, 0x4AD4U, 0x7AB7U, 0x6A96U, 0x1A71U, 0x0A50U, 0x3A33U, 0x2A12U, + 0xDBFDU, 0xCBDCU, 0xFBBFU, 0xEB9EU, 0x9B79U, 0x8B58U, 0xBB3BU, 0xAB1AU, + 0x6CA6U, 0x7C87U, 0x4CE4U, 0x5CC5U, 0x2C22U, 0x3C03U, 0x0C60U, 0x1C41U, + 0xEDAEU, 0xFD8FU, 0xCDECU, 0xDDCDU, 0xAD2AU, 0xBD0BU, 0x8D68U, 0x9D49U, + 0x7E97U, 0x6EB6U, 0x5ED5U, 0x4EF4U, 0x3E13U, 0x2E32U, 0x1E51U, 0x0E70U, + 0xFF9FU, 0xEFBEU, 0xDFDDU, 0xCFFCU, 0xBF1BU, 0xAF3AU, 0x9F59U, 0x8F78U, + 0x9188U, 0x81A9U, 0xB1CAU, 0xA1EBU, 0xD10CU, 0xC12DU, 0xF14EU, 0xE16FU, + 0x1080U, 0x00A1U, 0x30C2U, 0x20E3U, 0x5004U, 0x4025U, 0x7046U, 0x6067U, + 0x83B9U, 0x9398U, 0xA3FBU, 0xB3DAU, 0xC33DU, 0xD31CU, 0xE37FU, 0xF35EU, + 0x02B1U, 0x1290U, 0x22F3U, 0x32D2U, 0x4235U, 0x5214U, 0x6277U, 0x7256U, + 0xB5EAU, 0xA5CBU, 0x95A8U, 0x8589U, 0xF56EU, 0xE54FU, 0xD52CU, 0xC50DU, + 0x34E2U, 0x24C3U, 0x14A0U, 0x0481U, 0x7466U, 0x6447U, 0x5424U, 0x4405U, + 0xA7DBU, 0xB7FAU, 0x8799U, 0x97B8U, 0xE75FU, 0xF77EU, 0xC71DU, 0xD73CU, + 0x26D3U, 0x36F2U, 0x0691U, 0x16B0U, 0x6657U, 0x7676U, 0x4615U, 0x5634U, + 0xD94CU, 0xC96DU, 0xF90EU, 0xE92FU, 0x99C8U, 0x89E9U, 0xB98AU, 0xA9ABU, + 0x5844U, 0x4865U, 0x7806U, 0x6827U, 0x18C0U, 0x08E1U, 0x3882U, 0x28A3U, + 0xCB7DU, 0xDB5CU, 0xEB3FU, 0xFB1EU, 0x8BF9U, 0x9BD8U, 0xABBBU, 0xBB9AU, + 0x4A75U, 0x5A54U, 0x6A37U, 0x7A16U, 0x0AF1U, 0x1AD0U, 0x2AB3U, 0x3A92U, + 0xFD2EU, 0xED0FU, 0xDD6CU, 0xCD4DU, 0xBDAAU, 0xAD8BU, 0x9DE8U, 0x8DC9U, + 0x7C26U, 0x6C07U, 0x5C64U, 0x4C45U, 0x3CA2U, 0x2C83U, 0x1CE0U, 0x0CC1U, + 0xEF1FU, 0xFF3EU, 0xCF5DU, 0xDF7CU, 0xAF9BU, 0xBFBAU, 0x8FD9U, 0x9FF8U, + 0x6E17U, 0x7E36U, 0x4E55U, 0x5E74U, 0x2E93U, 0x3EB2U, 0x0ED1U, 0x1EF0U }; /* phase */ @@ -337,8 +337,7 @@ static const unsigned short g_crc_tbl[256] = { ****************************************************************************/ /* OPDA infomation structure */ -typedef struct AvTagOptionInfo -{ +typedef struct AvTagOptionInfo { unsigned char *pbCnti; /* pointer to CNTI Body */ unsigned int dCntiSize; /* size of CNTI Body */ unsigned char *pbOpda; /* pointer to OPDA Body */ @@ -346,8 +345,7 @@ typedef struct AvTagOptionInfo } OPTIONINFO, *POPTIONINFO; /* Track information structure */ -typedef struct AvTagTrackInfo -{ +typedef struct AvTagTrackInfo { unsigned char *pbMtr; /* pointer to MTR(ATR) Body */ unsigned int dMtrSize; /* size of MTR(ATR) Body */ unsigned char *pbMspi; /* pointer to MspI(AspI) Body */ @@ -369,8 +367,7 @@ typedef struct AvTagTrackInfo } TRACKINFO, *PTRACKINFO; /* Phrase information structure */ -typedef struct AvTagPhraseInfo -{ +typedef struct AvTagPhraseInfo { unsigned int dStartPoint; /* start point of phrase(offset) */ unsigned int dStopPoint; /* stop point of phrase(offset) */ unsigned int dStartTick; /* start point of phrase(tick) */ @@ -378,8 +375,7 @@ typedef struct AvTagPhraseInfo } PHRASEINFO, *PPHRASEINFO; /* Huffman information structure */ -typedef struct AvTagHuffmanInfo -{ +typedef struct AvTagHuffmanInfo { unsigned int dMtsqSize; /* size of Mtsq(Atsq) Body */ unsigned int dSeqSize; /* size of sequence data */ unsigned int dReadSize; /* read data size */ @@ -394,8 +390,7 @@ typedef struct AvTagHuffmanInfo } HUFFMANINFO, *PHUFFMANINFO; /* HV information structure */ -typedef struct AvTagHvInfo -{ +typedef struct AvTagHvInfo { unsigned char *pbVoice; /* pointer to HVP0 chunk header */ unsigned int dVoiceSize; /* size of HV voice parameter */ unsigned char *pbScript; /* pointer to Mhsc body */ @@ -405,8 +400,7 @@ typedef struct AvTagHvInfo /* Load information structure */ -typedef struct AvTagLoadInfo -{ +typedef struct AvTagLoadInfo { unsigned char *pbMmmd; /* pointer to MMMD top */ unsigned int dMmmdSize; /* size of MMMD (whole) */ unsigned int dCrc; /* file CRC */ @@ -414,7 +408,7 @@ typedef struct AvTagLoadInfo unsigned int dPlayTime; /* play time (tick) */ unsigned int dStartTime; /* start time (start point tick) */ unsigned int dTimeBase; /* time base (msec/tick) */ - unsigned char (*pfnGetByte)(PHUFFMANINFO psHuf); + unsigned char(*pfnGetByte)(PHUFFMANINFO psHuf); OPTIONINFO sOption_Info; TRACKINFO sTrack_Info[AV_MMF_MAX_TRACK_NUM]; PHRASEINFO sPhrase_Info[AV_MMF_MAX_PHRASE_INFO]; @@ -423,8 +417,7 @@ typedef struct AvTagLoadInfo } LOADINFO, *PLOADINFO; /* Stream information structure(for MA-2) */ -typedef struct AvTagStreamInfo2 -{ +typedef struct AvTagStreamInfo2 { unsigned char bStrmID; /* key number of stream */ unsigned char *pbWave; /* pointer to Awa body */ unsigned int dWaveSize; /* size of Awa body */ @@ -432,44 +425,38 @@ typedef struct AvTagStreamInfo2 } STREAMINFO2, *PSTREAMINFO2; /* Stream information structure(for MA-3/5) */ -typedef struct AvTagStreamInfo3 -{ +typedef struct AvTagStreamInfo3 { unsigned char fbNote; /* stream data flag */ unsigned char bPairID; /* stream pair ID */ unsigned char bPan; /* stream pan */ } STREAMINFO3, *PSTREAMINFO3; /* Stream information structure */ -typedef struct AvTagStreamInfo -{ +typedef struct AvTagStreamInfo { STREAMINFO2 sStream_Info2[AV_MMF_MAX_STREAM_DATA_NUM2]; STREAMINFO3 sStream_Info3[AV_MMF_MAX_STREAM_DATA_NUM3]; } STREAMINFO, *PSTREAMINFO; /* Voice information structure(for MA-1/2) */ -typedef struct AvTagVoiceInfo2 -{ +typedef struct AvTagVoiceInfo2 { unsigned char bBank; /* bank number */ unsigned char bProg; /* program number */ } VOICEINFO2, *PVOICEINFO2; /* Wave information structure(for MA-3/5) */ -typedef struct AvTagWaveInfo3 -{ +typedef struct AvTagWaveInfo3 { unsigned int dAdrs; /* wave address */ unsigned int dSize; /* wave data size */ } WAVEINFO3, *PWAVEINFO3; /* Voice information structure */ -typedef struct AvTagVoiceInfo -{ +typedef struct AvTagVoiceInfo { VOICEINFO2 sVoice_Info2[AV_MMF_MAX_VOICE_DATA_NUM2]; WAVEINFO3 sWave_Info3[AV_MMF_MAX_WAVE_DATA_NUM3]; } VOICEINFO, *PVOICEINFO; /* Channel information structure */ -typedef struct AvTagChannelInfo -{ +typedef struct AvTagChannelInfo { unsigned char bBankM; /* bank select MSB */ unsigned char bBankL; /* bank select LSB */ unsigned char bBank; /* bank number (sound driver) */ @@ -494,8 +481,7 @@ typedef struct AvTagChannelInfo } CHANNELINFO, *PCHANNELINFO; /* Event information structure */ -typedef struct AvTagEventBlock -{ +typedef struct AvTagEventBlock { unsigned int dEventTime; /* event activation time */ unsigned int dSeqID; /* sequencer ID (sound driver) */ unsigned int dCmd; /* command ID (sound driver) */ @@ -505,23 +491,21 @@ typedef struct AvTagEventBlock unsigned char *pbSeq; /* pointer to next event data */ unsigned int dIndex; /* index of next event */ unsigned int dTrackNo; /* track no. */ - void * pvNext; /* pointer to next event block */ + void *pvNext; /* pointer to next event block */ } EVENTBLOCK, *PEVENTBLOCK; /* Note OFF information structure */ -typedef struct AvTagNoteOffBlock -{ +typedef struct AvTagNoteOffBlock { unsigned int dOffTime; /* note off activation time */ unsigned int dSeqID; /* sequencer ID (sound driver) */ unsigned int dCmd; /* command ID (sound driver) */ unsigned int dCh; /* channel no. */ unsigned int dKey; /* key no. */ - void * pvNext; /* pointer to next note off block */ + void *pvNext; /* pointer to next note off block */ } OFFBLOCK, *POFFBLOCK; /* Playback information structure */ -typedef struct AvTagPlayInfo -{ +typedef struct AvTagPlayInfo { PEVENTBLOCK psNextEvent; /* pointer to next event block */ PEVENTBLOCK psEmptyEvent; /* pointer to empty event block */ POFFBLOCK psNextOff; /* pointer to next note off block */ @@ -555,8 +539,7 @@ typedef struct AvTagPlayInfo } PLAYINFO, *PPLAYINFO; /* SMAF information structure */ -typedef struct AvTagSmafInfo -{ +typedef struct AvTagSmafInfo { int sdMmfSeqID; /* sequence id (sound driver) */ unsigned int dStatus; /* converter status */ LOADINFO sLoad_Info[2]; @@ -568,8 +551,8 @@ static const unsigned char g_abBitMaskTable1[8] = {0x01, 0x02, 0x04, 0x08, 0x10, static const unsigned short g_awBitMaskTable2[8] = {0x00FF, 0x01FE, 0x03FC, 0x07F8, 0x0FF0, 0x1FE0, 0x3FC0, 0x7F80}; static const unsigned char g_abTableA[16] = {0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15}; static const unsigned char g_abTableD[16] = {0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; -static const unsigned char g_abExpression2[16] = {0x80,0x00,0x1f,0x27,0x2f,0x37,0x3f,0x47,0x4f,0x57,0x5f,0x67,0x6f,0x77,0x7f,0x80}; -static const unsigned char g_abModulation2[16] = {0x80,0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x60,0x70,0x7f,0x80}; +static const unsigned char g_abExpression2[16] = {0x80, 0x00, 0x1f, 0x27, 0x2f, 0x37, 0x3f, 0x47, 0x4f, 0x57, 0x5f, 0x67, 0x6f, 0x77, 0x7f, 0x80}; +static const unsigned char g_abModulation2[16] = {0x80, 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x60, 0x70, 0x7f, 0x80}; /** * Define. @@ -584,33 +567,33 @@ static const unsigned char g_abModulation2[16] = {0x80,0x00,0x08,0x10,0x18,0x20, /* internals */ -static int mmf_file_mmf_get_duration (char *src, int is_xmf); +static int mmf_file_mmf_get_duration(char *src, int is_xmf); /* mm plugin porting */ /* plugin manadatory API */ -int mmfile_format_read_stream_mmf (MMFileFormatContext *formatContext); -int mmfile_format_read_frame_mmf (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); -int mmfile_format_read_tag_mmf (MMFileFormatContext *formatContext); -int mmfile_format_close_mmf (MMFileFormatContext *formatContext); +int mmfile_format_read_stream_mmf(MMFileFormatContext *formatContext); +int mmfile_format_read_frame_mmf(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); +int mmfile_format_read_tag_mmf(MMFileFormatContext *formatContext); +int mmfile_format_close_mmf(MMFileFormatContext *formatContext); EXPORT_API -int mmfile_format_open_mmf (MMFileFormatContext *formatContext) -{ +int mmfile_format_open_mmf(MMFileFormatContext *formatContext) +{ int ret = 0; if (NULL == formatContext) { - debug_error ("error: formatContext is NULL\n"); - return MMFILE_FORMAT_FAIL; + debug_error("error: formatContext is NULL\n"); + return MMFILE_FORMAT_FAIL; } if (formatContext->pre_checked == 0) { - ret = MMFileFormatIsValidMMF (formatContext->uriFileName); + ret = MMFileFormatIsValidMMF(NULL, formatContext->uriFileName); if (ret == 0) { - debug_error ("error: it is not MMF file\n"); - return MMFILE_FORMAT_FAIL; + debug_error("error: it is not MMF file\n"); + return MMFILE_FORMAT_FAIL; } } @@ -626,51 +609,49 @@ int mmfile_format_open_mmf (MMFileFormatContext *formatContext) } EXPORT_API -int mmfile_format_read_stream_mmf (MMFileFormatContext *formatContext) +int mmfile_format_read_stream_mmf(MMFileFormatContext *formatContext) { - int total = 0; - - total = mmf_file_mmf_get_duration (formatContext->uriFileName, 0 /*not XMF*/); - if ( total < 0 ) - { - debug_error ("error: get duration\n"); - return MMFILE_FORMAT_FAIL; - } - - - formatContext->duration = total; - formatContext->audioTotalTrackNum = 1; - formatContext->nbStreams = 1; - formatContext->streams[MMFILE_AUDIO_STREAM] = mmfile_malloc (sizeof(MMFileFormatStream)); - if (NULL == formatContext->streams[MMFILE_AUDIO_STREAM]) - { - debug_error ("error: mmfile_malloc, audido stream\n"); - return MMFILE_FORMAT_FAIL; - } - - formatContext->streams[MMFILE_AUDIO_STREAM]->codecId =MM_AUDIO_CODEC_MMF; - formatContext->streams[MMFILE_AUDIO_STREAM]->nbChannel = 1; - - return MMFILE_FORMAT_SUCCESS; + int total = 0; + + total = mmf_file_mmf_get_duration(formatContext->uriFileName, 0 /*not XMF*/); + if (total < 0) { + debug_error("error: get duration\n"); + return MMFILE_FORMAT_FAIL; + } + + + formatContext->duration = total; + formatContext->audioTotalTrackNum = 1; + formatContext->nbStreams = 1; + formatContext->streams[MMFILE_AUDIO_STREAM] = mmfile_malloc(sizeof(MMFileFormatStream)); + if (NULL == formatContext->streams[MMFILE_AUDIO_STREAM]) { + debug_error("error: mmfile_malloc, audido stream\n"); + return MMFILE_FORMAT_FAIL; + } + + formatContext->streams[MMFILE_AUDIO_STREAM]->codecId = MM_AUDIO_CODEC_MMF; + formatContext->streams[MMFILE_AUDIO_STREAM]->nbChannel = 1; + + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_read_frame_mmf (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) +int mmfile_format_read_frame_mmf(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) { - return MMFILE_FORMAT_SUCCESS; + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_read_tag_mmf (MMFileFormatContext *formatContext) +int mmfile_format_read_tag_mmf(MMFileFormatContext *formatContext) { - return MMFILE_FORMAT_SUCCESS; + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_close_mmf (MMFileFormatContext *formatContext) +int mmfile_format_close_mmf(MMFileFormatContext *formatContext) { - return MMFILE_FORMAT_SUCCESS; + return MMFILE_FORMAT_SUCCESS; } @@ -685,12 +666,12 @@ int mmfile_format_close_mmf (MMFileFormatContext *formatContext) * nothing ********************************************************************************/ static unsigned int -_mmf_Get4Byte(unsigned char* pbBuf) +_mmf_Get4Byte(unsigned char *pbBuf) { - return (unsigned int)( (((unsigned int)pbBuf[0]) << 24) + - (((unsigned int)pbBuf[1]) << 16) + - (((unsigned int)pbBuf[2]) << 8) + - ((unsigned int)pbBuf[3])); + return (unsigned int)((((unsigned int)pbBuf[0]) << 24) + + (((unsigned int)pbBuf[1]) << 16) + + (((unsigned int)pbBuf[2]) << 8) + + ((unsigned int)pbBuf[3])); } @@ -709,7 +690,7 @@ _mmf_CheckInitial(PLOADINFO psLoad) { unsigned char i; -/* Initialize Load information structure */ + /* Initialize Load information structure */ psLoad->pbMmmd = NULL; psLoad->dMmmdSize = 0; psLoad->dCrc = AV_MMF_CRC_NULL; @@ -724,8 +705,7 @@ _mmf_CheckInitial(PLOADINFO psLoad) psLoad->sOption_Info.pbOpda = NULL; psLoad->sOption_Info.dOpdaSize = 0; - for ( i = 0; i < AV_MMF_MAX_TRACK_NUM; i++) - { + for (i = 0; i < AV_MMF_MAX_TRACK_NUM; i++) { psLoad->sTrack_Info[i].pbMtr = NULL; psLoad->sTrack_Info[i].dMtrSize = 0; psLoad->sTrack_Info[i].pbMspi = NULL; @@ -746,8 +726,7 @@ _mmf_CheckInitial(PLOADINFO psLoad) psLoad->sTrack_Info[i].dStopTick = AV_MMF_STSP_TIME_NULL; } - for ( i = 0; i < AV_MMF_MAX_PHRASE_INFO; i++) - { + for (i = 0; i < AV_MMF_MAX_PHRASE_INFO; i++) { psLoad->sPhrase_Info[i].dStartPoint = AV_MMF_STSP_OFFSET_NULL; psLoad->sPhrase_Info[i].dStopPoint = AV_MMF_STSP_OFFSET_NULL; psLoad->sPhrase_Info[i].dStartTick = AV_MMF_STSP_TIME_NULL; @@ -776,20 +755,26 @@ _mmf_CheckInitial(PLOADINFO psLoad) static int _mmf_GetTimebase(unsigned char bData) { - switch ( bData ) - { - case 0x02: return 4; /* 4[msec/tick] */ - case 0x03: return 5; /* 5[msec/tick] */ - case 0x10: return 10; /* 10[msec/tick] */ - case 0x11: return 20; /* 20[msec/tick] */ - case 0x12: return 40; /* 40[msec/tick] */ - case 0x13: return 50; /* 50[msec/tick] */ - default: return AV_MMF_FUNC_ERROR; /* Time Base Error */ + switch (bData) { + case 0x02: + return 4; /* 4[msec/tick] */ + case 0x03: + return 5; /* 5[msec/tick] */ + case 0x10: + return 10; /* 10[msec/tick] */ + case 0x11: + return 20; /* 20[msec/tick] */ + case 0x12: + return 40; /* 40[msec/tick] */ + case 0x13: + return 50; /* 50[msec/tick] */ + default: + return AV_MMF_FUNC_ERROR; /* Time Base Error */ } } static int -_mmf_MalibNextChunk(unsigned char* pbFile, unsigned int dSize, unsigned int dState, unsigned int* pdChunkID, unsigned int* pdChunkNo) +_mmf_MalibNextChunk(unsigned char *pbFile, unsigned int dSize, unsigned int dState, unsigned int *pdChunkID, unsigned int *pdChunkNo) { unsigned int dChunkID, dChunkSize; @@ -799,124 +784,122 @@ _mmf_MalibNextChunk(unsigned char* pbFile, unsigned int dSize, unsigned int dSta dChunkID = AVMALIB_MAKEDWORD(pbFile[0], pbFile[1], pbFile[2], pbFile[3]); dChunkSize = AVMALIB_MAKEDWORD(pbFile[4], pbFile[5], pbFile[6], pbFile[7]); - switch (dChunkID) - { - case AVMALIB_CHUNKID_MMMD : - *pdChunkID = AVMALIB_CHUNKCODE_MMMD; - if (dState != AVMALIB_CHUNK_PHASE_MMMD) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_CNTI : - *pdChunkID = AVMALIB_CHUNKCODE_CNTI; - if (dState != AVMALIB_CHUNK_PHASE_CNTI) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_OPDA : - *pdChunkID = AVMALIB_CHUNKCODE_OPDA; - if (dState != AVMALIB_CHUNK_PHASE_MMMDSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_MSPI : - *pdChunkID = AVMALIB_CHUNKCODE_MSPI; - if (dState != AVMALIB_CHUNK_PHASE_MTRSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_MTSU : - *pdChunkID = AVMALIB_CHUNKCODE_MTSU; - if (dState != AVMALIB_CHUNK_PHASE_MTRSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_MTSQ : - *pdChunkID = AVMALIB_CHUNKCODE_MTSQ; - if (dState != AVMALIB_CHUNK_PHASE_MTRSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_MTSP : - *pdChunkID = AVMALIB_CHUNKCODE_MTSP; - if (dState != AVMALIB_CHUNK_PHASE_MTRSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_ASPI : - *pdChunkID = AVMALIB_CHUNKCODE_ASPI; - if (dState != AVMALIB_CHUNK_PHASE_ATRSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_ATSU : - *pdChunkID = AVMALIB_CHUNKCODE_ATSU; - if (dState != AVMALIB_CHUNK_PHASE_ATRSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_ATSQ : - *pdChunkID = AVMALIB_CHUNKCODE_ATSQ; - if (dState != AVMALIB_CHUNK_PHASE_ATRSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - - case AVMALIB_CHUNKID_MTHV : - *pdChunkID = AVMALIB_CHUNKCODE_MTHV; - if (dState != AVMALIB_CHUNK_PHASE_MTRSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_MHVS : - *pdChunkID = AVMALIB_CHUNKCODE_MHVS; - if (dState != AVMALIB_CHUNK_PHASE_MTHVSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - case AVMALIB_CHUNKID_MHSC : - *pdChunkID = AVMALIB_CHUNKCODE_MHSC; - if (dState != AVMALIB_CHUNK_PHASE_MTHVSUB) - return AVMALIB_CHUNK_ID_ERROR; - break; - - default : - *pdChunkNo = (unsigned char)(dChunkID & 0x000000FF); - switch (dChunkID & 0xFFFFFF00) - { - case AVMALIB_CHUNKID_MTR : - *pdChunkID = AVMALIB_CHUNKCODE_MTR; - if (dState != AVMALIB_CHUNK_PHASE_MMMDSUB) + switch (dChunkID) { + case AVMALIB_CHUNKID_MMMD: + *pdChunkID = AVMALIB_CHUNKCODE_MMMD; + if (dState != AVMALIB_CHUNK_PHASE_MMMD) + return AVMALIB_CHUNK_ID_ERROR; + break; + case AVMALIB_CHUNKID_CNTI: + *pdChunkID = AVMALIB_CHUNKCODE_CNTI; + if (dState != AVMALIB_CHUNK_PHASE_CNTI) return AVMALIB_CHUNK_ID_ERROR; break; - case AVMALIB_CHUNKID_ATR : - *pdChunkID = AVMALIB_CHUNKCODE_ATR; + case AVMALIB_CHUNKID_OPDA: + *pdChunkID = AVMALIB_CHUNKCODE_OPDA; if (dState != AVMALIB_CHUNK_PHASE_MMMDSUB) return AVMALIB_CHUNK_ID_ERROR; break; - - case AVMALIB_CHUNKID_DCH : - *pdChunkID = AVMALIB_CHUNKCODE_DCH; - if (dState != AVMALIB_CHUNK_PHASE_OPDASUB) + case AVMALIB_CHUNKID_MSPI: + *pdChunkID = AVMALIB_CHUNKCODE_MSPI; + if (dState != AVMALIB_CHUNK_PHASE_MTRSUB) return AVMALIB_CHUNK_ID_ERROR; break; - case AVMALIB_CHUNKID_M5P : - *pdChunkID = AVMALIB_CHUNKCODE_M5P; - if (dState != AVMALIB_CHUNK_PHASE_OPDASUB) + case AVMALIB_CHUNKID_MTSU: + *pdChunkID = AVMALIB_CHUNKCODE_MTSU; + if (dState != AVMALIB_CHUNK_PHASE_MTRSUB) return AVMALIB_CHUNK_ID_ERROR; break; - - case AVMALIB_CHUNKID_MWA : - *pdChunkID = AVMALIB_CHUNKCODE_MWA; - if (dState != AVMALIB_CHUNK_PHASE_MTSPSUB) + case AVMALIB_CHUNKID_MTSQ: + *pdChunkID = AVMALIB_CHUNKCODE_MTSQ; + if (dState != AVMALIB_CHUNK_PHASE_MTRSUB) return AVMALIB_CHUNK_ID_ERROR; break; - - case AVMALIB_CHUNKID_AWA : - *pdChunkID = AVMALIB_CHUNKCODE_AWA; + case AVMALIB_CHUNKID_MTSP: + *pdChunkID = AVMALIB_CHUNKCODE_MTSP; + if (dState != AVMALIB_CHUNK_PHASE_MTRSUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + case AVMALIB_CHUNKID_ASPI: + *pdChunkID = AVMALIB_CHUNKCODE_ASPI; + if (dState != AVMALIB_CHUNK_PHASE_ATRSUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + case AVMALIB_CHUNKID_ATSU: + *pdChunkID = AVMALIB_CHUNKCODE_ATSU; + if (dState != AVMALIB_CHUNK_PHASE_ATRSUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + case AVMALIB_CHUNKID_ATSQ: + *pdChunkID = AVMALIB_CHUNKCODE_ATSQ; if (dState != AVMALIB_CHUNK_PHASE_ATRSUB) return AVMALIB_CHUNK_ID_ERROR; break; - case AVMALIB_CHUNKID_HVP : - *pdChunkID = AVMALIB_CHUNKCODE_HVP; + case AVMALIB_CHUNKID_MTHV: + *pdChunkID = AVMALIB_CHUNKCODE_MTHV; + if (dState != AVMALIB_CHUNK_PHASE_MTRSUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + case AVMALIB_CHUNKID_MHVS: + *pdChunkID = AVMALIB_CHUNKCODE_MHVS; if (dState != AVMALIB_CHUNK_PHASE_MTHVSUB) return AVMALIB_CHUNK_ID_ERROR; break; + case AVMALIB_CHUNKID_MHSC: + *pdChunkID = AVMALIB_CHUNKCODE_MHSC; + if (dState != AVMALIB_CHUNK_PHASE_MTHVSUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + + default: + *pdChunkNo = (unsigned char)(dChunkID & 0x000000FF); + switch (dChunkID & 0xFFFFFF00) { + case AVMALIB_CHUNKID_MTR: + *pdChunkID = AVMALIB_CHUNKCODE_MTR; + if (dState != AVMALIB_CHUNK_PHASE_MMMDSUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + case AVMALIB_CHUNKID_ATR: + *pdChunkID = AVMALIB_CHUNKCODE_ATR; + if (dState != AVMALIB_CHUNK_PHASE_MMMDSUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + + case AVMALIB_CHUNKID_DCH: + *pdChunkID = AVMALIB_CHUNKCODE_DCH; + if (dState != AVMALIB_CHUNK_PHASE_OPDASUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + case AVMALIB_CHUNKID_M5P: + *pdChunkID = AVMALIB_CHUNKCODE_M5P; + if (dState != AVMALIB_CHUNK_PHASE_OPDASUB) + return AVMALIB_CHUNK_ID_ERROR; + break; - default : - *pdChunkID = AVMALIB_CHUNKCODE_UNKNOWN; + case AVMALIB_CHUNKID_MWA: + *pdChunkID = AVMALIB_CHUNKCODE_MWA; + if (dState != AVMALIB_CHUNK_PHASE_MTSPSUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + + case AVMALIB_CHUNKID_AWA: + *pdChunkID = AVMALIB_CHUNKCODE_AWA; + if (dState != AVMALIB_CHUNK_PHASE_ATRSUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + + case AVMALIB_CHUNKID_HVP: + *pdChunkID = AVMALIB_CHUNKCODE_HVP; + if (dState != AVMALIB_CHUNK_PHASE_MTHVSUB) + return AVMALIB_CHUNK_ID_ERROR; + break; + + default: + *pdChunkID = AVMALIB_CHUNKCODE_UNKNOWN; + break; + } break; - } - break; } if (dChunkSize > (dSize - AVMALIB_SIZE_OF_CHUNKHEADER)) @@ -944,96 +927,88 @@ _mmf_MTRCheck(PTRACKINFO psTrack, unsigned char bSmafType) { int sdResult, sdChunkSize; unsigned int dSize, dIndex; - unsigned char* pbBuf; + unsigned char *pbBuf; unsigned int dChunkID, dChunkNo; -/* Check Format Type */ - switch (bSmafType) - { - case AV_MMF_SMAF_TYPE_MA1 : - case AV_MMF_SMAF_TYPE_MA2 : - if (psTrack->pbMtr[0] != 0x00) - { - return AV_MMF_ERR_CHUNK; - } - break; - case AV_MMF_SMAF_TYPE_MA3 : - if ((psTrack->pbMtr[0] != 0x01) && (psTrack->pbMtr[0] != 0x02)) - { - return AV_MMF_ERR_CHUNK; - } - break; - case AV_MMF_SMAF_TYPE_MA5 : - if (psTrack->pbMtr[0] != 0x02) - { - return AV_MMF_ERR_CHUNK; - } - break; + /* Check Format Type */ + switch (bSmafType) { + case AV_MMF_SMAF_TYPE_MA1: + case AV_MMF_SMAF_TYPE_MA2: + if (psTrack->pbMtr[0] != 0x00) { + return AV_MMF_ERR_CHUNK; + } + break; + case AV_MMF_SMAF_TYPE_MA3: + if ((psTrack->pbMtr[0] != 0x01) && (psTrack->pbMtr[0] != 0x02)) { + return AV_MMF_ERR_CHUNK; + } + break; + case AV_MMF_SMAF_TYPE_MA5: + if (psTrack->pbMtr[0] != 0x02) { + return AV_MMF_ERR_CHUNK; + } + break; + default: + break; } -/* Check Sequence Type */ - if (psTrack->pbMtr[1] != 0x00) - { + /* Check Sequence Type */ + if (psTrack->pbMtr[1] != 0x00) { return AV_MMF_ERR_CHUNK; } -/* Check Time Base */ - if (psTrack->pbMtr[2] != psTrack->pbMtr[3]) - { + /* Check Time Base */ + if (psTrack->pbMtr[2] != psTrack->pbMtr[3]) { return AV_MMF_ERR_CHUNK; } sdResult = _mmf_GetTimebase(psTrack->pbMtr[2]); - if (sdResult == AV_MMF_FUNC_ERROR) - { + if (sdResult == AV_MMF_FUNC_ERROR) { return AV_MMF_ERR_CHUNK; } psTrack->dTimeBase = (unsigned int)sdResult; -/* Check sub chunk disposition */ + /* Check sub chunk disposition */ if ((bSmafType == AV_MMF_SMAF_TYPE_MA1) || (bSmafType == AV_MMF_SMAF_TYPE_MA2)) dIndex = AV_MMF_MINIMUM_TRACKSIZE2; else dIndex = AV_MMF_MINIMUM_TRACKSIZE3; pbBuf = psTrack->pbMtr; dSize = psTrack->dMtrSize; - while (dSize > (dIndex + AV_MMF_CHUNK_HEADER_SIZE)) - { - sdChunkSize = _mmf_MalibNextChunk(&pbBuf[dIndex], (dSize-dIndex), - AVMALIB_CHUNK_PHASE_MTRSUB, &dChunkID, &dChunkNo); - if (sdChunkSize < 0) - { + while (dSize > (dIndex + AV_MMF_CHUNK_HEADER_SIZE)) { + sdChunkSize = _mmf_MalibNextChunk(&pbBuf[dIndex], (dSize - dIndex), + AVMALIB_CHUNK_PHASE_MTRSUB, &dChunkID, &dChunkNo); + if (sdChunkSize < 0) { return AV_MMF_ERR_CHUNK; } dIndex += AV_MMF_CHUNK_HEADER_SIZE; switch (dChunkID) { - case AVMALIB_CHUNKCODE_MSPI : - psTrack->pbMspi = &(pbBuf[dIndex]); - psTrack->dMspiSize = sdChunkSize; - break; - case AVMALIB_CHUNKCODE_MTSU : - psTrack->pbMtsu = &(pbBuf[dIndex]); - psTrack->dMtsuSize = sdChunkSize; - break; - case AVMALIB_CHUNKCODE_MTSQ : - psTrack->pbMtsq = &(pbBuf[dIndex]); - psTrack->dMtsqSize = sdChunkSize; - break; - case AVMALIB_CHUNKCODE_MTSP : - psTrack->pbMtsp = &(pbBuf[dIndex]); - psTrack->dMtspSize = sdChunkSize; - break; - case AVMALIB_CHUNKCODE_MTHV : - psTrack->pbMthv = &(pbBuf[dIndex]); - psTrack->dMthvSize = sdChunkSize; - break; - default : - break; + case AVMALIB_CHUNKCODE_MSPI: + psTrack->pbMspi = &(pbBuf[dIndex]); + psTrack->dMspiSize = sdChunkSize; + break; + case AVMALIB_CHUNKCODE_MTSU: + psTrack->pbMtsu = &(pbBuf[dIndex]); + psTrack->dMtsuSize = sdChunkSize; + break; + case AVMALIB_CHUNKCODE_MTSQ: + psTrack->pbMtsq = &(pbBuf[dIndex]); + psTrack->dMtsqSize = sdChunkSize; + break; + case AVMALIB_CHUNKCODE_MTSP: + psTrack->pbMtsp = &(pbBuf[dIndex]); + psTrack->dMtspSize = sdChunkSize; + break; + case AVMALIB_CHUNKCODE_MTHV: + psTrack->pbMthv = &(pbBuf[dIndex]); + psTrack->dMthvSize = sdChunkSize; + break; + default: + break; } dIndex += sdChunkSize; } - if ((psTrack->pbMtsq == NULL) ||(psTrack->dMtsqSize == 0)) - { + if ((psTrack->pbMtsq == NULL) || (psTrack->dMtsqSize == 0)) { return AV_MMF_ERR_SLENGTH; } return AV_MMF_FUNC_SUCCESS; @@ -1056,37 +1031,32 @@ _mmf_ATRCheck(PTRACKINFO psTrack) { int sdResult, sdChunkSize; unsigned int dSize, dIndex; - unsigned char* pbBuf; + unsigned char *pbBuf; unsigned int dChunkID, dChunkNo; unsigned char fbWave; -/* Check Format Type */ - if (psTrack->pbMtr[0] != 0x00) - { + /* Check Format Type */ + if (psTrack->pbMtr[0] != 0x00) { return AV_MMF_ERR_CHUNK; } -/* Check Sequence Type */ - if (psTrack->pbMtr[1] != 0x00) - { + /* Check Sequence Type */ + if (psTrack->pbMtr[1] != 0x00) { return AV_MMF_ERR_CHUNK; } -/* Check Wave Type */ + /* Check Wave Type */ if (((psTrack->pbMtr[2] != 0x10) && (psTrack->pbMtr[2] != 0x11)) || - ((psTrack->pbMtr[3] & 0xF0) != 0x00)) - { + ((psTrack->pbMtr[3] & 0xF0) != 0x00)) { return AV_MMF_ERR_CHUNK; } -/* Check Time Base */ - if (psTrack->pbMtr[4] != psTrack->pbMtr[5]) - { + /* Check Time Base */ + if (psTrack->pbMtr[4] != psTrack->pbMtr[5]) { return AV_MMF_ERR_CHUNK; } sdResult = _mmf_GetTimebase(psTrack->pbMtr[4]); - if (sdResult == AV_MMF_FUNC_ERROR) - { + if (sdResult == AV_MMF_FUNC_ERROR) { return AV_MMF_ERR_CHUNK; } psTrack->dTimeBase = (unsigned int)sdResult; @@ -1096,38 +1066,34 @@ _mmf_ATRCheck(PTRACKINFO psTrack) dIndex = 6; fbWave = AV_MMF_MA2_VOICE_NULL; -/* Check sub chunk disposition */ - while (dSize > (dIndex + AV_MMF_CHUNK_HEADER_SIZE)) - { - sdChunkSize = _mmf_MalibNextChunk(&pbBuf[dIndex], (dSize-dIndex), - AVMALIB_CHUNK_PHASE_ATRSUB, &dChunkID, &dChunkNo); - if (sdChunkSize < 0) - { + /* Check sub chunk disposition */ + while (dSize > (dIndex + AV_MMF_CHUNK_HEADER_SIZE)) { + sdChunkSize = _mmf_MalibNextChunk(&pbBuf[dIndex], (dSize - dIndex), + AVMALIB_CHUNK_PHASE_ATRSUB, &dChunkID, &dChunkNo); + if (sdChunkSize < 0) { return AV_MMF_ERR_CHUNK; } dIndex += AV_MMF_CHUNK_HEADER_SIZE; - switch (dChunkID) - { - case AVMALIB_CHUNKCODE_ASPI : - psTrack->pbMspi = &(pbBuf[dIndex]); - psTrack->dMspiSize = sdChunkSize; - break; - case AVMALIB_CHUNKCODE_ATSQ : - psTrack->pbMtsq = &(pbBuf[dIndex]); - psTrack->dMtsqSize = sdChunkSize; - break; - case AVMALIB_CHUNKCODE_AWA : - if ((0x01 <= dChunkNo) && (dChunkNo <= 0x3E)) - fbWave = AV_MMF_MA2_VOICE_FOUND; - break; - default : - break; + switch (dChunkID) { + case AVMALIB_CHUNKCODE_ASPI: + psTrack->pbMspi = &(pbBuf[dIndex]); + psTrack->dMspiSize = sdChunkSize; + break; + case AVMALIB_CHUNKCODE_ATSQ: + psTrack->pbMtsq = &(pbBuf[dIndex]); + psTrack->dMtsqSize = sdChunkSize; + break; + case AVMALIB_CHUNKCODE_AWA: + if ((0x01 <= dChunkNo) && (dChunkNo <= 0x3E)) + fbWave = AV_MMF_MA2_VOICE_FOUND; + break; + default: + break; } dIndex += sdChunkSize; } - if ((psTrack->pbMtsq == NULL) ||(psTrack->dMtsqSize == 0) ||(fbWave == AV_MMF_MA2_VOICE_NULL)) - { + if ((psTrack->pbMtsq == NULL) || (psTrack->dMtsqSize == 0) || (fbWave == AV_MMF_MA2_VOICE_NULL)) { return AV_MMF_ERR_SLENGTH; } return AV_MMF_FUNC_SUCCESS; @@ -1149,7 +1115,7 @@ _mmf_ATRCheck(PTRACKINFO psTrack) static void _mmf_MspICheck(PTRACKINFO psTrack, PPHRASEINFO psPhrase) { - unsigned char* pbBuf; + unsigned char *pbBuf; unsigned int dSize, dIndex; unsigned short wTag; @@ -1160,69 +1126,68 @@ _mmf_MspICheck(PTRACKINFO psTrack, PPHRASEINFO psPhrase) dSize = psTrack->dMspiSize; dIndex = 0; - while (dSize >= dIndex + AV_MMF_PHRAZE_SIZE_A) - { - wTag = (unsigned short)((((unsigned short)pbBuf[dIndex]) << 8) + (unsigned short)pbBuf[dIndex+1]); + while (dSize >= dIndex + AV_MMF_PHRAZE_SIZE_A) { + wTag = (unsigned short)((((unsigned short)pbBuf[dIndex]) << 8) + (unsigned short)pbBuf[dIndex + 1]); switch (wTag) { - case AV_MMF_TAG_STARTPOINT : /* start point */ - psTrack->dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); - dIndex += AV_MMF_PHRAZE_SIZE_A; - break; - case AV_MMF_TAG_STOPPOINT : /* stop point */ - psTrack->dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); - dIndex += AV_MMF_PHRAZE_SIZE_A; - break; - case AV_MMF_TAG_PHRASE_A : /* A melody */ - if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) - return ; - psPhrase[0].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); - psPhrase[0].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); - dIndex += AV_MMF_PHRAZE_SIZE_B; - break; - case AV_MMF_TAG_PHRASE_B : /* B melody */ - if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) - return ; - psPhrase[1].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); - psPhrase[1].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); - dIndex += AV_MMF_PHRAZE_SIZE_B; - break; - case AV_MMF_TAG_PHRASE_E : /* Ending */ - if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) - return ; - psPhrase[2].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); - psPhrase[2].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); - dIndex += AV_MMF_PHRAZE_SIZE_B; - break; - case AV_MMF_TAG_PHRASE_I : /* Intro */ - if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) - return ; - psPhrase[3].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); - psPhrase[3].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); - dIndex += AV_MMF_PHRAZE_SIZE_B; - break; - case AV_MMF_TAG_PHRASE_K : /* Interlude */ - if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) - return ; - psPhrase[4].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); - psPhrase[4].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); - dIndex += AV_MMF_PHRAZE_SIZE_B; - break; - case AV_MMF_TAG_PHRASE_R : /* Refrain */ - if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) - return ; - psPhrase[5].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); - psPhrase[5].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); - dIndex += AV_MMF_PHRAZE_SIZE_B; - break; - case AV_MMF_TAG_PHRASE_S : /* Bridge */ - if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) - return ; - psPhrase[6].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); - psPhrase[6].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); - dIndex += AV_MMF_PHRAZE_SIZE_B; - break; - default : - return; + case AV_MMF_TAG_STARTPOINT: /* start point */ + psTrack->dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); + dIndex += AV_MMF_PHRAZE_SIZE_A; + break; + case AV_MMF_TAG_STOPPOINT: /* stop point */ + psTrack->dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); + dIndex += AV_MMF_PHRAZE_SIZE_A; + break; + case AV_MMF_TAG_PHRASE_A: /* A melody */ + if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) + return ; + psPhrase[0].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); + psPhrase[0].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); + dIndex += AV_MMF_PHRAZE_SIZE_B; + break; + case AV_MMF_TAG_PHRASE_B: /* B melody */ + if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) + return ; + psPhrase[1].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); + psPhrase[1].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); + dIndex += AV_MMF_PHRAZE_SIZE_B; + break; + case AV_MMF_TAG_PHRASE_E: /* Ending */ + if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) + return ; + psPhrase[2].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); + psPhrase[2].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); + dIndex += AV_MMF_PHRAZE_SIZE_B; + break; + case AV_MMF_TAG_PHRASE_I: /* Intro */ + if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) + return ; + psPhrase[3].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); + psPhrase[3].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); + dIndex += AV_MMF_PHRAZE_SIZE_B; + break; + case AV_MMF_TAG_PHRASE_K: /* Interlude */ + if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) + return ; + psPhrase[4].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); + psPhrase[4].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); + dIndex += AV_MMF_PHRAZE_SIZE_B; + break; + case AV_MMF_TAG_PHRASE_R: /* Refrain */ + if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) + return ; + psPhrase[5].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); + psPhrase[5].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); + dIndex += AV_MMF_PHRAZE_SIZE_B; + break; + case AV_MMF_TAG_PHRASE_S: /* Bridge */ + if (dSize < dIndex + AV_MMF_PHRAZE_SIZE_B) + return ; + psPhrase[6].dStartPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 3])); + psPhrase[6].dStopPoint = _mmf_Get4Byte(&(pbBuf[dIndex + 7])); + dIndex += AV_MMF_PHRAZE_SIZE_B; + break; + default: + return; } } return; @@ -1241,7 +1206,7 @@ _mmf_MspICheck(PTRACKINFO psTrack, PPHRASEINFO psPhrase) * < 0 error code ********************************************************************************/ static int -_mmf_STSPCheck( PTRACKINFO psTrack) +_mmf_STSPCheck(PTRACKINFO psTrack) { unsigned int dStart, dStop, dSize; @@ -1279,11 +1244,10 @@ _mmf_STSPCheck( PTRACKINFO psTrack) static int _mmf_MtsuCheck2(PTRACKINFO psTrack, unsigned char bSmafType) { - unsigned char* pbBuf; + unsigned char *pbBuf; unsigned int dSize, dIndex; - if (psTrack->pbMtsu == NULL) - { + if (psTrack->pbMtsu == NULL) { return AV_MMF_MA2_VOICE_NOTFOUND; } @@ -1291,14 +1255,11 @@ _mmf_MtsuCheck2(PTRACKINFO psTrack, unsigned char bSmafType) dSize = psTrack->dMtsuSize; dIndex = 0; - while (dSize > dIndex + 20) - { - if ((pbBuf[dIndex] != 0xFF) || (pbBuf[dIndex + 1] != 0xF0)) - { + while (dSize > dIndex + 20) { + if ((pbBuf[dIndex] != 0xFF) || (pbBuf[dIndex + 1] != 0xF0)) { return AV_MMF_MA2_VOICE_NOTFOUND; } - if (pbBuf[dIndex + 3] == 0x43) - { + if (pbBuf[dIndex + 3] == 0x43) { if ((bSmafType == AV_MMF_SMAF_TYPE_MA1) && (pbBuf[dIndex + 4] == 0x02)) return AV_MMF_MA2_VOICE_FOUND; if ((bSmafType == AV_MMF_SMAF_TYPE_MA2) && (pbBuf[dIndex + 4] == 0x03)) @@ -1325,26 +1286,22 @@ _mmf_MtsuCheck2(PTRACKINFO psTrack, unsigned char bSmafType) * < 0 error code ********************************************************************************/ static int -_mmf_GetFlex2L(unsigned char* pbBuf, unsigned int dSize, unsigned int* pbRead) +_mmf_GetFlex2L(unsigned char *pbBuf, unsigned int dSize, unsigned int *pbRead) { int sdTemp; if ((dSize < 1) || ((dSize < 2) && (pbBuf[0] >= 0x80))) return AV_MMF_FUNC_ERROR; - if (dSize >= 4) - { + if (dSize >= 4) { sdTemp = pbBuf[0] + pbBuf[1] + pbBuf[2] + pbBuf[3]; if (sdTemp == 0) return AV_MMF_FUNC_ERROR; } - if (pbBuf[0] >= 0x80) - { - sdTemp = (int)( (((int)(pbBuf[0] & 0x7F)) << 7) + - ((int)(pbBuf[1] & 0x7F)) + 128 ); + if (pbBuf[0] >= 0x80) { + sdTemp = (int)((((int)(pbBuf[0] & 0x7F)) << 7) + + ((int)(pbBuf[1] & 0x7F)) + 128); *pbRead = 2; - } - else - { + } else { sdTemp = (int)(pbBuf[0] & 0x7F); *pbRead = 1; } @@ -1367,13 +1324,12 @@ _mmf_GetFlex2L(unsigned char* pbBuf, unsigned int dSize, unsigned int* pbRead) static int _mmf_SeqDataCheck2(PTRACKINFO psTrack, unsigned char bSmafType) { - unsigned char* pbBuf; + unsigned char *pbBuf; unsigned int dSize, dIndex; int sdTemp; unsigned int dPast, dGate, dFlexSize; - if (psTrack->pbMtsq == NULL) - { + if (psTrack->pbMtsq == NULL) { return AV_MMF_ERR_SLENGTH; } @@ -1383,22 +1339,20 @@ _mmf_SeqDataCheck2(PTRACKINFO psTrack, unsigned char bSmafType) dSize = psTrack->dMtsqSize; dIndex = 0; -/* scanning to EOS or stop point */ - while ( dSize > dIndex ) - { - if (psTrack->dStartPoint== dIndex) /* start point */ + /* scanning to EOS or stop point */ + while (dSize > dIndex) { + if (psTrack->dStartPoint == dIndex) /* start point */ psTrack->dStartTick = dPast; - if (psTrack->dStopPoint == dIndex) - { /* stop point */ + if (psTrack->dStopPoint == dIndex) { + /* stop point */ psTrack->dStopTick = dPast; break; } - if (dSize >= dIndex + 4) - { - sdTemp=pbBuf[dIndex]+pbBuf[dIndex+1]+pbBuf[dIndex+2]+pbBuf[dIndex+3]; - if (sdTemp == 0) - { /* EOS */ + if (dSize >= dIndex + 4) { + sdTemp = pbBuf[dIndex] + pbBuf[dIndex + 1] + pbBuf[dIndex + 2] + pbBuf[dIndex + 3]; + if (sdTemp == 0) { + /* EOS */ if (bSmafType == AV_MMF_SMAF_TYPE_MA1) psTrack->dStopTick = dPast + dGate; else @@ -1408,13 +1362,11 @@ _mmf_SeqDataCheck2(PTRACKINFO psTrack, unsigned char bSmafType) } sdTemp = _mmf_GetFlex2L(&pbBuf[dIndex], (dSize - dIndex), &dFlexSize); - if (sdTemp < 0) - { + if (sdTemp < 0) { return AV_MMF_ERR_CHUNK; } dPast += sdTemp; - if (dPast >= AV_MMF_PLAY_TIME_MAX) - { + if (dPast >= AV_MMF_PLAY_TIME_MAX) { return AV_MMF_ERR_LLENGTH; } @@ -1424,53 +1376,47 @@ _mmf_SeqDataCheck2(PTRACKINFO psTrack, unsigned char bSmafType) dGate -= sdTemp; dIndex += dFlexSize; - if (dSize < dIndex + 2) - { + if (dSize < dIndex + 2) { return AV_MMF_ERR_CHUNK; } - switch (pbBuf[dIndex]) - { - case 0x00 : - if ((pbBuf[dIndex + 1] & 0x30) != 0x30) - dIndex += 2; - else - dIndex += 3; - break; - case 0xFF : - switch (pbBuf[dIndex + 1]) - { - case 0x00 : - dIndex += 2; + switch (pbBuf[dIndex]) { + case 0x00: + if ((pbBuf[dIndex + 1] & 0x30) != 0x30) + dIndex += 2; + else + dIndex += 3; break; - case 0xF0 : - if (dSize < dIndex + 3) - { - return AV_MMF_ERR_CHUNK; - } - dIndex += (pbBuf[dIndex + 2] + 3); - if (dSize < dIndex) { - return AV_MMF_ERR_CHUNK; + case 0xFF: + switch (pbBuf[dIndex + 1]) { + case 0x00: + dIndex += 2; + break; + case 0xF0: + if (dSize < dIndex + 3) { + return AV_MMF_ERR_CHUNK; + } + dIndex += (pbBuf[dIndex + 2] + 3); + if (dSize < dIndex) { + return AV_MMF_ERR_CHUNK; + } + if (pbBuf[dIndex - 1] != 0xF7) { + return AV_MMF_ERR_CHUNK; + } + break; + default: + return AV_MMF_ERR_CHUNK; } - if (pbBuf[dIndex - 1] != 0xF7) - { + break; + default: + sdTemp = _mmf_GetFlex2L(&pbBuf[dIndex + 1], (dSize - dIndex - 1), &dFlexSize); + if (sdTemp < 0) { return AV_MMF_ERR_CHUNK; } + if (dGate < (unsigned int)sdTemp) + dGate = (unsigned int)sdTemp; + dIndex += (1 + dFlexSize); break; - default : - return AV_MMF_ERR_CHUNK; - } - break; - default : - sdTemp = _mmf_GetFlex2L(&pbBuf[dIndex+1], (dSize - dIndex- 1), &dFlexSize); - if (sdTemp < 0) - { - return AV_MMF_ERR_CHUNK; - } - if (dGate < (unsigned int)sdTemp) - dGate = (unsigned int)sdTemp; - dIndex += (1 + dFlexSize); - break; } if (dSize < dIndex) { return AV_MMF_ERR_CHUNK; @@ -1478,20 +1424,16 @@ _mmf_SeqDataCheck2(PTRACKINFO psTrack, unsigned char bSmafType) } - if (psTrack->dStartTick == AV_MMF_STSP_TIME_NULL) - { - if (psTrack->dStartPoint != AV_MMF_STSP_OFFSET_NULL) - { + if (psTrack->dStartTick == AV_MMF_STSP_TIME_NULL) { + if (psTrack->dStartPoint != AV_MMF_STSP_OFFSET_NULL) { return AV_MMF_ERR_CHUNK; } psTrack->dStartTick = 0; } -/* check start/stop point potision */ - if (psTrack->dStopTick == AV_MMF_STSP_TIME_NULL) - { - if ((psTrack->dStopPoint != AV_MMF_STSP_OFFSET_NULL) && (psTrack->dStopPoint != dIndex)) - { + /* check start/stop point potision */ + if (psTrack->dStopTick == AV_MMF_STSP_TIME_NULL) { + if ((psTrack->dStopPoint != AV_MMF_STSP_OFFSET_NULL) && (psTrack->dStopPoint != dIndex)) { return AV_MMF_ERR_CHUNK; } if (bSmafType == AV_MMF_SMAF_TYPE_MA1) @@ -1500,12 +1442,12 @@ _mmf_SeqDataCheck2(PTRACKINFO psTrack, unsigned char bSmafType) psTrack->dStopTick = dPast; } -/* calculate playback time of this track */ + /* calculate playback time of this track */ psTrack->dPlayTime = psTrack->dStopTick - psTrack->dStartTick; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Play time: %ld\n", psTrack->dPlayTime); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Play time: %ld\n", psTrack->dPlayTime); +#endif return AV_MMF_FUNC_SUCCESS; } @@ -1529,18 +1471,16 @@ _mmf_TrackChunkCheck2(PLOADINFO psLoad) int sdResult; unsigned char i, fbVoice; -/* delete track information of MA-3/5 */ - psLoad->sTrack_Info[5].pbMtr = NULL; - psLoad->sTrack_Info[5].dMtrSize = 0; - psLoad->sTrack_Info[6].pbMtr = NULL; - psLoad->sTrack_Info[6].dMtrSize = 0; + /* delete track information of MA-3/5 */ + psLoad->sTrack_Info[5].pbMtr = NULL; + psLoad->sTrack_Info[5].dMtrSize = 0; + psLoad->sTrack_Info[6].pbMtr = NULL; + psLoad->sTrack_Info[6].dMtrSize = 0; -/* fix SMAF Type */ + /* fix SMAF Type */ psLoad->dSmafType = AV_MMF_SMAF_TYPE_MA1; - for (i = 1; i < 5; i++) - { - if (psLoad->sTrack_Info[i].pbMtr != NULL) - { + for (i = 1; i < 5; i++) { + if (psLoad->sTrack_Info[i].pbMtr != NULL) { psLoad->dSmafType = AV_MMF_SMAF_TYPE_MA2; break; } @@ -1548,99 +1488,82 @@ _mmf_TrackChunkCheck2(PLOADINFO psLoad) if (psLoad->sTrack_Info[AV_MMF_ATR_TRACK_NO].pbMtr != NULL) psLoad->dSmafType = AV_MMF_SMAF_TYPE_MA2; - if (psLoad->dSmafType == AV_MMF_SMAF_TYPE_MA1) - { /* MA-1 */ - if (psLoad->sTrack_Info[0].pbMtr == NULL) - { + if (psLoad->dSmafType == AV_MMF_SMAF_TYPE_MA1) { + /* MA-1 */ + if (psLoad->sTrack_Info[0].pbMtr == NULL) { return AV_MMF_ERR_SLENGTH; } psTrack = &(psLoad->sTrack_Info[0]); - if (psTrack->dMtrSize <= AV_MMF_MINIMUM_TRACKSIZE2) - { + if (psTrack->dMtrSize <= AV_MMF_MINIMUM_TRACKSIZE2) { return AV_MMF_ERR_CHUNK; } sdResult = _mmf_MTRCheck(psTrack, AV_MMF_SMAF_TYPE_MA1); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } _mmf_MspICheck(psTrack, &(psLoad->sPhrase_Info[0])); sdResult = _mmf_STSPCheck(psTrack); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } sdResult = _mmf_MtsuCheck2(psTrack, AV_MMF_SMAF_TYPE_MA1); - if (sdResult != AV_MMF_MA2_VOICE_FOUND) - { + if (sdResult != AV_MMF_MA2_VOICE_FOUND) { return AV_MMF_ERR_CHUNK; } sdResult = _mmf_SeqDataCheck2(psTrack, AV_MMF_SMAF_TYPE_MA1); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } psLoad->dPlayTime = psTrack->dPlayTime; psLoad->dStartTime = psTrack->dStartTick; psLoad->dTimeBase = psTrack->dTimeBase; return AV_MMF_FUNC_SUCCESS; - } - else - { /* MA-2 */ + } else { + /* MA-2 */ psLoad->sTrack_Info[0].pbMtr = NULL; psLoad->sTrack_Info[0].dMtrSize = 0; - for (i = 1; i < 5; i++) - { + for (i = 1; i < 5; i++) { psTrack = &(psLoad->sTrack_Info[i]); if (psTrack->pbMtr == NULL) continue; - if (psTrack->dMtrSize <= AV_MMF_MINIMUM_TRACKSIZE2) - { + if (psTrack->dMtrSize <= AV_MMF_MINIMUM_TRACKSIZE2) { return AV_MMF_ERR_CHUNK; } sdResult = _mmf_MTRCheck(psTrack, AV_MMF_SMAF_TYPE_MA2); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } _mmf_MspICheck(psTrack, &(psLoad->sPhrase_Info[0])); sdResult = _mmf_STSPCheck(psTrack); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } sdResult = _mmf_SeqDataCheck2(psTrack, AV_MMF_SMAF_TYPE_MA2); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } psLoad->dPlayTime = psTrack->dPlayTime; psLoad->dStartTime = psTrack->dStartTick; psLoad->dTimeBase = psTrack->dTimeBase; } - if (psLoad->sTrack_Info[AV_MMF_ATR_TRACK_NO].pbMtr != NULL) - { + if (psLoad->sTrack_Info[AV_MMF_ATR_TRACK_NO].pbMtr != NULL) { psTrack = &(psLoad->sTrack_Info[AV_MMF_ATR_TRACK_NO]); - if (psTrack->dMtrSize <= AV_MMF_MINIMUM_TRACKSIZE2) - { + if (psTrack->dMtrSize <= AV_MMF_MINIMUM_TRACKSIZE2) { return AV_MMF_ERR_CHUNK; } sdResult = _mmf_ATRCheck(psTrack); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } _mmf_MspICheck(psTrack, &(psLoad->sPhrase_Info[0])); sdResult = _mmf_STSPCheck(psTrack); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } sdResult = _mmf_SeqDataCheck2(psTrack, AV_MMF_SMAF_TYPE_MA2); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } psLoad->dPlayTime = psTrack->dPlayTime; @@ -1648,21 +1571,18 @@ _mmf_TrackChunkCheck2(PLOADINFO psLoad) psLoad->dTimeBase = psTrack->dTimeBase; } -/* totaling of track information */ - for (i = 1; i < AV_MMF_MAX_TRACK_NUM; i++) - { + /* totaling of track information */ + for (i = 1; i < AV_MMF_MAX_TRACK_NUM; i++) { psTrack = &(psLoad->sTrack_Info[i]); if (psTrack->pbMtr == NULL) continue; if (psLoad->dPlayTime < psTrack->dPlayTime) psLoad->dPlayTime = psTrack->dPlayTime; - if (psLoad->dTimeBase != psTrack->dTimeBase) - { + if (psLoad->dTimeBase != psTrack->dTimeBase) { return AV_MMF_ERR_CHUNK; } - if (psLoad->dStartTime != psTrack->dStartTick) - { + if (psLoad->dStartTime != psTrack->dStartTick) { return AV_MMF_ERR_CHUNK; } if (_mmf_MtsuCheck2(psTrack, AV_MMF_SMAF_TYPE_MA2) == AV_MMF_FUNC_SUCCESS) @@ -1670,29 +1590,25 @@ _mmf_TrackChunkCheck2(PLOADINFO psLoad) } fbVoice = AV_MMF_MA2_VOICE_FOUND; - for (i = 1; i < 5; i++) - { + for (i = 1; i < 5; i++) { psTrack = &(psLoad->sTrack_Info[i]); if (psTrack->pbMtr == NULL) continue; - if (_mmf_MtsuCheck2(psTrack, AV_MMF_SMAF_TYPE_MA2) == AV_MMF_MA2_VOICE_FOUND) - { + if (_mmf_MtsuCheck2(psTrack, AV_MMF_SMAF_TYPE_MA2) == AV_MMF_MA2_VOICE_FOUND) { fbVoice = AV_MMF_MA2_VOICE_FOUND; break; - } - else + } else fbVoice = AV_MMF_MA2_VOICE_NOTFOUND; } - if (fbVoice == AV_MMF_MA2_VOICE_NOTFOUND) - { + if (fbVoice == AV_MMF_MA2_VOICE_NOTFOUND) { return AV_MMF_ERR_CHUNK; } } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Play time: %ld\n", psLoad->dPlayTime); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Play time: %ld\n", psLoad->dPlayTime); +#endif return AV_MMF_FUNC_SUCCESS; } @@ -1700,9 +1616,8 @@ _mmf_TrackChunkCheck2(PLOADINFO psLoad) static unsigned char _mmf_GetByte3L(PHUFFMANINFO psHuf) { - psHuf->dReadSize ++; - if (psHuf->dReadSize > psHuf->dMtsqSize) - { + psHuf->dReadSize++; + if (psHuf->dReadSize > psHuf->dMtsqSize) { return 0; } return *(psHuf->psBuffer++); @@ -1722,20 +1637,19 @@ _mmf_GetByte3L(PHUFFMANINFO psHuf) * < 0 error code ********************************************************************************/ static int -_mmf_GetFlex3L(PLOADINFO psLoad, unsigned int* pdRead) +_mmf_GetFlex3L(PLOADINFO psLoad, unsigned int *pdRead) { unsigned int dTemp, dRead; unsigned char bTemp; dRead = 1; - bTemp = psLoad->pfnGetByte( &(psLoad->sHuffman_Info) ); + bTemp = psLoad->pfnGetByte(&(psLoad->sHuffman_Info)); dTemp = (unsigned int)(bTemp & 0x7F); - while (bTemp & 0x80) - { + while (bTemp & 0x80) { if (dRead >= 4) return AV_MMF_FUNC_ERROR; - dRead ++; - bTemp = psLoad->pfnGetByte( &(psLoad->sHuffman_Info) ); + dRead++; + bTemp = psLoad->pfnGetByte(&(psLoad->sHuffman_Info)); dTemp = (dTemp << 7) + (unsigned int)(bTemp & 0x7F); } if (dTemp >= AV_MMF_PLAY_TIME_MAX) @@ -1768,14 +1682,13 @@ _mmf_SeqDataCheck3(PLOADINFO psLoad, unsigned char bSmafType) int sdTemp; unsigned char bTemp; - if (bSmafType == AV_MMF_SMAF_TYPE_MA3) - { /* MA-3 */ + if (bSmafType == AV_MMF_SMAF_TYPE_MA3) { + /* MA-3 */ psTrk = &(psLoad->sTrack_Info[5]); dStartTick = AV_MMF_STSP_TIME_NULL; dStopTick = AV_MMF_STSP_TIME_NULL; - } - else - { /* MA-5 */ + } else { + /* MA-5 */ psTrk = &(psLoad->sTrack_Info[6]); dStartTick = psTrk->dStartTick; dStopTick = psTrk->dStopTick; @@ -1785,36 +1698,31 @@ _mmf_SeqDataCheck3(PLOADINFO psLoad, unsigned char bSmafType) psPhr = &(psLoad->sPhrase_Info[0]); psHuf = &(psLoad->sHuffman_Info); - fdPhrase= 0; + fdPhrase = 0; dIndex = 0; dPast = 0; dGate = 0; dSize = psHuf->dSeqSize; - if (psHuf->dSeqSize == 0) - { + if (psHuf->dSeqSize == 0) { return AV_MMF_ERR_SLENGTH; } - for (i = 0; i < AV_MMF_MAX_PHRASE_INFO; i++) - { + for (i = 0; i < AV_MMF_MAX_PHRASE_INFO; i++) { if (psPhr[i].dStartPoint != AV_MMF_STSP_OFFSET_NULL) fdPhrase = 1; } -/* scanning sequence data to EOS or stop point */ - while (dSize >= dIndex) - { + /* scanning sequence data to EOS or stop point */ + while (dSize >= dIndex) { if (psTrk->dStartPoint == dIndex) psTrk->dStartTick = dPast; if (psTrk->dStopPoint == dIndex) /* stop point */ psTrk->dStopTick = dPast; - if (fdPhrase) - { - for (i = 0; i < AV_MMF_MAX_PHRASE_INFO; i++) - { - if (psPhr[i].dStartPoint== dIndex) + if (fdPhrase) { + for (i = 0; i < AV_MMF_MAX_PHRASE_INFO; i++) { + if (psPhr[i].dStartPoint == dIndex) psPhr[i].dStartTick = dPast; if (psPhr[i].dStopPoint == dIndex) psPhr[i].dStopTick = dPast; @@ -1829,8 +1737,7 @@ _mmf_SeqDataCheck3(PLOADINFO psLoad, unsigned char bSmafType) return AV_MMF_ERR_CHUNK; } dPast += (unsigned int)sdTemp; - if (dPast >= AV_MMF_PLAY_TIME_MAX) - { + if (dPast >= AV_MMF_PLAY_TIME_MAX) { return AV_MMF_ERR_LLENGTH; } @@ -1841,120 +1748,110 @@ _mmf_SeqDataCheck3(PLOADINFO psLoad, unsigned char bSmafType) dIndex += dReadSize; bTemp = psLoad->pfnGetByte(psHuf); - dIndex ++; - - switch (bTemp & 0xF0) - { - case 0x90 : - psLoad->pfnGetByte(psHuf); /*Note number*/ - dIndex ++; - 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); /*Note number*/ - 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 0xA0 : - case 0xB0 : - case 0xE0 : - bTemp = psLoad->pfnGetByte(psHuf); /*B0: Conrol number, E0:Pitch Bend Change LSB*/ - dIndex ++; - bTemp = psLoad->pfnGetByte(psHuf); /*B0: Conrol value, E0:Pitch Bend Change MSB*/ - dIndex ++; - break; - case 0xC0 : - case 0xD0 : - bTemp = psLoad->pfnGetByte(psHuf); - dIndex ++; - break; - default : - switch (bTemp) - { - case 0xF0 : + dIndex++; + + switch (bTemp & 0xF0) { + case 0x90: + psLoad->pfnGetByte(psHuf); /*Note number*/ + dIndex++; + psLoad->pfnGetByte(psHuf); /*Key Velocity*/ + dIndex++; sdTemp = _mmf_GetFlex3L(psLoad, &dReadSize); if (sdTemp < 0) { return AV_MMF_ERR_CHUNK; } - for (i = 0; i < (unsigned int)sdTemp; i++) - bTemp = psLoad->pfnGetByte(psHuf); - if (bTemp != 0xF7) { + dIndex += dReadSize; + if ((unsigned int)sdTemp > dGate) + dGate = sdTemp; + break; + case 0x80: + psLoad->pfnGetByte(psHuf); /*Note number*/ + dIndex++; + sdTemp = _mmf_GetFlex3L(psLoad, &dReadSize); + if (sdTemp < 0) { return AV_MMF_ERR_CHUNK; } - dIndex += (unsigned int)sdTemp + dReadSize; + dIndex += dReadSize; + if ((unsigned int)sdTemp > dGate) + dGate = sdTemp; break; - case 0xFF : + case 0xA0: + case 0xB0: + case 0xE0: + bTemp = psLoad->pfnGetByte(psHuf); /*B0: Conrol number, E0:Pitch Bend Change LSB*/ + dIndex++; + bTemp = psLoad->pfnGetByte(psHuf); /*B0: Conrol value, E0:Pitch Bend Change MSB*/ + dIndex++; + break; + case 0xC0: + case 0xD0: bTemp = psLoad->pfnGetByte(psHuf); - dIndex ++; - switch (bTemp) - { - case 0x00 : - break; - case 0x2F : - bTemp = psLoad->pfnGetByte(psHuf); - dIndex ++; - if (bTemp != 0x00) - { + dIndex++; + break; + default: + switch (bTemp) { + case 0xF0: + sdTemp = _mmf_GetFlex3L(psLoad, &dReadSize); + if (sdTemp < 0) { + return AV_MMF_ERR_CHUNK; + } + for (i = 0; i < (unsigned int)sdTemp; i++) + bTemp = psLoad->pfnGetByte(psHuf); + if (bTemp != 0xF7) { + return AV_MMF_ERR_CHUNK; + } + dIndex += (unsigned int)sdTemp + dReadSize; + break; + case 0xFF: + bTemp = psLoad->pfnGetByte(psHuf); + dIndex++; + switch (bTemp) { + case 0x00: + break; + case 0x2F: + bTemp = psLoad->pfnGetByte(psHuf); + dIndex++; + if (bTemp != 0x00) { + return AV_MMF_ERR_CHUNK; + } + dGate = 0; + psTrk->dStopTick = dPast; + dIndex = dSize; + break; + default: + return AV_MMF_ERR_CHUNK; + } + break; + default: return AV_MMF_ERR_CHUNK; - } - dGate = 0; - psTrk->dStopTick = dPast; - dIndex = dSize; - break; - default : - return AV_MMF_ERR_CHUNK; } break; - default : - return AV_MMF_ERR_CHUNK; - } - break; } - if ((dSize < dIndex) || (psHuf->dReadSize > psHuf->dMtsqSize)) - { + if ((dSize < dIndex) || (psHuf->dReadSize > psHuf->dMtsqSize)) { return AV_MMF_ERR_CHUNK; } } - if (bSmafType == AV_MMF_SMAF_TYPE_MA3) - { /* MA-3 */ -/* check start point */ - if (psTrk->dStartTick == AV_MMF_STSP_TIME_NULL) - { - if (psTrk->dStartPoint != AV_MMF_STSP_OFFSET_NULL) - { + if (bSmafType == AV_MMF_SMAF_TYPE_MA3) { + /* MA-3 */ + /* check start point */ + if (psTrk->dStartTick == AV_MMF_STSP_TIME_NULL) { + if (psTrk->dStartPoint != AV_MMF_STSP_OFFSET_NULL) { return AV_MMF_ERR_CHUNK; } psTrk->dStartPoint = 0; psTrk->dStartTick = 0; } -/* check stop point */ - if (psTrk->dStopTick == AV_MMF_STSP_TIME_NULL) - { - if (psTrk->dStopPoint != AV_MMF_STSP_OFFSET_NULL) - { + /* check stop point */ + if (psTrk->dStopTick == AV_MMF_STSP_TIME_NULL) { + if (psTrk->dStopPoint != AV_MMF_STSP_OFFSET_NULL) { return AV_MMF_ERR_CHUNK; } psTrk->dStopPoint = dSize; psTrk->dStopTick = dPast + dGate; } -/* adjust phrase information */ - for (i = 0; i < AV_MMF_MAX_PHRASE_INFO; i++) - { + /* adjust phrase information */ + for (i = 0; i < AV_MMF_MAX_PHRASE_INFO; i++) { if (psPhr[i].dStartPoint <= psTrk->dStartPoint) psPhr[i].dStartTick = psTrk->dStartTick; if (psPhr[i].dStopPoint >= psTrk->dStopPoint) @@ -1962,24 +1859,22 @@ _mmf_SeqDataCheck3(PLOADINFO psLoad, unsigned char bSmafType) if (psPhr[i].dStopPoint <= psTrk->dStartPoint) psPhr[i].dStopTick = AV_MMF_STSP_TIME_NULL; } - } - else - { /* MA-5 */ -/* check stop point */ - if (dStopTick > dPast) - { + } else { + /* MA-5 */ + /* check stop point */ + if (dStopTick > dPast) { return AV_MMF_ERR_CHUNK; } psTrk->dStartTick = dStartTick; psTrk->dStopTick = dStopTick; } -/* calculate playback time of this track */ + /* calculate playback time of this track */ psTrk->dPlayTime = psTrk->dStopTick - psTrk->dStartTick; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Play time: %ld\n", psTrk->dPlayTime); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Play time: %ld\n", psTrk->dPlayTime); +#endif return AV_MMF_FUNC_SUCCESS; } @@ -2004,13 +1899,12 @@ _mmf_DecodeGetbitL(PHUFFMANINFO psHuf) { char czero = 0; - if (--psHuf->sbBitC < czero) - { + if (--psHuf->sbBitC < czero) { if (psHuf->dReadSize >= psHuf->dMtsqSize) return 0; psHuf->sbBitC = 7; psHuf->bByte = *(psHuf->psBuffer++); - psHuf->dReadSize ++; + psHuf->dReadSize++; } return (unsigned char)(psHuf->bByte & g_abBitMaskTable1[(int)(psHuf->sbBitC)]); } @@ -2037,7 +1931,7 @@ _mmf_DecodeGetbits(PHUFFMANINFO psHuf) bData1 = psHuf->bByte; bData2 = *(psHuf->psBuffer++); psHuf->bByte = bData2; - psHuf->dReadSize ++; + psHuf->dReadSize++; wTemp = (unsigned short)((((unsigned short)bData1) << 8) + ((unsigned short)bData2)); return (unsigned char)((wTemp & g_awBitMaskTable2[(int)(psHuf->sbBitC)]) >> psHuf->sbBitC); } @@ -2055,22 +1949,20 @@ _mmf_DecodeGetbits(PHUFFMANINFO psHuf) * 0 error ********************************************************************************/ static int -_mmf_DecodeTree( PHUFFMANINFO psHuf) +_mmf_DecodeTree(PHUFFMANINFO psHuf) { unsigned int dNode, dEmpty, dIndex, i; short *pswLeft, *pswRight, *pswPNode; unsigned char bTemp; - if (_mmf_DecodeGetbitL(psHuf)) - { + if (_mmf_DecodeGetbitL(psHuf)) { if (psHuf->dReadSize >= psHuf->dMtsqSize) return AV_MMF_HUFFMAN_TREE_FAILURE; pswLeft = &(psHuf->swLeft[256]); - pswRight= &(psHuf->swRight[256]); - pswPNode= &(psHuf->swRight[0]); - for (i = 0; i < 256; i++) - { + pswRight = &(psHuf->swRight[256]); + pswPNode = &(psHuf->swRight[0]); + for (i = 0; i < 256; i++) { pswLeft[i] = -1; pswRight[i] = -1; pswPNode[i] = 0; @@ -2078,12 +1970,10 @@ _mmf_DecodeTree( PHUFFMANINFO psHuf) dNode = 2; dEmpty = 1; dIndex = 0; - } - else + } else return AV_MMF_HUFFMAN_TREE_FAILURE; - while (dNode != 0) - { + while (dNode != 0) { if ((dEmpty >= 256) || (dNode >= 257)) return AV_MMF_HUFFMAN_TREE_FAILURE; @@ -2091,37 +1981,32 @@ _mmf_DecodeTree( PHUFFMANINFO psHuf) if (psHuf->dReadSize >= psHuf->dMtsqSize) return AV_MMF_HUFFMAN_TREE_FAILURE; - if (bTemp) - { - dNode ++; + if (bTemp) { + dNode++; if (pswLeft[dIndex] == -1) pswLeft[dIndex] = (short)(dEmpty + 256); else - pswRight[dIndex]= (short)(dEmpty + 256); + pswRight[dIndex] = (short)(dEmpty + 256); pswPNode[dEmpty] = (short)dIndex; dIndex = dEmpty; - dEmpty ++; - } - else - { - dNode --; + dEmpty++; + } else { + dNode--; bTemp = _mmf_DecodeGetbits(psHuf); if (psHuf->dReadSize >= psHuf->dMtsqSize) return AV_MMF_HUFFMAN_TREE_FAILURE; if (pswLeft[dIndex] == -1) pswLeft[dIndex] = (short)bTemp; - else - { - pswRight[dIndex]= (short)bTemp; + else { + pswRight[dIndex] = (short)bTemp; while ((pswRight[dIndex] != -1) && (dIndex != 0)) dIndex = (unsigned int)pswPNode[dIndex]; } } } - for (i = 0; i < 256; i++) - { + for (i = 0; i < 256; i++) { if (pswLeft[i] == -1) pswLeft[i] = 0; if (pswRight[i] == -1) @@ -2147,8 +2032,7 @@ _mmf_DecodeInit(PHUFFMANINFO psHuf) { unsigned int dSeqSize; - if (psHuf->dMtsqSize <= 5) - { + if (psHuf->dMtsqSize <= 5) { return AV_MMF_HUFFMAN_TREE_FAILURE; } @@ -2176,16 +2060,14 @@ _mmf_DecodeInit(PHUFFMANINFO psHuf) * 0 error code ********************************************************************************/ static unsigned char -_mmf_DecodeByte3L (PHUFFMANINFO psHuf) +_mmf_DecodeByte3L(PHUFFMANINFO psHuf) { unsigned int bData, bIndex; char czero = 0; bIndex = 256; - while (bIndex >= 256) - { - if (--psHuf->sbBitC < czero) - { - psHuf->dReadSize ++; + while (bIndex >= 256) { + if (--psHuf->sbBitC < czero) { + psHuf->dReadSize++; if (psHuf->dReadSize > psHuf->dMtsqSize) return 0; psHuf->sbBitC = 7; @@ -2218,18 +2100,15 @@ _mmf_TrackChunkCheck3(PLOADINFO psLoad) PTRACKINFO psTrack; int sdResult; - if (psLoad->sTrack_Info[5].pbMtr == NULL) - { + if (psLoad->sTrack_Info[5].pbMtr == NULL) { return AV_MMF_ERR_SLENGTH; } psTrack = &(psLoad->sTrack_Info[5]); - if (psTrack->dMtrSize <= AV_MMF_MINIMUM_TRACKSIZE3) - { + if (psTrack->dMtrSize <= AV_MMF_MINIMUM_TRACKSIZE3) { return AV_MMF_ERR_CHUNK; } sdResult = _mmf_MTRCheck(psTrack, AV_MMF_SMAF_TYPE_MA3); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } _mmf_MspICheck(psTrack, &(psLoad->sPhrase_Info[0])); @@ -2237,21 +2116,19 @@ _mmf_TrackChunkCheck3(PLOADINFO psLoad) psLoad->sHuffman_Info.psBuffer = psTrack->pbMtsq; psLoad->sHuffman_Info.dMtsqSize = psTrack->dMtsqSize; -/* Initialize Huffman information structure */ - if (psTrack->pbMtr[0] == 0x01) - { /* Compressed Foramt */ - psLoad->sHuffman_Info.dSeqSize = _mmf_DecodeInit( &(psLoad->sHuffman_Info) ); - if (psLoad->sHuffman_Info.dSeqSize == AV_MMF_HUFFMAN_TREE_FAILURE) - { + /* Initialize Huffman information structure */ + if (psTrack->pbMtr[0] == 0x01) { + /* Compressed Foramt */ + psLoad->sHuffman_Info.dSeqSize = _mmf_DecodeInit(&(psLoad->sHuffman_Info)); + if (psLoad->sHuffman_Info.dSeqSize == AV_MMF_HUFFMAN_TREE_FAILURE) { return AV_MMF_ERR_CHUNK; } psLoad->pfnGetByte = _mmf_DecodeByte3L; psLoad->sHuffman_Info.psFBuf = psLoad->sHuffman_Info.psBuffer; psLoad->sHuffman_Info.sbFBit = psLoad->sHuffman_Info.sbBitC; psLoad->sHuffman_Info.bFByte = psLoad->sHuffman_Info.bByte; - } - else - { /* No Compressed Foramt */ + } else { + /* No Compressed Foramt */ psLoad->pfnGetByte = _mmf_GetByte3L; psLoad->sHuffman_Info.dSeqSize = psTrack->dMtsqSize; psLoad->sHuffman_Info.dReadSize = 0; @@ -2264,22 +2141,20 @@ _mmf_TrackChunkCheck3(PLOADINFO psLoad) sdResult = _mmf_STSPCheck(psTrack); psTrack->dMtsqSize = psLoad->sHuffman_Info.dMtsqSize; - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } sdResult = _mmf_SeqDataCheck3(psLoad, AV_MMF_SMAF_TYPE_MA3); - if (sdResult != AV_MMF_FUNC_SUCCESS) - { + if (sdResult != AV_MMF_FUNC_SUCCESS) { return sdResult; } psLoad->dPlayTime = psTrack->dPlayTime; psLoad->dStartTime = psTrack->dStartTick; psLoad->dTimeBase = psTrack->dTimeBase; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Play time: %ld\n", psLoad->dPlayTime); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Play time: %ld\n", psLoad->dPlayTime); +#endif return AV_MMF_FUNC_SUCCESS; } @@ -2316,15 +2191,13 @@ _mmf_CheckM5P(PLOADINFO psLoad) pbM5p = NULL; dMSize = 0; -/* search Pro5 Chunk */ - while (dOSize > (dIndex + AV_MMF_CHUNK_HEADER_SIZE)) - { + /* search Pro5 Chunk */ + while (dOSize > (dIndex + AV_MMF_CHUNK_HEADER_SIZE)) { sdChunkSize = _mmf_MalibNextChunk(&pbOpda[dIndex], (dOSize - dIndex), - AVMALIB_CHUNK_PHASE_OPDASUB, &dChunkID, &dChunkNo); + AVMALIB_CHUNK_PHASE_OPDASUB, &dChunkID, &dChunkNo); if (sdChunkSize < AVMASMW_SUCCESS) return AVMASMW_ERROR; dIndex += AV_MMF_CHUNK_HEADER_SIZE; - if ((dChunkID == AVMALIB_CHUNKCODE_M5P) && (dChunkNo == 0x05)) - { + if ((dChunkID == AVMALIB_CHUNKCODE_M5P) && (dChunkNo == 0x05)) { pbM5p = &pbOpda[dIndex]; dMSize = (unsigned int)sdChunkSize; break; @@ -2341,15 +2214,12 @@ _mmf_CheckM5P(PLOADINFO psLoad) if (psTrk->dStartTick >= psTrk->dStopTick) return AVMASMW_ERROR; - for (i = 0; i < AV_MMF_MAX_PHRASE_INFO; i ++) - { + for (i = 0; i < AV_MMF_MAX_PHRASE_INFO; i++) { if (dMSize < (dIndex + 8)) break; - if (dPhraseFlag & (0x80000000 >> i)) - { + if (dPhraseFlag & (0x80000000 >> i)) { psPhr[i].dStartTick = _mmf_Get4Byte(&pbM5p[dIndex]); psPhr[i].dStopTick = _mmf_Get4Byte(&pbM5p[dIndex + 4]); - if (psPhr[i].dStartTick >= psPhr[i].dStopTick) - { + if (psPhr[i].dStartTick >= psPhr[i].dStopTick) { psPhr[i].dStartTick = AV_MMF_STSP_TIME_NULL; psPhr[i].dStopTick = AV_MMF_STSP_TIME_NULL; } @@ -2382,13 +2252,11 @@ _mmf_TrackChunkCheck5(PLOADINFO psLoad) PTRACKINFO psTrack; int sdResult; - if (psLoad->sTrack_Info[6].pbMtr == NULL) - { + if (psLoad->sTrack_Info[6].pbMtr == NULL) { return AV_MMF_ERR_SLENGTH; } psTrack = &(psLoad->sTrack_Info[6]); - if (psTrack->dMtrSize <= AV_MMF_MINIMUM_TRACKSIZE3) - { + if (psTrack->dMtrSize <= AV_MMF_MINIMUM_TRACKSIZE3) { return AV_MMF_ERR_CHUNK; } sdResult = _mmf_MTRCheck(psTrack, AV_MMF_SMAF_TYPE_MA5); @@ -2408,9 +2276,9 @@ _mmf_TrackChunkCheck5(PLOADINFO psLoad) psLoad->dStartTime = psTrack->dStartTick; psLoad->dTimeBase = psTrack->dTimeBase; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Play time: %ld\n", psLoad->dPlayTime); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Play time: %ld\n", psLoad->dPlayTime); +#endif return AV_MMF_FUNC_SUCCESS; } @@ -2428,12 +2296,12 @@ _mmf_TrackChunkCheck5(PLOADINFO psLoad) static void _mmf_GetHvData(PLOADINFO psLoad, unsigned char bCType) { - unsigned char* pbHvData; + unsigned char *pbHvData; unsigned int dHvDataSize; - unsigned char* pbVoice; - unsigned char* pbScript; - unsigned char* pbSetup; + unsigned char *pbVoice; + unsigned char *pbScript; + unsigned char *pbSetup; unsigned int dVoiceSize, dScriptSize, dSetupSize, dIndex; unsigned char bHvCh; unsigned short wTag, wSize; @@ -2441,19 +2309,16 @@ _mmf_GetHvData(PLOADINFO psLoad, unsigned char bCType) unsigned int dChunkID, dChunkNo; int sdChunkSize; - if ((psLoad->dSmafType == AV_MMF_SMAF_TYPE_MA1) ||(psLoad->dSmafType == AV_MMF_SMAF_TYPE_MA2)) + if ((psLoad->dSmafType == AV_MMF_SMAF_TYPE_MA1) || (psLoad->dSmafType == AV_MMF_SMAF_TYPE_MA2)) return ; if ((bCType & 0x0F) == 0x08) return ; - if (psLoad->dSmafType == AV_MMF_SMAF_TYPE_MA3) - { + if (psLoad->dSmafType == AV_MMF_SMAF_TYPE_MA3) { pbHvData = psLoad->sTrack_Info[5].pbMthv; dHvDataSize = psLoad->sTrack_Info[5].dMthvSize; - } - else - { + } else { pbHvData = psLoad->sTrack_Info[6].pbMthv; dHvDataSize = psLoad->sTrack_Info[6].dMthvSize; } @@ -2470,35 +2335,34 @@ _mmf_GetHvData(PLOADINFO psLoad, unsigned char bCType) bHvCh = AV_MMF_HV_CHANNEL_NULL; dIndex = 0; - while (dHvDataSize > (dIndex + AV_MMF_CHUNK_HEADER_SIZE)) - { + while (dHvDataSize > (dIndex + AV_MMF_CHUNK_HEADER_SIZE)) { sdChunkSize = _mmf_MalibNextChunk(&(pbHvData[dIndex]), (dHvDataSize - dIndex), - AVMALIB_CHUNK_PHASE_MTHVSUB, &dChunkID, &dChunkNo); + AVMALIB_CHUNK_PHASE_MTHVSUB, &dChunkID, &dChunkNo); if (sdChunkSize < 0) return ; dIndex += AV_MMF_CHUNK_HEADER_SIZE; - switch (dChunkID) - { - case AVMALIB_CHUNKCODE_MHVS : - pbSetup = &(pbHvData[dIndex]); - dSetupSize = (unsigned int)sdChunkSize; - break; - case AVMALIB_CHUNKCODE_HVP : - if (dChunkNo != 0) break; - pbVoice = &(pbHvData[dIndex - AV_MMF_CHUNK_HEADER_SIZE]); - dVoiceSize = (unsigned int)(sdChunkSize + AV_MMF_CHUNK_HEADER_SIZE); - break; - case AVMALIB_CHUNKCODE_MHSC : - pbScript = &(pbHvData[dIndex]); - dScriptSize = (unsigned int)sdChunkSize; - break; + switch (dChunkID) { + case AVMALIB_CHUNKCODE_MHVS: + pbSetup = &(pbHvData[dIndex]); + dSetupSize = (unsigned int)sdChunkSize; + break; + case AVMALIB_CHUNKCODE_HVP: + if (dChunkNo != 0) break; + pbVoice = &(pbHvData[dIndex - AV_MMF_CHUNK_HEADER_SIZE]); + dVoiceSize = (unsigned int)(sdChunkSize + AV_MMF_CHUNK_HEADER_SIZE); + break; + case AVMALIB_CHUNKCODE_MHSC: + pbScript = &(pbHvData[dIndex]); + dScriptSize = (unsigned int)sdChunkSize; + break; + default: + break; } dIndex += sdChunkSize; } dIndex = 0; - while (dSetupSize >= dIndex + 4 ) - { - wTag = (unsigned short)(((unsigned short)(pbSetup[dIndex ]) << 8) + pbSetup[dIndex + 1]); + while (dSetupSize >= dIndex + 4) { + wTag = (unsigned short)(((unsigned short)(pbSetup[dIndex]) << 8) + pbSetup[dIndex + 1]); wSize = (unsigned short)(((unsigned short)(pbSetup[dIndex + 2]) << 8) + pbSetup[dIndex + 3]); dIndex += 4; if (dSetupSize < (dIndex + wSize)) return ; @@ -2529,14 +2393,13 @@ _mmf_GetHvData(PLOADINFO psLoad, unsigned char bCType) * unsigned char success(read data) ********************************************************************************/ static unsigned short -_mmf_MalibMakeCRC(unsigned int dSize, unsigned char* pbData) +_mmf_MalibMakeCRC(unsigned int dSize, unsigned char *pbData) { unsigned short wRes; unsigned char bData; wRes = 0xFFFFU; - while ( --dSize >= 2 ) - { + while (--dSize >= 2) { bData = *pbData++; wRes = (unsigned short)((wRes << 8) ^ g_crc_tbl[(unsigned char)(wRes >> 8) ^ bData]); } @@ -2558,12 +2421,12 @@ _mmf_MalibMakeCRC(unsigned int dSize, unsigned char* pbData) * < 0 error code ********************************************************************************/ static int -_mmf_MALoad( unsigned char* pbFile, unsigned int dFSize) +_mmf_MALoad(unsigned char *pbFile, unsigned int dFSize) { PLOADINFO psLoad_Info; unsigned int bNo = 0; unsigned int dChunkID = 0, dChunkNo = 0; - unsigned char* pbBuf = NULL; + unsigned char *pbBuf = NULL; unsigned int dSize = 0, dIndex = 0; int sdChunkSize = 0, sdResult = 0; unsigned int dCalcCrc = 0, dFileCrc = 0; @@ -2572,13 +2435,12 @@ _mmf_MALoad( unsigned char* pbFile, unsigned int dFSize) pbBuf = pbFile; dSize = dFSize; psLoad_Info = &(g_sSmaf_Info.sLoad_Info[bNo]); - _mmf_CheckInitial( psLoad_Info ); + _mmf_CheckInitial(psLoad_Info); -/* check File Chunk(ID/Size) */ + /* check File Chunk(ID/Size) */ sdChunkSize = _mmf_MalibNextChunk(pbBuf, dSize, AVMALIB_CHUNK_PHASE_MMMD, - &dChunkID, &dChunkNo); - if ((sdChunkSize < 0) || (dChunkID != AVMALIB_CHUNKCODE_MMMD)) - { + &dChunkID, &dChunkNo); + if ((sdChunkSize < 0) || (dChunkID != AVMALIB_CHUNKCODE_MMMD)) { return AV_MMF_ERR_FILE; } dSize = (unsigned int)(sdChunkSize + AV_MMF_CHUNK_HEADER_SIZE); @@ -2591,72 +2453,62 @@ _mmf_MALoad( unsigned char* pbFile, unsigned int dFSize) } -/* check Contents Info Chunk */ + /* check Contents Info Chunk */ dIndex = AV_MMF_CHUNK_HEADER_SIZE; - sdChunkSize = _mmf_MalibNextChunk(&pbBuf[dIndex], (dSize-dIndex), - AVMALIB_CHUNK_PHASE_CNTI, &dChunkID, &dChunkNo); - if ((sdChunkSize < 5) || (dChunkID != AVMALIB_CHUNKCODE_CNTI)) - { + sdChunkSize = _mmf_MalibNextChunk(&pbBuf[dIndex], (dSize - dIndex), + AVMALIB_CHUNK_PHASE_CNTI, &dChunkID, &dChunkNo); + if ((sdChunkSize < 5) || (dChunkID != AVMALIB_CHUNKCODE_CNTI)) { return AV_MMF_ERR_FILE; } -/* check Contents Class */ + /* check Contents Class */ if ((pbBuf[AV_MMF_POSITION_OF_CCLASS] != AV_MMF_CONTENTS_CLASS_0) && - (pbBuf[AV_MMF_POSITION_OF_CCLASS] != AV_MMF_CONTENTS_CLASS_1) && - (pbBuf[AV_MMF_POSITION_OF_CCLASS] != AV_MMF_CONTENTS_CLASS_2) ) - { + (pbBuf[AV_MMF_POSITION_OF_CCLASS] != AV_MMF_CONTENTS_CLASS_1) && + (pbBuf[AV_MMF_POSITION_OF_CCLASS] != AV_MMF_CONTENTS_CLASS_2)) { return AV_MMF_ERR_CLASS; } -/* check Contents Type */ + /* check Contents Type */ dIndex += AV_MMF_CHUNK_HEADER_SIZE; if (((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_0) || - ((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_1) || - ((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_2) ) - { + ((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_1) || + ((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_2)) { psLoad_Info->dSmafType = AV_MMF_SMAF_TYPE_MA2; - } - else if (((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_3) || - ((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_4) || - ((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_5) ) - { - switch (pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0x0F) - { - case 0x00 : - case 0x01 : - psLoad_Info->dSmafType = AV_MMF_SMAF_TYPE_MA2; - break; - case 0x02 : - case 0x03 : - psLoad_Info->dSmafType = AV_MMF_SMAF_TYPE_MA3; - break; - case 0x04 : - case 0x05 : - case 0x06 : - case 0x07 : - case 0x08 : - psLoad_Info->dSmafType = AV_MMF_SMAF_TYPE_MA5; - break; - default : - return AV_MMF_ERR_TYPE; + } else if (((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_3) || + ((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_4) || + ((pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0xF0) == AV_MMF_CONTENTS_TYPE_5)) { + switch (pbBuf[AV_MMF_POSITION_OF_CTYPE] & 0x0F) { + case 0x00: + case 0x01: + psLoad_Info->dSmafType = AV_MMF_SMAF_TYPE_MA2; + break; + case 0x02: + case 0x03: + psLoad_Info->dSmafType = AV_MMF_SMAF_TYPE_MA3; + break; + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + psLoad_Info->dSmafType = AV_MMF_SMAF_TYPE_MA5; + break; + default: + return AV_MMF_ERR_TYPE; } - } - else - { + } else { return AV_MMF_ERR_TYPE; } -/* get pointer & size of option information */ + /* get pointer & size of option information */ psLoad_Info->sOption_Info.pbCnti = &pbBuf[dIndex]; psLoad_Info->sOption_Info.dCntiSize = (unsigned int)(sdChunkSize); dIndex += sdChunkSize; - if (pbBuf[AV_MMF_POSITION_OF_CTYPE] >= 0x30) - { - sdChunkSize = _mmf_MalibNextChunk(&pbBuf[dIndex], (dSize-dIndex), - AVMALIB_CHUNK_PHASE_MMMDSUB, &dChunkID, &dChunkNo); - if ((sdChunkSize >= 12) && (dChunkID == AVMALIB_CHUNKCODE_OPDA)) - { + if (pbBuf[AV_MMF_POSITION_OF_CTYPE] >= 0x30) { + sdChunkSize = _mmf_MalibNextChunk(&pbBuf[dIndex], (dSize - dIndex), + AVMALIB_CHUNK_PHASE_MMMDSUB, &dChunkID, &dChunkNo); + if ((sdChunkSize >= 12) && (dChunkID == AVMALIB_CHUNKCODE_OPDA)) { dIndex += AV_MMF_CHUNK_HEADER_SIZE; psLoad_Info->sOption_Info.pbOpda = &pbBuf[dIndex]; psLoad_Info->sOption_Info.dOpdaSize = (unsigned int)sdChunkSize; @@ -2664,75 +2516,67 @@ _mmf_MALoad( unsigned char* pbFile, unsigned int dFSize) } } -/* get Track Chunk information */ - while (dSize > (dIndex + AV_MMF_CHUNK_HEADER_SIZE + AV_MMF_FILE_CRC_SIZE)) - { - sdChunkSize = _mmf_MalibNextChunk(&pbBuf[dIndex], (dSize-dIndex), - AVMALIB_CHUNK_PHASE_MMMDSUB, &dChunkID, &dChunkNo); - if (sdChunkSize < 0) - { - if (sdChunkSize == AVMALIB_CHUNK_ID_ERROR) - { + /* get Track Chunk information */ + while (dSize > (dIndex + AV_MMF_CHUNK_HEADER_SIZE + AV_MMF_FILE_CRC_SIZE)) { + sdChunkSize = _mmf_MalibNextChunk(&pbBuf[dIndex], (dSize - dIndex), + AVMALIB_CHUNK_PHASE_MMMDSUB, &dChunkID, &dChunkNo); + if (sdChunkSize < 0) { + if (sdChunkSize == AVMALIB_CHUNK_ID_ERROR) { return AV_MMF_ERR_FILE; - } - else { + } else { return AV_MMF_ERR_SIZE; } } dIndex += AV_MMF_CHUNK_HEADER_SIZE; - switch (dChunkID) - { - case AVMALIB_CHUNKCODE_MTR : - if (dChunkNo > 6) + switch (dChunkID) { + case AVMALIB_CHUNKCODE_MTR: + if (dChunkNo > 6) + break; + psLoad_Info->sTrack_Info[dChunkNo].pbMtr = &(pbBuf[dIndex]); + psLoad_Info->sTrack_Info[dChunkNo].dMtrSize = (unsigned int)sdChunkSize; break; - psLoad_Info->sTrack_Info[dChunkNo].pbMtr = &(pbBuf[dIndex]); - psLoad_Info->sTrack_Info[dChunkNo].dMtrSize = (unsigned int)sdChunkSize; - break; - case AVMALIB_CHUNKCODE_ATR : - if (dChunkNo != 0) + case AVMALIB_CHUNKCODE_ATR: + if (dChunkNo != 0) + break; + psLoad_Info->sTrack_Info[AV_MMF_ATR_TRACK_NO].pbMtr = &(pbBuf[dIndex]); + psLoad_Info->sTrack_Info[AV_MMF_ATR_TRACK_NO].dMtrSize = (unsigned int)sdChunkSize; + break; + default: break; - psLoad_Info->sTrack_Info[AV_MMF_ATR_TRACK_NO].pbMtr = &(pbBuf[dIndex]); - psLoad_Info->sTrack_Info[AV_MMF_ATR_TRACK_NO].dMtrSize = (unsigned int)sdChunkSize; - break; - default : - break; } dIndex += sdChunkSize; } -/* Error Check of Track Chunk */ - switch (psLoad_Info->dSmafType) - { - case AV_MMF_SMAF_TYPE_MA2 : - sdResult = _mmf_TrackChunkCheck2(psLoad_Info); - break; - case AV_MMF_SMAF_TYPE_MA3 : - sdResult = _mmf_TrackChunkCheck3(psLoad_Info); - break; - default : - if (_mmf_CheckM5P(psLoad_Info)!= AV_MMF_FUNC_SUCCESS) return AV_MMF_ERR_CHUNK; - sdResult = _mmf_TrackChunkCheck5(psLoad_Info); - break; + /* Error Check of Track Chunk */ + switch (psLoad_Info->dSmafType) { + case AV_MMF_SMAF_TYPE_MA2: + sdResult = _mmf_TrackChunkCheck2(psLoad_Info); + break; + case AV_MMF_SMAF_TYPE_MA3: + sdResult = _mmf_TrackChunkCheck3(psLoad_Info); + break; + default: + if (_mmf_CheckM5P(psLoad_Info) != AV_MMF_FUNC_SUCCESS) return AV_MMF_ERR_CHUNK; + sdResult = _mmf_TrackChunkCheck5(psLoad_Info); + break; } -/* check playback time */ + /* check playback time */ if (sdResult != AV_MMF_FUNC_SUCCESS) return sdResult; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "SUM %ld\n", psLoad_Info->dPlayTime * psLoad_Info->dTimeBase); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("SUM %ld\n", psLoad_Info->dPlayTime * psLoad_Info->dTimeBase); +#endif - if ((psLoad_Info->dPlayTime * psLoad_Info->dTimeBase) <= AV_MMF_PLAY_TIME_MIN) - { + if ((psLoad_Info->dPlayTime * psLoad_Info->dTimeBase) <= AV_MMF_PLAY_TIME_MIN) { return AV_MMF_ERR_SLENGTH; } - if ((psLoad_Info->dPlayTime * psLoad_Info->dTimeBase) >= AV_MMF_PLAY_TIME_MAX) - { + if ((psLoad_Info->dPlayTime * psLoad_Info->dTimeBase) >= AV_MMF_PLAY_TIME_MAX) { return AV_MMF_ERR_LLENGTH; } - rVal = psLoad_Info->dPlayTime*psLoad_Info->dTimeBase; + rVal = psLoad_Info->dPlayTime * psLoad_Info->dTimeBase; _mmf_GetHvData(psLoad_Info, pbBuf[AV_MMF_POSITION_OF_CTYPE]); psLoad_Info->pbMmmd = pbBuf; @@ -2754,7 +2598,7 @@ _mmf_MALoad( unsigned char* pbFile, unsigned int dFSize) * < 0 error code ********************************************************************************/ static int -_mmf_RenewalProfile(unsigned char* pbFile) +_mmf_RenewalProfile(unsigned char *pbFile) { PLOADINFO psLoad; POPTIONINFO psOptn; @@ -2766,7 +2610,7 @@ _mmf_RenewalProfile(unsigned char* pbFile) psTrk = &(psLoad->sTrack_Info[5]); psHuf = &(psLoad->sHuffman_Info); -/* renew pointer offset to pointer */ + /* renew pointer offset to pointer */ psLoad->pbMmmd = pbFile; psLoad->dCrc = AV_MMF_CRC_NULL; @@ -2779,15 +2623,13 @@ _mmf_RenewalProfile(unsigned char* pbFile) psTrk->pbMtsq = &(pbFile[(unsigned int)psTrk->pbMtsq]); psTrk->pbMtsp = &(pbFile[(unsigned int)psTrk->pbMtsp]); -/* Initialize Huffman information structure */ + /* Initialize Huffman information structure */ psHuf->psBuffer = psTrk->pbMtsq; psHuf->dMtsqSize = psTrk->dMtsqSize; - if (psTrk->pbMtr[0] == 0x01) - { + if (psTrk->pbMtr[0] == 0x01) { psHuf->dSeqSize = _mmf_DecodeInit(psHuf); - if (psHuf->dSeqSize == AV_MMF_HUFFMAN_TREE_FAILURE) - { + if (psHuf->dSeqSize == AV_MMF_HUFFMAN_TREE_FAILURE) { return AV_MMF_FUNC_ERROR; } } @@ -2804,61 +2646,52 @@ _mmf_RenewalProfile(unsigned char* pbFile) static int -_mmf_ParseSkipXmf2Mmf(unsigned char* pbFile, unsigned int dFSize) +_mmf_ParseSkipXmf2Mmf(unsigned char *pbFile, unsigned int dFSize) { - unsigned int skipVal = 0, sizeOfpbFile= dFSize; + unsigned int skipVal = 0, sizeOfpbFile = dFSize; char cmpXmfCMMD[5]; if (pbFile) memcpy(cmpXmfCMMD, pbFile, 4); - else - { - debug_error ( "NULL pointer!\n"); + else { + debug_error("NULL pointer!\n"); return -1; } cmpXmfCMMD[4] = 0; - if (strncmp(cmpXmfCMMD, "CMMD", 4) == 0) - { - while (1) - { - if (pbFile[skipVal] == 'M' && pbFile[skipVal+1] == 'M' && pbFile[skipVal+2] == 'M' && pbFile[skipVal+3] == 'D') - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "MMMD Header found!\n"); - #endif + if (strncmp(cmpXmfCMMD, "CMMD", 4) == 0) { + while (1) { + if (pbFile[skipVal] == 'M' && pbFile[skipVal + 1] == 'M' && pbFile[skipVal + 2] == 'M' && pbFile[skipVal + 3] == 'D') { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MMMD Header found!\n"); +#endif break; - } - else - { + } else { skipVal++; - if (skipVal >= sizeOfpbFile) - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "MMMD Header is not found!\n"); - #endif + if (skipVal >= sizeOfpbFile) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MMMD Header is not found!\n"); +#endif return -1; } } } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "File header is not started CMMD\n"); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("File header is not started CMMD\n"); +#endif } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "skip value: %d\n", skipVal); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("skip value: %d\n", skipVal); +#endif return skipVal; } static int -mmf_file_mmf_get_duration (char *src, int is_xmf) +mmf_file_mmf_get_duration(char *src, int is_xmf) { int readed = 0; int xmf_skip_offset = 0; @@ -2879,30 +2712,29 @@ mmf_file_mmf_get_duration (char *src, int is_xmf) #endif /*open*/ - ret = mmfile_open (&fp, src, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) - { - debug_error ( "open failed.\n"); + ret = mmfile_open(&fp, src, MMFILE_RDONLY); + if (ret == MMFILE_UTIL_FAIL) { + debug_error("open failed.\n"); return -1; } /*get file size*/ - mmfile_seek (fp, 0L, MMFILE_SEEK_END); - src_size = mmfile_tell (fp); - mmfile_seek (fp, 0L, MMFILE_SEEK_SET); + mmfile_seek(fp, 0L, MMFILE_SEEK_END); + src_size = mmfile_tell(fp); + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); if (src_size <= 0) { - debug_error ( "failed to get file size.\n"); + debug_error("failed to get file size.\n"); ret_msec = -1; goto _RELEASE_RESOURCE; } /*alloc work buffer*/ - buf = mmfile_malloc (src_size + 1); + buf = mmfile_malloc(src_size + 1); /*read data*/ - if ((readed = mmfile_read (fp, buf, src_size) ) <= 0 ) { - debug_error ( "read error. size = %d\n", readed); + if ((readed = mmfile_read(fp, buf, src_size)) <= 0) { + debug_error("read error. size = %d\n", readed); ret_msec = -1; goto _RELEASE_RESOURCE; @@ -2910,7 +2742,7 @@ mmf_file_mmf_get_duration (char *src, int is_xmf) /*if XMF, get skip offset.*/ if (is_xmf) { - xmf_skip_offset = _mmf_ParseSkipXmf2Mmf (buf, src_size); + xmf_skip_offset = _mmf_ParseSkipXmf2Mmf(buf, src_size); if (xmf_skip_offset == -1) { ret_msec = -1; goto _RELEASE_RESOURCE; @@ -2920,14 +2752,14 @@ mmf_file_mmf_get_duration (char *src, int is_xmf) if (g_sSmaf_Info.dStatus == AV_MMF_STATUS_SAT_PROFILE) { load_info = &(g_sSmaf_Info.sLoad_Info[1]); if (load_info->dMmmdSize <= src_size) { - p_crc = &(buf[load_info->dMmmdSize -2+xmf_skip_offset]); + p_crc = &(buf[load_info->dMmmdSize - 2 + xmf_skip_offset]); dCrc = (unsigned int)((((unsigned int)p_crc[0]) << 8) + (unsigned int)p_crc[1]); } else { dCrc = AV_MMF_CRC_NULL; } if (dCrc == load_info->dCrc) { - if (_mmf_RenewalProfile (buf + xmf_skip_offset) == AV_MMF_FUNC_SUCCESS) { + if (_mmf_RenewalProfile(buf + xmf_skip_offset) == AV_MMF_FUNC_SUCCESS) { g_sSmaf_Info.dStatus = AV_MMF_STATUS_LOADED; ret_msec = -1; goto _RELEASE_RESOURCE; @@ -2935,13 +2767,13 @@ mmf_file_mmf_get_duration (char *src, int is_xmf) } } - ret_msec = _mmf_MALoad (buf + xmf_skip_offset, src_size); + ret_msec = _mmf_MALoad(buf + xmf_skip_offset, src_size); _RELEASE_RESOURCE: - mmfile_close (fp); + mmfile_close(fp); - if (buf) mmfile_free (buf); + if (buf) mmfile_free(buf); return ret_msec; } diff --git a/formats/ffmpeg/mm_file_format_mp3.c b/formats/ffmpeg/mm_file_format_mp3.c index 46de8ae..5e52b93 100755 --- a/formats/ffmpeg/mm_file_format_mp3.c +++ b/formats/ffmpeg/mm_file_format_mp3.c @@ -27,7 +27,7 @@ #include <stdlib.h> /*malloc*/ -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" #include "mm_file_format_private.h" #include "mm_file_format_audio.h" @@ -42,167 +42,162 @@ #define AV_MP3_FIND_SYNC_LEN 1024*30 -#undef MIN +#undef MIN #define MIN(a, b) ((a) < (b) ? (a) : (b)) -static const unsigned char mp3FrameMasking[4] = {0xFF,0xFE,0x0C,0x00}; +static const unsigned char mp3FrameMasking[4] = {0xFF, 0xFE, 0x0C, 0x00}; static unsigned char mp3FrameDataValid[4]; static const int mp3BitRateTable[2][3][16] = { - { {0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,}, - {0,32,48,56, 64, 80, 96,112,128,160,192,224,256,320,384,}, - {0,32,40,48, 56, 64, 80, 96,112,128,160,192,224,256,320,} }, - - { {0,32,48,56,64,80,96,112,128,144,160,176,192,224,256,}, - {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,}, - {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,} } + { {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448,}, + {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384,}, + {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,} + }, + + { {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256,}, + {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,}, + {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,} + } }; -static const int mp3SamRateTable[3][3] = -{ {44100, 48000, 32000}, - {22050, 24000, 16000} , - {11025, 12000, 8000} +static const int mp3SamRateTable[3][3] = { + {44100, 48000, 32000}, + {22050, 24000, 16000}, + {11025, 12000, 8000} }; #define IS_VALID_FRAME_MP3(x) \ - ((((x)[0] & mp3FrameMasking[0]) == mp3FrameDataValid[0]) && \ - (((x)[1] & mp3FrameMasking[1]) == mp3FrameDataValid[1]) && \ - (((x)[2] & mp3FrameMasking[2]) == mp3FrameDataValid[2]) && \ - (((x)[3] & mp3FrameMasking[3]) == mp3FrameDataValid[3])) + ((((x)[0] & mp3FrameMasking[0]) == mp3FrameDataValid[0]) && \ + (((x)[1] & mp3FrameMasking[1]) == mp3FrameDataValid[1]) && \ + (((x)[2] & mp3FrameMasking[2]) == mp3FrameDataValid[2]) && \ + (((x)[3] & mp3FrameMasking[3]) == mp3FrameDataValid[3])) /* interface functions */ -int mmfile_format_read_stream_mp3 (MMFileFormatContext *formatContext); -int mmfile_format_read_frame_mp3 (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); -int mmfile_format_read_tag_mp3 (MMFileFormatContext *formatContext); -int mmfile_format_close_mp3 (MMFileFormatContext *formatContext); +int mmfile_format_read_stream_mp3(MMFileFormatContext *formatContext); +int mmfile_format_read_frame_mp3(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); +int mmfile_format_read_tag_mp3(MMFileFormatContext *formatContext); +int mmfile_format_close_mp3(MMFileFormatContext *formatContext); /* internal */ -static int mmf_file_mp3_get_infomation (char *src, AvFileContentInfo* pInfo ); +static int mmf_file_mp3_get_infomation(char *src, AvFileContentInfo *pInfo); EXPORT_API -int mmfile_format_open_mp3 (MMFileFormatContext *formatContext) +int mmfile_format_open_mp3(MMFileFormatContext *formatContext) { - AvFileContentInfo *privateData = NULL;; - int ret = 0; + AvFileContentInfo *privateData = NULL;; + int ret = 0; #ifdef __MMFILE_TEST_MODE__ debug_fenter(); #endif - - if (NULL == formatContext) - { - debug_error("formatContext is NULL\n"); - return MMFILE_FORMAT_FAIL; - } + + if (NULL == formatContext) { + debug_error("formatContext is NULL\n"); + return MMFILE_FORMAT_FAIL; + } if (formatContext->pre_checked == 0) { - ret = MMFileFormatIsValidMP3 (formatContext->uriFileName,5); - if ( ret == 0 ) - { + ret = MMFileFormatIsValidMP3(NULL, formatContext->uriFileName, 5); + if (ret == 0) { debug_error("It is not mp3 file\n"); - return MMFILE_FORMAT_FAIL; + return MMFILE_FORMAT_FAIL; } } - - formatContext->ReadStream = mmfile_format_read_stream_mp3; - formatContext->ReadFrame = mmfile_format_read_frame_mp3; - formatContext->ReadTag = mmfile_format_read_tag_mp3; - formatContext->Close = mmfile_format_close_mp3; - - formatContext->videoTotalTrackNum = 0; - formatContext->audioTotalTrackNum = 1; - - privateData = mmfile_malloc (sizeof (AvFileContentInfo)); - if (!privateData) - { - debug_error ("error: mmfile_malloc MP3 privateData\n"); - return MMFILE_FORMAT_FAIL; - } - - formatContext->privateFormatData = privateData; - - ret = mmf_file_mp3_get_infomation (formatContext->uriFileName, privateData); - if ( ret == -1 ) - { - debug_error ("error: mmfile_format_read_stream_mp3\n"); - goto exception; - } - - return MMFILE_FORMAT_SUCCESS; - + + formatContext->ReadStream = mmfile_format_read_stream_mp3; + formatContext->ReadFrame = mmfile_format_read_frame_mp3; + formatContext->ReadTag = mmfile_format_read_tag_mp3; + formatContext->Close = mmfile_format_close_mp3; + + formatContext->videoTotalTrackNum = 0; + formatContext->audioTotalTrackNum = 1; + + privateData = mmfile_malloc(sizeof(AvFileContentInfo)); + if (!privateData) { + debug_error("error: mmfile_malloc MP3 privateData\n"); + return MMFILE_FORMAT_FAIL; + } + + formatContext->privateFormatData = privateData; + + ret = mmf_file_mp3_get_infomation(formatContext->uriFileName, privateData); + if (ret == -1) { + debug_error("error: mmfile_format_read_stream_mp3\n"); + goto exception; + } + + return MMFILE_FORMAT_SUCCESS; + exception: - mmfile_format_close_mp3 (formatContext); - return MMFILE_FORMAT_FAIL; + mmfile_format_close_mp3(formatContext); + return MMFILE_FORMAT_FAIL; } EXPORT_API -int mmfile_format_read_stream_mp3 (MMFileFormatContext *formatContext) +int mmfile_format_read_stream_mp3(MMFileFormatContext *formatContext) { - AvFileContentInfo *privateData = NULL; + AvFileContentInfo *privateData = NULL; #ifdef __MMFILE_TEST_MODE__ debug_fenter(); #endif - if (!formatContext || !formatContext->privateFormatData) - { - debug_error("formatContext is NULL\n"); - return MMFILE_FORMAT_FAIL; - } - - privateData = formatContext->privateFormatData; - - formatContext->duration = privateData->duration; - formatContext->videoTotalTrackNum = 0; - formatContext->audioTotalTrackNum = 1; - formatContext->nbStreams = 1; - formatContext->streams[MMFILE_AUDIO_STREAM] = mmfile_malloc (sizeof (MMFileFormatStream)); - if (NULL == formatContext->streams[MMFILE_AUDIO_STREAM]) - { - debug_error ("formatContext->streams[MMFILE_AUDIO_STREAM] is NULL\n"); - return MMFILE_FORMAT_FAIL; - } - - formatContext->streams[MMFILE_AUDIO_STREAM]->streamType = MMFILE_AUDIO_STREAM; - formatContext->streams[MMFILE_AUDIO_STREAM]->codecId = MM_AUDIO_CODEC_MP3; - formatContext->streams[MMFILE_AUDIO_STREAM]->bitRate = (privateData->bitRate*1000); - formatContext->streams[MMFILE_AUDIO_STREAM]->framePerSec = (privateData->duration == 0 ? 0 : privateData->frameNum/privateData->duration); - formatContext->streams[MMFILE_AUDIO_STREAM]->width = 0; - formatContext->streams[MMFILE_AUDIO_STREAM]->height = 0; - formatContext->streams[MMFILE_AUDIO_STREAM]->nbChannel = privateData->channels; - formatContext->streams[MMFILE_AUDIO_STREAM]->samplePerSec = privateData->sampleRate; - - return MMFILE_FORMAT_SUCCESS; + if (!formatContext || !formatContext->privateFormatData) { + debug_error("formatContext is NULL\n"); + return MMFILE_FORMAT_FAIL; + } + + privateData = formatContext->privateFormatData; + + formatContext->duration = privateData->duration; + formatContext->videoTotalTrackNum = 0; + formatContext->audioTotalTrackNum = 1; + formatContext->nbStreams = 1; + formatContext->streams[MMFILE_AUDIO_STREAM] = mmfile_malloc(sizeof(MMFileFormatStream)); + if (NULL == formatContext->streams[MMFILE_AUDIO_STREAM]) { + debug_error("formatContext->streams[MMFILE_AUDIO_STREAM] is NULL\n"); + return MMFILE_FORMAT_FAIL; + } + + formatContext->streams[MMFILE_AUDIO_STREAM]->streamType = MMFILE_AUDIO_STREAM; + formatContext->streams[MMFILE_AUDIO_STREAM]->codecId = MM_AUDIO_CODEC_MP3; + formatContext->streams[MMFILE_AUDIO_STREAM]->bitRate = (privateData->bitRate * 1000); + formatContext->streams[MMFILE_AUDIO_STREAM]->framePerSec = (privateData->duration == 0 ? 0 : privateData->frameNum / privateData->duration); + formatContext->streams[MMFILE_AUDIO_STREAM]->width = 0; + formatContext->streams[MMFILE_AUDIO_STREAM]->height = 0; + formatContext->streams[MMFILE_AUDIO_STREAM]->nbChannel = privateData->channels; + formatContext->streams[MMFILE_AUDIO_STREAM]->samplePerSec = privateData->sampleRate; + + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_read_frame_mp3 (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) +int mmfile_format_read_frame_mp3(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) { - return MMFILE_FORMAT_SUCCESS; + return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_read_tag_mp3 (MMFileFormatContext *formatContext) +int mmfile_format_read_tag_mp3(MMFileFormatContext *formatContext) { - AvFileContentInfo *privateData = NULL; + AvFileContentInfo *privateData = NULL; #ifdef __MMFILE_TEST_MODE__ debug_fenter(); #endif - if (!formatContext || !formatContext->privateFormatData) - { - debug_error("formatContext is NULL\n"); - return MMFILE_FORMAT_FAIL; - } + if (!formatContext || !formatContext->privateFormatData) { + debug_error("formatContext is NULL\n"); + return MMFILE_FORMAT_FAIL; + } - privateData = formatContext->privateFormatData; + privateData = formatContext->privateFormatData; if (privateData->pTitle) formatContext->title = mmfile_strdup(privateData->pTitle); if (privateData->pArtist) formatContext->artist = mmfile_strdup(privateData->pArtist); @@ -217,27 +212,24 @@ int mmfile_format_read_tag_mp3 (MMFileFormatContext *formatContext) if (privateData->pComposer) formatContext->composer = mmfile_strdup(privateData->pComposer); if (privateData->pContentGroup) formatContext->classification = mmfile_strdup(privateData->pContentGroup); if (privateData->pConductor) formatContext->conductor = mmfile_strdup(privateData->pConductor); - if (privateData->pUnsyncLyrics) formatContext->unsyncLyrics= mmfile_strdup(privateData->pUnsyncLyrics); - if (privateData->pSyncLyrics) formatContext->syncLyrics= privateData->pSyncLyrics; - if (privateData->syncLyricsNum) formatContext->syncLyricsNum= privateData->syncLyricsNum; - if (privateData->pRecDate) formatContext->recDate= mmfile_strdup(privateData->pRecDate); - - if(privateData->imageInfo.imageLen > 0) - { - formatContext->artwork = mmfile_malloc (privateData->imageInfo.imageLen); - if(formatContext->artwork) - { + if (privateData->pUnsyncLyrics) formatContext->unsyncLyrics = mmfile_strdup(privateData->pUnsyncLyrics); + if (privateData->pSyncLyrics) formatContext->syncLyrics = privateData->pSyncLyrics; + if (privateData->syncLyricsNum) formatContext->syncLyricsNum = privateData->syncLyricsNum; + if (privateData->pRecDate) formatContext->recDate = mmfile_strdup(privateData->pRecDate); + + if (privateData->imageInfo.imageLen > 0) { + formatContext->artwork = mmfile_malloc(privateData->imageInfo.imageLen); + if (formatContext->artwork) { formatContext->artworkSize = privateData->imageInfo.imageLen; - memcpy (formatContext->artwork, privateData->imageInfo.pImageBuf, privateData->imageInfo.imageLen); + memcpy(formatContext->artwork, privateData->imageInfo.pImageBuf, privateData->imageInfo.imageLen); if (strlen(privateData->imageInfo.imageMIMEType) > 0) - formatContext->artworkMime= mmfile_strdup(privateData->imageInfo.imageMIMEType); - else if(strlen(privateData->imageInfo.imageExt) > 0) { - #ifdef __MMFILE_TEST_MODE__ + formatContext->artworkMime = mmfile_strdup(privateData->imageInfo.imageMIMEType); + else if (strlen(privateData->imageInfo.imageExt) > 0) { +#ifdef __MMFILE_TEST_MODE__ debug_msg("ID3 tag V2 File"); - #endif - formatContext->artworkMime= mmfile_strdup(privateData->imageInfo.imageExt); - } - else { +#endif + formatContext->artworkMime = mmfile_strdup(privateData->imageInfo.imageExt); + } else { debug_error("Album art image exist but there is no type information of album art\n"); } } @@ -247,22 +239,20 @@ int mmfile_format_read_tag_mp3 (MMFileFormatContext *formatContext) } EXPORT_API -int mmfile_format_close_mp3 (MMFileFormatContext *formatContext) +int mmfile_format_close_mp3(MMFileFormatContext *formatContext) { - AvFileContentInfo *privateData = NULL; - - if (formatContext) - { - privateData = formatContext->privateFormatData; - if (privateData) - { - mm_file_free_AvFileContentInfo (privateData); - mmfile_free (privateData); - formatContext->privateFormatData = NULL; - } - } - - return MMFILE_FORMAT_SUCCESS; + AvFileContentInfo *privateData = NULL; + + if (formatContext) { + privateData = formatContext->privateFormatData; + if (privateData) { + mm_file_free_AvFileContentInfo(privateData); + mmfile_free(privateData); + formatContext->privateFormatData = NULL; + } + } + + return MMFILE_FORMAT_SUCCESS; } static int @@ -295,46 +285,43 @@ __AvExtractI2(unsigned char *buf) } static int -__AvGetXingHeader( AvXHeadData* headData, unsigned char *buf ) +__AvGetXingHeader(AvXHeadData *headData, unsigned char *buf) { int index, headFlags; int hId, hMode, hSrIndex; - static int mp3SamRateTable[4] = { 44100, 48000, 32000, 99999 }; + int mp3SampleRateTable[4] = { 44100, 48000, 32000, 99999 }; - // get Xing header data + /* get Xing header data */ headData->flags = 0; - // get selected MP3 header data + /* get selected MP3 header data */ hId = (buf[1] >> 3) & 1; hSrIndex = (buf[2] >> 2) & 3; hMode = (buf[3] >> 6) & 3; - // determine offset of header - if( hId ) // mpeg1 - { - if( hMode != 3 ) - buf += (32+4); + /* determine offset of header */ + if (hId) { /* mpeg1 */ + if (hMode != 3) + buf += (32 + 4); else - buf += (17+4); - } - else // mpeg2 - { - if( hMode != 3 ) - buf += (17+4); + buf += (17 + 4); + } else { /* mpeg2 */ + if (hMode != 3) + buf += (17 + 4); else - buf += (9+4); + buf += (9 + 4); } /* There could be 2 attrs in this header : Xing or Info */ if (buf[0] == 'X') { - if( buf[1] != 'i' ) return 0; - if( buf[2] != 'n' ) return 0; - if( buf[3] != 'g' ) return 0; + if (buf[1] != 'i') return 0; + if (buf[2] != 'n') return 0; + if (buf[3] != 'g') return 0; } else if (buf[0] == 'I') { - if( buf[1] != 'n' ) return 0; - if( buf[2] != 'f' ) return 0; - if( buf[3] != 'o' ) return 0; + if (buf[1] != 'n') return 0; + if (buf[2] != 'f') return 0; + if (buf[3] != 'o') return 0; } else { return 0; } @@ -342,119 +329,111 @@ __AvGetXingHeader( AvXHeadData* headData, unsigned char *buf ) buf += 4; headData->hId = hId; - headData->sampRate = mp3SamRateTable[hSrIndex]; - if( hId == 0 ) + headData->sampRate = mp3SampleRateTable[hSrIndex]; + if (hId == 0) headData->sampRate >>= 1; - headFlags = headData->flags = __AvExtractI4( buf ); // get flags - buf+=4; + headFlags = headData->flags = __AvExtractI4(buf); /* get flags */ + buf += 4; - if( headFlags & FRAMES_FLAG ) - { - headData->frames = __AvExtractI4( buf ); - buf+=4; + if (headFlags & FRAMES_FLAG) { + headData->frames = __AvExtractI4(buf); + buf += 4; } - if( headFlags & BYTES_FLAG ) - { - headData->bytes = __AvExtractI4( buf ); - buf+=4; + if (headFlags & BYTES_FLAG) { + headData->bytes = __AvExtractI4(buf); + buf += 4; } - if( headFlags & TOC_FLAG ) - { - if( headData->toc != NULL ) - { - for( index = 0; index < 100; index++ ) + if (headFlags & TOC_FLAG) { + if (headData->toc != NULL) { + for (index = 0; index < 100; index++) headData->toc[index] = buf[index]; } - buf+=100; + buf += 100; } headData->vbrScale = -1; - if( headFlags & VBR_SCALE_FLAG ) - { - headData->vbrScale = __AvExtractI4( buf ); - buf+=4; + if (headFlags & VBR_SCALE_FLAG) { + headData->vbrScale = __AvExtractI4(buf); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("Xing header: sampling-rate:%d, stream-size:%d, frame-number:%d\n", - headData->sampRate, headData->bytes, headData->frames); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Xing header: sampling-rate:%d, stream-size:%d, frame-number:%d\n", + headData->sampRate, headData->bytes, headData->frames); +#endif - return 1; // success + return 1; /* success */ } static int -__AvGetVBRIHeader( AvVBRIHeadData* headData, unsigned char *buf ) +__AvGetVBRIHeader(AvVBRIHeadData *headData, unsigned char *buf) { int hId, hSrIndex; - static int mp3SamRateTable[4] = { 44100, 48000, 32000, 99999 }; + int mp3SampleRateTable[4] = { 44100, 48000, 32000, 99999 }; - // get selected MP3 header data + /* get selected MP3 header data */ hId = (buf[1] >> 3) & 1; hSrIndex = (buf[2] >> 2) & 3; - buf += (32+4); + buf += (32 + 4); - if( buf[0] != 'V' ) return 0; // fail - if( buf[1] != 'B' ) return 0; // header not found - if( buf[2] != 'R' ) return 0; - if( buf[3] != 'I' ) return 0; + if (buf[0] != 'V') return 0; /* fail */ + if (buf[1] != 'B') return 0; /* header not found */ + if (buf[2] != 'R') return 0; + if (buf[3] != 'I') return 0; buf += 4; headData->hId = hId; - headData->sampRate = mp3SamRateTable[hSrIndex]; - if( hId == 0 ) + headData->sampRate = mp3SampleRateTable[hSrIndex]; + if (hId == 0) headData->sampRate >>= 1; - headData->vID = __AvExtractI2( buf ); // get ver ID - buf+=2; - headData->delay = __AvExtractI2( buf ); - buf+=2; + headData->vID = __AvExtractI2(buf); /* get ver ID */ + buf += 2; + headData->delay = __AvExtractI2(buf); + buf += 2; headData->qualityIndicator = buf[0]; - buf+=2; - headData->bytes = __AvExtractI4( buf ); - buf+=4; - headData->frames= __AvExtractI4( buf ); - buf+=4; - headData->numOfTOC = __AvExtractI2( buf ); - buf+=2; - headData->vbriScale = __AvExtractI2( buf ); - buf+=2; - headData->sizePerTable = __AvExtractI2( buf ); - buf+=2; - headData->framesPerTable = __AvExtractI2( buf ); - buf+=2; - - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("Vbri header: sampling-rate:%d, stream-size:%d, frame-number:%d\n", - headData->sampRate, headData->bytes, headData->frames); - #endif - - return true; // success + buf += 2; + headData->bytes = __AvExtractI4(buf); + buf += 4; + headData->frames = __AvExtractI4(buf); + buf += 4; + headData->numOfTOC = __AvExtractI2(buf); + buf += 2; + headData->vbriScale = __AvExtractI2(buf); + buf += 2; + headData->sizePerTable = __AvExtractI2(buf); + buf += 2; + headData->framesPerTable = __AvExtractI2(buf); + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Vbri header: sampling-rate:%d, stream-size:%d, frame-number:%d\n", + headData->sampRate, headData->bytes, headData->frames); +#endif + + return true; /* success */ } static bool -__AvIsValidHeader(AvFileContentInfo* pInfo, unsigned char *buf) +__AvIsValidHeader(AvFileContentInfo *pInfo, unsigned char *buf) { bool bSync = false; - if (VALID_SYNC(buf)) - { + if (VALID_SYNC(buf)) { mp3FrameDataValid[0] = (0xFF) & (mp3FrameMasking[0]); mp3FrameDataValid[1] = (0xE0 | (buf[AV_MP3HDR_VERSION_OFS] & AV_MP3HDR_VERSION_M) - | (buf[AV_MP3HDR_LAYER_OFS] & AV_MP3HDR_LAYER_M)) & (mp3FrameMasking[1]); + | (buf[AV_MP3HDR_LAYER_OFS] & AV_MP3HDR_LAYER_M)) & (mp3FrameMasking[1]); mp3FrameDataValid[2] = (buf[AV_MP3HDR_SAMPLERATE_OFS] & AV_MP3HDR_SAMPLERATE_M) & - (mp3FrameMasking[2]); + (mp3FrameMasking[2]); mp3FrameDataValid[3] = (buf[AV_MP3HDR_CHANNEL_OFS] & AV_MP3HDR_CHANNEL_M) & - (mp3FrameMasking[3]); + (mp3FrameMasking[3]); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("*** [%02x][%02x][%02x][%02x] : [%02x][%02x][%02x][%02x]", - buf[0], buf[1], buf[2],buf[3], - mp3FrameDataValid[0], mp3FrameDataValid[1], mp3FrameDataValid[2],mp3FrameDataValid[3]); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("*** [%02x][%02x][%02x][%02x] : [%02x][%02x][%02x][%02x]", + buf[0], buf[1], buf[2], buf[3], + mp3FrameDataValid[0], mp3FrameDataValid[1], mp3FrameDataValid[2], mp3FrameDataValid[3]); +#endif /* * MPEG Audio Layer I/II/III frame header @@ -479,273 +458,253 @@ __AvIsValidHeader(AvFileContentInfo* pInfo, unsigned char *buf) */ /* Simple check for version, layer, bitrate, samplerate */ - if ( (buf[1] & 0x18) != 0x08 && /* 000XX000 : MPEG Audio version ID, XX=01 - reserved => 00001000(0x08) */ - (buf[1] & 0x06) != 0x00 && /* 00000XX0 : Layer description, XX=00 - reserved => 00000000(0x00) */ - (buf[2] & 0xF0) != 0xF0 && /* XXXX0000 : Bitrate index, XX=1111 - bad => 11110000(0xF0) */ - (buf[2] & 0x0C) != 0x0C) /* 0000XX00 : Sampling rate frequency index , XX=11 -reserved => 00001100(0x0C) */ - { + if ((buf[1] & 0x18) != 0x08 && /* 000XX000 : MPEG Audio version ID, XX=01 - reserved => 00001000(0x08) */ + (buf[1] & 0x06) != 0x00 && /* 00000XX0 : Layer description, XX=00 - reserved => 00000000(0x00) */ + (buf[2] & 0xF0) != 0xF0 && /* XXXX0000 : Bitrate index, XX=1111 - bad => 11110000(0xF0) */ + (buf[2] & 0x0C) != 0x0C) { /* 0000XX00 : Sampling rate frequency index, XX=11 -reserved => 00001100(0x0C) */ bSync = true; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("=> %s\n", bSync? "Good!":"Bad..."); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("=> %s\n", bSync ? "Good!" : "Bad..."); +#endif } - if(bSync == true) + if (bSync == true) return true; - else + else return false; } static bool -__AvParseMp3Header( AvFileContentInfo* pInfo, unsigned char* header ) +__AvParseMp3Header(AvFileContentInfo *pInfo, unsigned char *header) { unsigned char result; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("### [%02x][%02x][%02x][%02x] ###\n", header[0], header[1], header[2],header[3]); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("### [%02x][%02x][%02x][%02x] ###\n", header[0], header[1], header[2], header[3]); +#endif - // 1. Check the version of mp3 + /* 1. Check the version of mp3 */ result = header[1] & MASK_MPEG; - switch (result) - { - case MASK_MPEG_1: - pInfo->mpegVersion = AV_MPEG_VER_1; - break; - case MASK_MPEG_2: - pInfo->mpegVersion = AV_MPEG_VER_2; - break; - case MASK_MPEG_25: - pInfo->mpegVersion = AV_MPEG_VER_25; - break; - default: - return false; + switch (result) { + case MASK_MPEG_1: + pInfo->mpegVersion = AV_MPEG_VER_1; + break; + case MASK_MPEG_2: + pInfo->mpegVersion = AV_MPEG_VER_2; + break; + case MASK_MPEG_25: + pInfo->mpegVersion = AV_MPEG_VER_25; + break; + default: + return false; } - // 2. Get a layer + /* 2. Get a layer */ result = header[1] & MASK_LAYER; - switch (result) - { - case MASK_LAYER_1: - pInfo->layer = AV_MP3_LAYER_1; - break; - case MASK_LAYER_2: - pInfo->layer = AV_MP3_LAYER_2; - break; - case MASK_LAYER_3: - pInfo->layer = AV_MP3_LAYER_3; - break; - default: - return false; + switch (result) { + case MASK_LAYER_1: + pInfo->layer = AV_MP3_LAYER_1; + break; + case MASK_LAYER_2: + pInfo->layer = AV_MP3_LAYER_2; + break; + case MASK_LAYER_3: + pInfo->layer = AV_MP3_LAYER_3; + break; + default: + return false; } - - // 3. bitrate + + /* 3. bitrate */ result = header[2] >> 4; - if ( pInfo->mpegVersion == AV_MPEG_VER_1 ) - pInfo->bitRate = mp3BitRateTable[0][pInfo->layer-1][(int)result] ; + if (pInfo->mpegVersion == AV_MPEG_VER_1) + pInfo->bitRate = mp3BitRateTable[0][pInfo->layer - 1][(int)result] ; else - pInfo->bitRate = mp3BitRateTable[1][pInfo->layer-1][(int)result] ; + pInfo->bitRate = mp3BitRateTable[1][pInfo->layer - 1][(int)result] ; - // 4. samplerate - result = ( header[2] & MASK_SAMPLERATE ) >> 2; - if ( result == 0x03 ) + /* 4. samplerate */ + result = (header[2] & MASK_SAMPLERATE) >> 2; + if (result == 0x03) return false; else pInfo->sampleRate = mp3SamRateTable[pInfo->mpegVersion - 1][(int)result]; - - // 5. channel + + /* 5. channel */ result = header[3] & MASK_CHANNEL; - switch (result) - { - case MASK_CHANNEL_ST: - pInfo->channelIndex = 0; - pInfo->channels = 2; - break; - case MASK_CHANNEL_JS: - pInfo->channelIndex = 1; - pInfo->channels = 2; - break; - case MASK_CHANNEL_DC: - pInfo->channelIndex = 2; - pInfo->channels = 2; - break; - case MASK_CHANNEL_MN: - pInfo->channelIndex = 3;; - pInfo->channels = 1; - break; - default: - return false; + switch (result) { + case MASK_CHANNEL_ST: + pInfo->channelIndex = 0; + pInfo->channels = 2; + break; + case MASK_CHANNEL_JS: + pInfo->channelIndex = 1; + pInfo->channels = 2; + break; + case MASK_CHANNEL_DC: + pInfo->channelIndex = 2; + pInfo->channels = 2; + break; + case MASK_CHANNEL_MN: + pInfo->channelIndex = 3;; + pInfo->channels = 1; + break; + default: + return false; } - // 6. padding + /* 6. padding */ result = header[2] & MASK_PADDING; - if ( result == MASK_PADDING ) + if (result == MASK_PADDING) pInfo->bPadding = true; else pInfo->bPadding = false; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("=> samplerate=%d, bitrate=%d, layer=%d, version=%d, channel=%d, padding=%d", - pInfo->sampleRate, pInfo->bitRate, pInfo->layer, pInfo->mpegVersion, pInfo->channels, pInfo->bPadding ); - #endif - +#ifdef __MMFILE_TEST_MODE__ + debug_msg("=> samplerate=%d, bitrate=%d, layer=%d, version=%d, channel=%d, padding=%d", + pInfo->sampleRate, pInfo->bitRate, pInfo->layer, pInfo->mpegVersion, pInfo->channels, pInfo->bPadding); +#endif + return true; } static bool -__AvParseXingHeader( AvFileContentInfo* pInfo, unsigned char* buf ) +__AvParseXingHeader(AvFileContentInfo *pInfo, unsigned char *buf) { AvXHeadData data; - memset( &data, 0x00, sizeof(AvXHeadData) ); + memset(&data, 0x00, sizeof(AvXHeadData)); - // 1. Xing Header + /* 1. Xing Header */ /* There could be 2 attrs in this header : Xing or Info */ - if((pInfo->mpegVersion == AV_MPEG_VER_1) && (pInfo->channels == 2)) - { - if (buf[36] =='X') { - if( buf[37] != 'i' ) return false; - if( buf[38] != 'n' ) return false; - if( buf[39] != 'g' ) return false; + if ((pInfo->mpegVersion == AV_MPEG_VER_1) && (pInfo->channels == 2)) { + if (buf[36] == 'X') { + if (buf[37] != 'i') return false; + if (buf[38] != 'n') return false; + if (buf[39] != 'g') return false; } else if (buf[36] == 'I') { - if( buf[37] != 'n' ) return false; - if( buf[38] != 'f' ) return false; - if( buf[39] != 'o' ) return false; + if (buf[37] != 'n') return false; + if (buf[38] != 'f') return false; + if (buf[39] != 'o') return false; } else { return false; } - } - else - if((pInfo->mpegVersion == AV_MPEG_VER_2 || pInfo->mpegVersion == AV_MPEG_VER_25) && (pInfo->channels == 1)) - { - if (buf[13] =='X') { - if( buf[14] != 'i' ) return false; - if( buf[15] != 'n' ) return false; - if( buf[16] != 'g' ) return false; + } else if ((pInfo->mpegVersion == AV_MPEG_VER_2 || pInfo->mpegVersion == AV_MPEG_VER_25) && (pInfo->channels == 1)) { + if (buf[13] == 'X') { + if (buf[14] != 'i') return false; + if (buf[15] != 'n') return false; + if (buf[16] != 'g') return false; } else if (buf[13] == 'I') { - if( buf[14] != 'n' ) return false; - if( buf[15] != 'f' ) return false; - if( buf[16] != 'o' ) return false; + if (buf[14] != 'n') return false; + if (buf[15] != 'f') return false; + if (buf[16] != 'o') return false; } else { return false; } - } - else - { - if (buf[21] =='X') { - if( buf[22] != 'i' ) return false; - if( buf[23] != 'n' ) return false; - if( buf[24] != 'g' ) return false; + } else { + if (buf[21] == 'X') { + if (buf[22] != 'i') return false; + if (buf[23] != 'n') return false; + if (buf[24] != 'g') return false; } else if (buf[21] == 'I') { - if( buf[22] != 'n' ) return false; - if( buf[23] != 'f' ) return false; - if( buf[24] != 'o' ) return false; + if (buf[22] != 'n') return false; + if (buf[23] != 'f') return false; + if (buf[24] != 'o') return false; } else { return false; } } - // 2. TOC - if ( pInfo->pToc ) + /* 2. TOC */ + if (pInfo->pToc) data.toc = (unsigned char *)(pInfo->pToc); - if ( __AvGetXingHeader( &data, (unsigned char *)buf ) == 1 ) // VBR. - { + if (__AvGetXingHeader(&data, (unsigned char *)buf) == 1) { /* VBR. */ if (data.sampRate == 0 || data.bytes == 0 || data.frames == 0) { - debug_error ("invalid Xing header\n"); + debug_error("invalid Xing header\n"); return false; } pInfo->datafileLen = data.bytes; pInfo->frameNum = data.frames; - pInfo->frameSize = (int) ( (float) data.bytes / (float) data.frames ) ; + pInfo->frameSize = (int)((float) data.bytes / (float) data.frames) ; pInfo->bVbr = true; return true; - } - else + } else return false; } static bool -__AvParseVBRIHeader( AvFileContentInfo* pInfo, unsigned char* buf ) +__AvParseVBRIHeader(AvFileContentInfo *pInfo, unsigned char *buf) { AvVBRIHeadData data; - memset( &data, 0x00, sizeof(AvVBRIHeadData) ); - - // 1. Xing Header - if((pInfo->mpegVersion == AV_MPEG_VER_1) && (pInfo->channels == 2)) - { - if( buf[36] != 'V' ) return false; - if( buf[37] != 'B' ) return false; - if( buf[38] != 'R' ) return false; - if( buf[39] != 'I' ) return false; - } - else - if((pInfo->mpegVersion == AV_MPEG_VER_2) && (pInfo->channels == 1)) - { - if( buf[36] != 'V' ) return false; - if( buf[37] != 'B' ) return false; - if( buf[38] != 'R' ) return false; - if( buf[39] != 'I' ) return false; - } - else - { - if( buf[36] != 'V' ) return false; - if( buf[37] != 'B' ) return false; - if( buf[38] != 'R' ) return false; - if( buf[39] != 'I' ) return false; + memset(&data, 0x00, sizeof(AvVBRIHeadData)); + + /* 1. Xing Header */ + if ((pInfo->mpegVersion == AV_MPEG_VER_1) && (pInfo->channels == 2)) { + if (buf[36] != 'V') return false; + if (buf[37] != 'B') return false; + if (buf[38] != 'R') return false; + if (buf[39] != 'I') return false; + } else if ((pInfo->mpegVersion == AV_MPEG_VER_2) && (pInfo->channels == 1)) { + if (buf[36] != 'V') return false; + if (buf[37] != 'B') return false; + if (buf[38] != 'R') return false; + if (buf[39] != 'I') return false; + } else { + if (buf[36] != 'V') return false; + if (buf[37] != 'B') return false; + if (buf[38] != 'R') return false; + if (buf[39] != 'I') return false; } - // 2. TOC - if ( pInfo->pToc ) - data.toc = (unsigned char*)(pInfo->pToc); + /* 2. TOC */ + if (pInfo->pToc) + data.toc = (unsigned char *)(pInfo->pToc); - if ( __AvGetVBRIHeader( &data, (unsigned char*)buf ) == 1 ) // VBR. - { + if (__AvGetVBRIHeader(&data, (unsigned char *)buf) == 1) { /* VBR. */ if (data.sampRate == 0 || data.bytes == 0 || data.frames == 0) { - debug_error ("invalid Vbri header\n"); + debug_error("invalid Vbri header\n"); return false; } pInfo->sampleRate = data.sampRate; pInfo->datafileLen = data.bytes; pInfo->frameNum = data.frames; - pInfo->frameSize = (int) ( (float) data.bytes / (float) data.frames ) ; + pInfo->frameSize = (int)((float) data.bytes / (float) data.frames) ; pInfo->bVbr = true; return true; - } - else + } else return false; } -#ifdef __MMFILE_NEW_FRAME_FUNC // from gst +#ifdef __MMFILE_NEW_FRAME_FUNC /* from gst */ static bool -__AvGetMp3FrameSize( AvFileContentInfo* pInfo ) +__AvGetMp3FrameSize(AvFileContentInfo *pInfo) { unsigned int frameSize = 0; - if ( pInfo == NULL ) + if (pInfo == NULL) return false; frameSize = pInfo->bPadding; - if (pInfo->bitRate == 0) { - if (pInfo->layer == 1) { - frameSize *= 4; - frameSize += 0/* FIXME: possible_free_framelen*/; - pInfo->bitRate = frameSize * pInfo->sampleRate / 48000; - } else { - frameSize += 0/* FIXME: possible_free_framelen*/; - pInfo->bitRate = frameSize * pInfo->sampleRate / - ((pInfo->layer == AV_MP3_LAYER_3 && pInfo->mpegVersion != AV_MPEG_VER_1) ? 72000 : 144000); - } - } else { - /* calculating */ - if (pInfo->layer == 1) { - frameSize = ((12000 * pInfo->bitRate / pInfo->sampleRate) + frameSize) * 4; - } else { - frameSize += ((pInfo->layer == AV_MP3_LAYER_3 - && pInfo->mpegVersion != AV_MPEG_VER_1) ? 72000 : 144000) * pInfo->bitRate / pInfo->sampleRate; - } - } + if (pInfo->bitRate == 0) { + if (pInfo->layer == 1) { + frameSize *= 4; + frameSize += 0/* FIXME: possible_free_framelen*/; + pInfo->bitRate = frameSize * pInfo->sampleRate / 48000; + } else { + frameSize += 0/* FIXME: possible_free_framelen*/; + pInfo->bitRate = frameSize * pInfo->sampleRate / + ((pInfo->layer == AV_MP3_LAYER_3 && pInfo->mpegVersion != AV_MPEG_VER_1) ? 72000 : 144000); + } + } else { + /* calculating */ + if (pInfo->layer == 1) { + frameSize = ((12000 * pInfo->bitRate / pInfo->sampleRate) + frameSize) * 4; + } else { + frameSize += ((pInfo->layer == AV_MP3_LAYER_3 + && pInfo->mpegVersion != AV_MPEG_VER_1) ? 72000 : 144000) * pInfo->bitRate / pInfo->sampleRate; + } + } pInfo->frameSize = (int)frameSize; @@ -754,36 +713,33 @@ __AvGetMp3FrameSize( AvFileContentInfo* pInfo ) #endif -static bool -__AvGetXingBitrate( AvFileContentInfo* pInfo ) +static bool +__AvGetXingBitrate(AvFileContentInfo *pInfo) { float br, factor; int padding; - if ( pInfo == NULL || pInfo->bVbr == false ) + if (pInfo == NULL || pInfo->bVbr == false) return false; - if ( pInfo->bPadding ) + if (pInfo->bPadding) padding = 1; else padding = 0; - if (pInfo->mpegVersion == AV_MPEG_VER_1 ) // MPEG version 1 - { - if (pInfo->layer == AV_MP3_LAYER_1 ) // Layer 1 + if (pInfo->mpegVersion == AV_MPEG_VER_1) { /* MPEG version 1 */ + if (pInfo->layer == AV_MP3_LAYER_1) /* Layer 1 */ factor = 48000.0; - else // Layer 2, 3 + else /* Layer 2, 3 */ factor = 144000.0; - } - else // MPEG version 2 - { - if (pInfo->layer == AV_MP3_LAYER_1 ) // Layer 1 + } else { /* MPEG version 2 */ + if (pInfo->layer == AV_MP3_LAYER_1) /* Layer 1 */ factor = 24000.0; - else // Layer 2, 3 + else /* Layer 2, 3 */ factor = 72000.0; } - br = ( pInfo->frameSize - padding ) * pInfo->sampleRate / factor; + br = (pInfo->frameSize - padding) * pInfo->sampleRate / factor; pInfo->bitRate = (int) br; @@ -791,47 +747,44 @@ __AvGetXingBitrate( AvFileContentInfo* pInfo ) } static bool -__AvGetVBRIBitrate( AvFileContentInfo* pInfo ) +__AvGetVBRIBitrate(AvFileContentInfo *pInfo) { float br, factor; int padding; - if ( pInfo == NULL || pInfo->bVbr == false ) + if (pInfo == NULL || pInfo->bVbr == false) return false; - if ( pInfo->bPadding ) + if (pInfo->bPadding) padding = 1; else padding = 0; - if (pInfo->mpegVersion == AV_MPEG_VER_1 ) // MPEG version 1 - { - if (pInfo->layer == AV_MP3_LAYER_1 ) // Layer 1 + if (pInfo->mpegVersion == AV_MPEG_VER_1) { /* MPEG version 1 */ + if (pInfo->layer == AV_MP3_LAYER_1) /* Layer 1 */ factor = 48000.0; - else // Layer 2, 3 + else /* Layer 2, 3 */ factor = 144000.0; - } - else // MPEG version 2 - { - if (pInfo->layer == AV_MP3_LAYER_1 ) // Layer 1 + } else { /* MPEG version 2 */ + if (pInfo->layer == AV_MP3_LAYER_1) /* Layer 1 */ factor = 24000.0; - else // Layer 2, 3 + else /* Layer 2, 3 */ factor = 72000.0; } - br = ( pInfo->frameSize - padding ) * pInfo->sampleRate / factor; + br = (pInfo->frameSize - padding) * pInfo->sampleRate / factor; pInfo->bitRate = (int) br; return true; } -static int __AvGetLastID3offset (MMFileIOHandle *fp, unsigned int *offset) +static int __AvGetLastID3offset(MMFileIOHandle *fp, unsigned int *offset) { #define _MMFILE_MP3_TAGV2_HEADER_LEN 10 -#define _MMFILE_GET_INT_NUMBER(buff) (int)( (((int)(buff)[0]) << 24) | (((int)(buff)[1]) << 16) | (((int)(buff)[2]) << 8) | (((int)(buff)[3]))) +#define _MMFILE_GET_INT_NUMBER(buff) (int)((((int)(buff)[0]) << 24) | (((int)(buff)[1]) << 16) | (((int)(buff)[2]) << 8) | (((int)(buff)[3]))) - unsigned char tagHeader[_MMFILE_MP3_TAGV2_HEADER_LEN] = {0,}; + unsigned char tagHeader[_MMFILE_MP3_TAGV2_HEADER_LEN] = {0, }; unsigned int tagInfoSize = 0; unsigned int acc_tagsize = 0; int tagVersion = 0; @@ -842,44 +795,44 @@ static int __AvGetLastID3offset (MMFileIOHandle *fp, unsigned int *offset) *offset = 0; mmfile_seek(fp, 0, MMFILE_SEEK_SET); - + _START_TAG_SEARCH: - readed = mmfile_read (fp, tagHeader, _MMFILE_MP3_TAGV2_HEADER_LEN); + readed = mmfile_read(fp, tagHeader, _MMFILE_MP3_TAGV2_HEADER_LEN); if (readed != _MMFILE_MP3_TAGV2_HEADER_LEN) { - debug_error ("read error occured.\n"); + debug_error("read error occured.\n"); return 0; } - if (memcmp (tagHeader, "ID3", 3) == 0) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("'ID3' found.\n"); - #endif + if (memcmp(tagHeader, "ID3", 3) == 0) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("'ID3' found.\n"); +#endif } else { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("'ID3' not found.\n"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("'ID3' not found.\n"); +#endif goto search_end; } /**@note weak id3v2 tag checking*/ if (tagHeader[3] != 0xFF && tagHeader[4] != 0xFF && - (tagHeader[6] & 0x80) == 0 && (tagHeader[7] & 0x80) == 0 && - (tagHeader[8] & 0x80) == 0 && (tagHeader[9] & 0x80) == 0) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("good ID3V2 tag.\n"); - #endif + (tagHeader[6] & 0x80) == 0 && (tagHeader[7] & 0x80) == 0 && + (tagHeader[8] & 0x80) == 0 && (tagHeader[9] & 0x80) == 0) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("good ID3V2 tag.\n"); +#endif } else { - debug_warning ("It's bad ID3V2 tag.\n"); + debug_warning("It's bad ID3V2 tag.\n"); goto search_end; } tagVersion = tagHeader[3]; if (tagVersion > 4) { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("Tag version not supported\n"); - #endif +#endif goto search_end; } @@ -889,9 +842,9 @@ _START_TAG_SEARCH: /**@note unfortunately, some contents has many id3 tag.*/ acc_tagsize += tagInfoSize; - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("tag size: %u, offset: %u\n", tagInfoSize, acc_tagsize); - #endif +#endif mmfile_seek(fp, acc_tagsize, MMFILE_SEEK_SET); *offset = acc_tagsize; @@ -909,9 +862,9 @@ search_end: * This function returns the start position of header. */ static int -__AvFindStartOfMp3Header(MMFileIOHandle *hFile, unsigned char *buf, AvFileContentInfo* pInfo) +__AvFindStartOfMp3Header(MMFileIOHandle *hFile, unsigned char *buf, AvFileContentInfo *pInfo) { - int index=0; + unsigned int index = 0; long readLen; unsigned long id3v2TagLen = 0; unsigned char *pHeader = NULL; @@ -923,77 +876,64 @@ __AvFindStartOfMp3Header(MMFileIOHandle *hFile, unsigned char *buf, AvFileConte bool bFoundSync = false; unsigned long minLen; - - if(pInfo->fileLen > (_AV_MP3_HEADER_POSITION_MAX+ pInfo->tagV2Info.tagLen)) + + if (pInfo->fileLen > (_AV_MP3_HEADER_POSITION_MAX + pInfo->tagV2Info.tagLen)) bufLen = _AV_MP3_HEADER_POSITION_MAX; else - bufLen = pInfo ->fileLen - pInfo->tagV2Info.tagLen; + bufLen = pInfo->fileLen - pInfo->tagV2Info.tagLen; - if(IS_ID3V2_TAG(buf)) - { - + if (IS_ID3V2_TAG(buf)) { - if(pInfo->tagV2Info.tagVersion == 0x02) - { - - if(!mm_file_id3tag_parse_v222(pInfo, buf)) + + if (pInfo->tagV2Info.tagVersion == 0x02) { + + if (!mm_file_id3tag_parse_v222(pInfo, buf)) pInfo->tagV2Info.tagLen = 0; - } - else if (pInfo->tagV2Info.tagVersion == 0x03) - { - - if(!mm_file_id3tag_parse_v223(pInfo, buf)) + } else if (pInfo->tagV2Info.tagVersion == 0x03) { + + if (!mm_file_id3tag_parse_v223(pInfo, buf)) pInfo->tagV2Info.tagLen = 0; - } - else if (pInfo->tagV2Info.tagVersion == 0x04) - { - - if(!mm_file_id3tag_parse_v224(pInfo, buf)) // currently 2.4 ver pased by 2.3 routine + } else if (pInfo->tagV2Info.tagVersion == 0x04) { + + if (!mm_file_id3tag_parse_v224(pInfo, buf)) /* currently 2.4 ver pased by 2.3 routine */ pInfo->tagV2Info.tagLen = 0; - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->tagV2Info.tagVersion(%d)\n", pInfo->tagV2Info.tagVersion); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->tagV2Info.tagVersion(%d)\n", pInfo->tagV2Info.tagVersion); +#endif } id3v2TagLen = pInfo->tagV2Info.tagLen; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "id3v2TagLen(%d)\n", id3v2TagLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("id3v2TagLen(%d)\n", id3v2TagLen); +#endif - if(id3v2TagLen) - { - if (mmfile_seek (hFile, id3v2TagLen, SEEK_SET) < 0) { - debug_error ( "seek failed.\n"); + if (id3v2TagLen) { + if (mmfile_seek(hFile, id3v2TagLen, SEEK_SET) < 0) { + debug_error("seek failed.\n"); return -1; } - if ((readLen = mmfile_read (hFile, buf, bufLen)) <= 0) { - debug_error ( "seek failed.\n"); + if ((readLen = mmfile_read(hFile, buf, bufLen)) <= 0) { + debug_error("seek failed.\n"); return -1; } } - while(1) - { - if (preHeaderGap == bufLen -2) + while (1) { + if (preHeaderGap == bufLen - 2) break; - if(__AvIsValidHeader(pInfo, buf+preHeaderGap)) + if (__AvIsValidHeader(pInfo, buf + preHeaderGap)) break; preHeaderGap++; } - - } - else - { - while(1) - { - if (preHeaderGap == bufLen -2) + + } else { + while (1) { + if (preHeaderGap == bufLen - 2) + break; + if (__AvIsValidHeader(pInfo, buf + preHeaderGap)) break; - if(__AvIsValidHeader(pInfo, buf+preHeaderGap)) - break; preHeaderGap++; } @@ -1002,158 +942,126 @@ __AvFindStartOfMp3Header(MMFileIOHandle *hFile, unsigned char *buf, AvFileConte buf += preHeaderGap; index += preHeaderGap; - while (index <= (bufLen - minLen)) - { - if(buf[0] == 0xff) - { - if(VALID_SYNC(buf)) - { - if(bufLen - index > 256) - { - pHeader = mmfile_malloc (256); - if (pHeader == NULL) - { - debug_error ( "malloc failed.\n"); + while (index <= (bufLen - minLen)) { + if (buf[0] == 0xff) { + if (VALID_SYNC(buf)) { + if (bufLen - index > 256) { + pHeader = mmfile_malloc(256); + if (pHeader == NULL) { + debug_error("malloc failed.\n"); return -1; } strncpy((char *)pHeader, (char *)buf, 256); - } - else - { - debug_error ( "Header field is not exist\n"); + } else { + debug_error("Header field is not exist\n"); return -1; } - if ( __AvParseMp3Header( pInfo, pHeader ) == false) - { - //return -1; - if(pHeader) + if (__AvParseMp3Header(pInfo, pHeader) == false) { + /*return -1; */ + if (pHeader) _FREE_EX(pHeader); - debug_warning ( "Mp3 parse header failed & index(%d)\n", index); + debug_warning("Mp3 parse header failed & index(%d)\n", index); buf++; index++; continue; - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "This header is valid. index(%d)\n", index); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("This header is valid. index(%d)\n", index); +#endif } - if ( __AvParseXingHeader( pInfo, pHeader ) ) - { - __AvGetXingBitrate( pInfo ); + if (__AvParseXingHeader(pInfo, pHeader)) { + __AvGetXingBitrate(pInfo); + } else if (__AvParseVBRIHeader(pInfo, pHeader)) { + __AvGetVBRIBitrate(pInfo); } - else if(__AvParseVBRIHeader( pInfo, pHeader )) - { - __AvGetVBRIBitrate( pInfo ); - } - - if (pInfo->bVbr) - { - if(pHeader) + + if (pInfo->bVbr) { + if (pHeader) _FREE_EX(pHeader); bFoundSync = true; break; - } - else - { - if(__AvIsValidHeader(pInfo, pHeader)) - { - if(pHeader) + } else { + if (__AvIsValidHeader(pInfo, pHeader)) { + if (pHeader) _FREE_EX(pHeader); - - __AvGetMp3FrameSize( pInfo ); + + __AvGetMp3FrameSize(pInfo); pInfo->datafileLen = pInfo->fileLen - pInfo->headerPos; frameLen = pInfo->frameSize; - if (frameLen) - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("<<< frameLen=[%d] >>> \n", frameLen); - #endif + if (frameLen) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("<<< frameLen=[%d] >>> \n", frameLen); +#endif - #ifndef __MMFILE_NEW_FRAME_FUNC // FIXME : what purpose to do this? +#ifndef __MMFILE_NEW_FRAME_FUNC /* FIXME : what purpose to do this? */ /* Account for loss of precision in the frame length calculation*/ frameLen--; - #endif +#endif /* Check if the remaining buffer size is large enough to * look for another sync */ - if ((index + frameLen) < (bufLen - (minLen - 1))) - { + if ((index + frameLen) < (bufLen - (minLen - 1))) { nextFrameOff = frameLen; - nextFrameOffEnd = nextFrameOff +MIN(6, bufLen - (index+frameLen) - (minLen - 1)); + nextFrameOffEnd = nextFrameOff + MIN(6, bufLen - (index + frameLen) - (minLen - 1)); /* Search the next few bytes for the next sync */ - while (nextFrameOff < nextFrameOffEnd) - { - if (VALID_SYNC(buf+nextFrameOff)) - { - if(IS_VALID_FRAME_MP3(buf+nextFrameOff)) - { + while (nextFrameOff < nextFrameOffEnd) { + if (VALID_SYNC(buf + nextFrameOff)) { + if (IS_VALID_FRAME_MP3(buf + nextFrameOff)) { bFoundSync = true; break; } } nextFrameOff++; } - if (bFoundSync == true) + if (bFoundSync == true) break; - } - else - { + } else { /* Assume that the first sync is valid, since there is not * enough data in the buffer to look for the next sync */ bFoundSync = true; - break; + break; } } - } - else - { - debug_warning ( "Is not vaild header pHeader\n"); + } else { + debug_warning("Is not vaild header pHeader\n"); } } - if(pHeader) + if (pHeader) _FREE_EX(pHeader); - } - else - { - debug_warning ( "Mp3 file frist byte is 0xff, but not header sync\n"); + } else { + debug_warning("Mp3 file frist byte is 0xff, but not header sync\n"); } } buf++; index++; } - _FREE_EX (pHeader); + _FREE_EX(pHeader); if (mmfile_seek(hFile, 0, SEEK_SET) < 0) { - debug_error ( "seek error!\n"); + debug_error("seek error!\n"); return -1; } - if(index > (bufLen - minLen)) - { - debug_warning ( "Mp3 file sync is not found : index(%d) bufLen(%d), minLen(%d)\n", index, bufLen, minLen); + if (index > (bufLen - minLen)) { + debug_warning("Mp3 file sync is not found : index(%d) bufLen(%d), minLen(%d)\n", index, bufLen, minLen); return -1; } - - if(bFoundSync == true) - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Mp3 file found a sync Success!\n"); - #endif - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Mp3 file found a sync Failed!\n"); - #endif + + if (bFoundSync == true) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Mp3 file found a sync Success!\n"); +#endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Mp3 file found a sync Failed!\n"); +#endif return -1; } - return index+id3v2TagLen; + return index + id3v2TagLen; } /* @@ -1162,16 +1070,16 @@ __AvFindStartOfMp3Header(MMFileIOHandle *hFile, unsigned char *buf, AvFileConte * Param _frame [out] Specifies a struct pointer for mp3 information. * This function returns true on success, or false on failure. */ -static int mmf_file_mp3_get_infomation (char *filename, AvFileContentInfo* pInfo ) +static int mmf_file_mp3_get_infomation(char *filename, AvFileContentInfo *pInfo) { MMFileIOHandle *hFile; unsigned char header[256]; - unsigned long frameSamples=0; - unsigned char *buf = NULL; - unsigned char* v2TagExistCheck = NULL; + unsigned long frameSamples = 0; + unsigned char *buf = NULL; + unsigned char *v2TagExistCheck = NULL; int readAmount = 0, readedDataLen = 0; unsigned char TagBuff[MP3TAGINFO_SIZE + TAGV1_SEEK_GAP]; - unsigned char TagV1ID[4] = { 0x54, 0x41, 0x47}; //TAG + unsigned char TagV1ID[4] = { 0x54, 0x41, 0x47}; /*TAG */ int tagHeaderPos = 0; int ret = 0; unsigned int head_offset = 0; @@ -1179,180 +1087,151 @@ static int mmf_file_mp3_get_infomation (char *filename, AvFileContentInfo* pInfo #ifdef __MMFILE_TEST_MODE__ debug_fenter(); #endif - + if (pInfo == NULL || filename == NULL) return -1; - memset( pInfo, 0x00, sizeof(AvFileContentInfo) ); + memset(pInfo, 0x00, sizeof(AvFileContentInfo)); pInfo->tagV2Info.tagLen = 0; pInfo->headerPos = 0; pInfo->genre = 148; /*open*/ - ret = mmfile_open (&hFile, filename, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) - { - debug_error ( "open failed.\n"); + ret = mmfile_open(&hFile, filename, MMFILE_RDONLY); + if (ret == MMFILE_UTIL_FAIL) { + debug_error("open failed.\n"); return -1; } - mmfile_seek (hFile, 0L, SEEK_END); - pInfo->fileLen = mmfile_tell (hFile); - if (pInfo->fileLen <= 0) - { - debug_error ( "file is too small.\n"); + mmfile_seek(hFile, 0L, SEEK_END); + pInfo->fileLen = mmfile_tell(hFile); + if (pInfo->fileLen <= 0) { + debug_error("file is too small.\n"); goto EXCEPTION; } - mmfile_seek (hFile, 0L, SEEK_SET); + mmfile_seek(hFile, 0L, SEEK_SET); - v2TagExistCheck = mmfile_malloc (MP3_TAGv2_HEADER_LEN); + v2TagExistCheck = mmfile_malloc(MP3_TAGv2_HEADER_LEN); if (v2TagExistCheck == NULL) { - debug_error ( "malloc failed.\n"); + debug_error("malloc failed.\n"); goto EXCEPTION; } - if (mmfile_read (hFile, v2TagExistCheck, MP3_TAGv2_HEADER_LEN) > 0) - { - if(IS_ID3V2_TAG(v2TagExistCheck)) - { - if(!(v2TagExistCheck[3] == 0xFF || v2TagExistCheck[4] == 0xFF ||v2TagExistCheck[6] >= 0x80 || v2TagExistCheck[7] >= 0x80 || v2TagExistCheck[8] >= 0x80 || v2TagExistCheck[9] >= 0x80)) - { - if(!(v2TagExistCheck[3] > 0x04)) - { + if (mmfile_read(hFile, v2TagExistCheck, MP3_TAGv2_HEADER_LEN) > 0) { + if (IS_ID3V2_TAG(v2TagExistCheck)) { + if (!(v2TagExistCheck[3] == 0xFF || v2TagExistCheck[4] == 0xFF || v2TagExistCheck[6] >= 0x80 || v2TagExistCheck[7] >= 0x80 || v2TagExistCheck[8] >= 0x80 || v2TagExistCheck[9] >= 0x80)) { + if (!(v2TagExistCheck[3] > 0x04)) { pInfo->tagV2Info.tagVersion = v2TagExistCheck[3]; pInfo->tagV2Info.tagLen = MP3_TAGv2_HEADER_LEN; - pInfo->tagV2Info.tagLen += (unsigned long)v2TagExistCheck[6] << 21 | (unsigned long)v2TagExistCheck[7] << 14 |(unsigned long)v2TagExistCheck[8] << 7 | (unsigned long)v2TagExistCheck[9]; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->tagV2Info.tagLen(%d), pInfo->tagV2Info.tagVersion(%d)\n", pInfo->tagV2Info.tagLen, pInfo->tagV2Info.tagVersion); - #endif - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "tag is a not supported version(%d)\n", v2TagExistCheck[3]); - #endif + pInfo->tagV2Info.tagLen += (unsigned long)v2TagExistCheck[6] << 21 | (unsigned long)v2TagExistCheck[7] << 14 | (unsigned long)v2TagExistCheck[8] << 7 | (unsigned long)v2TagExistCheck[9]; +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->tagV2Info.tagLen(%d), pInfo->tagV2Info.tagVersion(%d)\n", pInfo->tagV2Info.tagLen, pInfo->tagV2Info.tagVersion); +#endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("tag is a not supported version(%d)\n", v2TagExistCheck[3]); +#endif } + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("tag is a tag data is valid.\n"); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "tag is a tag data is valid.\n"); - #endif - } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "this mp3 file is not included ID3v2 tag info!\n"); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("this mp3 file is not included ID3v2 tag info!\n"); +#endif } - } - else - { - debug_error ( "v2TagExistCheck value read fail!\n"); - if(v2TagExistCheck) + } else { + debug_error("v2TagExistCheck value read fail!\n"); + if (v2TagExistCheck) _FREE_EX(v2TagExistCheck); goto EXCEPTION; } - if(v2TagExistCheck) + if (v2TagExistCheck) _FREE_EX(v2TagExistCheck); - if(!(pInfo->fileLen > pInfo->tagV2Info.tagLen )) + if (!(pInfo->fileLen > pInfo->tagV2Info.tagLen)) pInfo->tagV2Info.tagLen = 0; if (mmfile_seek(hFile, 0L, SEEK_SET) < 0) goto EXCEPTION; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->fileLen(%lld)\n", pInfo->fileLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->fileLen(%lld)\n", pInfo->fileLen); +#endif - if(pInfo->fileLen > (_AV_MP3_HEADER_POSITION_MAX + pInfo->tagV2Info.tagLen)) - { + if (pInfo->fileLen > (_AV_MP3_HEADER_POSITION_MAX + pInfo->tagV2Info.tagLen)) { readAmount = _AV_MP3_HEADER_POSITION_MAX + pInfo->tagV2Info.tagLen; - buf = mmfile_malloc (readAmount); + buf = mmfile_malloc(readAmount); if (buf == NULL) { - debug_error ( "malloc failed.\n"); + debug_error("malloc failed.\n"); goto EXCEPTION; } - while(readAmount > 0) - { - if(readAmount >= AV_MP3_HEADER_READ_MAX) - { + while (readAmount > 0) { + if (readAmount >= AV_MP3_HEADER_READ_MAX) { if ((readedDataLen <= _AV_MP3_HEADER_POSITION_MAX + pInfo->tagV2Info.tagLen) - &&(mmfile_read(hFile, buf+readedDataLen, AV_MP3_HEADER_READ_MAX) <= 0)) - { - if(buf) + && (mmfile_read(hFile, buf + readedDataLen, AV_MP3_HEADER_READ_MAX) <= 0)) { + if (buf) _FREE_EX(buf); - + goto EXCEPTION; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Reading buf readedDataLen(%d) readAmount (%d)\n", readedDataLen, readAmount); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Reading buf readedDataLen(%d) readAmount (%d)\n", readedDataLen,readAmount); - #endif - } - } - else - { + } else { if ((readedDataLen <= _AV_MP3_HEADER_POSITION_MAX + pInfo->tagV2Info.tagLen) - &&(mmfile_read(hFile, buf+readedDataLen, readAmount) <= 0)) - { - if(buf) + && (mmfile_read(hFile, buf + readedDataLen, readAmount) <= 0)) { + if (buf) _FREE_EX(buf); - + goto EXCEPTION; - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "The remained buf readed! readedDataLen(%d) readAmount (%d)\n", readedDataLen,readAmount); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("The remained buf readed! readedDataLen(%d) readAmount (%d)\n", readedDataLen, readAmount); +#endif } } readAmount -= AV_MP3_HEADER_READ_MAX; readedDataLen += AV_MP3_HEADER_READ_MAX; - - if(readAmount <= 0) + + if (readAmount <= 0) break; } - } - else - { - buf = mmfile_malloc (pInfo->fileLen); - if (buf == NULL) - { - goto EXCEPTION; + } else { + buf = mmfile_malloc(pInfo->fileLen); + if (buf == NULL) { + goto EXCEPTION; } - if (mmfile_read(hFile, buf, pInfo->fileLen) <= 0) - { - if(buf) + if (mmfile_read(hFile, buf, pInfo->fileLen) <= 0) { + if (buf) _FREE_EX(buf); goto EXCEPTION; } } - - if (__AvGetLastID3offset (hFile, &head_offset)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "search start offset: %u\n", head_offset); - #endif + + if (__AvGetLastID3offset(hFile, &head_offset)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("search start offset: %u\n", head_offset); +#endif pInfo->tagV2Info.tagLen = head_offset; } - + pInfo->headerPos = (long) __AvFindStartOfMp3Header(hFile, buf, pInfo); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Pos: %ld\n", pInfo->headerPos); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Pos: %ld\n", pInfo->headerPos); +#endif - if(buf) + if (buf) _FREE_EX(buf); if (pInfo->headerPos == -1) @@ -1361,105 +1240,92 @@ static int mmf_file_mp3_get_infomation (char *filename, AvFileContentInfo* pInfo if (mmfile_seek(hFile, pInfo->headerPos, SEEK_SET) < 0) goto EXCEPTION; - if (mmfile_read (hFile, header, 256) <= 0) + if (mmfile_read(hFile, header, 256) <= 0) goto EXCEPTION; - if ( __AvParseMp3Header( pInfo, header ) == false) + if (__AvParseMp3Header(pInfo, header) == false) goto EXCEPTION; - if ( __AvParseXingHeader( pInfo, header ) ) - { - __AvGetXingBitrate( pInfo ); - } - else if(__AvParseVBRIHeader( pInfo, header )) - { - __AvGetVBRIBitrate( pInfo ); - } - else - { - __AvGetMp3FrameSize( pInfo ); + if (__AvParseXingHeader(pInfo, header)) { + __AvGetXingBitrate(pInfo); + } else if (__AvParseVBRIHeader(pInfo, header)) { + __AvGetVBRIBitrate(pInfo); + } else { + __AvGetMp3FrameSize(pInfo); pInfo->datafileLen = pInfo->fileLen - pInfo->headerPos; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Mp3 File FrameSize (%d) pInfo->headerPos(%d)\n", pInfo->frameSize,pInfo->headerPos); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Mp3 File FrameSize (%d) pInfo->headerPos(%d)\n", pInfo->frameSize, pInfo->headerPos); +#endif } - if (mmfile_seek (hFile, -(MP3TAGINFO_SIZE + TAGV1_SEEK_GAP), SEEK_END) < 0) + if (mmfile_seek(hFile, -(MP3TAGINFO_SIZE + TAGV1_SEEK_GAP), SEEK_END) < 0) goto EXCEPTION; - pInfo ->bV1tagFound = false; + pInfo->bV1tagFound = false; - if (mmfile_read (hFile, TagBuff, MP3TAGINFO_SIZE + TAGV1_SEEK_GAP) <= 0) + if (mmfile_read(hFile, TagBuff, MP3TAGINFO_SIZE + TAGV1_SEEK_GAP) <= 0) goto EXCEPTION; - if ((tagHeaderPos = __AvMemstr(TagBuff, TagV1ID, 3, TAGV1_SEEK_GAP+5)) >= 0) - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Mp3 File Tag is existing\n"); - #endif - - pInfo ->bV1tagFound = true; - /* In this case, V2 Tag alreay exist So, ignore V1 tag */ - if (pInfo->tagV2Info.tagLen == 0) { - memcpy(TagBuff, (TagBuff + tagHeaderPos), MP3TAGINFO_SIZE); - if(!mm_file_id3tag_parse_v110(pInfo, TagBuff)) - goto EXCEPTION; - } + if ((tagHeaderPos = __AvMemstr(TagBuff, TagV1ID, 3, TAGV1_SEEK_GAP + 5)) >= 0) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Mp3 File Tag is existing\n"); +#endif + + pInfo->bV1tagFound = true; + /* In this case, V2 Tag alreay exist So, ignore V1 tag */ + if (pInfo->tagV2Info.tagLen == 0) { + memcpy(TagBuff, (TagBuff + tagHeaderPos), MP3TAGINFO_SIZE); + if (!mm_file_id3tag_parse_v110(pInfo, TagBuff)) + goto EXCEPTION; } + } - mm_file_id3tag_restore_content_info (pInfo); + mm_file_id3tag_restore_content_info(pInfo); - if(pInfo->mpegVersion== 1) - { - if(pInfo->layer== 1) + if (pInfo->mpegVersion == 1) { + if (pInfo->layer == 1) frameSamples = MPEG_1_SIZE_LAYER_1; else frameSamples = MPEG_1_SIZE_LAYER_2_3; - } - else - { - if(pInfo->layer == 1) + } else { + if (pInfo->layer == 1) frameSamples = MPEG_2_SIZE_LAYER_1; else frameSamples = MPEG_2_SIZE_LAYER_2_3; } #if 0 - unsigned long numOfFrames=0; + unsigned long numOfFrames = 0; unsigned long long tempduration = 0; unsigned int tempNumFrames = 0; - if(pInfo->bVbr) - numOfFrames = pInfo->frameNum*10; - else - { + if (pInfo->bVbr) + numOfFrames = pInfo->frameNum * 10; + else { numOfFrames = ((pInfo->fileLen - -(pInfo->headerPos + (pInfo ->bV1tagFound ? MP3TAGINFO_SIZE : 0) ) )*10) / pInfo->frameSize; - } - tempNumFrames = (unsigned int)(numOfFrames/10); + - (pInfo->headerPos + (pInfo->bV1tagFound ? MP3TAGINFO_SIZE : 0))) * 10) / pInfo->frameSize; + } + tempNumFrames = (unsigned int)(numOfFrames / 10); - if((numOfFrames - tempNumFrames * 10 ) > 5) - numOfFrames = (numOfFrames/10) + 1; + if ((numOfFrames - tempNumFrames * 10) > 5) + numOfFrames = (numOfFrames / 10) + 1; else - numOfFrames = numOfFrames/10; + numOfFrames = numOfFrames / 10; - - tempduration = (unsigned long long)(numOfFrames *1000); - - if(pInfo->mpegVersion== 1) - { - if(pInfo->layer== 1) + + tempduration = (unsigned long long)(numOfFrames * 1000); + + if (pInfo->mpegVersion == 1) { + if (pInfo->layer == 1) frameSamples = MPEG_1_SIZE_LAYER_1; - else + else frameSamples = MPEG_1_SIZE_LAYER_2_3; - } - else - { - if(pInfo->layer == 1) + } else { + if (pInfo->layer == 1) frameSamples = MPEG_2_SIZE_LAYER_1; - else + else frameSamples = MPEG_2_SIZE_LAYER_2_3; } @@ -1467,71 +1333,69 @@ static int mmf_file_mp3_get_infomation (char *filename, AvFileContentInfo* pInfo debug_msg("frameSamples : %d, tempduration : %ld", frameSamples, tempduration); #endif - if(tempduration < (unsigned long long)pInfo->sampleRate) - { - tempduration = (tempduration*frameSamples*10)/pInfo->sampleRate; - tempduration = (tempduration/10); - } - else - tempduration = (tempduration*frameSamples)/pInfo->sampleRate; + if (tempduration < (unsigned long long)pInfo->sampleRate) { + tempduration = (tempduration * frameSamples * 10) / pInfo->sampleRate; + tempduration = (tempduration / 10); + } else + tempduration = (tempduration * frameSamples) / pInfo->sampleRate; pInfo->duration = tempduration; #else - if(pInfo->bVbr) { - pInfo->duration = ((double)(frameSamples * 1000) / pInfo->sampleRate) * pInfo->frameNum; + if (pInfo->bVbr) { + pInfo->duration = ((double)(frameSamples * 1000) / pInfo->sampleRate) * pInfo->frameNum; debug_msg("duration for VBR : %lld", pInfo->duration); } else { unsigned long long frame_duration = (((unsigned long long)frameSamples * 1000000000) / pInfo->sampleRate / 1000); int file_size_except_header = pInfo->fileLen - (pInfo->headerPos + (pInfo->bV1tagFound ? MP3TAGINFO_SIZE : 0)); pInfo->duration = ((double)file_size_except_header / (double)pInfo->frameSize) * frame_duration / 1000; - //pInfo->duration = ((double)file_size_except_header / (double)pInfo->frameSize) * (frameSamples * 1000 / pInfo->sampleRate); + /*pInfo->duration = ((double)file_size_except_header / (double)pInfo->frameSize) * (frameSamples * 1000 / pInfo->sampleRate); */ debug_msg("duration from new algorithm : %lld", pInfo->duration); } #endif mmfile_close(hFile); - + /*debug print*/ - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Mp3 File pInfo->duration (%lld) \n", pInfo->duration); - debug_msg ( "** MP3 **\n"); - debug_msg ( "Version : %u\n", pInfo->mpegVersion); - debug_msg ( "Layer : %u\n", pInfo->layer); - debug_msg ( "Channel idx: %u\n", pInfo->channelIndex); - debug_msg ( "Is VBR : %d\n", (pInfo->bVbr == true ? 1 : 0)); - debug_msg ( "Bitrate : %u\n", pInfo->bitRate); - debug_msg ( "SampleRate : %u\n", pInfo->sampleRate); - debug_msg ( "Channels : %u\n", pInfo->channels); - debug_msg ( "**** Info #1 ****\n"); - debug_msg ( "Title : %s\n", pInfo->pTitle); - debug_msg ( "Artist : %s\n", pInfo->pArtist); - debug_msg ( "Album : %s\n", pInfo->pAlbum); - debug_msg ( "Album_Artist: %s\n", pInfo->pAlbum_Artist); - debug_msg ( "Year : %s\n", pInfo->pYear); - debug_msg ( "Comment : %s\n", pInfo->pComment); - debug_msg ( "TrackNum : %s\n", pInfo->pTrackNum); - debug_msg ( "Genre : %s\n", pInfo->pGenre); - debug_msg ( "**** Info #2 ****\n"); - debug_msg ( "Author : %s\n", pInfo->pAuthor); - debug_msg ( "Copyright : %s\n", pInfo->pCopyright); - debug_msg ( "Comment : %s\n", pInfo->pComment); - debug_msg ( "Rating : %s\n", pInfo->pRating); - debug_msg ( "RecDate : %s\n", pInfo->pRecDate); - debug_msg ( "Encoded by : %s\n", pInfo->pEncBy); - debug_msg ( "URL : %s\n", pInfo->pURL); - debug_msg ( "Ori. Artist : %s\n", pInfo->pOriginArtist); - debug_msg ( "Composer : %s\n", pInfo->pComposer); - debug_msg ( "Conductor : %s\n", pInfo->pConductor); - debug_msg ( "Artwork : mime(%s) addr(%p) size(%d)\n", pInfo->imageInfo.imageMIMEType, pInfo->imageInfo.pImageBuf, pInfo->imageInfo.imageLen); - debug_msg ( "UnsyncLyrics : %s\n", pInfo->pUnsyncLyrics); - debug_msg ( "SyncLyrics size : %d\n", pInfo->syncLyricsNum); - - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Mp3 File pInfo->duration (%lld) \n", pInfo->duration); + debug_msg("** MP3 **\n"); + debug_msg("Version : %u\n", pInfo->mpegVersion); + debug_msg("Layer : %u\n", pInfo->layer); + debug_msg("Channel idx: %u\n", pInfo->channelIndex); + debug_msg("Is VBR : %d\n", (pInfo->bVbr == true ? 1 : 0)); + debug_msg("Bitrate : %u\n", pInfo->bitRate); + debug_msg("SampleRate : %u\n", pInfo->sampleRate); + debug_msg("Channels : %u\n", pInfo->channels); + debug_msg("**** Info #1 ****\n"); + debug_msg("Title : %s\n", pInfo->pTitle); + debug_msg("Artist : %s\n", pInfo->pArtist); + debug_msg("Album : %s\n", pInfo->pAlbum); + debug_msg("Album_Artist: %s\n", pInfo->pAlbum_Artist); + debug_msg("Year : %s\n", pInfo->pYear); + debug_msg("Comment : %s\n", pInfo->pComment); + debug_msg("TrackNum : %s\n", pInfo->pTrackNum); + debug_msg("Genre : %s\n", pInfo->pGenre); + debug_msg("**** Info #2 ****\n"); + debug_msg("Author : %s\n", pInfo->pAuthor); + debug_msg("Copyright : %s\n", pInfo->pCopyright); + debug_msg("Comment : %s\n", pInfo->pComment); + debug_msg("Rating : %s\n", pInfo->pRating); + debug_msg("RecDate : %s\n", pInfo->pRecDate); + debug_msg("Encoded by : %s\n", pInfo->pEncBy); + debug_msg("URL : %s\n", pInfo->pURL); + debug_msg("Ori. Artist : %s\n", pInfo->pOriginArtist); + debug_msg("Composer : %s\n", pInfo->pComposer); + debug_msg("Conductor : %s\n", pInfo->pConductor); + debug_msg("Artwork : mime(%s) addr(%p) size(%d)\n", pInfo->imageInfo.imageMIMEType, pInfo->imageInfo.pImageBuf, pInfo->imageInfo.imageLen); + debug_msg("UnsyncLyrics : %s\n", pInfo->pUnsyncLyrics); + debug_msg("SyncLyrics size : %d\n", pInfo->syncLyricsNum); + +#endif return 0; EXCEPTION: - debug_error ("Error occured!\n"); + debug_error("Error occured!\n"); mmfile_close(hFile); return -1; } diff --git a/formats/ffmpeg/mm_file_format_tag_id3.c b/formats/ffmpeg/mm_file_format_tag_id3.c index 9a96ca7..823d74a 100755 --- a/formats/ffmpeg/mm_file_format_tag_id3.c +++ b/formats/ffmpeg/mm_file_format_tag_id3.c @@ -21,178 +21,161 @@ #include <string.h> #include <stdlib.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_format_tag_id3.h" #define MMFILE_ID3V1TAG_SIZE 128 #define MMFILE_ID3V2TAG_HEADER_SIZE 10 -static unsigned int GetSynchsafeInteger (unsigned int value); +static unsigned int GetSynchsafeInteger(unsigned int value); EXPORT_API -int MMFileID3V1TagFind (MMFileIOHandle *fp, unsigned char bAppended, unsigned int startOffset, unsigned int endOffset, tMMFileTags *out) +int MMFileID3V1TagFind(MMFileIOHandle *fp, unsigned char bAppended, unsigned int startOffset, unsigned int endOffset, tMMFileTags *out) { - int ret = 0; - - if (!fp || !out) - { - debug_error ("Invalid input\n"); - return MMFILE_ID3TAG_FAIL; - } - - if (bAppended) - { - unsigned char tagSymbol[3] = {0,}; - - unsigned int offset = endOffset - MMFILE_ID3V1TAG_SIZE; - - mmfile_seek (fp, offset, MMFILE_SEEK_SET); - - ret = mmfile_read (fp, tagSymbol, 3); - if (MMFILE_UTIL_FAIL == ret) - { - debug_error ("read error\n"); - return MMFILE_ID3TAG_FAIL; - } - - if (memcmp ("TAG", tagSymbol, 3) == 0) - { - unsigned char versionBuf[2] = {0,}; - - out->typeOfTag = MMFILE_TAG_ID3V1; - out->startOffset = offset; - out->endOffset = endOffset; - out->bAppendedTag = 1; - out->tagSize = MMFILE_ID3V1TAG_SIZE; - - offset += 125; // byte delimiter offset: ID3V1.1 spec. - mmfile_seek (fp, offset, MMFILE_SEEK_SET); - - ret = mmfile_read (fp, versionBuf, 2); - if (MMFILE_UTIL_FAIL == ret) - { - debug_error ("read error\n"); - return MMFILE_ID3TAG_FAIL; - } - - if (versionBuf[0] == '\0' && versionBuf[1] != '\0') - { - out->version = MMFILE_ID3TAG_V1_1; - } - else - { - out->version = MMFILE_ID3TAG_V1_0; - } - - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("typeOfTag = %d\n", out->typeOfTag); - debug_msg ("startOffset = %d\n", out->startOffset); - debug_msg ("endOffset = %d\n", out->endOffset); - debug_msg ("bAppendedTag = %d\n", out->bAppendedTag); - debug_msg ("tagSize = %d\n", out->tagSize); - debug_msg ("version = %d\n", out->version); - #endif - - return MMFILE_ID3TAG_SUCCESS; - } - } - - return MMFILE_ID3TAG_FAIL; + int ret = 0; + + if (!fp || !out) { + debug_error("Invalid input\n"); + return MMFILE_ID3TAG_FAIL; + } + + if (bAppended) { + unsigned char tagSymbol[3] = {0, }; + + unsigned int offset = endOffset - MMFILE_ID3V1TAG_SIZE; + + mmfile_seek(fp, offset, MMFILE_SEEK_SET); + + ret = mmfile_read(fp, tagSymbol, 3); + if (MMFILE_UTIL_FAIL == ret) { + debug_error("read error\n"); + return MMFILE_ID3TAG_FAIL; + } + + if (memcmp("TAG", tagSymbol, 3) == 0) { + unsigned char versionBuf[2] = {0, }; + + out->typeOfTag = MMFILE_TAG_ID3V1; + out->startOffset = offset; + out->endOffset = endOffset; + out->bAppendedTag = 1; + out->tagSize = MMFILE_ID3V1TAG_SIZE; + + offset += 125; /* byte delimiter offset: ID3V1.1 spec. */ + mmfile_seek(fp, offset, MMFILE_SEEK_SET); + + ret = mmfile_read(fp, versionBuf, 2); + if (MMFILE_UTIL_FAIL == ret) { + debug_error("read error\n"); + return MMFILE_ID3TAG_FAIL; + } + + if (versionBuf[0] == '\0' && versionBuf[1] != '\0') { + out->version = MMFILE_ID3TAG_V1_1; + } else { + out->version = MMFILE_ID3TAG_V1_0; + } + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("typeOfTag = %d\n", out->typeOfTag); + debug_msg("startOffset = %d\n", out->startOffset); + debug_msg("endOffset = %d\n", out->endOffset); + debug_msg("bAppendedTag = %d\n", out->bAppendedTag); + debug_msg("tagSize = %d\n", out->tagSize); + debug_msg("version = %d\n", out->version); +#endif + + return MMFILE_ID3TAG_SUCCESS; + } + } + + return MMFILE_ID3TAG_FAIL; } EXPORT_API -int MMFileID3V2TagFind (MMFileIOHandle *fp, unsigned char bAppended, unsigned int startOffset, unsigned int endOffset, tMMFileTags *out) +int MMFileID3V2TagFind(MMFileIOHandle *fp, unsigned char bAppended, unsigned int startOffset, unsigned int endOffset, tMMFileTags *out) { - unsigned char *id3v2ID = NULL; - unsigned char header[MMFILE_ID3V2TAG_HEADER_SIZE] = {0,}; - unsigned int offset = 0; - unsigned int index = 0; - int ret = 0; - - if (!fp || !out) - { - debug_error ("Invalid input\n"); - return MMFILE_ID3TAG_FAIL; - } - - if (bAppended) - { - id3v2ID = "3DI"; - offset = endOffset - MMFILE_ID3V2TAG_HEADER_SIZE; - } - else - { - id3v2ID = "ID3"; - offset = startOffset; - } - - mmfile_seek (fp, offset, MMFILE_SEEK_SET); - - ret = mmfile_read (fp, header, MMFILE_ID3V2TAG_HEADER_SIZE); - if (MMFILE_UTIL_FAIL == ret) - { - debug_error ("read error\n"); - return MMFILE_ID3TAG_FAIL; - } - - if (memcmp (id3v2ID, header, 3) == 0) - { - index += 3; - out->typeOfTag = MMFILE_TAG_ID3V2; - out->bAppendedTag = bAppended; - out->startOffset = offset; - - //version check - switch (header[index]) - { - case 0: - out->version = MMFILE_ID3TAG_V2_0; - break; - case 2: - out->version = MMFILE_ID3TAG_V2_2; - break; - case 3: - out->version = MMFILE_ID3TAG_V2_3; - break; - case 4: - out->version = MMFILE_ID3TAG_V2_4; - break; - default: - debug_warning ("unknown version of id3v2\n"); - break; - } - - index += 2; - //check footer - unsigned char footer = (header[index] & 0x10) ? 1 : 0; - - index += 1; - //out->tagSize = GetSynchsafeInteger () + (footer ? 20 : 10) - - if (bAppended) - { -// out->endOffset - } - out->endOffset = endOffset; - } - - - return MMFILE_ID3TAG_FAIL; + unsigned char *id3v2ID = NULL; + unsigned char header[MMFILE_ID3V2TAG_HEADER_SIZE] = {0, }; + unsigned int offset = 0; + unsigned int index = 0; + int ret = 0; + + if (!fp || !out) { + debug_error("Invalid input\n"); + return MMFILE_ID3TAG_FAIL; + } + + if (bAppended) { + id3v2ID = "3DI"; + offset = endOffset - MMFILE_ID3V2TAG_HEADER_SIZE; + } else { + id3v2ID = "ID3"; + offset = startOffset; + } + + mmfile_seek(fp, offset, MMFILE_SEEK_SET); + + ret = mmfile_read(fp, header, MMFILE_ID3V2TAG_HEADER_SIZE); + if (MMFILE_UTIL_FAIL == ret) { + debug_error("read error\n"); + return MMFILE_ID3TAG_FAIL; + } + + if (memcmp(id3v2ID, header, 3) == 0) { + index += 3; + out->typeOfTag = MMFILE_TAG_ID3V2; + out->bAppendedTag = bAppended; + out->startOffset = offset; + + /*version check */ + switch (header[index]) { + case 0: + out->version = MMFILE_ID3TAG_V2_0; + break; + case 2: + out->version = MMFILE_ID3TAG_V2_2; + break; + case 3: + out->version = MMFILE_ID3TAG_V2_3; + break; + case 4: + out->version = MMFILE_ID3TAG_V2_4; + break; + default: + debug_warning("unknown version of id3v2\n"); + break; + } + + index += 2; + /*check footer */ + unsigned char footer = (header[index] & 0x10) ? 1 : 0; + + index += 1; + /*out->tagSize = GetSynchsafeInteger() + (footer ? 20 : 10) */ + + if (bAppended) { +/* out->endOffset */ + } + out->endOffset = endOffset; + } + + + return MMFILE_ID3TAG_FAIL; } -static unsigned int GetSynchsafeInteger (unsigned int value) +static unsigned int GetSynchsafeInteger(unsigned int value) { - int i = 0; - const unsigned int mask = 0x7F000000; - unsigned int ret = 0; - - for (i = 0; i < sizeof(unsigned int); i++) - { - ret = (ret << 7) | ((value & mask) >> 24); - value <<= 8; - } - return ret; + int i = 0; + const unsigned int mask = 0x7F000000; + unsigned int ret = 0; + + for (i = 0; i < sizeof(unsigned int); i++) { + ret = (ret << 7) | ((value & mask) >> 24); + value <<= 8; + } + return ret; } diff --git a/formats/ffmpeg/mm_file_format_tags.c b/formats/ffmpeg/mm_file_format_tags.c index f1c2bf2..51c6640 100755 --- a/formats/ffmpeg/mm_file_format_tags.c +++ b/formats/ffmpeg/mm_file_format_tags.c @@ -21,7 +21,7 @@ #include <string.h> #include <stdlib.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" #include "mm_file_format_tag_id3.h" #include "mm_file_format_tags.h" @@ -31,220 +31,195 @@ typedef int (*MMFileFindTagFunc)(MMFileIOHandle *fp, unsigned char bAppended, unsigned int startOffset, unsigned int endOffset, tMMFileTags *out); -typedef struct mmfiletagsdata -{ - MMFileIOHandle *fp; - unsigned int filesize; - unsigned int startOffset; - unsigned int endOffset; - MMFileList tagList; +typedef struct mmfiletagsdata { + MMFileIOHandle *fp; + unsigned int filesize; + unsigned int startOffset; + unsigned int endOffset; + MMFileList tagList; } tMMFileTagsData; -MMFileFindTagFunc gFindPreprendTagFuncs[] = -{ - MMFileID3V2TagFind, +MMFileFindTagFunc gFindPreprendTagFuncs[] = { + MMFileID3V2TagFind, }; -MMFileFindTagFunc gFindAppendTagFuncs[] = -{ - MMFileID3V1TagFind, - MMFileID3V2TagFind, +MMFileFindTagFunc gFindAppendTagFuncs[] = { + MMFileID3V1TagFind, + MMFileID3V2TagFind, }; -int _MMFileFindTags (tMMFileTagsData *privateData, MMFileFindTagFunc FindTag, unsigned char bAppended); -int _MMFileFindPrependTags (tMMFileTagsData *privateData); -int _MMFileFindAppendTags (tMMFileTagsData *privateData); +int _MMFileFindTags(tMMFileTagsData *privateData, MMFileFindTagFunc FindTag, unsigned char bAppended); +int _MMFileFindPrependTags(tMMFileTagsData *privateData); +int _MMFileFindAppendTags(tMMFileTagsData *privateData); EXPORT_API -int MMFileOpenTags (MMFileTagsHandle *tagsHandle, const char *uriName) +int MMFileOpenTags(MMFileTagsHandle *tagsHandle, const char *uriName) { - tMMFileTagsData *privateData = NULL; - int ret = 0; - - privateData = mmfile_malloc (sizeof(tMMFileTagsData)); - if (!privateData) - { - debug_error ("mmfile_malloc: tMMFileTagsData\n"); - return MMFILE_TAGS_FAIL; - } - - *tagsHandle = privateData; - - ret = mmfile_open (&privateData->fp, uriName, MMFILE_RDONLY); - if (MMFILE_UTIL_FAIL == ret) - { - debug_error ("mmfile_open\n"); - ret = MMFILE_TAGS_FAIL; - goto exception; - } - - ret = mmfile_seek (privateData->fp, 0, MMFILE_SEEK_END); - if (MMFILE_UTIL_FAIL == ret) - { - debug_error ("mmfile_seek\n"); - ret = MMFILE_TAGS_FAIL; - goto exception; - } - - privateData->filesize = mmfile_tell (privateData->fp); - - mmfile_seek (privateData->fp, 0, MMFILE_SEEK_SET); - - privateData->startOffset = 0; - privateData->endOffset = privateData->filesize; - - /* Find all of tags */ - while (MMFILE_TAGS_SUCCESS == _MMFileFindPrependTags (privateData)) ; - while (MMFILE_TAGS_SUCCESS == _MMFileFindAppendTags (privateData)) ; - - if (!privateData->tagList) - { - debug_error ("there is no tags\n"); - ret = MMFILE_TAGS_FAIL; - goto exception; - } - - return MMFILE_TAGS_SUCCESS; + tMMFileTagsData *privateData = NULL; + int ret = 0; + + privateData = mmfile_malloc(sizeof(tMMFileTagsData)); + if (!privateData) { + debug_error("mmfile_malloc: tMMFileTagsData\n"); + return MMFILE_TAGS_FAIL; + } + + *tagsHandle = privateData; + + ret = mmfile_open(&privateData->fp, uriName, MMFILE_RDONLY); + if (MMFILE_UTIL_FAIL == ret) { + debug_error("mmfile_open\n"); + ret = MMFILE_TAGS_FAIL; + goto exception; + } + + ret = mmfile_seek(privateData->fp, 0, MMFILE_SEEK_END); + if (MMFILE_UTIL_FAIL == ret) { + debug_error("mmfile_seek\n"); + ret = MMFILE_TAGS_FAIL; + goto exception; + } + + privateData->filesize = mmfile_tell(privateData->fp); + + mmfile_seek(privateData->fp, 0, MMFILE_SEEK_SET); + + privateData->startOffset = 0; + privateData->endOffset = privateData->filesize; + + /* Find all of tags */ + while (MMFILE_TAGS_SUCCESS == _MMFileFindPrependTags(privateData)) ; + while (MMFILE_TAGS_SUCCESS == _MMFileFindAppendTags(privateData)) ; + + if (!privateData->tagList) { + debug_error("there is no tags\n"); + ret = MMFILE_TAGS_FAIL; + goto exception; + } + + return MMFILE_TAGS_SUCCESS; exception: - if (*tagsHandle) - { - MMFileTagsClose (*tagsHandle); - *tagsHandle = NULL; - } - - return ret; + if (*tagsHandle) { + MMFileTagsClose(*tagsHandle); + *tagsHandle = NULL; + } + + return ret; } EXPORT_API -int MMFileTagsClose (MMFileTagsHandle tagsHandle) +int MMFileTagsClose(MMFileTagsHandle tagsHandle) { - tMMFileTagsData *privateData = tagsHandle; + tMMFileTagsData *privateData = tagsHandle; - if (privateData) - { - if (privateData->fp) - { - mmfile_close (privateData->fp); - } + if (privateData) { + if (privateData->fp) { + mmfile_close(privateData->fp); + } - if (privateData->tagList) - { - mmfile_free (privateData->tagList); - } + if (privateData->tagList) { + mmfile_free(privateData->tagList); + } - mmfile_free (privateData); - } + mmfile_free(privateData); + } - return MMFILE_TAGS_SUCCESS; + return MMFILE_TAGS_SUCCESS; } EXPORT_API -int MMFileGetFirstTag (MMFileTagsHandle tagsHandle, tMMFileTags *out) +int MMFileGetFirstTag(MMFileTagsHandle tagsHandle, tMMFileTags *out) { - + } EXPORT_API -int MMFileGetNextTag (MMFileTagsHandle tagsHandle, tMMFileTags *out) +int MMFileGetNextTag(MMFileTagsHandle tagsHandle, tMMFileTags *out) { } -int _MMFileFindPrependTags (tMMFileTagsData *privateData) +int _MMFileFindPrependTags(tMMFileTagsData *privateData) { - int i = 0; - int res = 0; - - if (!privateData || !privateData->fp) - { - debug_error ("Invalid argument\n"); - return MMFILE_TAGS_FAIL; - } - - for (i = 0; i < MMFILE_TAGS_NUMBER_OF_ELEMENTS(gFindPreprendTagFuncs); i++) - { - if (gFindPreprendTagFuncs[i]) - { - if (MMFILE_TAGS_SUCCESS == _MMFileFindTags (privateData, gFindPreprendTagFuncs[i], 0)) - { - return MMFILE_TAGS_SUCCESS; - } - } - } - - return MMFILE_TAGS_FAIL; + int i = 0; + int res = 0; + + if (!privateData || !privateData->fp) { + debug_error("Invalid argument\n"); + return MMFILE_TAGS_FAIL; + } + + for (i = 0; i < MMFILE_TAGS_NUMBER_OF_ELEMENTS(gFindPreprendTagFuncs); i++) { + if (gFindPreprendTagFuncs[i]) { + if (MMFILE_TAGS_SUCCESS == _MMFileFindTags(privateData, gFindPreprendTagFuncs[i], 0)) { + return MMFILE_TAGS_SUCCESS; + } + } + } + + return MMFILE_TAGS_FAIL; } -int _MMFileFindAppendTags (tMMFileTagsData *privateData) +int _MMFileFindAppendTags(tMMFileTagsData *privateData) { - int i = 0; - int res = 0; - - if (!privateData || !privateData->fp) - { - debug_error ("Invalid argument\n"); - return MMFILE_TAGS_FAIL; - } - - for (i = 0; i < MMFILE_TAGS_NUMBER_OF_ELEMENTS(gFindAppendTagFuncs); i++) - { - if (gFindAppendTagFuncs[i]) - { - if (MMFILE_TAGS_SUCCESS == _MMFileFindTags (privateData, gFindAppendTagFuncs[i], 1)) - { - return MMFILE_TAGS_SUCCESS; - } - } - } - - return MMFILE_TAGS_FAIL; + int i = 0; + int res = 0; + + if (!privateData || !privateData->fp) { + debug_error("Invalid argument\n"); + return MMFILE_TAGS_FAIL; + } + + for (i = 0; i < MMFILE_TAGS_NUMBER_OF_ELEMENTS(gFindAppendTagFuncs); i++) { + if (gFindAppendTagFuncs[i]) { + if (MMFILE_TAGS_SUCCESS == _MMFileFindTags(privateData, gFindAppendTagFuncs[i], 1)) { + return MMFILE_TAGS_SUCCESS; + } + } + } + + return MMFILE_TAGS_FAIL; } -int _MMFileFindTags (tMMFileTagsData *privateData, MMFileFindTagFunc FindTag, unsigned char bAppended) +int _MMFileFindTags(tMMFileTagsData *privateData, MMFileFindTagFunc FindTag, unsigned char bAppended) { - tMMFileTags *tagData = NULL; - int ret = 0; - - if (!privateData || !privateData->fp) - { - debug_error ("Invalid argument\n"); - return MMFILE_TAGS_FAIL; - } - - tagData = mmfile_malloc (sizeof(tMMFileTags)); - if (!tagData) - { - debug_error ("mmfile_malloc tagData\n"); - return MMFILE_TAGS_FAIL; - } - - ret = FindTag (privateData->fp, bAppended, privateData->startOffset, privateData->endOffset, tagData); - if (ret) - { - if (bAppended) - { - privateData->endOffset = tagData->startOffset; - } - else - { - privateData->startOffset = tagData->endOffset; - } - - /* add tagData into privateData->tagList */ - - //privateData->tagList = mmfile_list_append (privateData->tagList, tagData); - - ret = MMFILE_TAGS_SUCCESS; - } - - mmfile_free(tagData); - - return ret; + tMMFileTags *tagData = NULL; + int ret = 0; + + if (!privateData || !privateData->fp) { + debug_error("Invalid argument\n"); + return MMFILE_TAGS_FAIL; + } + + tagData = mmfile_malloc(sizeof(tMMFileTags)); + if (!tagData) { + debug_error("mmfile_malloc tagData\n"); + return MMFILE_TAGS_FAIL; + } + + ret = FindTag(privateData->fp, bAppended, privateData->startOffset, privateData->endOffset, tagData); + if (ret) { + if (bAppended) { + privateData->endOffset = tagData->startOffset; + } else { + privateData->startOffset = tagData->endOffset; + } + + /* add tagData into privateData->tagList */ + + /*privateData->tagList = mmfile_list_append(privateData->tagList, tagData); */ + + ret = MMFILE_TAGS_SUCCESS; + } + + mmfile_free(tagData); + + return ret; } diff --git a/formats/ffmpeg/mm_file_format_wav.c b/formats/ffmpeg/mm_file_format_wav.c index bbe04d2..8bbfe8e 100755 --- a/formats/ffmpeg/mm_file_format_wav.c +++ b/formats/ffmpeg/mm_file_format_wav.c @@ -23,7 +23,7 @@ #include <stdlib.h> /*malloc*/ #include <mm_error.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" #include "mm_file_format_private.h" @@ -46,8 +46,8 @@ * 32 2 little Block align * 34 2 little Bit per sample */ - - + + #define MMF_FILE_WAVE_CHUNK_LEN 12 #define MMF_FILE_WAVE_SUBCHUNK_LEN 24 #define MMF_FILE_WAVE_HEADER_LEN (MMF_FILE_WAVE_CHUNK_LEN + MMF_FILE_WAVE_SUBCHUNK_LEN) @@ -55,10 +55,10 @@ #ifdef __MMFILE_TEST_MODE__ typedef struct { short codec; /**< WAVE form Registration Number*/ - char *name; /**< WAVE form wFormatTag ID*/ + const char *name; /**< WAVE form wFormatTag ID*/ } MMF_FILE_WAVE_CODEC_NAME; -MMF_FILE_WAVE_CODEC_NAME g_audio_cdc_tbl [] = { +MMF_FILE_WAVE_CODEC_NAME g_audio_cdc_tbl[] = { { 0x0000, "WAVE_FORMAT_UNKNOWN" }, { 0x0001, "WAVE_FORMAT_PCM" }, { 0x0002, "WAVE_FORMAT_ADPCM" }, @@ -179,19 +179,19 @@ typedef struct { /* internal */ -static unsigned char *mmf_file_wave_get_header (char *src); -static int mmf_file_wave_get_info (unsigned char *header, MM_FILE_WAVE_INFO *info); +static unsigned char *mmf_file_wave_get_header(char *src); +static int mmf_file_wave_get_info(unsigned char *header, MM_FILE_WAVE_INFO *info); /* mm plugin porting */ -int mmfile_format_read_stream_wav (MMFileFormatContext *formatContext); -int mmfile_format_read_frame_wav (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); -int mmfile_format_read_tag_wav (MMFileFormatContext *formatContext); -int mmfile_format_close_wav (MMFileFormatContext *formatContext); +int mmfile_format_read_stream_wav(MMFileFormatContext *formatContext); +int mmfile_format_read_frame_wav(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame); +int mmfile_format_read_tag_wav(MMFileFormatContext *formatContext); +int mmfile_format_close_wav(MMFileFormatContext *formatContext); EXPORT_API -int mmfile_format_open_wav (MMFileFormatContext *formatContext) +int mmfile_format_open_wav(MMFileFormatContext *formatContext) { int ret = 0; @@ -201,11 +201,10 @@ int mmfile_format_open_wav (MMFileFormatContext *formatContext) } if (formatContext->pre_checked == 0) { - ret = MMFileFormatIsValidWAV (formatContext->uriFileName); - if ( ret == 0 ) - { + ret = MMFileFormatIsValidWAV(NULL, formatContext->uriFileName); + if (ret == 0) { debug_error("It is not wav file\n"); - return MMFILE_FORMAT_FAIL; + return MMFILE_FORMAT_FAIL; } } @@ -243,7 +242,7 @@ static bool __check_uhqa(int sample_rate, short bits_per_sample) } EXPORT_API -int mmfile_format_read_stream_wav (MMFileFormatContext *formatContext) +int mmfile_format_read_stream_wav(MMFileFormatContext *formatContext) { unsigned char *header = NULL; MM_FILE_WAVE_INFO *waveinfo = NULL; @@ -253,41 +252,41 @@ int mmfile_format_read_stream_wav (MMFileFormatContext *formatContext) if (formatContext == NULL) { debug_error("formatContext is NULL\n"); - return MMFILE_FORMAT_FAIL; + return MMFILE_FORMAT_FAIL; } - header = mmf_file_wave_get_header (formatContext->uriFileName); + header = mmf_file_wave_get_header(formatContext->uriFileName); if (header == NULL) { debug_error("error: mmf_file_wave_get_header\n"); goto exception; } - waveinfo = mmfile_malloc (sizeof(MM_FILE_WAVE_INFO)); + waveinfo = mmfile_malloc(sizeof(MM_FILE_WAVE_INFO)); if (waveinfo == NULL) { debug_error("error: mmfile_malloc\n"); goto exception; } - ret = mmf_file_wave_get_info (header, waveinfo); + ret = mmf_file_wave_get_info(header, waveinfo); if (ret == -1) { debug_error("error: mmf_file_wave_get_info\n"); goto exception; } - mmfile_free (header); + mmfile_free(header); - /* Get file size. because sometimes waveinfo->size is wrong */ - ret = mmfile_open (&fp, formatContext->uriFileName, MMFILE_RDONLY); - if(fp) { - mmfile_seek (fp, 0, MMFILE_SEEK_END); + /* Get file size. because sometimes waveinfo->size is wrong */ + ret = mmfile_open(&fp, formatContext->uriFileName, MMFILE_RDONLY); + if (fp) { + mmfile_seek(fp, 0, MMFILE_SEEK_END); filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); - mmfile_close (fp); + mmfile_seek(fp, 0, MMFILE_SEEK_SET); + mmfile_close(fp); } formatContext->privateFormatData = waveinfo; - if(waveinfo->size > filesize) { + if (waveinfo->size > filesize) { /*Wrong information*/ formatContext->duration = (int)((((float)filesize - MMF_FILE_WAVE_HEADER_LEN) / (float)(waveinfo->byte_rate)) * 1000.0F); } else { @@ -296,11 +295,11 @@ int mmfile_format_read_stream_wav (MMFileFormatContext *formatContext) formatContext->audioTotalTrackNum = 1; formatContext->nbStreams = 1; - formatContext->streams[MMFILE_AUDIO_STREAM] = mmfile_malloc (sizeof(MMFileFormatStream)); + formatContext->streams[MMFILE_AUDIO_STREAM] = mmfile_malloc(sizeof(MMFileFormatStream)); if (!formatContext->streams[MMFILE_AUDIO_STREAM]) { debug_error("error: mmfile_malloc audio stream for wav\n"); - return MMFILE_FORMAT_FAIL; + return MMFILE_FORMAT_FAIL; } formatContext->streams[MMFILE_AUDIO_STREAM]->streamType = MMFILE_AUDIO_STREAM; @@ -326,7 +325,7 @@ int mmfile_format_read_stream_wav (MMFileFormatContext *formatContext) break; } - formatContext->streams[MMFILE_AUDIO_STREAM]->bitRate = waveinfo->byte_rate*8; + formatContext->streams[MMFILE_AUDIO_STREAM]->bitRate = waveinfo->byte_rate * 8; formatContext->streams[MMFILE_AUDIO_STREAM]->nbChannel = waveinfo->channel; formatContext->streams[MMFILE_AUDIO_STREAM]->framePerSec = 0; formatContext->streams[MMFILE_AUDIO_STREAM]->samplePerSec = waveinfo->sample_rate; @@ -336,29 +335,29 @@ int mmfile_format_read_stream_wav (MMFileFormatContext *formatContext) return MMFILE_FORMAT_SUCCESS; exception: - mmfile_free (header); - mmfile_free (waveinfo); + mmfile_free(header); + mmfile_free(waveinfo); return MMFILE_FORMAT_FAIL; } EXPORT_API -int mmfile_format_read_frame_wav (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) +int mmfile_format_read_frame_wav(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) { return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_read_tag_wav (MMFileFormatContext *formatContext) +int mmfile_format_read_tag_wav(MMFileFormatContext *formatContext) { return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_close_wav (MMFileFormatContext *formatContext) +int mmfile_format_close_wav(MMFileFormatContext *formatContext) { if (formatContext == NULL) { debug_error("formatContext is NULL\n"); @@ -366,57 +365,58 @@ int mmfile_format_close_wav (MMFileFormatContext *formatContext) } if (formatContext->privateFormatData) - mmfile_free (formatContext->privateFormatData); + mmfile_free(formatContext->privateFormatData); return MMFILE_FORMAT_SUCCESS; } -static char* -_dump_codec_name (short codec) -{ #ifdef __MMFILE_TEST_MODE__ - int sz = sizeof (g_audio_cdc_tbl) / sizeof (MMF_FILE_WAVE_CODEC_NAME); +static const char * +_dump_codec_name(short codec) +{ + int sz = sizeof(g_audio_cdc_tbl) / sizeof(MMF_FILE_WAVE_CODEC_NAME); int i; - + for (i = 0; i < sz; i++) { if (g_audio_cdc_tbl[i].codec == codec) { return g_audio_cdc_tbl[i].name; } } -#endif + return NULL; } +#endif -static int _get_fmt_subchunk_offset (MMFileIOHandle *fp, long long limit, long long *offset) +static int _get_fmt_subchunk_offset(MMFileIOHandle *fp, long long limit, long long *offset) { long long fmt_offset; int readed; int i; unsigned char buf[4]; - fmt_offset = mmfile_tell (fp); + fmt_offset = mmfile_tell(fp); if (fmt_offset < 0) return 0; for (i = 0; i < limit; i++) { - mmfile_seek (fp, fmt_offset + i, MMFILE_SEEK_SET); - readed = mmfile_read (fp, buf, 4); + mmfile_seek(fp, fmt_offset + i, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buf, 4); if (readed != 4) { - debug_error ( "failed to read. size = %d\n", readed); + debug_error("failed to read. size = %d\n", readed); return 0; } - + if (buf[0] == 'f' && buf[1] == 'm' && buf[2] == 't' && buf[3] == ' ') { *offset = fmt_offset + i; return 1; } } - + return 0; } static unsigned char * -mmf_file_wave_get_header (char *src) +mmf_file_wave_get_header(char *src) { int readed = 0; MMFileIOHandle *fp = NULL; @@ -426,115 +426,115 @@ mmf_file_wave_get_header (char *src) long long offset = 0; long long limit; - header = mmfile_malloc (MMF_FILE_WAVE_HEADER_LEN); + header = mmfile_malloc(MMF_FILE_WAVE_HEADER_LEN); if (!header) return NULL; /*open*/ - ret = mmfile_open (&fp, src, MMFILE_RDONLY); + ret = mmfile_open(&fp, src, MMFILE_RDONLY); if (ret == MMFILE_UTIL_FAIL) { - debug_error ( "open failed.\n"); + debug_error("open failed.\n"); goto failed; } /*get file size*/ - mmfile_seek (fp, 0L, MMFILE_SEEK_END); - src_size = mmfile_tell (fp); - mmfile_seek (fp, 0L, MMFILE_SEEK_SET); + mmfile_seek(fp, 0L, MMFILE_SEEK_END); + src_size = mmfile_tell(fp); + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); if (src_size < MMF_FILE_WAVE_HEADER_LEN) { - debug_error ( "header is too small.\n"); + debug_error("header is too small.\n"); goto failed; } /*read chunk data*/ - readed = mmfile_read (fp, header, MMF_FILE_WAVE_CHUNK_LEN); + readed = mmfile_read(fp, header, MMF_FILE_WAVE_CHUNK_LEN); if (readed != MMF_FILE_WAVE_CHUNK_LEN) { - debug_error ( "read error. size = %d\n", readed); + debug_error("read error. size = %d\n", readed); goto failed; } /*seach 'fmt ' sub chunk*/ limit = (src_size - MMF_FILE_WAVE_HEADER_LEN > 10240 ? 10240 : src_size - MMF_FILE_WAVE_HEADER_LEN); - ret = _get_fmt_subchunk_offset (fp, limit, &offset); + ret = _get_fmt_subchunk_offset(fp, limit, &offset); if (ret == 0) { - debug_error ( "failed to seach 'fmt ' chunk\n"); + debug_error("failed to seach 'fmt ' chunk\n"); goto failed; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("fmt offset: %lld\n", offset); - #endif - - mmfile_seek (fp, offset, MMFILE_SEEK_SET); - +#ifdef __MMFILE_TEST_MODE__ + debug_msg("fmt offset: %lld\n", offset); +#endif + + mmfile_seek(fp, offset, MMFILE_SEEK_SET); + /*read sub chunk data*/ - readed = mmfile_read (fp, header + MMF_FILE_WAVE_CHUNK_LEN, MMF_FILE_WAVE_SUBCHUNK_LEN); + readed = mmfile_read(fp, header + MMF_FILE_WAVE_CHUNK_LEN, MMF_FILE_WAVE_SUBCHUNK_LEN); if (readed != MMF_FILE_WAVE_SUBCHUNK_LEN) { - debug_error ( "read error. size = %d\n", readed); + debug_error("read error. size = %d\n", readed); goto failed; } - mmfile_close (fp); + mmfile_close(fp); return header; failed: - if (header) mmfile_free (header); - if (fp) mmfile_close (fp); + if (header) mmfile_free(header); + if (fp) mmfile_close(fp); return NULL; } static int -mmf_file_wave_get_info (unsigned char *header, MM_FILE_WAVE_INFO *info) +mmf_file_wave_get_info(unsigned char *header, MM_FILE_WAVE_INFO *info) { if (!header || !info) { return -1; } /*get chunk size*/ - info->size = *((int*)(header + 4)); - + info->size = *((int *)(header + 4)); + /*get format*/ - info->format = *((short*)(header + 20)); + info->format = *((short *)(header + 20)); /*get channel*/ - info->channel = *((short*)(header + 22)); + info->channel = *((short *)(header + 22)); /*get sampling-rate*/ - info->sample_rate = *((int*)(header + 24)); + info->sample_rate = *((int *)(header + 24)); /*get byte rate*/ - info->byte_rate = *((int*)(header + 28)); + info->byte_rate = *((int *)(header + 28)); /*get byte align*/ - info->block_align = *((short*)(header + 32)); - + info->block_align = *((short *)(header + 32)); + /*get bits per sample*/ - info->bits_per_sample = *((short*)(header + 34)); - - info->size = mmfile_io_le_int32 (info->size); - info->format = mmfile_io_le_int16 (info->format); - info->channel = mmfile_io_le_int16 (info->channel); - info->sample_rate = mmfile_io_le_int32 (info->sample_rate); - info->byte_rate = mmfile_io_le_int32 (info->byte_rate); - info->block_align = mmfile_io_le_int16 (info->block_align); - info->bits_per_sample = mmfile_io_le_int16 (info->bits_per_sample); - - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "----------------------------------------------\n"); - debug_msg ( "chunk size: %d\n", info->size); - debug_msg ( "WAVE form Registration Number: 0x%04X\n", info->format); - debug_msg ( "WAVE form wFormatTag ID: %s\n", _dump_codec_name (info->format)); - debug_msg ( "channel: %d\n", info->channel); - debug_msg ( "sampling-rate: %d\n", info->sample_rate); - debug_msg ( "byte-rate: %d\n", info->byte_rate); - debug_msg ( "byte align: %d\n", info->block_align); - debug_msg ( "bit per sample: %d\n", info->bits_per_sample); - debug_msg ( "----------------------------------------------\n"); - #endif + info->bits_per_sample = *((short *)(header + 34)); + + info->size = mmfile_io_le_int32(info->size); + info->format = mmfile_io_le_int16(info->format); + info->channel = mmfile_io_le_int16(info->channel); + info->sample_rate = mmfile_io_le_int32(info->sample_rate); + info->byte_rate = mmfile_io_le_int32(info->byte_rate); + info->block_align = mmfile_io_le_int16(info->block_align); + info->bits_per_sample = mmfile_io_le_int16(info->bits_per_sample); + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("----------------------------------------------\n"); + debug_msg("chunk size: %d\n", info->size); + debug_msg("WAVE form Registration Number: 0x%04X\n", info->format); + debug_msg("WAVE form wFormatTag ID: %s\n", _dump_codec_name(info->format)); + debug_msg("channel: %d\n", info->channel); + debug_msg("sampling-rate: %d\n", info->sample_rate); + debug_msg("byte-rate: %d\n", info->byte_rate); + debug_msg("byte align: %d\n", info->block_align); + debug_msg("bit per sample: %d\n", info->bits_per_sample); + debug_msg("----------------------------------------------\n"); +#endif return 0; diff --git a/formats/ffmpeg/mm_file_formats.c b/formats/ffmpeg/mm_file_formats.c index 573d262..962664f 100755 --- a/formats/ffmpeg/mm_file_formats.c +++ b/formats/ffmpeg/mm_file_formats.c @@ -22,14 +22,55 @@ #include <stdio.h> #include <string.h> #include <stdlib.h> - -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_format_private.h" #include "mm_file_utils.h" #define _MMF_FILE_FILEEXT_MAX 128 -int (*MMFileOpenFunc[MM_FILE_FORMAT_NUM+1]) (MMFileFormatContext *fileContext) = { +#define MMFILE_EXT_MP4 0x6D7034 +#define MMFILE_EXT_MPEG4 0x6D70656734 +#define MMFILE_EXT_M4A 0x6D3461 +#define MMFILE_EXT_MPG 0x6D7067 +#define MMFILE_EXT_MPG4 0x6D706734 +#define MMFILE_EXT_M4V 0x6D3476 +#define MMFILE_EXT_3GP 0x336770 +#define MMFILE_EXT_AMR 0x616D72 +#define MMFILE_EXT_AWB 0x617762 +#define MMFILE_EXT_WAV 0x776176 +#define MMFILE_EXT_MID 0x6D6964 +#define MMFILE_EXT_MIDI 0x6D696D69 +#define MMFILE_EXT_SPM 0x73706D +#define MMFILE_EXT_MP3 0x6D7033 +#define MMFILE_EXT_AAC 0x616163 +#define MMFILE_EXT_XMF 0x786D66 +#define MMFILE_EXT_MXMF 0x6D786D66 +#define MMFILE_EXT_MMF 0x6D6D66 +#define MMFILE_EXT_MA2 0x6D6132 +#define MMFILE_EXT_IMY 0x696D79 +#define MMFILE_EXT_AVI 0x617669 +#define MMFILE_EXT_DIVX 0x64697678 +#define MMFILE_EXT_ASF 0x617366 +#define MMFILE_EXT_ASX 0x617378 +#define MMFILE_EXT_WMA 0x776D61 +#define MMFILE_EXT_WMV 0x776D76 +#define MMFILE_EXT_OGG 0x6F6767 +#define MMFILE_EXT_MKV 0x6D6B76 +#define MMFILE_EXT_MKA 0x6D6B61 +#define MMFILE_EXT_MOV 0x6D6F76 +#define MMFILE_EXT_FLAC 0x666C6163 +#define MMFILE_EXT_FLV 0x666C76 +#define MMFILE_EXT_AIF 0x616966 +#define MMFILE_EXT_AIFF 0x61696666 +#define MMFILE_EXT_RMVB 0x726D7662 +#define MMFILE_EXT_RM 0x726D +#define MMFILE_EXT_M2TS 0x6D327473 +#define MMFILE_EXT_MTS 0x6D7473 +#define MMFILE_EXT_TS 0x7473 +#define MMFILE_EXT_TP 0x7470 +#define MMFILE_EXT_MPEG 0x6D706567 + +int (*MMFileOpenFunc[MM_FILE_FORMAT_NUM + 1])(MMFileFormatContext *fileContext) = { mmfile_format_open_ffmpg, /* 3GP */ mmfile_format_open_ffmpg, /* ASF */ mmfile_format_open_ffmpg, /* AVI */ @@ -37,12 +78,12 @@ int (*MMFileOpenFunc[MM_FILE_FORMAT_NUM+1]) (MMFileFormatContext *fileContext) = mmfile_format_open_ffmpg, /* MP4 */ mmfile_format_open_ffmpg, /* OGG */ NULL, /* NUT */ - mmfile_format_open_ffmpg, /* QT */ - NULL, /* REAL */ + mmfile_format_open_ffmpg, /* QT */ + mmfile_format_open_ffmpg, /* REAL */ mmfile_format_open_amr, /* AMR */ mmfile_format_open_aac, /* AAC */ mmfile_format_open_mp3, /* MP3 */ - NULL, /* AIFF */ + mmfile_format_open_ffmpg, /* AIFF */ NULL, /* AU */ mmfile_format_open_wav, /* WAV */ mmfile_format_open_mid, /* MID */ @@ -55,10 +96,14 @@ int (*MMFileOpenFunc[MM_FILE_FORMAT_NUM+1]) (MMFileFormatContext *fileContext) = mmfile_format_open_ffmpg, /* WMV */ NULL, /* JPG */ mmfile_format_open_ffmpg, /* FLAC */ + mmfile_format_open_ffmpg, /* MPEG-TS */ + mmfile_format_open_ffmpg, /* MPEG-PS */ + mmfile_format_open_ffmpg, /* MPEG 1 VIDEO*/ + mmfile_format_open_ffmpg, /* MPEG 1 AUDIO */ NULL, }; -static int _CleanupFrameContext (MMFileFormatContext *formatContext, bool clean_all) +static int _CleanupFrameContext(MMFileFormatContext *formatContext, bool clean_all) { if (formatContext) { @@ -89,7 +134,7 @@ static int _CleanupFrameContext (MMFileFormatContext *formatContext, bool clean_ if (formatContext->unsyncLyrics) mmfile_free(formatContext->unsyncLyrics); if (formatContext->rotate) mmfile_free(formatContext->rotate); - if(clean_all) //syncLyrics has to be freed in mm_file_destroy_tag_attrs() except abnormal status + if (clean_all) /*syncLyrics has to be freed in mm_file_destroy_tag_attrs() except abnormal status */ if (formatContext->syncLyrics) mm_file_free_synclyrics_list(formatContext->syncLyrics); if (formatContext->privateFormatData) mmfile_free(formatContext->privateFormatData); @@ -109,12 +154,12 @@ static int _CleanupFrameContext (MMFileFormatContext *formatContext, bool clean_ if (formatContext->thumbNail) { if (formatContext->thumbNail->frameData) - mmfile_free (formatContext->thumbNail->frameData); + mmfile_free(formatContext->thumbNail->frameData); if (formatContext->thumbNail->configData) - mmfile_free (formatContext->thumbNail->configData); + mmfile_free(formatContext->thumbNail->configData); - mmfile_free (formatContext->thumbNail); + mmfile_free(formatContext->thumbNail); } formatContext->videoTotalTrackNum = 0; @@ -126,19 +171,45 @@ static int _CleanupFrameContext (MMFileFormatContext *formatContext, bool clean_ } static int -_PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, int *isdrm) +_PreprocessFile(MMFileSourceType *fileSrc, char **urifilename, int *formatEnum) { const char *fileName = NULL; - char extansion_name[_MMF_FILE_FILEEXT_MAX]; - int pos = 0; int filename_len = 0; int index = 0, skip_index = 0; + int ret = 0; + MMFileIOHandle *fp = NULL; if (fileSrc->type == MM_FILE_SRC_TYPE_FILE) { + unsigned long long file_extansion = 0; + fileName = (const char *)(fileSrc->file.path); - filename_len = strlen (fileName); - pos = filename_len; + filename_len = strlen(fileName); + + int pos = filename_len; +#ifdef __MMFILE_MMAP_MODE__ + *urifilename = mmfile_malloc(MMFILE_MMAP_URI_LEN + filename_len + 1); + if (!*urifilename) { + debug_error("error: mmfile_malloc uriname\n"); + goto FILE_FORMAT_FAIL; + } + + memset(*urifilename, 0x00, MMFILE_MMAP_URI_LEN + filename_len + 1); + strncpy(*urifilename, MMFILE_MMAP_URI, MMFILE_MMAP_URI_LEN); + strncat(*urifilename, fileName, filename_len); + (*urifilename)[MMFILE_MMAP_URI_LEN + filename_len] = '\0'; + +#else + *urifilename = mmfile_malloc(MMFILE_FILE_URI_LEN + filename_len + 1); + if (!*urifilename) { + debug_error("error: mmfile_malloc uriname\n"); + goto FILE_FORMAT_FAIL; + } + memset(*urifilename, 0x00, MMFILE_FILE_URI_LEN + filename_len + 1); + strncpy(*urifilename, MMFILE_FILE_URI, MMFILE_FILE_URI_LEN + 1); + strncat(*urifilename, fileName, filename_len); + (*urifilename)[MMFILE_FILE_URI_LEN + filename_len] = '\0'; +#endif /** * Get file extension from file's name */ @@ -146,253 +217,289 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, pos--; if (fileName[pos] == '.') break; + file_extansion |= (fileName[pos] >= 'A' && fileName[pos] <= 'Z' ? fileName[pos] + 0x20 : fileName[pos]) << (filename_len - pos - 1) * 8; } - memset (extansion_name, 0x00, _MMF_FILE_FILEEXT_MAX); + ret = mmfile_open(&fp, *urifilename, MMFILE_RDONLY); - /*extract metadata for all file. ex)a , a. , a.mp3*/ - if (pos == 0) { - /*even though there is no file extension, extracto metadata*/ - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("no file extension"); - #endif - } - 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 { - debug_error ("invalid filename. destination length: %d, source length: %d.\n", _MMF_FILE_FILEEXT_MAX, (filename_len - pos - 1)); - return MMFILE_FORMAT_FAIL; /*invalid file name*/ + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto FILE_FORMAT_FAIL; } - - *isdrm = MM_FILE_DRM_NONE; -#ifdef __MMFILE_MMAP_MODE__ - *urifilename = mmfile_malloc (MMFILE_MMAP_URI_LEN + filename_len + 1); - if (!*urifilename) { - debug_error ("error: mmfile_malloc uriname\n"); - return MMFILE_FORMAT_FAIL; - } + /*///////////////////////////////////////////////////////////////////// */ + /* Check File format // */ + /*///////////////////////////////////////////////////////////////////// */ - memset (*urifilename, 0x00, MMFILE_MMAP_URI_LEN + filename_len + 1); - strncpy (*urifilename, MMFILE_MMAP_URI, MMFILE_MMAP_URI_LEN); - strncat (*urifilename, fileName, filename_len); - (*urifilename)[MMFILE_MMAP_URI_LEN + filename_len] = '\0'; +#ifdef __MMFILE_TEST_MODE__ + /*debug_msg ("Get codec type of [%s].\n", extansion_name); */ +#endif -#else - *urifilename = mmfile_malloc (MMFILE_FILE_URI_LEN + filename_len + 1); - if (!*urifilename) { - debug_error ("error: mmfile_malloc uriname\n"); - return MMFILE_FORMAT_FAIL; - } + switch (file_extansion) { + case MMFILE_EXT_MP4: + case MMFILE_EXT_MPEG4: + case MMFILE_EXT_M4A: + case MMFILE_EXT_MPG: + case MMFILE_EXT_MPG4: + case MMFILE_EXT_M4V: + if (MMFileFormatIsValidMP4(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_MP4; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_MP4; + goto PROBE_PROPER_FILE_TYPE; + break; - memset (*urifilename, 0x00, MMFILE_FILE_URI_LEN + filename_len + 1); - strncpy (*urifilename, MMFILE_FILE_URI, MMFILE_FILE_URI_LEN+1); - strncat (*urifilename, fileName, filename_len); - (*urifilename)[MMFILE_FILE_URI_LEN + filename_len] = '\0'; -#endif + case MMFILE_EXT_3GP: + if (MMFileFormatIsValidMP4(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_3GP; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_3GP; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_AMR: + case MMFILE_EXT_AWB: + if (MMFileFormatIsValidAMR(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_AMR; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_AMR; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_WAV: + if (MMFileFormatIsValidWAV(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_WAV; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_WAV; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_MID: + case MMFILE_EXT_MIDI: + case MMFILE_EXT_SPM: + if (MMFileFormatIsValidMID(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_MID; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_MID; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_MP3: + if (MMFileFormatIsValidMP3(fp, NULL, 5)) { + *formatEnum = MM_FILE_FORMAT_MP3; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_MP3; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_AAC: + if (MMFileFormatIsValidAAC(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_AAC; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_AAC; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_XMF: + case MMFILE_EXT_MXMF: + if (MMFileFormatIsValidMID(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_MID; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_MID; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_MMF: + case MMFILE_EXT_MA2: + if (MMFileFormatIsValidMMF(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_MMF; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_MMF; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_IMY: + if (MMFileFormatIsValidIMY(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_IMELODY; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_IMELODY; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_AVI: + if (MMFileFormatIsValidAVI(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_AVI; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_AVI; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_DIVX: + if (MMFileFormatIsValidAVI(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_DIVX; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_DIVX; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_ASF: + case MMFILE_EXT_ASX: + if (MMFileFormatIsValidASF(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_ASF; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_ASF; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_WMA: + if (MMFileFormatIsValidWMA(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_WMA; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_WMA; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_WMV: + if (MMFileFormatIsValidWMV(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_WMV; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_WMV; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_OGG: + if (MMFileFormatIsValidOGG(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_OGG; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_OGG; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_MKV: + case MMFILE_EXT_MKA: + if (MMFileFormatIsValidMatroska(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_MATROSKA; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_MATROSKA; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_MOV: + if (MMFileFormatIsValidMP4(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_QT; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_QT; + goto PROBE_PROPER_FILE_TYPE; + break; - /////////////////////////////////////////////////////////////////////// - // Check File format // - /////////////////////////////////////////////////////////////////////// + case MMFILE_EXT_FLAC: + if (MMFileFormatIsValidFLAC(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_FLAC; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_FLAC; + goto PROBE_PROPER_FILE_TYPE; + break; + + case MMFILE_EXT_FLV: + if (MMFileFormatIsValidFLV(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_FLV; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_FLV; + goto PROBE_PROPER_FILE_TYPE; + break; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("Get codec type of [%s].\n", extansion_name); - #endif + case MMFILE_EXT_RM: + case MMFILE_EXT_RMVB: + if (MMFileFormatIsValidREAL(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_REAL; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_REAL; + goto PROBE_PROPER_FILE_TYPE; + break; - if (strcasecmp (extansion_name, "mp4") == 0 || - strcasecmp (extansion_name, "mpeg4") == 0 || - strcasecmp (extansion_name, "m4a") == 0 || - strcasecmp (extansion_name, "mpg") == 0 || - strcasecmp (extansion_name, "mpg4") == 0 || - strcasecmp (extansion_name, "m4v") == 0 ) { - - if (MMFileFormatIsValidMP4 (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_MP4; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_MP4; - goto PROBE_PROPER_FILE_TYPE; + case MMFILE_EXT_M2TS: + case MMFILE_EXT_MTS: + case MMFILE_EXT_TP: + case MMFILE_EXT_TS: + if (MMFileFormatIsValidMPEGTS(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M2TS; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_M2TS; + goto PROBE_PROPER_FILE_TYPE; + break; - } else if (strcasecmp (extansion_name, "3gp") == 0) { - if (MMFileFormatIsValidMP4 (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_3GP; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_3GP; - goto PROBE_PROPER_FILE_TYPE; + case MMFILE_EXT_MPEG: + if (MMFileFormatIsValidMPEGPS(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M2PS; + goto FILE_FORMAT_SUCCESS; + } else if (MMFileFormatIsValidMPEGVIDEO(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M1VIDEO; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_M2PS; + goto PROBE_PROPER_FILE_TYPE; + break; - } else if (strcasecmp (extansion_name, "amr") == 0 || - strcasecmp (extansion_name, "awb") == 0) { + case MMFILE_EXT_AIF: + case MMFILE_EXT_AIFF: + *formatEnum = MM_FILE_FORMAT_AIFF; + goto FILE_FORMAT_SUCCESS; + break; - if (MMFileFormatIsValidAMR (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_AMR; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_AMR; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "wav") == 0) { - if (MMFileFormatIsValidWAV (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_WAV; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_WAV; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "mid") == 0 || - strcasecmp (extansion_name, "midi") == 0 || - strcasecmp (extansion_name, "spm") == 0 ) { - - if (MMFileFormatIsValidMID (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_MID; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_MID; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "mp3") == 0) { - if (MMFileFormatIsValidMP3 (*urifilename,5)) { - *formatEnum = MM_FILE_FORMAT_MP3; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_MP3; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "aac") == 0) { - if (MMFileFormatIsValidAAC (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_AAC; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_AAC; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "xmf") == 0 || - strcasecmp (extansion_name, "mxmf") == 0) { - if (MMFileFormatIsValidMID (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_MID; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_MID; - goto PROBE_PROPER_FILE_TYPE; - - } else if (!strcasecmp (extansion_name, "mmf") || - !strcasecmp (extansion_name, "ma2")) { - if (MMFileFormatIsValidMMF (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_MMF; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_MMF; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "imy") == 0) { - if (MMFileFormatIsValidIMY (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_IMELODY; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_IMELODY; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "avi") == 0) { - if (MMFileFormatIsValidAVI (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_AVI; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_AVI; - goto PROBE_PROPER_FILE_TYPE; - } else if (strcasecmp (extansion_name, "divx") == 0) { - if (MMFileFormatIsValidAVI (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_DIVX; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_DIVX; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "asf") == 0 || - strcasecmp (extansion_name, "asx") == 0 ) { - if (MMFileFormatIsValidASF (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_ASF; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_ASF; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "wma") == 0) { - if (MMFileFormatIsValidWMA (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_WMA; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_WMA; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "wmv") == 0) { - if (MMFileFormatIsValidWMV (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_WMV; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_WMV; - goto PROBE_PROPER_FILE_TYPE; - - } else if (strcasecmp (extansion_name, "ogg") == 0) { - if (MMFileFormatIsValidOGG (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_OGG; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_OGG; - goto PROBE_PROPER_FILE_TYPE; - } else if (strcasecmp (extansion_name, "mkv") == 0 || - strcasecmp (extansion_name, "mka") == 0) { - if (MMFileFormatIsValidMatroska (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_MATROSKA; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_MATROSKA; - goto PROBE_PROPER_FILE_TYPE; - } else if (strcasecmp (extansion_name, "mov") == 0) { - if (MMFileFormatIsValidMP4 (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_QT; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_QT; - goto PROBE_PROPER_FILE_TYPE; - } else if (strcasecmp (extansion_name, "flac") == 0) { - if (MMFileFormatIsValidFLAC (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_FLAC; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_FLAC; - goto PROBE_PROPER_FILE_TYPE; - } else if (strcasecmp (extansion_name, "flv") == 0) { - if (MMFileFormatIsValidFLV (*urifilename)) { - *formatEnum = MM_FILE_FORMAT_FLV; - return MMFILE_FORMAT_SUCCESS; - } - skip_index = MM_FILE_FORMAT_FLV; - goto PROBE_PROPER_FILE_TYPE; - } else { - debug_warning ("probe file type=%s\n", fileName); - skip_index = -1; - goto PROBE_PROPER_FILE_TYPE; + default: + debug_warning("probe file type=%s\n", fileName); + skip_index = -1; + goto PROBE_PROPER_FILE_TYPE; + break; } } else if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) { - char tempURIBuffer[MMFILE_URI_MAX_LEN] = {0,}; + char tempURIBuffer[MMFILE_URI_MAX_LEN] = {0, }; - sprintf (tempURIBuffer, "%s%u:%u", MMFILE_MEM_URI, (unsigned int)fileSrc->memory.ptr, fileSrc->memory.size); - *urifilename = mmfile_strdup (tempURIBuffer); + snprintf(tempURIBuffer, MMFILE_URI_MAX_LEN, "%s%u:%u", MMFILE_MEM_URI, (unsigned int)fileSrc->memory.ptr, fileSrc->memory.size); + *urifilename = mmfile_strdup(tempURIBuffer); if (!*urifilename) { - debug_error ("error: uri is NULL\n"); - return MMFILE_FORMAT_FAIL; + debug_error("error: uri is NULL\n"); + goto FILE_FORMAT_FAIL; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("uri: %s\n", *urifilename); - #endif + ret = mmfile_open(&fp, *urifilename, MMFILE_RDONLY); + + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto FILE_FORMAT_FAIL; + } + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("uri: %s\n", *urifilename); +#endif switch (fileSrc->memory.format) { case MM_FILE_FORMAT_3GP: { - if (MMFileFormatIsValidMP4 (*urifilename)) { + if (MMFileFormatIsValidMP4(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_3GP; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_3GP; goto PROBE_PROPER_FILE_TYPE; @@ -400,9 +507,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_MP4: { - if (MMFileFormatIsValidMP4 (*urifilename)) { + if (MMFileFormatIsValidMP4(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_MP4; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_MP4; goto PROBE_PROPER_FILE_TYPE; @@ -410,9 +517,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_AMR: { - if (MMFileFormatIsValidAMR (*urifilename)) { + if (MMFileFormatIsValidAMR(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_AMR; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_AMR; goto PROBE_PROPER_FILE_TYPE; @@ -420,9 +527,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_WAV: { - if (MMFileFormatIsValidWAV (*urifilename)) { + if (MMFileFormatIsValidWAV(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_WAV; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_WAV; goto PROBE_PROPER_FILE_TYPE; @@ -430,9 +537,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_MID: { - if (MMFileFormatIsValidMID (*urifilename)) { + if (MMFileFormatIsValidMID(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_MID; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_MID; goto PROBE_PROPER_FILE_TYPE; @@ -440,9 +547,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_MP3: { - if (MMFileFormatIsValidMP3 (*urifilename,5)) { + if (MMFileFormatIsValidMP3(fp, NULL, 5)) { *formatEnum = MM_FILE_FORMAT_MP3; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_MP3; goto PROBE_PROPER_FILE_TYPE; @@ -450,9 +557,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_AAC: { - if (MMFileFormatIsValidAAC (*urifilename)) { + if (MMFileFormatIsValidAAC(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_AAC; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_AAC; goto PROBE_PROPER_FILE_TYPE; @@ -460,9 +567,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_MMF: { - if (MMFileFormatIsValidMMF (*urifilename)) { + if (MMFileFormatIsValidMMF(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_MMF; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_MMF; goto PROBE_PROPER_FILE_TYPE; @@ -470,9 +577,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_IMELODY: { - if (MMFileFormatIsValidIMY (*urifilename)) { + if (MMFileFormatIsValidIMY(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_IMELODY; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_IMELODY; goto PROBE_PROPER_FILE_TYPE; @@ -480,9 +587,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_AVI: { - if (MMFileFormatIsValidAVI (*urifilename)) { + if (MMFileFormatIsValidAVI(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_AVI; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_AVI; goto PROBE_PROPER_FILE_TYPE; @@ -490,9 +597,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_DIVX: { - if (MMFileFormatIsValidAVI (*urifilename)) { + if (MMFileFormatIsValidAVI(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_DIVX; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_DIVX; goto PROBE_PROPER_FILE_TYPE; @@ -500,9 +607,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_ASF: { - if (MMFileFormatIsValidASF (*urifilename)) { + if (MMFileFormatIsValidASF(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_ASF; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_ASF; goto PROBE_PROPER_FILE_TYPE; @@ -510,9 +617,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_WMA: { - if (MMFileFormatIsValidWMA (*urifilename)) { + if (MMFileFormatIsValidWMA(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_WMA; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_WMA; goto PROBE_PROPER_FILE_TYPE; @@ -520,9 +627,9 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_WMV: { - if (MMFileFormatIsValidWMV (*urifilename)) { + if (MMFileFormatIsValidWMV(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_WMV; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_WMV; goto PROBE_PROPER_FILE_TYPE; @@ -530,60 +637,105 @@ _PreprocessFile (MMFileSourceType *fileSrc, char **urifilename, int *formatEnum, } case MM_FILE_FORMAT_OGG: { - if (MMFileFormatIsValidOGG (*urifilename)) { + if (MMFileFormatIsValidOGG(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_OGG; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_OGG; goto PROBE_PROPER_FILE_TYPE; } case MM_FILE_FORMAT_MATROSKA: { - if (MMFileFormatIsValidMatroska (*urifilename)) { + if (MMFileFormatIsValidMatroska(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_MATROSKA; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_MATROSKA; goto PROBE_PROPER_FILE_TYPE; } case MM_FILE_FORMAT_QT: { - if (MMFileFormatIsValidMP4 (*urifilename)) { + if (MMFileFormatIsValidMP4(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_QT; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_QT; goto PROBE_PROPER_FILE_TYPE; } case MM_FILE_FORMAT_FLAC: { - if (MMFileFormatIsValidFLAC (*urifilename)) { + if (MMFileFormatIsValidFLAC(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_FLAC; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_FLAC; goto PROBE_PROPER_FILE_TYPE; } case MM_FILE_FORMAT_FLV: { - if (MMFileFormatIsValidFLV (*urifilename)) { + if (MMFileFormatIsValidFLV(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_FLV; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } skip_index = MM_FILE_FORMAT_FLV; goto PROBE_PROPER_FILE_TYPE; } + case MM_FILE_FORMAT_REAL: { + if (MMFileFormatIsValidREAL(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_REAL; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_REAL; + goto PROBE_PROPER_FILE_TYPE; + } + + case MM_FILE_FORMAT_M2TS: { + if (MMFileFormatIsValidMPEGTS(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M2TS; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_M2TS; + goto PROBE_PROPER_FILE_TYPE; + } + + case MM_FILE_FORMAT_M2PS: { + if (MMFileFormatIsValidMPEGPS(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M2PS; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_M2PS; + goto PROBE_PROPER_FILE_TYPE; + } + + case MM_FILE_FORMAT_M1AUDIO: { + if (MMFileFormatIsValidMPEGAUDIO(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M1AUDIO; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_M1AUDIO; + goto PROBE_PROPER_FILE_TYPE; + } + + case MM_FILE_FORMAT_M1VIDEO: { + if (MMFileFormatIsValidMPEGVIDEO(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M1VIDEO; + goto FILE_FORMAT_SUCCESS; + } + skip_index = MM_FILE_FORMAT_M1VIDEO; + goto PROBE_PROPER_FILE_TYPE; + } + default: { - debug_warning ("probe fileformat type=%d (%d: autoscan)\n", fileSrc->memory.format, MM_FILE_FORMAT_INVALID); + debug_warning("probe fileformat type=%d (%d: autoscan)\n", fileSrc->memory.format, MM_FILE_FORMAT_INVALID); skip_index = -1; goto PROBE_PROPER_FILE_TYPE; break; } } } else { - debug_error ("error: invaild input type[memory|file]\n"); - return MMFILE_FORMAT_FAIL; + debug_error("error: invaild input type[memory|file]\n"); + goto FILE_FORMAT_FAIL; } PROBE_PROPER_FILE_TYPE: @@ -591,9 +743,9 @@ PROBE_PROPER_FILE_TYPE: if (index == skip_index) continue; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("search index = [%d]\n", index); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("search index = [%d]\n", index); +#endif switch (index) { case MM_FILE_FORMAT_QT: @@ -602,10 +754,10 @@ PROBE_PROPER_FILE_TYPE: if (skip_index == MM_FILE_FORMAT_QT || skip_index == MM_FILE_FORMAT_3GP || skip_index == MM_FILE_FORMAT_MP4) break; - if (MMFileFormatIsValidMP4 (*urifilename)) { + if (MMFileFormatIsValidMP4(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_3GP; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_3GP; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } @@ -616,10 +768,10 @@ PROBE_PROPER_FILE_TYPE: if (skip_index == MM_FILE_FORMAT_ASF || skip_index == MM_FILE_FORMAT_WMA || skip_index == MM_FILE_FORMAT_WMV) break; - if (MMFileFormatIsValidASF (*urifilename)) { + if (MMFileFormatIsValidASF(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_ASF; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_ASF; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } @@ -629,140 +781,194 @@ PROBE_PROPER_FILE_TYPE: if (skip_index == MM_FILE_FORMAT_DIVX || skip_index == MM_FILE_FORMAT_AVI) break; - if (MMFileFormatIsValidAVI(*urifilename)) { + if (MMFileFormatIsValidAVI(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_AVI; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_AVI; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_OGG: { - if (MMFileFormatIsValidOGG (*urifilename)) { + if (MMFileFormatIsValidOGG(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_OGG; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_OGG; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_AMR: { - if (MMFileFormatIsValidAMR (*urifilename)) { + if (MMFileFormatIsValidAMR(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_AMR; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_AMR; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_AAC: { - if (MMFileFormatIsValidAAC (*urifilename)) { + if (MMFileFormatIsValidAAC(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_AAC; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_AAC; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_MP3: { - if (MMFileFormatIsValidMP3 (*urifilename,50)) { + if (MMFileFormatIsValidMP3(fp, NULL, 50)) { *formatEnum = MM_FILE_FORMAT_MP3; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_MP3; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_WAV: { - if (MMFileFormatIsValidWAV (*urifilename)) { + if (MMFileFormatIsValidWAV(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_WAV; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_WAV; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_MID: { - if (MMFileFormatIsValidMID (*urifilename)) { + if (MMFileFormatIsValidMID(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_MID; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_MID; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_MMF: { - if (MMFileFormatIsValidMMF (*urifilename)) { + if (MMFileFormatIsValidMMF(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_MMF; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_MMF; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_IMELODY: { - if (MMFileFormatIsValidIMY (*urifilename)) { + if (MMFileFormatIsValidIMY(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_IMELODY; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_IMELODY; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_MATROSKA: { - if (MMFileFormatIsValidMatroska (*urifilename)) { + if (MMFileFormatIsValidMatroska(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_MATROSKA; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_MATROSKA; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_FLAC: { - if (MMFileFormatIsValidFLAC (*urifilename)) { + if (MMFileFormatIsValidFLAC(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_FLAC; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_FLAC; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; } break; } case MM_FILE_FORMAT_FLV: { - if (MMFileFormatIsValidFLV (*urifilename)) { + if (MMFileFormatIsValidFLV(fp, NULL)) { *formatEnum = MM_FILE_FORMAT_FLV; if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_FLV; - return MMFILE_FORMAT_SUCCESS; + goto FILE_FORMAT_SUCCESS; + } + break; + } + + case MM_FILE_FORMAT_REAL: { + if (MMFileFormatIsValidREAL(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_REAL; + if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_REAL; + goto FILE_FORMAT_SUCCESS; + } + break; + } + + case MM_FILE_FORMAT_M2TS: { + if (MMFileFormatIsValidMPEGTS(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M2TS; + if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_M2TS; + goto FILE_FORMAT_SUCCESS; + } + break; + } + + case MM_FILE_FORMAT_M2PS: { + if (MMFileFormatIsValidMPEGPS(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M2PS; + if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_M2PS; + goto FILE_FORMAT_SUCCESS; + } + break; + } + + case MM_FILE_FORMAT_M1AUDIO: { + if (MMFileFormatIsValidMPEGAUDIO(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M1AUDIO; + if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_M1AUDIO; + goto FILE_FORMAT_SUCCESS; + } + break; + } + + case MM_FILE_FORMAT_M1VIDEO: { + if (MMFileFormatIsValidMPEGVIDEO(fp, NULL)) { + *formatEnum = MM_FILE_FORMAT_M1VIDEO; + if (fileSrc->type == MM_FILE_SRC_TYPE_MEMORY) fileSrc->memory.format = MM_FILE_FORMAT_M1VIDEO; + goto FILE_FORMAT_SUCCESS; } break; } /* not supported file */ case MM_FILE_FORMAT_NUT: - case MM_FILE_FORMAT_REAL: case MM_FILE_FORMAT_AIFF: case MM_FILE_FORMAT_AU: case MM_FILE_FORMAT_VOB: case MM_FILE_FORMAT_JPG: - break; default: { - debug_error ("error: invaild format enum[%d]\n", index); + debug_error("error: invaild format enum[%d]\n", index); break; } } } +FILE_FORMAT_FAIL: if (index == MM_FILE_FORMAT_NUM) debug_error("Can't probe file type\n"); *formatEnum = -1; + + if (fp) + mmfile_close(fp); + return MMFILE_FORMAT_FAIL; + +FILE_FORMAT_SUCCESS: + if (fp) + mmfile_close(fp); + + return MMFILE_FORMAT_SUCCESS; } -static int _mmfile_format_close (MMFileFormatContext *formatContext, bool clean_all) +static int _mmfile_format_close(MMFileFormatContext *formatContext, bool clean_all) { if (NULL == formatContext) { - debug_error ("error: invalid params\n"); + debug_error("error: invalid params\n"); return MMFILE_FORMAT_FAIL; } @@ -774,33 +980,33 @@ static int _mmfile_format_close (MMFileFormatContext *formatContext, bool clean_ _CleanupFrameContext(formatContext, clean_all); if (formatContext) - mmfile_free (formatContext); + mmfile_free(formatContext); return MMFILE_FORMAT_SUCCESS; } EXPORT_API -int mmfile_format_open (MMFileFormatContext **formatContext, MMFileSourceType *fileSrc) +int mmfile_format_open(MMFileFormatContext **formatContext, MMFileSourceType *fileSrc) { int index = 0; int ret = 0; MMFileFormatContext *formatObject = NULL; if (NULL == fileSrc) { - debug_error ("error: invalid params\n"); + debug_error("error: invalid params\n"); return MMFILE_FORMAT_FAIL; } /* create formatContext object */ - formatObject = mmfile_malloc (sizeof (MMFileFormatContext)); + formatObject = mmfile_malloc(sizeof(MMFileFormatContext)); if (NULL == formatObject) { - debug_error ("error: mmfile_malloc fail for formatObject\n"); + debug_error("error: mmfile_malloc fail for formatObject\n"); *formatContext = NULL; return MMFILE_FORMAT_FAIL; } - memset (formatObject, 0x00, sizeof (MMFileFormatContext)); + memset(formatObject, 0x00, sizeof(MMFileFormatContext)); mmfile_register_io_all(); @@ -812,9 +1018,9 @@ int mmfile_format_open (MMFileFormatContext **formatContext, MMFileSourceType *f /** * Format detect and validation check. */ - ret = _PreprocessFile (fileSrc, &formatObject->uriFileName, &formatObject->formatType, &formatObject->isdrm); + ret = _PreprocessFile(fileSrc, &formatObject->uriFileName, &formatObject->formatType); if (MMFILE_FORMAT_SUCCESS != ret) { - debug_error ("error: _PreprocessFile fail\n"); + debug_error("error: _PreprocessFile fail\n"); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -825,16 +1031,16 @@ int mmfile_format_open (MMFileFormatContext **formatContext, MMFileSourceType *f * Open format function. */ if (NULL == MMFileOpenFunc[formatObject->formatType]) { - debug_error ("error: Not implemented \n"); + debug_error("error: Not implemented \n"); ret = MMFILE_FORMAT_FAIL; goto find_valid_handler; } - ret = MMFileOpenFunc[formatObject->formatType] (formatObject); + ret = MMFileOpenFunc[formatObject->formatType](formatObject); if (MMFILE_FORMAT_FAIL == ret) { - debug_error ("error: Try other formats\n"); + debug_error("error: Try other formats\n"); ret = MMFILE_FORMAT_FAIL; -// goto find_valid_handler; +/* goto find_valid_handler; */ goto exception; } @@ -844,9 +1050,9 @@ int mmfile_format_open (MMFileFormatContext **formatContext, MMFileSourceType *f find_valid_handler: formatObject->pre_checked = 0; /*do check file format*/ - for (index = 0; index < MM_FILE_FORMAT_NUM+1; index++) { + for (index = 0; index < MM_FILE_FORMAT_NUM + 1; index++) { if (NULL == MMFileOpenFunc[index]) { - debug_error ("error: Not implemented \n"); + debug_error("error: Not implemented \n"); ret = MMFILE_FORMAT_FAIL; continue; } @@ -854,9 +1060,9 @@ find_valid_handler: if (formatObject->formatType == index) continue; - ret = MMFileOpenFunc[index] (formatObject); + ret = MMFileOpenFunc[index](formatObject); if (MMFILE_FORMAT_FAIL == ret) { -// _CleanupFrameContext (formatObject, true); +/* _CleanupFrameContext(formatObject, true); */ continue; } @@ -866,8 +1072,8 @@ find_valid_handler: formatObject->formatType = index; if (index == MM_FILE_FORMAT_NUM + 1 && MMFILE_FORMAT_FAIL == ret) { - debug_error ("can't find file format handler\n"); - _CleanupFrameContext (formatObject, true); + debug_error("can't find file format handler\n"); + _CleanupFrameContext(formatObject, true); ret = MMFILE_FORMAT_FAIL; goto exception; } @@ -878,48 +1084,48 @@ find_valid_handler: return MMFILE_FORMAT_SUCCESS; exception: - _mmfile_format_close (formatObject, true); + _mmfile_format_close(formatObject, true); *formatContext = NULL; return ret; } EXPORT_API -int mmfile_format_read_stream (MMFileFormatContext *formatContext) +int mmfile_format_read_stream(MMFileFormatContext *formatContext) { if (NULL == formatContext || NULL == formatContext->ReadStream) { - debug_error ("error: invalid params\n"); + debug_error("error: invalid params\n"); return MMFILE_FORMAT_FAIL; } - return formatContext->ReadStream (formatContext); + return formatContext->ReadStream(formatContext); } EXPORT_API -int mmfile_format_read_frame (MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) +int mmfile_format_read_frame(MMFileFormatContext *formatContext, unsigned int timestamp, MMFileFormatFrame *frame) { - if (NULL == formatContext || NULL == frame || NULL == formatContext->ReadFrame ) { - debug_error ("error: invalid params\n"); + if (NULL == formatContext || NULL == frame || NULL == formatContext->ReadFrame) { + debug_error("error: invalid params\n"); return MMFILE_FORMAT_FAIL; } - return formatContext->ReadFrame (formatContext, timestamp, frame); + return formatContext->ReadFrame(formatContext, timestamp, frame); } EXPORT_API -int mmfile_format_read_tag (MMFileFormatContext *formatContext) +int mmfile_format_read_tag(MMFileFormatContext *formatContext) { if (NULL == formatContext || NULL == formatContext->ReadTag) { - debug_error ("error: invalid params\n"); + debug_error("error: invalid params\n"); return MMFILE_FORMAT_FAIL; } - return formatContext->ReadTag (formatContext); + return formatContext->ReadTag(formatContext); } EXPORT_API -int mmfile_format_close (MMFileFormatContext *formatContext) +int mmfile_format_close(MMFileFormatContext *formatContext) { return _mmfile_format_close(formatContext, false); } diff --git a/include/mm_file.h b/include/mm_file.h index f752690..c7f8771 100755 --- a/include/mm_file.h +++ b/include/mm_file.h @@ -127,7 +127,7 @@ MMHandleType tag_attrs = NULL; mm_file_create_tag_attrs(&tag_attrs, filename); // get attributes of tag -ret = mm_file_get_attrs( tag_attrs, +ret = mm_file_get_attrs(tag_attrs, &err_attr_name, MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len, MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len, @@ -148,7 +148,7 @@ mm_file_destroy_tag_attrs(tag_attrs); * @endcode */ -int mm_file_create_tag_attrs(MMHandleType * tag_attrs, const char * filename); +int mm_file_create_tag_attrs(MMHandleType *tag_attrs, const char *filename); /** * This function is to destory the tag attribute handle which is created by mm_file_create_tag_attrs().<BR> @@ -171,7 +171,7 @@ MMHandleType tag_attrs = NULL; mm_file_create_tag_attrs(&tag_attrs, filename); // get attributes of tag -ret = mm_file_get_attrs( tag_attrs, +ret = mm_file_get_attrs(tag_attrs, &err_attr_name, MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len, MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len, @@ -194,23 +194,23 @@ mm_file_destroy_tag_attrs(tag_attrs); */ int mm_file_destroy_tag_attrs(MMHandleType tag_attrs); - /** - * This function is to create content attribute from media file.<BR> - * Handle can be used to get actual content information by mm_file_get_attrs() after this function.<BR> - * Handle should be destroyed using mm_file_destroy_content_attrs() after use.<BR> - * - * @param content_attrs [out] content attribute handle. - * @param filename [in] file path. - * - * @return This function returns MM_ERROR_NONE on success, or negative value with error code. - * - * @remark Filename must be UTF-8 format. - * - * @pre File should be exists. - * @post Handle is ready to use. - * @see mm_file_destroy_content_attrs, mm_file_get_attrs - * @par Example: - * @code +/** + * This function is to create content attribute from media file.<BR> + * Handle can be used to get actual content information by mm_file_get_attrs() after this function.<BR> + * Handle should be destroyed using mm_file_destroy_content_attrs() after use.<BR> + * + * @param content_attrs [out] content attribute handle. + * @param filename [in] file path. + * + * @return This function returns MM_ERROR_NONE on success, or negative value with error code. + * + * @remark Filename must be UTF-8 format. + * + * @pre File should be exists. + * @post Handle is ready to use. + * @see mm_file_destroy_content_attrs, mm_file_get_attrs + * @par Example: + * @code #include <mm_file.h> // get track info @@ -267,8 +267,8 @@ if (video_track_num) // Destory content handle mm_file_destroy_content_attrs(content_attrs); - * @endcode - */ + * @endcode + */ int mm_file_create_content_attrs(MMHandleType *content_attrs, const char *filename); /** @@ -447,7 +447,7 @@ int mm_file_get_attrs(MMHandleType attrs, char **err_attr_name, const char *firs #include <mm_file.h> // create tag handle from memory -mm_file_create_tag_attrs_from_memory (&tag_attrs, data, size, MM_FILE_FORMAT_MP3); +mm_file_create_tag_attrs_from_memory(&tag_attrs, data, size, MM_FILE_FORMAT_MP3); // get audio artist & album tag mm_file_get_attrs(tag_attrs, @@ -484,7 +484,7 @@ int mm_file_create_tag_attrs_from_memory(MMHandleType *tag_attrs, const void *da #include <mm_file.h> // create content handle from memory -mm_file_create_content_attrs_from_memory (&content_attrs, data, size, MM_FILE_FORMAT_MP3); +mm_file_create_content_attrs_from_memory(&content_attrs, data, size, MM_FILE_FORMAT_MP3); // get audio bit rate and sample rate mm_file_get_attrs(content_attrs, @@ -523,31 +523,31 @@ printf ("Testing mm_file_get_stream_info()....audio=%d, video=%d\n", audio_track * @endcode */ -int mm_file_get_stream_info(const char* filename, int *audio_stream_num, int *video_stream_num); - - /** - * This function is to get the content attributes without thumbnail from media file.<BR> - * This function is almost same as mm_file_create_content_attrs() except extracting thumbnail feature.<BR> - * As this function is not extracting thumbnail, this is faster than mm_file_create_content_attrs(). - * - * @param content_attrs [out] content attribute handle. - * @param filename [in] file path. - * - * @return This function returns MM_ERROR_NONE on success, or negative value with error code. - * - * @remark Filename must be UTF-8 format. - * - * @pre File should be exists. - * @post Handle is ready to use. - * @see mm_file_destroy_content_attrs, mm_file_get_attrs - * @par Example:: - * @code +int mm_file_get_stream_info(const char *filename, int *audio_stream_num, int *video_stream_num); + +/** + * This function is to get the content attributes without thumbnail from media file.<BR> + * This function is almost same as mm_file_create_content_attrs() except extracting thumbnail feature.<BR> + * As this function is not extracting thumbnail, this is faster than mm_file_create_content_attrs(). + * + * @param content_attrs [out] content attribute handle. + * @param filename [in] file path. + * + * @return This function returns MM_ERROR_NONE on success, or negative value with error code. + * + * @remark Filename must be UTF-8 format. + * + * @pre File should be exists. + * @post Handle is ready to use. + * @see mm_file_destroy_content_attrs, mm_file_get_attrs + * @par Example:: + * @code #include <mm_file.h> // create content handle mm_file_create_content_attrs_simple(&content_attrs, filename); -// get width,height information +// get width, height information mm_file_get_attrs(content_attrs, NULL, MM_FILE_CONTENT_VIDEO_WIDTH, &ccontent.video_w, @@ -556,8 +556,8 @@ mm_file_get_attrs(content_attrs, // Destory content handle mm_file_destroy_content_attrs(content_attrs); - * @endcode - */ + * @endcode + */ int mm_file_create_content_attrs_simple(MMHandleType *content_attrs, const char *filename); int mm_file_create_content_attrs_safe(MMHandleType *content_attrs, const char *filename); @@ -586,11 +586,11 @@ int mm_file_get_synclyrics_info(MMHandleType tag_attrs, int index, unsigned long * @see metadata_extractor_create(), metadata_extractor_destroy() */ -int mm_file_get_video_frame(const char* path, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height); +int mm_file_get_video_frame(const char *path, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height); int mm_file_get_video_frame_from_memory(const void *data, unsigned int datasize, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height); -int mm_file_check_uhqa(const char* filename, bool *is_uhqa); +int mm_file_check_uhqa(const char *filename, bool *is_uhqa); /** @} diff --git a/include/mm_file_codecs.h b/include/mm_file_codecs.h index 5233336..f229900 100755 --- a/include/mm_file_codecs.h +++ b/include/mm_file_codecs.h @@ -34,40 +34,38 @@ extern "C" { #define MMFILE_AUDIO_DECODE 1 -typedef struct _mmfileframe -{ - unsigned int width; - unsigned int height; - unsigned int version; - unsigned int configLen; - unsigned int frameDataSize; - unsigned char *frameData; - void *configData; +typedef struct _mmfileframe { + unsigned int width; + unsigned int height; + unsigned int version; + unsigned int configLen; + unsigned int frameDataSize; + unsigned char *frameData; + void *configData; } MMFileCodecFrame; typedef struct _mmfilecodecctx MMFileCodecContext; -struct _mmfilecodecctx -{ - /* MMFILE_AUDIO_DECODE or MMFILE_VIDEO_DECODE */ - int codecType; - int codecId; - int version; +struct _mmfilecodecctx { + /* MMFILE_AUDIO_DECODE or MMFILE_VIDEO_DECODE */ + int codecType; + int codecId; + int version; - /* private data */ - void *privateData; + /* private data */ + void *privateData; - /* resource free */ - int (*Decode) (MMFileCodecContext*,MMFileCodecFrame*); - int (*Close) (MMFileCodecContext*); + /* resource free */ + int (*Decode)(MMFileCodecContext *, MMFileCodecFrame *); + int (*Close)(MMFileCodecContext *); }; #ifndef __MMFILE_DYN_LOADING__ -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); -#endif +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); +#endif #ifdef __cplusplus } diff --git a/include/mm_file_debug.h b/include/mm_file_debug.h new file mode 100755 index 0000000..bc5dc2b --- /dev/null +++ b/include/mm_file_debug.h @@ -0,0 +1,106 @@ +/* + * 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_DEBUG_H_ +#define _MMFILE_DEBUG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <dlog.h> + +#ifdef LOG_TAG +#undef LOG_TAG +#endif + +#define LOG_TAG "MM_FILEINFO" + +/*#define LOG_COLOR */ + +#ifdef LOG_COLOR +#define FONT_COLOR_RESET "\033[0m" +#define FONT_COLOR_RED "\033[31m" +#define FONT_COLOR_GREEN "\033[32m" +#define FONT_COLOR_YELLOW "\033[33m" +#define FONT_COLOR_BLUE "\033[34m" +#define FONT_COLOR_PURPLE "\033[35m" +#define FONT_COLOR_CYAN "\033[36m" +#define FONT_COLOR_GRAY "\033[37m" + +#define debug_log(fmt, arg...) do { \ + LOGD(FONT_COLOR_RESET fmt, ##arg); \ + } while (0) + +#define debug_msg(fmt, arg...) do { \ + LOGD(FONT_COLOR_RESET fmt, ##arg); \ + } while (0) + +#define debug_warning(fmt, arg...) do { \ + LOGW(FONT_COLOR_GREEN fmt, ##arg); \ + } while (0) + +#define debug_error(fmt, arg...) do { \ + LOGE(FONT_COLOR_RED fmt, ##arg); \ + } while (0) + +#define debug_fenter() do { \ + LOGE(FONT_COLOR_RESET "<ENTER> \n"); \ + } while (0) + +#define debug_fleave() do { \ + LOGE(FONT_COLOR_RESET "<LEAVE> \n"); \ + } while (0) + +#else + +#define debug_log(fmt, arg...) do { \ + LOGD(" "fmt"", ##arg); \ + } while (0) + +#define debug_msg(fmt, arg...) do { \ + LOGD(" "fmt"", ##arg); \ + } while (0) + +#define debug_warning(fmt, arg...) do { \ + LOGW(" "fmt"", ##arg); \ + } while (0) + +#define debug_error(fmt, arg...) do { \ + LOGE(" "fmt"", ##arg); \ + } while (0) + +#define debug_fenter() do { \ + LOGE("<ENTER> \n"); \ + } while (0) + +#define debug_fleave() do { \ + LOGE("<LEAVE> \n"); \ + } while (0) +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _MMFILE_DEBUG_H_ */ + diff --git a/include/mm_file_format_frame.h b/include/mm_file_format_frame.h index 53a7af4..62c6b33 100755 --- a/include/mm_file_format_frame.h +++ b/include/mm_file_format_frame.h @@ -20,7 +20,7 @@ */ #ifndef __MMFILE_DYN_LOADING__ -int mmfile_format_get_frame(const char* path, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height); +int mmfile_format_get_frame(const char *path, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height); int mmfile_format_get_frame_from_memory(const void *data, unsigned int datasize, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height); #endif diff --git a/include/mm_file_formats.h b/include/mm_file_formats.h index fbf9028..273b023 100755 --- a/include/mm_file_formats.h +++ b/include/mm_file_formats.h @@ -35,17 +35,17 @@ extern "C" { #define MMFILE_FORMAT_FAIL 0 -#define MM_FILE_SET_MEDIA_FILE_SRC(Media,Filename) do { \ - (Media).type = MM_FILE_SRC_TYPE_FILE; \ - (Media).file.path = ((strstr(Filename,"file://")!=NULL)? Filename+7:Filename); \ -} while (0); +#define MM_FILE_SET_MEDIA_FILE_SRC(Media, Filename) do { \ + (Media).type = MM_FILE_SRC_TYPE_FILE; \ + (Media).file.path = ((strstr(Filename, "file://")!=NULL) ? Filename+7:Filename); \ + } while (0); -#define MM_FILE_SET_MEDIA_MEM_SRC(Media,Memory,Size,Format) do { \ - (Media).type = MM_FILE_SRC_TYPE_MEMORY; \ - (Media).memory.ptr = (Memory); \ - (Media).memory.size = (Size); \ - (Media).memory.format = (Format); \ -} while (0); +#define MM_FILE_SET_MEDIA_MEM_SRC(Media, Memory, Size, Format) do { \ + (Media).type = MM_FILE_SRC_TYPE_MEMORY; \ + (Media).memory.ptr = (Memory); \ + (Media).memory.size = (Size); \ + (Media).memory.format = (Format); \ + } while (0); @@ -54,14 +54,6 @@ enum { MM_FILE_SRC_TYPE_MEMORY, }; -enum { - MM_FILE_DRM_NONE = 0, /*not drm file*/ - MM_FILE_DRM_OMA, /*oma drm*/ - MM_FILE_DRM_DIVX, /*divx drm*/ - MM_FILE_DRM_PROTECTED, /*This is drm file but not oma or divx*/ -}; - - typedef struct _mm_file_source { int type; union { @@ -118,7 +110,6 @@ struct _MMFileFormatContext { /* contents information */ int duration; /* milliseconds */ int isseekable; - int isdrm; /*drm type. see MM_FILE_DRM_XXX*/ int videoTotalTrackNum; int audioTotalTrackNum; int nbStreams; @@ -165,18 +156,18 @@ struct _MMFileFormatContext { void *privateCodecData; /* function pointer */ - int (*ReadStream) (MMFileFormatContext*); - int (*ReadFrame) (MMFileFormatContext*,unsigned int,MMFileFormatFrame*); - int (*ReadTag) (MMFileFormatContext*); - int (*Close) (MMFileFormatContext*); + int (*ReadStream)(MMFileFormatContext *); + int (*ReadFrame)(MMFileFormatContext *, unsigned int, MMFileFormatFrame *); + int (*ReadTag)(MMFileFormatContext *); + int (*Close)(MMFileFormatContext *); }; #ifndef __MMFILE_DYN_LOADING__ -int mmfile_format_open (MMFileFormatContext **formatContext, MMFileSourceType *fileSrc); -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_format_open(MMFileFormatContext **formatContext, MMFileSourceType *fileSrc); +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); #endif #ifdef __cplusplus diff --git a/mm-fileinfo.pc.in b/mm-fileinfo.pc.in index d39e454..05dafd4 100644..100755 --- a/mm-fileinfo.pc.in +++ b/mm-fileinfo.pc.in @@ -5,7 +5,7 @@ includedir = @includedir@ Name : mm-fileinfo Description : Multimedia Framework FileInfo Library -Requires : mm-log mm-common glib-2.0 +Requires : dlog mm-common glib-2.0 Version : @VERSION@ Libs : -L${libdir} -lmmffile -lmmfile_utils Cflags : -I${includedir}/mmf -D__MMFILE_DYN_LOADING__ @@ -32,9 +32,9 @@ /* internal MM header files */ #include <mm_attrs_private.h> -#include <mm_debug.h> /* internal MM File headers */ +#include "mm_file_debug.h" #include "mm_file_formats.h" #include "mm_file_format_frame.h" #include "mm_file_codecs.h" @@ -43,13 +43,13 @@ #include <sys/time.h> -//#define CHECK_TIME +/*#define CHECK_TIME */ #ifdef CHECK_TIME int64_t gettime(void) { struct timeval tv; - gettimeofday(&tv,NULL); + gettimeofday(&tv, NULL); return (int64_t)tv.tv_sec * 1000000 + tv.tv_usec; } #endif @@ -99,80 +99,80 @@ typedef struct { * global values. */ static mmf_attrs_construct_info_t g_tag_attrs[] = { - {"tag-artist", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-title", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-album", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-album-artist", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-genre", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-author", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-copyright", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-date", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-description", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-comment", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-artwork", MMF_VALUE_TYPE_DATA, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-artwork-size", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"tag-artwork-mime", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-track-num", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-classification", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-rating", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-longitude", MM_ATTRS_TYPE_DOUBLE, MM_ATTRS_FLAG_RW, (void *)0}, - {"tag-latitude", MM_ATTRS_TYPE_DOUBLE, MM_ATTRS_FLAG_RW, (void *)0}, - {"tag-altitude", MM_ATTRS_TYPE_DOUBLE, MM_ATTRS_FLAG_RW, (void *)0}, - {"tag-conductor", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-unsynclyrics", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-synclyrics-num", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"tag-synclyrics", MMF_VALUE_TYPE_DATA, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-recdate", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-rotate", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"tag-cdis", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"tag-smta", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"tag-artist", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-title", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-album", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-album-artist", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-genre", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-author", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-copyright", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-date", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-description", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-comment", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-artwork", MMF_VALUE_TYPE_DATA, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-artwork-size", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"tag-artwork-mime", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-track-num", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-classification", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-rating", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-longitude", MM_ATTRS_TYPE_DOUBLE, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"tag-latitude", MM_ATTRS_TYPE_DOUBLE, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"tag-altitude", MM_ATTRS_TYPE_DOUBLE, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"tag-conductor", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-unsynclyrics", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-synclyrics-num", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"tag-synclyrics", MMF_VALUE_TYPE_DATA, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-recdate", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-rotate", MMF_VALUE_TYPE_STRING, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"tag-cdis", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"tag-smta", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, }; static mmf_attrs_construct_info_t g_content_attrs[] = { - {"content-duration", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-video-codec", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-video-bitrate", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-video-fps", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-video-width", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-video-height", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-video-thumbnail", MMF_VALUE_TYPE_DATA, MM_ATTRS_FLAG_RW, (void *)NULL}, - {"content-video-track-index", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-video-track-count", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-audio-codec", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-audio-bitrate", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-audio-channels", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-audio-samplerate", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-audio-track-index", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-audio-track-count", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, - {"content-audio-bitpersample", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-duration", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-video-codec", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-video-bitrate", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-video-fps", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-video-width", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-video-height", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-video-thumbnail", MMF_VALUE_TYPE_DATA, MM_ATTRS_FLAG_RW, (void *)NULL}, + {(char *)"content-video-track-index", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-video-track-count", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-audio-codec", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-audio-bitrate", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-audio-channels", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-audio-samplerate", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-audio-track-index", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-audio-track-count", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, + {(char *)"content-audio-bitpersample", MMF_VALUE_TYPE_INT, MM_ATTRS_FLAG_RW, (void *)0}, }; #ifdef __MMFILE_DYN_LOADING__ #define MMFILE_FORMAT_SO_FILE_NAME "libmmfile_formats.so" #define MMFILE_CODEC_SO_FILE_NAME "libmmfile_codecs.so" -int (*mmfile_format_open) (MMFileFormatContext **formatContext, MMFileSourceType *fileSrc); -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_decode) (MMFileCodecContext *codecContext, MMFileCodecFrame *output); -int (*mmfile_codec_close) (MMFileCodecContext *codecContext); -int (*mmfile_format_get_frame) (const char* path, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height); -int (*mmfile_format_get_frame_from_memory) (const void *data, unsigned int datasize, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height); +int (*mmfile_format_open)(MMFileFormatContext **formatContext, MMFileSourceType *fileSrc); +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_decode)(MMFileCodecContext *codecContext, MMFileCodecFrame *output); +int (*mmfile_codec_close)(MMFileCodecContext *codecContext); +int (*mmfile_format_get_frame)(const char *path, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height); +int (*mmfile_format_get_frame_from_memory)(const void *data, unsigned int datasize, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height); #endif #ifdef __MMFILE_DYN_LOADING__ -static int _load_dynamic_functions (MMFILE_FUNC_HANDLE* pHandle) +static int _load_dynamic_functions(MMFILE_FUNC_HANDLE *pHandle) { -// static int dll_func_initialized = 0; //disabled +/* static int dll_func_initialized = 0; //disabled */ int ret = 0; /* Get from function argument */ void *formatFuncHandle = NULL; - void *codecFuncHandle = NULL; + void *codecFuncHandle = NULL; /* disabled if (dll_func_initialized) { @@ -180,54 +180,54 @@ static int _load_dynamic_functions (MMFILE_FUNC_HANDLE* pHandle) } */ - formatFuncHandle = dlopen (MMFILE_FORMAT_SO_FILE_NAME, RTLD_LAZY); + formatFuncHandle = dlopen(MMFILE_FORMAT_SO_FILE_NAME, RTLD_LAZY); if (!formatFuncHandle) { - debug_error ("error: %s\n", dlerror()); + debug_error("error: %s\n", "libmmfile_formats.so open error"); ret = 0; goto exception; } - mmfile_format_open = dlsym (formatFuncHandle, "mmfile_format_open"); - mmfile_format_read_stream = dlsym (formatFuncHandle, "mmfile_format_read_stream"); - mmfile_format_read_frame = dlsym (formatFuncHandle, "mmfile_format_read_frame"); - mmfile_format_read_tag = dlsym (formatFuncHandle, "mmfile_format_read_tag"); - mmfile_format_close = dlsym (formatFuncHandle, "mmfile_format_close"); + mmfile_format_open = dlsym(formatFuncHandle, "mmfile_format_open"); + mmfile_format_read_stream = dlsym(formatFuncHandle, "mmfile_format_read_stream"); + mmfile_format_read_frame = dlsym(formatFuncHandle, "mmfile_format_read_frame"); + mmfile_format_read_tag = dlsym(formatFuncHandle, "mmfile_format_read_tag"); + mmfile_format_close = dlsym(formatFuncHandle, "mmfile_format_close"); - if ( !mmfile_format_open || - !mmfile_format_read_stream || - !mmfile_format_read_frame || - !mmfile_format_read_tag || - !mmfile_format_close) { + if (!mmfile_format_open || + !mmfile_format_read_stream || + !mmfile_format_read_frame || + !mmfile_format_read_tag || + !mmfile_format_close) { - debug_error ("error: %s\n", dlerror()); + debug_error("error: %s\n", "format function load error"); ret = 0; goto exception; } /*closed at app termination.*/ - //dlclose (formatFuncHandle); + /*dlclose (formatFuncHandle); */ - codecFuncHandle = dlopen (MMFILE_CODEC_SO_FILE_NAME, RTLD_LAZY | RTLD_GLOBAL); + codecFuncHandle = dlopen(MMFILE_CODEC_SO_FILE_NAME, RTLD_LAZY | RTLD_GLOBAL); if (!codecFuncHandle) { - debug_error ("error: %s\n", dlerror()); + debug_error("error: %s\n", "libmmfile_codecs.so open error"); ret = 0; goto exception; } - mmfile_codec_open = dlsym (codecFuncHandle, "mmfile_codec_open"); - mmfile_codec_decode = dlsym (codecFuncHandle, "mmfile_codec_decode"); - mmfile_codec_close = dlsym (codecFuncHandle, "mmfile_codec_close"); + mmfile_codec_open = dlsym(codecFuncHandle, "mmfile_codec_open"); + mmfile_codec_decode = dlsym(codecFuncHandle, "mmfile_codec_decode"); + mmfile_codec_close = dlsym(codecFuncHandle, "mmfile_codec_close"); - if ( !mmfile_codec_open || !mmfile_codec_decode || !mmfile_codec_close) { - debug_error ("error: %s\n", dlerror()); + if (!mmfile_codec_open || !mmfile_codec_decode || !mmfile_codec_close) { + debug_error("error: %s\n", "codec function load error"); ret = 0; goto exception; } /*closed at app termination.*/ - //dlclose (codecFuncHandle); + /*dlclose (codecFuncHandle); */ -// dll_func_initialized = 1; // disabled +/* dll_func_initialized = 1; // disabled */ pHandle->codecFuncHandle = codecFuncHandle; pHandle->formatFuncHandle = formatFuncHandle; @@ -235,27 +235,25 @@ static int _load_dynamic_functions (MMFILE_FUNC_HANDLE* pHandle) return 1; exception: - if (formatFuncHandle) dlclose (formatFuncHandle); - if (codecFuncHandle) dlclose (codecFuncHandle); + if (formatFuncHandle) dlclose(formatFuncHandle); + if (codecFuncHandle) dlclose(codecFuncHandle); return ret; } -static void _unload_dynamic_functions (MMFILE_FUNC_HANDLE* pHandle) +static void _unload_dynamic_functions(MMFILE_FUNC_HANDLE *pHandle) { #ifdef __MMFILE_TEST_MODE__ debug_fenter(); #endif - if (pHandle->formatFuncHandle) - { - dlclose (pHandle->formatFuncHandle); + if (pHandle->formatFuncHandle) { + dlclose(pHandle->formatFuncHandle); } - if (pHandle->codecFuncHandle) - { - dlclose (pHandle->codecFuncHandle); + if (pHandle->codecFuncHandle) { + dlclose(pHandle->codecFuncHandle); } - + #ifdef __MMFILE_TEST_MODE__ debug_fleave(); #endif @@ -268,32 +266,31 @@ static void _unload_dynamic_functions (MMFILE_FUNC_HANDLE* pHandle) * local functions. */ static int -_is_file_exist (const char *filename) +_is_file_exist(const char *filename) { int ret = 1; if (filename) { - const char* to_access = (strstr(filename,"file://")!=NULL)? filename+7:filename; - ret = access (to_access, R_OK ); + const char *to_access = (strstr(filename, "file://") != NULL) ? filename + 7 : filename; + ret = access(to_access, R_OK); if (ret != 0) { - debug_error ("file [%s] not found.\n", to_access); + debug_error("file [%s] not found.\n", to_access); } } return !ret; } static int -_info_set_attr_media (mmf_attrs_t *attrs, MMFileFormatContext *formatContext) +_info_set_attr_media(mmf_attrs_t *attrs, MMFileFormatContext *formatContext) { int ret = 0; MMHandleType hattrs = CAST_MM_HANDLE(attrs); - if (formatContext->commandType == MM_FILE_TAG) - { + if (formatContext->commandType == MM_FILE_TAG) { if (formatContext->title) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_TITLE, formatContext->title); if (formatContext->artist) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_ARTIST, formatContext->artist); if (formatContext->author) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_AUTHOR, formatContext->author); - if (formatContext->composer && formatContext->author == NULL) - mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_AUTHOR, formatContext->composer); + 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->album_artist) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_ALBUM_ARTIST, formatContext->album_artist); if (formatContext->copyright) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_COPYRIGHT, formatContext->copyright); @@ -301,146 +298,142 @@ _info_set_attr_media (mmf_attrs_t *attrs, MMFileFormatContext *formatContext) if (formatContext->comment) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_COMMENT, 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); - if (formatContext->year) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_DATE, formatContext->year); - if (formatContext->tagTrackNum) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_TRACK_NUM, formatContext->tagTrackNum); + if (formatContext->year) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_DATE, formatContext->year); + if (formatContext->tagTrackNum) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_TRACK_NUM, formatContext->tagTrackNum); if (formatContext->rating) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_RATING, formatContext->rating); if (formatContext->conductor) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_CONDUCTOR, formatContext->conductor); if (formatContext->recDate) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_RECDATE, formatContext->recDate); if (formatContext->rotate) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_ROTATE, formatContext->rotate); - mm_attrs_set_double_by_name(hattrs, MM_FILE_TAG_LONGITUDE, formatContext->longitude); - mm_attrs_set_double_by_name(hattrs, MM_FILE_TAG_LATIDUE, formatContext->latitude); - mm_attrs_set_double_by_name(hattrs, MM_FILE_TAG_ALTIDUE, formatContext->altitude); - mm_attrs_set_int_by_name(hattrs, MM_FILE_TAG_SYNCLYRICS_NUM, formatContext->syncLyricsNum); - mm_attrs_set_int_by_name(hattrs, MM_FILE_TAG_CDIS, formatContext->cdis); - mm_attrs_set_int_by_name(hattrs, MM_FILE_TAG_SMTA, formatContext->smta); + mm_attrs_set_double_by_name(hattrs, MM_FILE_TAG_LONGITUDE, formatContext->longitude); + mm_attrs_set_double_by_name(hattrs, MM_FILE_TAG_LATIDUE, formatContext->latitude); + mm_attrs_set_double_by_name(hattrs, MM_FILE_TAG_ALTIDUE, formatContext->altitude); + mm_attrs_set_int_by_name(hattrs, MM_FILE_TAG_SYNCLYRICS_NUM, formatContext->syncLyricsNum); + mm_attrs_set_int_by_name(hattrs, MM_FILE_TAG_CDIS, formatContext->cdis); + mm_attrs_set_int_by_name(hattrs, MM_FILE_TAG_SMTA, formatContext->smta); if ((formatContext->syncLyricsNum > 0) && (formatContext->syncLyrics)) - mm_attrs_set_data_by_name (hattrs, MM_FILE_TAG_SYNCLYRICS, formatContext->syncLyrics, formatContext->syncLyricsNum); + mm_attrs_set_data_by_name(hattrs, MM_FILE_TAG_SYNCLYRICS, formatContext->syncLyrics, formatContext->syncLyricsNum); if (formatContext->unsyncLyrics) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_UNSYNCLYRICS, formatContext->unsyncLyrics); - + if (formatContext->artwork && formatContext->artworkSize > 0) { void *artworkCopy = NULL; - artworkCopy = mmfile_malloc ((formatContext->artworkSize)); - if ( NULL != artworkCopy ) { - memcpy (artworkCopy, formatContext->artwork, formatContext->artworkSize); - mm_attrs_set_data_by_name (hattrs, MM_FILE_TAG_ARTWORK,artworkCopy, formatContext->artworkSize); - mm_attrs_set_int_by_name (hattrs, MM_FILE_TAG_ARTWORK_SIZE, formatContext->artworkSize); + artworkCopy = mmfile_malloc((formatContext->artworkSize)); + if (NULL != artworkCopy) { + memcpy(artworkCopy, formatContext->artwork, formatContext->artworkSize); + mm_attrs_set_data_by_name(hattrs, MM_FILE_TAG_ARTWORK, artworkCopy, formatContext->artworkSize); + mm_attrs_set_int_by_name(hattrs, MM_FILE_TAG_ARTWORK_SIZE, formatContext->artworkSize); if (formatContext->artworkMime) mm_attrs_set_string_by_name(hattrs, MM_FILE_TAG_ARTWORK_MIME, formatContext->artworkMime); } } - } - else if (formatContext->commandType == MM_FILE_CONTENTS) - { + } else if (formatContext->commandType == MM_FILE_CONTENTS) { /*get duration*/ - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_DURATION, formatContext->duration); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_AUDIO_TRACK_COUNT, formatContext->audioTotalTrackNum); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_VIDEO_TRACK_COUNT, formatContext->videoTotalTrackNum); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_DURATION, formatContext->duration); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_AUDIO_TRACK_COUNT, formatContext->audioTotalTrackNum); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_VIDEO_TRACK_COUNT, formatContext->videoTotalTrackNum); if (formatContext->videoTotalTrackNum > 0 && - formatContext->nbStreams > 0 && - formatContext->streams[MMFILE_VIDEO_STREAM]) { + formatContext->nbStreams > 0 && + formatContext->streams[MMFILE_VIDEO_STREAM]) { MMFileFormatStream *videoStream = formatContext->streams[MMFILE_VIDEO_STREAM]; - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_VIDEO_CODEC, videoStream->codecId); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_VIDEO_BITRATE, videoStream->bitRate); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_VIDEO_FPS, videoStream->framePerSec); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_VIDEO_WIDTH, videoStream->width); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_VIDEO_HEIGHT, videoStream->height); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_VIDEO_CODEC, videoStream->codecId); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_VIDEO_BITRATE, videoStream->bitRate); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_VIDEO_FPS, videoStream->framePerSec); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_VIDEO_WIDTH, videoStream->width); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_VIDEO_HEIGHT, videoStream->height); if (formatContext->thumbNail && formatContext->thumbNail->frameData) { void *thumbNailCopy = NULL; - thumbNailCopy = mmfile_malloc (formatContext->thumbNail->frameSize); + thumbNailCopy = mmfile_malloc(formatContext->thumbNail->frameSize); if (NULL != thumbNailCopy) { - memcpy (thumbNailCopy, formatContext->thumbNail->frameData, formatContext->thumbNail->frameSize); - mm_attrs_set_data_by_name (hattrs, MM_FILE_CONTENT_VIDEO_THUMBNAIL, thumbNailCopy, formatContext->thumbNail->frameSize); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_VIDEO_WIDTH, formatContext->thumbNail->frameWidth); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_VIDEO_HEIGHT, formatContext->thumbNail->frameHeight); + memcpy(thumbNailCopy, formatContext->thumbNail->frameData, formatContext->thumbNail->frameSize); + mm_attrs_set_data_by_name(hattrs, MM_FILE_CONTENT_VIDEO_THUMBNAIL, thumbNailCopy, formatContext->thumbNail->frameSize); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_VIDEO_WIDTH, formatContext->thumbNail->frameWidth); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_VIDEO_HEIGHT, formatContext->thumbNail->frameHeight); } } } if (formatContext->audioTotalTrackNum > 0 && - formatContext->nbStreams > 0 && - formatContext->streams[MMFILE_AUDIO_STREAM]) { + formatContext->nbStreams > 0 && + formatContext->streams[MMFILE_AUDIO_STREAM]) { MMFileFormatStream *audioStream = formatContext->streams[MMFILE_AUDIO_STREAM]; - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_AUDIO_CODEC, audioStream->codecId); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_AUDIO_CHANNELS, audioStream->nbChannel); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_AUDIO_BITRATE, audioStream->bitRate); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_AUDIO_SAMPLERATE, audioStream->samplePerSec); - mm_attrs_set_int_by_name (hattrs, MM_FILE_CONTENT_AUDIO_BITPERSAMPLE, audioStream->bitPerSample); - } - } - else - { + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_AUDIO_CODEC, audioStream->codecId); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_AUDIO_CHANNELS, audioStream->nbChannel); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_AUDIO_BITRATE, audioStream->bitRate); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_AUDIO_SAMPLERATE, audioStream->samplePerSec); + mm_attrs_set_int_by_name(hattrs, MM_FILE_CONTENT_AUDIO_BITPERSAMPLE, audioStream->bitPerSample); + } + } else { ret = -1; } /*commit attrs*/ - ret = mmf_attrs_commit ((MMHandleType)hattrs); + ret = mmf_attrs_commit((MMHandleType)hattrs); return ret; } static int -_get_contents_info (mmf_attrs_t *attrs, MMFileSourceType *src, MMFILE_PARSE_INFO *parse) +_get_contents_info(mmf_attrs_t *attrs, MMFileSourceType *src, MMFILE_PARSE_INFO *parse) { MMFileFormatContext *formatContext = NULL; MMFileCodecContext *codecContext = NULL; - MMFileFormatFrame frameContext = {0,}; - MMFileCodecFrame codecFrame = {0,}; - MMFileCodecFrame decodedFrame = {0,}; + MMFileFormatFrame frameContext = {0, }; + MMFileCodecFrame codecFrame = {0, }; + MMFileCodecFrame decodedFrame = {0, }; int ret = 0; - + if (!src || !parse) return MM_ERROR_FILE_INTERNAL; - ret = mmfile_format_open (&formatContext, src); + ret = mmfile_format_open(&formatContext, src); if (MMFILE_FORMAT_FAIL == ret || formatContext == NULL) { - debug_error ("error: mmfile_format_open\n"); + debug_error("error: mmfile_format_open\n"); ret = MM_ERROR_FILE_INTERNAL; goto exception; } - /** - * if MM_FILE_PARSE_TYPE_SIMPLE, just get number of each stream. - */ - parse->audio_track_num = formatContext->audioTotalTrackNum; - parse->video_track_num = formatContext->videoTotalTrackNum; - if (parse->type >= MM_FILE_PARSE_TYPE_NORMAL) { if (parse->type == MM_FILE_PARSE_TYPE_SAFE) formatContext->cdis = 1; - ret = mmfile_format_read_stream (formatContext); + ret = mmfile_format_read_stream(formatContext); if (MMFILE_FORMAT_FAIL == ret) { - debug_error ("error: mmfile_format_read_stream\n"); + debug_error("error: mmfile_format_read_stream\n"); ret = MM_ERROR_FILE_INTERNAL; goto exception; } + parse->audio_track_num = formatContext->audioTotalTrackNum; + parse->video_track_num = formatContext->videoTotalTrackNum; + /* check uhqa content*/ - if (parse->is_uhqa = formatContext->streams[MMFILE_AUDIO_STREAM] != NULL) + if (formatContext->streams[MMFILE_AUDIO_STREAM] != NULL) { parse->is_uhqa = formatContext->streams[MMFILE_AUDIO_STREAM]->is_uhqa; - - if (parse->type >= MM_FILE_PARSE_TYPE_ALL) { + } else { + parse->is_uhqa = FALSE; + } + + if (parse->type >= MM_FILE_PARSE_TYPE_ALL) { if (formatContext->videoTotalTrackNum > 0) { if (parse->type != MM_FILE_PARSE_TYPE_SAFE) { - if (formatContext->formatType == MM_FILE_FORMAT_3GP ||formatContext->formatType == MM_FILE_FORMAT_MP4) { - MMFileUtilGetMetaDataFromMP4 (formatContext); + if (formatContext->formatType == MM_FILE_FORMAT_3GP || formatContext->formatType == MM_FILE_FORMAT_MP4) { + MMFileUtilGetMetaDataFromMP4(formatContext); } } MMFileFormatStream *videoStream = formatContext->streams[MMFILE_VIDEO_STREAM]; unsigned int timestamp = _SEEK_POINT_; - ret = mmfile_format_read_frame (formatContext, timestamp, &frameContext); + ret = mmfile_format_read_frame(formatContext, timestamp, &frameContext); if (MMFILE_FORMAT_FAIL == ret) { - debug_error ("error: mmfile_format_read_frame\n"); + debug_error("error: mmfile_format_read_frame\n"); ret = MM_ERROR_FILE_INTERNAL; goto warning; } @@ -454,24 +447,24 @@ _get_contents_info (mmf_attrs_t *attrs, MMFileSourceType *src, MMFILE_PARSE_INFO codecFrame.configData = frameContext.configData; codecFrame.version = videoStream->version; - ret = mmfile_codec_open (&codecContext, MMFILE_VIDEO_DECODE, videoStream->codecId, &codecFrame); + ret = mmfile_codec_open(&codecContext, MMFILE_VIDEO_DECODE, videoStream->codecId, &codecFrame); if (MMFILE_FORMAT_FAIL == ret) { - debug_error ("error: mmfile_codec_open\n"); + debug_error("error: mmfile_codec_open\n"); ret = MM_ERROR_FILE_INTERNAL; goto warning; } - ret = mmfile_codec_decode (codecContext, &decodedFrame); + ret = mmfile_codec_decode(codecContext, &decodedFrame); if (MMFILE_FORMAT_FAIL == ret) { - debug_error ("error: mmfile_codec_decode\n"); + debug_error("error: mmfile_codec_decode\n"); ret = MM_ERROR_FILE_INTERNAL; goto warning; } - + /* set video thumbnail */ - formatContext->thumbNail = mmfile_malloc (sizeof(MMFileFormatFrame)); + formatContext->thumbNail = mmfile_malloc(sizeof(MMFileFormatFrame)); if (NULL == formatContext->thumbNail) { - debug_error ("error: mmfile_malloc\n"); + debug_error("error: mmfile_malloc\n"); ret = MM_ERROR_FILE_INTERNAL; goto warning; } @@ -483,9 +476,9 @@ _get_contents_info (mmf_attrs_t *attrs, MMFileSourceType *src, MMFILE_PARSE_INFO formatContext->thumbNail->configLenth = 0; formatContext->thumbNail->configData = NULL; } else { - formatContext->thumbNail = mmfile_malloc (sizeof(MMFileFormatFrame)); + formatContext->thumbNail = mmfile_malloc(sizeof(MMFileFormatFrame)); if (NULL == formatContext->thumbNail) { - debug_error ("error: mmfile_format_read_frame\n"); + debug_error("error: mmfile_format_read_frame\n"); ret = MM_ERROR_FILE_INTERNAL; goto warning; } @@ -499,42 +492,52 @@ _get_contents_info (mmf_attrs_t *attrs, MMFileSourceType *src, MMFILE_PARSE_INFO } } } + } else { + /** + * if MM_FILE_PARSE_TYPE_SIMPLE, just get number of each stream. + */ + parse->audio_track_num = formatContext->audioTotalTrackNum; + parse->video_track_num = formatContext->videoTotalTrackNum; } #ifdef __MMFILE_TEST_MODE__ - mmfile_format_print_frame (&frameContext); + mmfile_format_print_frame(&frameContext); #endif formatContext->commandType = MM_FILE_CONTENTS; if (parse->type >= MM_FILE_PARSE_TYPE_NORMAL) - _info_set_attr_media (attrs, formatContext); + _info_set_attr_media(attrs, formatContext); if (frameContext.bCompressed) { - if (frameContext.frameData) mmfile_free (frameContext.frameData); - if (frameContext.configData) mmfile_free (frameContext.configData); + if (frameContext.frameData) mmfile_free(frameContext.frameData); + if (frameContext.configData) mmfile_free(frameContext.configData); if (decodedFrame.frameData) { - mmfile_free (decodedFrame.frameData); + mmfile_free(decodedFrame.frameData); formatContext->thumbNail->frameData = NULL; } if (decodedFrame.configData) { - mmfile_free (decodedFrame.configData); + mmfile_free(decodedFrame.configData); formatContext->thumbNail->configData = NULL; } } else { if (frameContext.frameData) { - mmfile_free (frameContext.frameData); + mmfile_free(frameContext.frameData); formatContext->thumbNail->frameData = NULL; } if (frameContext.configData) { - mmfile_free (frameContext.configData); + mmfile_free(frameContext.configData); formatContext->thumbNail->configData = NULL; } } - if (formatContext) { mmfile_format_close (formatContext); } - if (codecContext) { mmfile_codec_close (codecContext); } + if (formatContext) { + mmfile_format_close(formatContext); + } + if (codecContext) { + mmfile_codec_close(codecContext); + } return MM_ERROR_NONE; @@ -543,107 +546,117 @@ warning: if (frameContext.bCompressed) { if (frameContext.frameData) - mmfile_free (frameContext.frameData); + mmfile_free(frameContext.frameData); - if (frameContext.configData) - mmfile_free (frameContext.configData); + if (frameContext.configData) + mmfile_free(frameContext.configData); if (decodedFrame.frameData) { - mmfile_free (decodedFrame.frameData); + mmfile_free(decodedFrame.frameData); formatContext->thumbNail->frameData = NULL; } if (decodedFrame.configData) { - mmfile_free (decodedFrame.configData); + mmfile_free(decodedFrame.configData); formatContext->thumbNail->configData = NULL; } } else { if (frameContext.frameData) { - mmfile_free (frameContext.frameData); + mmfile_free(frameContext.frameData); formatContext->thumbNail->frameData = NULL; } - + if (frameContext.configData) { - mmfile_free (frameContext.configData); + mmfile_free(frameContext.configData); formatContext->thumbNail->configData = NULL; } } if (parse->type >= MM_FILE_PARSE_TYPE_NORMAL) - _info_set_attr_media (attrs, formatContext); + _info_set_attr_media(attrs, formatContext); - if (formatContext) { mmfile_format_close (formatContext); } - if (codecContext) { mmfile_codec_close (codecContext); } + if (formatContext) { + mmfile_format_close(formatContext); + } + if (codecContext) { + mmfile_codec_close(codecContext); + } return MM_ERROR_NONE; exception: if (frameContext.bCompressed) { if (frameContext.frameData) - mmfile_free (frameContext.frameData); + mmfile_free(frameContext.frameData); - if (frameContext.configData) - mmfile_free (frameContext.configData); + if (frameContext.configData) + mmfile_free(frameContext.configData); if (decodedFrame.frameData) { - mmfile_free (decodedFrame.frameData); + mmfile_free(decodedFrame.frameData); formatContext->thumbNail->frameData = NULL; } if (decodedFrame.configData) { - mmfile_free (decodedFrame.configData); + mmfile_free(decodedFrame.configData); formatContext->thumbNail->configData = NULL; } } else { if (frameContext.frameData) { - mmfile_free (frameContext.frameData); + mmfile_free(frameContext.frameData); formatContext->thumbNail->frameData = NULL; } - + if (frameContext.configData) { - mmfile_free (frameContext.configData); + mmfile_free(frameContext.configData); formatContext->thumbNail->configData = NULL; } } - if (formatContext) { mmfile_format_close (formatContext); } - // if (codecContext) { mmfile_codec_close (codecContext); } /*dead code*/ + if (formatContext) { + mmfile_format_close(formatContext); + } + /* if (codecContext) { mmfile_codec_close(codecContext); } */ /*dead code*/ return ret; } static int -_get_tag_info (mmf_attrs_t *attrs, MMFileSourceType *src) +_get_tag_info(mmf_attrs_t *attrs, MMFileSourceType *src) { MMFileFormatContext *formatContext = NULL; int ret = 0; - ret = mmfile_format_open (&formatContext, src); + ret = mmfile_format_open(&formatContext, src); if (MMFILE_FORMAT_FAIL == ret || formatContext == NULL) { - debug_error ("error: mmfile_format_open\n"); + debug_error("error: mmfile_format_open\n"); ret = MM_ERROR_FILE_INTERNAL; goto exception; } - ret = mmfile_format_read_tag (formatContext); + ret = mmfile_format_read_tag(formatContext); if (MMFILE_FORMAT_FAIL == ret) { - debug_warning ("reading tag is fail\n"); + debug_warning("reading tag is fail\n"); ret = MM_ERROR_FILE_INTERNAL; goto exception; } formatContext->commandType = MM_FILE_TAG; - _info_set_attr_media (attrs, formatContext); + _info_set_attr_media(attrs, formatContext); - if (formatContext) { mmfile_format_close (formatContext); } + if (formatContext) { + mmfile_format_close(formatContext); + } return MM_ERROR_NONE; exception: - if (formatContext) { mmfile_format_close (formatContext); } + if (formatContext) { + mmfile_format_close(formatContext); + } return MM_ERROR_FILE_INTERNAL; } @@ -657,28 +670,24 @@ int mm_file_get_attrs(MMHandleType attrs, char **err_attr_name, const char *firs int ret = MM_ERROR_NONE; va_list var_args; - if ( !attrs ) - { - debug_error ("Invalid arguments [attrs 0]\n"); + if (!attrs) { + debug_error("Invalid arguments [attrs 0]\n"); return MM_ERROR_INVALID_ARGUMENT; } - - if ( first_attribute_name == NULL) - { - debug_error ("Invalid arguments [first_attribute_name null]\n"); + + if (first_attribute_name == NULL) { + debug_error("Invalid arguments [first_attribute_name null]\n"); return MM_ERROR_INVALID_ARGUMENT; } /* get requested attributes */ - va_start (var_args, first_attribute_name); + va_start(var_args, first_attribute_name); ret = mm_attrs_get_valist(attrs, err_attr_name, first_attribute_name, var_args); - va_end (var_args); + va_end(var_args); - if (ret != MM_ERROR_NONE) - { - if (err_attr_name) - { - debug_error ("failed to get %s\n", *err_attr_name); + if (ret != MM_ERROR_NONE) { + if (err_attr_name) { + debug_error("failed to get %s\n", *err_attr_name); } } @@ -688,34 +697,34 @@ int mm_file_get_attrs(MMHandleType attrs, char **err_attr_name, const char *firs int mm_file_get_synclyrics_info(MMHandleType tag_attrs, int index, unsigned long *time_info, char **lyrics) { int ret = MM_ERROR_NONE; - AvSynclyricsInfo* sync_lyric_item = NULL; + AvSynclyricsInfo *sync_lyric_item = NULL; GList *synclyrics_list = NULL; #ifdef __MMFILE_TEST_MODE__ debug_fenter(); #endif - if ( (mmf_attrs_t*)tag_attrs == NULL) { - debug_error ("invalid handle"); + if ((mmf_attrs_t *)tag_attrs == NULL) { + debug_error("invalid handle"); return MM_ERROR_INVALID_ARGUMENT; } - 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"); - #endif + 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"); +#endif return ret; } - - if(synclyrics_list != NULL) { - sync_lyric_item = (AvSynclyricsInfo*)g_list_nth_data(synclyrics_list, index); + if (synclyrics_list != NULL) { + + sync_lyric_item = (AvSynclyricsInfo *)g_list_nth_data(synclyrics_list, index); - if(sync_lyric_item == NULL) { - #ifdef __MMFILE_TEST_MODE__ - debug_warning ( "synclyric item is NULL"); - #endif + if (sync_lyric_item == NULL) { +#ifdef __MMFILE_TEST_MODE__ + debug_warning("synclyric item is NULL"); +#endif return MM_ERROR_COMMON_ATTR_NOT_EXIST; } @@ -723,14 +732,14 @@ int mm_file_get_synclyrics_info(MMHandleType tag_attrs, int index, unsigned long *lyrics = sync_lyric_item->lyric_info; } else { - #ifdef __MMFILE_TEST_MODE__ - debug_warning ( "synclyrics_list is NULL"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_warning("synclyrics_list is NULL"); +#endif return MM_ERROR_COMMON_ATTR_NOT_EXIST; } - + return ret; - + } int mm_file_create_tag_attrs(MMHandleType *tag_attrs, const char *filename) @@ -745,58 +754,58 @@ int mm_file_create_tag_attrs(MMHandleType *tag_attrs, const char *filename) /* Check argument here */ if (tag_attrs == NULL) { - debug_error ("Invalid arguments [tag null]\n"); + debug_error("Invalid arguments [tag null]\n"); return MM_ERROR_INVALID_ARGUMENT; } if (filename == NULL) { - debug_error ("Invalid arguments [filename null]\n"); + debug_error("Invalid arguments [filename null]\n"); return MM_ERROR_INVALID_ARGUMENT; } - if ( strlen (filename) == 0) { - debug_error ("Invalid arguments [filename size 0]\n"); + if (strlen(filename) == 0) { + debug_error("Invalid arguments [filename size 0]\n"); return MM_ERROR_INVALID_ARGUMENT; } #ifdef __MMFILE_DYN_LOADING__ MMFILE_FUNC_HANDLE func_handle; - - ret = _load_dynamic_functions (&func_handle); + + ret = _load_dynamic_functions(&func_handle); if (ret == 0) { - debug_error ("load library error\n"); + debug_error("load library error\n"); return MM_ERROR_FILE_INTERNAL; } #endif /*set source file infomation*/ - MM_FILE_SET_MEDIA_FILE_SRC (src, filename); + MM_FILE_SET_MEDIA_FILE_SRC(src, filename); - ret = _is_file_exist (filename); + ret = _is_file_exist(filename); if (!ret) { ret = MM_ERROR_FILE_NOT_FOUND; goto END; } /*set attrs*/ - attrs = (mmf_attrs_t *) mmf_attrs_new_from_data ("tag", g_tag_attrs, ARRAY_SIZE (g_tag_attrs), NULL, NULL); + attrs = (mmf_attrs_t *) mmf_attrs_new_from_data("tag", g_tag_attrs, ARRAY_SIZE(g_tag_attrs), NULL, NULL); if (!attrs) { - debug_error ("attribute internal error.\n"); + debug_error("attribute internal error.\n"); ret = MM_ERROR_FILE_INTERNAL; goto END; } - ret = _get_tag_info (attrs, &src); + ret = _get_tag_info(attrs, &src); if (ret != MM_ERROR_NONE) { - mmf_attrs_free ((MMHandleType)attrs); + mmf_attrs_free((MMHandleType)attrs); attrs = NULL; - debug_error ("failed to get tag: %s\n", filename); + debug_error("failed to get tag: %s\n", filename); } *tag_attrs = (MMHandleType)attrs; END: #ifdef __MMFILE_DYN_LOADING__ - _unload_dynamic_functions (&func_handle); + _unload_dynamic_functions(&func_handle); #endif #ifdef __MMFILE_TEST_MODE__ @@ -818,24 +827,24 @@ int mm_file_destroy_tag_attrs(MMHandleType tag_attrs) debug_fenter(); #endif - if ( (mmf_attrs_t*)tag_attrs == NULL) { - debug_error ("invalid handle.\n"); + if ((mmf_attrs_t *)tag_attrs == NULL) { + debug_error("invalid handle.\n"); return MM_ERROR_INVALID_ARGUMENT; } - ret = mm_attrs_get_data_by_name (tag_attrs, MM_FILE_TAG_ARTWORK, &artwork); - + ret = mm_attrs_get_data_by_name(tag_attrs, MM_FILE_TAG_ARTWORK, &artwork); + if (artwork != NULL) { - mmfile_free (artwork); + mmfile_free(artwork); } - ret = mm_attrs_get_data_by_name (tag_attrs, MM_FILE_TAG_SYNCLYRICS, (void **)&synclyrics_list); + ret = mm_attrs_get_data_by_name(tag_attrs, MM_FILE_TAG_SYNCLYRICS, (void **)&synclyrics_list); - if(synclyrics_list != NULL) { + if (synclyrics_list != NULL) { mm_file_free_synclyrics_list(synclyrics_list); } - mmf_attrs_free (tag_attrs); + mmf_attrs_free(tag_attrs); #ifdef __MMFILE_TEST_MODE__ debug_fleave(); @@ -845,11 +854,11 @@ int mm_file_destroy_tag_attrs(MMHandleType tag_attrs) } EXPORT_API -int mm_file_create_content_attrs (MMHandleType *contents_attrs, const char *filename) +int mm_file_create_content_attrs(MMHandleType *contents_attrs, const char *filename) { mmf_attrs_t *attrs = NULL; - MMFileSourceType src = {0,}; - MMFILE_PARSE_INFO parse = {0,}; + MMFileSourceType src = {0, }; + MMFILE_PARSE_INFO parse = {0, }; int ret = 0; #ifdef __MMFILE_TEST_MODE__ @@ -858,15 +867,15 @@ int mm_file_create_content_attrs (MMHandleType *contents_attrs, const char *file /* Check argument here */ if (contents_attrs == NULL) { - debug_error ("Invalid arguments [contents null]\n"); + debug_error("Invalid arguments [contents null]\n"); return MM_ERROR_INVALID_ARGUMENT; } if (filename == NULL) { - debug_error ("Invalid arguments [filename null]\n"); + debug_error("Invalid arguments [filename null]\n"); return MM_ERROR_INVALID_ARGUMENT; } - if ( strlen (filename) == 0) { - debug_error ("Invalid arguments [filename size 0]\n"); + if (strlen(filename) == 0) { + debug_error("Invalid arguments [filename size 0]\n"); return MM_ERROR_INVALID_ARGUMENT; } @@ -874,47 +883,47 @@ int mm_file_create_content_attrs (MMHandleType *contents_attrs, const char *file #ifdef __MMFILE_DYN_LOADING__ MMFILE_FUNC_HANDLE func_handle; - #ifdef CHECK_TIME - int64_t ti; +#ifdef CHECK_TIME + int64_t ti; ti = gettime(); - #endif - - ret = _load_dynamic_functions (&func_handle); +#endif + + ret = _load_dynamic_functions(&func_handle); if (ret == 0) { - debug_error ("load library error\n"); + debug_error("load library error\n"); return MM_ERROR_FILE_INTERNAL; } - #ifdef CHECK_TIME +#ifdef CHECK_TIME debug_msg("_load_dynamic_functions() = %lld\n", gettime() - ti); - #endif - +#endif + #endif /*set source file infomation*/ - MM_FILE_SET_MEDIA_FILE_SRC (src, filename); + MM_FILE_SET_MEDIA_FILE_SRC(src, filename); - ret = _is_file_exist (filename); + ret = _is_file_exist(filename); if (!ret) { ret = MM_ERROR_FILE_NOT_FOUND; goto END; } /*set attrs*/ - attrs = (mmf_attrs_t *) mmf_attrs_new_from_data ("content", g_content_attrs, ARRAY_SIZE (g_content_attrs), NULL, NULL); + attrs = (mmf_attrs_t *) mmf_attrs_new_from_data("content", g_content_attrs, ARRAY_SIZE(g_content_attrs), NULL, NULL); if (!attrs) { - debug_error ("attribute internal error.\n"); + debug_error("attribute internal error.\n"); ret = MM_ERROR_FILE_INTERNAL; goto END; } - + parse.type = MM_FILE_PARSE_TYPE_ALL; - ret = _get_contents_info (attrs, &src, &parse); + ret = _get_contents_info(attrs, &src, &parse); if (ret != MM_ERROR_NONE) { - mmf_attrs_free ((MMHandleType)attrs); + mmf_attrs_free((MMHandleType)attrs); attrs = NULL; - debug_error ("failed to get contents: %s\n", filename); + debug_error("failed to get contents: %s\n", filename); } *contents_attrs = (MMHandleType) attrs; @@ -923,15 +932,15 @@ int mm_file_create_content_attrs (MMHandleType *contents_attrs, const char *file END: #ifdef __MMFILE_DYN_LOADING__ - #ifdef CHECK_TIME +#ifdef CHECK_TIME ti = gettime(); - #endif +#endif - _unload_dynamic_functions (&func_handle); + _unload_dynamic_functions(&func_handle); - #ifdef CHECK_TIME +#ifdef CHECK_TIME debug_msg("_unload_dynamic_functions() = %lld\n", gettime() - ti); - #endif +#endif #endif @@ -944,11 +953,11 @@ END: EXPORT_API -int mm_file_create_tag_attrs_from_memory (MMHandleType *tag_attrs, const void *data, unsigned int size, int format) +int mm_file_create_tag_attrs_from_memory(MMHandleType *tag_attrs, const void *data, unsigned int size, int format) { mmf_attrs_t *attrs = NULL; MMFileSourceType src; - MMFILE_PARSE_INFO parse = {0,}; + /*MMFILE_PARSE_INFO parse = {0, };*/ int ret = 0; #ifdef __MMFILE_TEST_MODE__ @@ -957,43 +966,43 @@ int mm_file_create_tag_attrs_from_memory (MMHandleType *tag_attrs, const void *d /* Check argument here */ if (tag_attrs == NULL || data == NULL) { - debug_error ("Invalid arguments\n"); + debug_error("Invalid arguments\n"); return MM_ERROR_INVALID_ARGUMENT; } #ifdef __MMFILE_DYN_LOADING__ MMFILE_FUNC_HANDLE func_handle; - ret = _load_dynamic_functions (&func_handle); + ret = _load_dynamic_functions(&func_handle); if (ret == 0) { - debug_error ("load library error\n"); + debug_error("load library error\n"); return MM_ERROR_FILE_INTERNAL; } #endif - MM_FILE_SET_MEDIA_MEM_SRC (src, data, size, format); + MM_FILE_SET_MEDIA_MEM_SRC(src, data, size, format); /*set attrs*/ - attrs = (mmf_attrs_t *) mmf_attrs_new_from_data ("tag", g_tag_attrs, ARRAY_SIZE (g_tag_attrs), NULL, NULL); + attrs = (mmf_attrs_t *) mmf_attrs_new_from_data("tag", g_tag_attrs, ARRAY_SIZE(g_tag_attrs), NULL, NULL); if (!attrs) { - debug_error ("attribute internal error.\n"); + debug_error("attribute internal error.\n"); ret = MM_ERROR_FILE_INTERNAL; goto END; } - parse.type = MM_FILE_PARSE_TYPE_ALL; - ret = _get_tag_info (attrs, &src); + /*parse.type = MM_FILE_PARSE_TYPE_ALL;*/ + ret = _get_tag_info(attrs, &src); if (ret != MM_ERROR_NONE) { - mmf_attrs_free ((MMHandleType)attrs); + mmf_attrs_free((MMHandleType)attrs); attrs = NULL; - debug_error ("failed to get tag"); + debug_error("failed to get tag"); } *tag_attrs = (MMHandleType)attrs; END: #ifdef __MMFILE_DYN_LOADING__ - _unload_dynamic_functions (&func_handle); + _unload_dynamic_functions(&func_handle); #endif #ifdef __MMFILE_TEST_MODE__ @@ -1005,11 +1014,11 @@ END: EXPORT_API -int mm_file_create_content_attrs_from_memory (MMHandleType *contents_attrs, const void *data, unsigned int size, int format) +int mm_file_create_content_attrs_from_memory(MMHandleType *contents_attrs, const void *data, unsigned int size, int format) { mmf_attrs_t *attrs = NULL; MMFileSourceType src; - MMFILE_PARSE_INFO parse = {0,}; + MMFILE_PARSE_INFO parse = {0, }; int ret = 0; #ifdef __MMFILE_TEST_MODE__ @@ -1018,43 +1027,43 @@ int mm_file_create_content_attrs_from_memory (MMHandleType *contents_attrs, cons /* Check argument here */ if (contents_attrs == NULL || data == NULL) { - debug_error ("Invalid arguments\n"); + debug_error("Invalid arguments\n"); return MM_ERROR_INVALID_ARGUMENT; } #ifdef __MMFILE_DYN_LOADING__ MMFILE_FUNC_HANDLE func_handle; - - ret = _load_dynamic_functions (&func_handle); + + ret = _load_dynamic_functions(&func_handle); if (ret == 0) { - debug_error ("load library error\n"); + debug_error("load library error\n"); return MM_ERROR_FILE_INTERNAL; } #endif - MM_FILE_SET_MEDIA_MEM_SRC (src, data, size, format); + MM_FILE_SET_MEDIA_MEM_SRC(src, data, size, format); /*set attrs*/ - attrs = (mmf_attrs_t *) mmf_attrs_new_from_data ("content", g_content_attrs, ARRAY_SIZE (g_content_attrs), NULL, NULL); + attrs = (mmf_attrs_t *) mmf_attrs_new_from_data("content", g_content_attrs, ARRAY_SIZE(g_content_attrs), NULL, NULL); if (!attrs) { - debug_error ("attribute internal error.\n"); + debug_error("attribute internal error.\n"); ret = MM_ERROR_FILE_INTERNAL; goto END; } parse.type = MM_FILE_PARSE_TYPE_ALL; - ret = _get_contents_info (attrs, &src, &parse); + ret = _get_contents_info(attrs, &src, &parse); if (ret != MM_ERROR_NONE) { - mmf_attrs_free ((MMHandleType)attrs); + mmf_attrs_free((MMHandleType)attrs); attrs = NULL; - debug_error ("failed to get contents"); + debug_error("failed to get contents"); } *contents_attrs = (MMHandleType)attrs; END: #ifdef __MMFILE_DYN_LOADING__ - _unload_dynamic_functions (&func_handle); + _unload_dynamic_functions(&func_handle); #endif #ifdef __MMFILE_TEST_MODE__ @@ -1066,7 +1075,7 @@ END: EXPORT_API -int mm_file_destroy_content_attrs (MMHandleType contents_attrs) +int mm_file_destroy_content_attrs(MMHandleType contents_attrs) { void *thumbnail = NULL; int ret = MM_ERROR_NONE; @@ -1075,17 +1084,17 @@ int mm_file_destroy_content_attrs (MMHandleType contents_attrs) debug_fenter(); #endif - if ((mmf_attrs_t*)contents_attrs == NULL) { - debug_error ("invalid handle.\n"); + if ((mmf_attrs_t *)contents_attrs == NULL) { + debug_error("invalid handle.\n"); return MM_ERROR_INVALID_ARGUMENT; } ret = mm_attrs_get_data_by_name(contents_attrs, MM_FILE_CONTENT_VIDEO_THUMBNAIL, &thumbnail); if (thumbnail != NULL) { - mmfile_free (thumbnail); + mmfile_free(thumbnail); } - mmf_attrs_free (contents_attrs); + mmf_attrs_free(contents_attrs); #ifdef __MMFILE_TEST_MODE__ debug_fleave(); @@ -1096,10 +1105,10 @@ int mm_file_destroy_content_attrs (MMHandleType contents_attrs) EXPORT_API -int mm_file_get_stream_info(const char* filename, int *audio_stream_num, int *video_stream_num) +int mm_file_get_stream_info(const char *filename, int *audio_stream_num, int *video_stream_num) { - MMFileSourceType src = {0,}; - MMFILE_PARSE_INFO parse = {0,}; + MMFileSourceType src = {0, }; + MMFILE_PARSE_INFO parse = {0, }; int ret = 0; @@ -1107,34 +1116,40 @@ int mm_file_get_stream_info(const char* filename, int *audio_stream_num, int *vi debug_fenter(); #endif - if (filename == NULL || strlen (filename) == 0 || audio_stream_num == NULL || video_stream_num == NULL) { - debug_error ("Invalid arguments\n"); + if (filename == NULL || strlen(filename) == 0 || audio_stream_num == NULL || video_stream_num == NULL) { + debug_error("Invalid arguments\n"); return MM_ERROR_INVALID_ARGUMENT; } #ifdef __MMFILE_DYN_LOADING__ MMFILE_FUNC_HANDLE func_handle; - ret = _load_dynamic_functions (&func_handle); + ret = _load_dynamic_functions(&func_handle); if (ret == 0) { - debug_error ("load library error\n"); + debug_error("load library error\n"); return MM_ERROR_FILE_INTERNAL; } #endif /*set source file infomation*/ - MM_FILE_SET_MEDIA_FILE_SRC (src, filename); + MM_FILE_SET_MEDIA_FILE_SRC(src, filename); - ret = _is_file_exist (filename); + ret = _is_file_exist(filename); if (!ret) { ret = MM_ERROR_FILE_NOT_FOUND; goto END; } parse.type = MM_FILE_PARSE_TYPE_SIMPLE; - ret = _get_contents_info (NULL, &src, &parse); + ret = _get_contents_info(NULL, &src, &parse); if (ret != MM_ERROR_NONE) { - debug_error ("failed to get stream info: %s\n", filename); + debug_error("failed to get stream info: %s\n", filename); + } else { + if (parse.audio_track_num == 0 && parse.video_track_num == 0) { + debug_error("empty header. retry to get stream info: %s\n", filename); + parse.type = MM_FILE_PARSE_TYPE_NORMAL; + ret = _get_contents_info(NULL, &src, &parse); + } } /*set number of each stream*/ @@ -1143,7 +1158,7 @@ int mm_file_get_stream_info(const char* filename, int *audio_stream_num, int *vi END: #ifdef __MMFILE_DYN_LOADING__ - _unload_dynamic_functions (&func_handle); + _unload_dynamic_functions(&func_handle); #endif #ifdef __MMFILE_TEST_MODE__ @@ -1157,8 +1172,8 @@ EXPORT_API int mm_file_create_content_attrs_simple(MMHandleType *contents_attrs, const char *filename) { mmf_attrs_t *attrs = NULL; - MMFileSourceType src = {0,}; - MMFILE_PARSE_INFO parse = {0,}; + MMFileSourceType src = {0, }; + MMFILE_PARSE_INFO parse = {0, }; int ret = 0; #ifdef __MMFILE_TEST_MODE__ @@ -1167,53 +1182,53 @@ int mm_file_create_content_attrs_simple(MMHandleType *contents_attrs, const char #ifdef __MMFILE_DYN_LOADING__ MMFILE_FUNC_HANDLE func_handle; - - ret = _load_dynamic_functions (&func_handle); + + ret = _load_dynamic_functions(&func_handle); if (ret == 0) { - debug_error ("load library error\n"); + debug_error("load library error\n"); return MM_ERROR_FILE_INTERNAL; } #endif if (filename == NULL) { - ret = MM_ERROR_INVALID_ARGUMENT; + ret = MM_ERROR_INVALID_ARGUMENT; goto END; } else { - if (strlen (filename) == 0) { - ret = MM_ERROR_INVALID_ARGUMENT; + if (strlen(filename) == 0) { + ret = MM_ERROR_INVALID_ARGUMENT; goto END; } } /*set source file infomation*/ - MM_FILE_SET_MEDIA_FILE_SRC (src, filename); + MM_FILE_SET_MEDIA_FILE_SRC(src, filename); - ret = _is_file_exist (filename); + ret = _is_file_exist(filename); if (!ret) { ret = MM_ERROR_FILE_NOT_FOUND; goto END; } /*set attrs*/ - attrs = (mmf_attrs_t *) mmf_attrs_new_from_data ("content", g_content_attrs, ARRAY_SIZE (g_content_attrs), NULL, NULL); + attrs = (mmf_attrs_t *) mmf_attrs_new_from_data("content", g_content_attrs, ARRAY_SIZE(g_content_attrs), NULL, NULL); if (!attrs) { - debug_error ("attribute internal error.\n"); + debug_error("attribute internal error.\n"); ret = MM_ERROR_FILE_INTERNAL; goto END; } parse.type = MM_FILE_PARSE_TYPE_NORMAL; - ret = _get_contents_info (attrs, &src, &parse); + ret = _get_contents_info(attrs, &src, &parse); if (ret != MM_ERROR_NONE) { - mmf_attrs_free ((MMHandleType)attrs); + mmf_attrs_free((MMHandleType)attrs); attrs = NULL; - debug_error ("failed to get contents: %s\n", filename); + debug_error("failed to get contents: %s\n", filename); } *contents_attrs = (MMHandleType) attrs; END: #ifdef __MMFILE_DYN_LOADING__ - _unload_dynamic_functions (&func_handle); + _unload_dynamic_functions(&func_handle); #endif #ifdef __MMFILE_TEST_MODE__ @@ -1227,8 +1242,8 @@ EXPORT_API int mm_file_create_content_attrs_safe(MMHandleType *contents_attrs, const char *filename) { mmf_attrs_t *attrs = NULL; - MMFileSourceType src = {0,}; - MMFILE_PARSE_INFO parse = {0,}; + MMFileSourceType src = {0, }; + MMFILE_PARSE_INFO parse = {0, }; int ret = 0; #ifdef __MMFILE_TEST_MODE__ @@ -1238,9 +1253,9 @@ int mm_file_create_content_attrs_safe(MMHandleType *contents_attrs, const char * #ifdef __MMFILE_DYN_LOADING__ MMFILE_FUNC_HANDLE func_handle; - ret = _load_dynamic_functions (&func_handle); + ret = _load_dynamic_functions(&func_handle); if (ret == 0) { - debug_error ("load library error\n"); + debug_error("load library error\n"); return MM_ERROR_FILE_INTERNAL; } #endif @@ -1248,42 +1263,42 @@ int mm_file_create_content_attrs_safe(MMHandleType *contents_attrs, const char * ret = MM_ERROR_INVALID_ARGUMENT; goto END; } else { - if (strlen (filename) == 0) { + if (strlen(filename) == 0) { ret = MM_ERROR_INVALID_ARGUMENT; goto END; } } /*set source file infomation*/ - MM_FILE_SET_MEDIA_FILE_SRC (src, filename); + MM_FILE_SET_MEDIA_FILE_SRC(src, filename); - ret = _is_file_exist (filename); + ret = _is_file_exist(filename); if (!ret) { ret = MM_ERROR_FILE_NOT_FOUND; goto END; } /*set attrs*/ - attrs = (mmf_attrs_t *) mmf_attrs_new_from_data ("content", g_content_attrs, ARRAY_SIZE (g_content_attrs), NULL, NULL); + attrs = (mmf_attrs_t *) mmf_attrs_new_from_data("content", g_content_attrs, ARRAY_SIZE(g_content_attrs), NULL, NULL); if (!attrs) { - debug_error ("attribute internal error.\n"); + debug_error("attribute internal error.\n"); ret = MM_ERROR_FILE_INTERNAL; goto END; } parse.type = MM_FILE_PARSE_TYPE_SAFE; - ret = _get_contents_info (attrs, &src, &parse); + ret = _get_contents_info(attrs, &src, &parse); if (ret != MM_ERROR_NONE) { - mmf_attrs_free ((MMHandleType)attrs); + mmf_attrs_free((MMHandleType)attrs); attrs = NULL; - debug_error ("failed to get contents: %s\n", filename); + debug_error("failed to get contents: %s\n", filename); } *contents_attrs = (MMHandleType) attrs; END: #ifdef __MMFILE_DYN_LOADING__ - _unload_dynamic_functions (&func_handle); + _unload_dynamic_functions(&func_handle); #endif #ifdef __MMFILE_TEST_MODE__ @@ -1294,27 +1309,27 @@ END: } EXPORT_API -int mm_file_get_video_frame(const char* path, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height) +int mm_file_get_video_frame(const char *path, double timestamp, bool is_accurate, unsigned char **frame, int *size, int *width, int *height) { int ret = 0; void *formatFuncHandle = NULL; if (path == NULL) { - debug_error ("Invalid arguments [Path is Null]\n"); + debug_error("Invalid arguments [Path is Null]\n"); return MM_ERROR_INVALID_ARGUMENT; } #ifdef __MMFILE_DYN_LOADING__ /* Get from function argument */ - formatFuncHandle = dlopen (MMFILE_FORMAT_SO_FILE_NAME, RTLD_LAZY); + formatFuncHandle = dlopen(MMFILE_FORMAT_SO_FILE_NAME, RTLD_LAZY); if (!formatFuncHandle) { - debug_error ("error : dlopen"); + 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"); + mmfile_format_get_frame = dlsym(formatFuncHandle, "mmfile_format_get_frame"); + if (!mmfile_format_get_frame) { + debug_error("error : load library"); goto exception; } #endif @@ -1325,16 +1340,16 @@ int mm_file_get_video_frame(const char* path, double timestamp, bool is_accurate ret = mmfile_format_get_frame(path, timestamp, is_accurate, frame, size, width, height); if (ret == MMFILE_FORMAT_FAIL) { - debug_error ("error : get frame"); + debug_error("error : get frame"); goto exception; } - if (formatFuncHandle) dlclose (formatFuncHandle); + if (formatFuncHandle) dlclose(formatFuncHandle); return MM_ERROR_NONE; exception: - if (formatFuncHandle) dlclose (formatFuncHandle); + if (formatFuncHandle) dlclose(formatFuncHandle); return MM_ERROR_FILE_INTERNAL; } @@ -1346,26 +1361,26 @@ int mm_file_get_video_frame_from_memory(const void *data, unsigned int datasize, void *formatFuncHandle = NULL; if (data == NULL) { - debug_error ("Invalid arguments [data is Null]\n"); + debug_error("Invalid arguments [data is Null]\n"); return MM_ERROR_INVALID_ARGUMENT; } if (datasize == 0) { - debug_error ("Invalid arguments [datasize is zero]\n"); + debug_error("Invalid arguments [datasize is zero]\n"); return MM_ERROR_INVALID_ARGUMENT; } #ifdef __MMFILE_DYN_LOADING__ /* Get from function argument */ - formatFuncHandle = dlopen (MMFILE_FORMAT_SO_FILE_NAME, RTLD_LAZY); + formatFuncHandle = dlopen(MMFILE_FORMAT_SO_FILE_NAME, RTLD_LAZY); if (!formatFuncHandle) { - debug_error ("error : dlopen"); + debug_error("error : dlopen"); goto exception; } - mmfile_format_get_frame_from_memory = dlsym (formatFuncHandle, "mmfile_format_get_frame_from_memory"); - if ( !mmfile_format_get_frame_from_memory ) { - debug_error ("error : load library"); + mmfile_format_get_frame_from_memory = dlsym(formatFuncHandle, "mmfile_format_get_frame_from_memory"); + if (!mmfile_format_get_frame_from_memory) { + debug_error("error : load library"); goto exception; } #endif @@ -1376,34 +1391,34 @@ int mm_file_get_video_frame_from_memory(const void *data, unsigned int datasize, ret = mmfile_format_get_frame_from_memory(data, datasize, timestamp, is_accurate, frame, size, width, height); if (ret == MMFILE_FORMAT_FAIL) { - debug_error ("error : get frame"); + debug_error("error : get frame"); goto exception; } - if (formatFuncHandle) dlclose (formatFuncHandle); + if (formatFuncHandle) dlclose(formatFuncHandle); return MM_ERROR_NONE; exception: - if (formatFuncHandle) dlclose (formatFuncHandle); + if (formatFuncHandle) dlclose(formatFuncHandle); return MM_ERROR_FILE_INTERNAL; } EXPORT_API -int mm_file_check_uhqa(const char* filename, bool *is_uhqa) +int mm_file_check_uhqa(const char *filename, bool *is_uhqa) { mmf_attrs_t *attrs = NULL; - MMFileSourceType src = {0,}; - MMFILE_PARSE_INFO parse = {0,}; + MMFileSourceType src = {0, }; + MMFILE_PARSE_INFO parse = {0, }; int ret = 0; #ifdef __MMFILE_DYN_LOADING__ MMFILE_FUNC_HANDLE func_handle; - ret = _load_dynamic_functions (&func_handle); + ret = _load_dynamic_functions(&func_handle); if (ret == 0) { - debug_error ("load library error\n"); + debug_error("load library error\n"); return MM_ERROR_FILE_INTERNAL; } #endif @@ -1411,44 +1426,44 @@ int mm_file_check_uhqa(const char* filename, bool *is_uhqa) ret = MM_ERROR_INVALID_ARGUMENT; goto END; } else { - if (strlen (filename) == 0) { + if (strlen(filename) == 0) { ret = MM_ERROR_INVALID_ARGUMENT; goto END; } } /*set source file infomation*/ - MM_FILE_SET_MEDIA_FILE_SRC (src, filename); + MM_FILE_SET_MEDIA_FILE_SRC(src, filename); - ret = _is_file_exist (filename); + ret = _is_file_exist(filename); if (!ret) { ret = MM_ERROR_FILE_NOT_FOUND; goto END; } /*set attrs*/ - attrs = (mmf_attrs_t *) mmf_attrs_new_from_data ("content", g_content_attrs, ARRAY_SIZE (g_content_attrs), NULL, NULL); + attrs = (mmf_attrs_t *) mmf_attrs_new_from_data("content", g_content_attrs, ARRAY_SIZE(g_content_attrs), NULL, NULL); if (!attrs) { - debug_error ("attribute internal error.\n"); + debug_error("attribute internal error.\n"); ret = MM_ERROR_FILE_INTERNAL; goto END; } parse.type = MM_FILE_PARSE_TYPE_NORMAL; - ret = _get_contents_info (attrs, &src, &parse); + ret = _get_contents_info(attrs, &src, &parse); if (ret == MM_ERROR_NONE) { *is_uhqa = parse.is_uhqa; } else { - debug_error ("_get_contents_info failed\n"); + debug_error("_get_contents_info failed\n"); *is_uhqa = FALSE; } - mmf_attrs_free ((MMHandleType)attrs); + mmf_attrs_free((MMHandleType)attrs); attrs = NULL; END: #ifdef __MMFILE_DYN_LOADING__ - _unload_dynamic_functions (&func_handle); + _unload_dynamic_functions(&func_handle); #endif #ifdef __MMFILE_TEST_MODE__ diff --git a/packaging/libmm-fileinfo.spec b/packaging/libmm-fileinfo.spec index 24c8059..168a734 100755 --- a/packaging/libmm-fileinfo.spec +++ b/packaging/libmm-fileinfo.spec @@ -1,6 +1,6 @@ Name: libmm-fileinfo Summary: Media Fileinfo -Version: 0.6.36 +Version: 0.6.41 Release: 1 Group: System/Libraries License: Apache-2.0 @@ -9,7 +9,7 @@ Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig BuildRequires: pkgconfig(mm-common) -BuildRequires: pkgconfig(mm-log) +BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(libswscale) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(libavcodec) @@ -34,11 +34,15 @@ Multimedia Framework FileInfo Library (developement files) %setup -q %build +export CFLAGS+=" -Wextra -Wno-array-bounds" +export CFLAGS+=" -Wno-ignored-qualifiers -Wno-unused-parameter -Wshadow" +export CFLAGS+=" -Wwrite-strings -Wswitch-default -Werror" +export CFLAGS+=" -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast" ./autogen.sh CFLAGS="${CFLAGS} -D_MM_PROJECT_FLOATER -DEXPORT_API=\"__attribute__((visibility(\\\"default\\\")))\" " LDFLAGS="${LDFLAGS}" ./configure --disable-testmode --disable-dump --enable-dyn --disable-iommap --prefix=/usr --disable-gtk -make %{?jobs:-j%jobs} +make %install %make_install diff --git a/tests/mm_file_memtrace_reader.c b/tests/mm_file_memtrace_reader.c index 8354a92..007488a 100755 --- a/tests/mm_file_memtrace_reader.c +++ b/tests/mm_file_memtrace_reader.c @@ -32,193 +32,169 @@ -int get_address (char *linebuff, char *ptrbuff) +int get_address(char *linebuff, char *ptrbuff) { - char *head = linebuff; + char *head = linebuff; - if (!linebuff || !ptrbuff) - return 0; + if (!linebuff || !ptrbuff) + return 0; - head = head + PREFIX_STRING_LEN; + head = head + PREFIX_STRING_LEN; - while (*head != ' ') - { - *ptrbuff = *head; - ptrbuff++; - head++; - } + while (*head != ' ') { + *ptrbuff = *head; + ptrbuff++; + head++; + } - return 1; + return 1; } -int main (int argc, char *argv[]) +int main(int argc, char *argv[]) { - char linebuffer[LINE_BUFFER_LEN]; - char ptrbuffer[ADDR_BUFFER_LEN]; - - int alloccount = 0; - int freecount = 0; - - if (argc != 2) - { - printf ("Usage: ./memtrace-read memtrace.mtr\n"); - exit (1); - } - - FILE *fp1 = fopen (argv[1], "r"); - FILE *fp2 = fopen ("memtrace-result.txt", "w"); - - if (!fp1 || !fp2) - { - printf ("fail to open %s\n", argv[1]); - exit (1); - } - - while (1) - { - memset (linebuffer, 0x00, LINE_BUFFER_LEN); - memset (ptrbuffer, 0x00, ADDR_BUFFER_LEN); - - if (fgets (linebuffer, LINE_BUFFER_LEN, fp1) == NULL) - break; - - if (memcmp (MALLOC_STRING, linebuffer, PREFIX_STRING_LEN) == 0) - { - get_address (linebuffer, ptrbuffer); - alloccount++; - } - - if (memcmp (FREE_STRING, linebuffer, PREFIX_STRING_LEN) == 0) - { - get_address (linebuffer, ptrbuffer); - freecount++; - } - } - - if (alloccount != freecount) - { - char alloclist[alloccount][ADDR_BUFFER_LEN]; - int alloccountlist[alloccount]; - char freelist[freecount][ADDR_BUFFER_LEN]; - int freecountlist[freecount]; - - int i = 0; - int allocindex = 0; - int freeindex = 0; - int totalcount = 0; - - memset (alloclist, 0x00, alloccount*ADDR_BUFFER_LEN); - memset (alloccountlist, 0x00, alloccount*4); - - memset (freelist, 0x00, freecount*ADDR_BUFFER_LEN); - memset (freecountlist, 0x00, freecount*4); - - fseek (fp1, 0, SEEK_SET); - - while (1) - { - memset (linebuffer, 0x00, LINE_BUFFER_LEN); - memset (ptrbuffer, 0x00, ADDR_BUFFER_LEN); - - if (fgets (linebuffer, LINE_BUFFER_LEN, fp1) == NULL) - break; - - totalcount++; - if (memcmp (MALLOC_STRING, linebuffer, PREFIX_STRING_LEN) == 0) - { - int i = 0; - - get_address (linebuffer, ptrbuffer); - - for (i = 0; i < alloccount; i++) - { - if (memcmp (ptrbuffer, alloclist[i], strlen(ptrbuffer)) == 0) - { - alloccountlist[i]++; - break; - } - } - - if ( i == alloccount) - { - memcpy (alloclist[allocindex], ptrbuffer, strlen(ptrbuffer)); - alloccountlist[allocindex]++; - allocindex++; - } - } - - if (memcmp (FREE_STRING, linebuffer, PREFIX_STRING_LEN) == 0) - { - int i = 0; - - get_address (linebuffer, ptrbuffer); - - for (i = 0; i < freecount; i++) - { - if (memcmp (ptrbuffer, freelist[i], strlen(ptrbuffer)) == 0) - { - freecountlist[i]++; - break; - } - } - - if ( i == freecount) - { - memcpy (freelist[freeindex], ptrbuffer, strlen(ptrbuffer)); - freecountlist[freeindex]++; - freeindex++; - } - } - } - - printf ("Total: %d mem operation\n", totalcount); - - int i1 = 0, i2 = 0; - - - fprintf (fp2, "-------------------------------------------------------------\n"); - fprintf (fp2, "ADDRESS (malloc count, free cout, diff)\n"); - - - for ( i1 = 0; i1 < allocindex; i1++) - { - for (i2 = 0; i2 < freeindex; i2++) - { - if (strcmp (alloclist[i1], freelist[i2]) == 0) - { - if (strcmp (alloclist[i1], "Checked") != 0) - break; - } - } - - if (i2 == freeindex) - { - // fprintf (fp2, "%s error\n", alloclist[i1]); - } - else - { - fprintf (fp2, "%s %12d %8d %8d\n", alloclist[i1], alloccountlist[i1], freecountlist[i2], alloccountlist[i1] - freecountlist[i2]); - strcpy (alloclist[i1], "Checked"); - strcpy (freelist[i2], "Checked"); - } - } - - for (i = 0; i < allocindex; i++) - { - if ( strcmp (alloclist[i], "Checked") != 0 ) - fprintf (fp2, "%s error\n", alloclist[i]); - } - - for (i = 0; i < freeindex; i++) - { - if ( strcmp (freelist[i], "Checked") != 0 ) - fprintf (fp2, "%s error\n", freelist[i]); - } - } - - fclose (fp1); - fclose (fp2); - - exit (0); + char linebuffer[LINE_BUFFER_LEN]; + char ptrbuffer[ADDR_BUFFER_LEN]; + + int alloccount = 0; + int freecount = 0; + + if (argc != 2) { + printf("Usage: ./memtrace-read memtrace.mtr\n"); + exit(1); + } + + FILE *fp1 = fopen(argv[1], "r"); + FILE *fp2 = fopen("memtrace-result.txt", "w"); + + if (!fp1 || !fp2) { + printf("fail to open %s\n", argv[1]); + exit(1); + } + + while (1) { + memset(linebuffer, 0x00, LINE_BUFFER_LEN); + memset(ptrbuffer, 0x00, ADDR_BUFFER_LEN); + + if (fgets(linebuffer, LINE_BUFFER_LEN, fp1) == NULL) + break; + + if (memcmp(MALLOC_STRING, linebuffer, PREFIX_STRING_LEN) == 0) { + get_address(linebuffer, ptrbuffer); + alloccount++; + } + + if (memcmp(FREE_STRING, linebuffer, PREFIX_STRING_LEN) == 0) { + get_address(linebuffer, ptrbuffer); + freecount++; + } + } + + if (alloccount != freecount) { + char alloclist[alloccount][ADDR_BUFFER_LEN]; + int alloccountlist[alloccount]; + char freelist[freecount][ADDR_BUFFER_LEN]; + int freecountlist[freecount]; + + int i = 0; + int allocindex = 0; + int freeindex = 0; + int totalcount = 0; + + memset(alloclist, 0x00, alloccount * ADDR_BUFFER_LEN); + memset(alloccountlist, 0x00, alloccount * 4); + + memset(freelist, 0x00, freecount * ADDR_BUFFER_LEN); + memset(freecountlist, 0x00, freecount * 4); + + fseek(fp1, 0, SEEK_SET); + + while (1) { + memset(linebuffer, 0x00, LINE_BUFFER_LEN); + memset(ptrbuffer, 0x00, ADDR_BUFFER_LEN); + + if (fgets(linebuffer, LINE_BUFFER_LEN, fp1) == NULL) + break; + + totalcount++; + if (memcmp(MALLOC_STRING, linebuffer, PREFIX_STRING_LEN) == 0) { + int i = 0; + + get_address(linebuffer, ptrbuffer); + + for (i = 0; i < alloccount; i++) { + if (memcmp(ptrbuffer, alloclist[i], strlen(ptrbuffer)) == 0) { + alloccountlist[i]++; + break; + } + } + + if (i == alloccount) { + memcpy(alloclist[allocindex], ptrbuffer, strlen(ptrbuffer)); + alloccountlist[allocindex]++; + allocindex++; + } + } + + if (memcmp(FREE_STRING, linebuffer, PREFIX_STRING_LEN) == 0) { + int i = 0; + + get_address(linebuffer, ptrbuffer); + + for (i = 0; i < freecount; i++) { + if (memcmp(ptrbuffer, freelist[i], strlen(ptrbuffer)) == 0) { + freecountlist[i]++; + break; + } + } + + if (i == freecount) { + memcpy(freelist[freeindex], ptrbuffer, strlen(ptrbuffer)); + freecountlist[freeindex]++; + freeindex++; + } + } + } + + printf("Total: %d mem operation\n", totalcount); + + int i1 = 0, i2 = 0; + + + fprintf(fp2, "-------------------------------------------------------------\n"); + fprintf(fp2, "ADDRESS (malloc count, free cout, diff)\n"); + + + for (i1 = 0; i1 < allocindex; i1++) { + for (i2 = 0; i2 < freeindex; i2++) { + if (strcmp(alloclist[i1], freelist[i2]) == 0) { + if (strcmp(alloclist[i1], "Checked") != 0) + break; + } + } + + if (i2 == freeindex) { + /* fprintf (fp2, "%s error\n", alloclist[i1]); */ + } else { + fprintf(fp2, "%s %12d %8d %8d\n", alloclist[i1], alloccountlist[i1], freecountlist[i2], alloccountlist[i1] - freecountlist[i2]); + strcpy(alloclist[i1], "Checked"); + strcpy(freelist[i2], "Checked"); + } + } + + for (i = 0; i < allocindex; i++) { + if (strcmp(alloclist[i], "Checked") != 0) + fprintf(fp2, "%s error\n", alloclist[i]); + } + + for (i = 0; i < freeindex; i++) { + if (strcmp(freelist[i], "Checked") != 0) + fprintf(fp2, "%s error\n", freelist[i]); + } + } + + fclose(fp1); + fclose(fp2); + + exit(0); } diff --git a/tests/mm_file_test.c b/tests/mm_file_test.c index 621d09b..7cff226 100755 --- a/tests/mm_file_test.c +++ b/tests/mm_file_test.c @@ -35,17 +35,17 @@ #include "mm_file_traverse.h" #define MM_TIME_CHECK_START \ -{ FILE *msg_tmp_fp = fopen("time_check.txt", "a+"); struct timeval start, finish; gettimeofday(&start, NULL); + { FILE *msg_tmp_fp = fopen("time_check.txt", "a+"); struct timeval start, finish; gettimeofday(&start, NULL); #define MM_TIME_CHECK_FINISH(title) \ -gettimeofday(&finish, NULL); \ -double end_time = (finish.tv_sec + 1e-6*finish.tv_usec); \ -double start_time = (start.tv_sec + 1e-6*start.tv_usec); \ -if(msg_tmp_fp != NULL) { \ -fprintf(msg_tmp_fp, "%s\n", title); \ -fprintf(msg_tmp_fp, " - start_time: %3.5lf sec\n", start_time); \ -fprintf(msg_tmp_fp, " - finish_time: %3.5lf sec\n", end_time); \ -fprintf(msg_tmp_fp, " - elapsed time: %3.5lf sec\n", end_time - start_time); \ -fflush(msg_tmp_fp); fclose(msg_tmp_fp); }} + gettimeofday(&finish, NULL); \ + double end_time = (finish.tv_sec + 1e-6*finish.tv_usec); \ + double start_time = (start.tv_sec + 1e-6*start.tv_usec); \ + if (msg_tmp_fp != NULL) { \ + fprintf(msg_tmp_fp, "%s\n", title); \ + fprintf(msg_tmp_fp, " - start_time: %3.5lf sec\n", start_time); \ + fprintf(msg_tmp_fp, " - finish_time: %3.5lf sec\n", end_time); \ + fprintf(msg_tmp_fp, " - elapsed time: %3.5lf sec\n", end_time - start_time); \ + fflush(msg_tmp_fp); fclose(msg_tmp_fp); }} typedef struct _mmfile_value { int len; @@ -54,8 +54,8 @@ typedef struct _mmfile_value { double d_val; char *s_val; void *p_val; - }value; -}mmfile_value_t; + } value; +} mmfile_value_t; typedef struct _TagContext { mmfile_value_t artist; @@ -65,24 +65,24 @@ typedef struct _TagContext { mmfile_value_t genre; mmfile_value_t author; mmfile_value_t copyright; - mmfile_value_t date; //string - mmfile_value_t recdate; //string + mmfile_value_t date; /*string */ + mmfile_value_t recdate; /*string */ mmfile_value_t description; mmfile_value_t comment; - mmfile_value_t artwork; //data - mmfile_value_t artwork_size; //int + mmfile_value_t artwork; /*data */ + mmfile_value_t artwork_size; /*int */ mmfile_value_t artwork_mime; mmfile_value_t track_num; mmfile_value_t classfication; mmfile_value_t rating; mmfile_value_t conductor; - mmfile_value_t longitude; //-> double - mmfile_value_t latitude; - mmfile_value_t altitude; //<-double + mmfile_value_t longitude; /*-> double */ + mmfile_value_t latitude; + mmfile_value_t altitude; /*<-double */ mmfile_value_t unsynclyrics; mmfile_value_t synclyrics_size; - mmfile_value_t rotate; //string -}TagContext_t; + mmfile_value_t rotate; /*string */ +} TagContext_t; typedef struct _ContentContext { int duration; @@ -101,62 +101,66 @@ typedef struct _ContentContext { int audio_track_num; int audio_bitpersample; mmfile_value_t thumbnail; -}ContentContext_t; - - -char * AudioCodecTypeString [] = { - "AMR", "G723.1", "MP3", "OGG", "AAC", "WMA", "MMF", "ADPCM", "WAVE", "WAVE NEW", "MIDI", "IMELODY", "MXMF", "MPEG1-Layer1 codec", "MPEG1-Layer2 codec", - "G711", "G722", "G722.1", "G722.2 (AMR-WB)", "G723 wideband speech", "G726 (ADPCM)", "G728 speech", "G729", "G729a", "G729.1", - "Real", - "AAC-Low complexity", "AAC-Main profile", "AAC-Scalable sample rate", "AAC-Long term prediction", "AAC-High Efficiency v1", "AAC-High efficiency v2", - "DolbyDigital", "Apple Lossless", "Sony proprietary", "SPEEX", "Vorbis", "AIFF", "AU", "None (will be deprecated)", - "PCM", "ALAW", "MULAW", "MS ADPCM", "FLAC" +} ContentContext_t; + + +const char *AudioCodecTypeString[] = { + "AMR", "G723.1", "MP3", "OGG", "AAC", "WMA", "MMF", "ADPCM", "WAVE", "WAVE NEW", /* 0~9 */ + "MIDI", "IMELODY", "MXMF", "MPEG1-Layer1 codec", "MPEG1-Layer2 codec", /* 10~14 */ + "G711", "G722", "G722.1", "G722.2 (AMR-WB)", "G723 wideband speech", /* 15~19 */ + "G726 (ADPCM)", "G728 speech", "G729", "G729a", "G729.1", /* 20~24 */ + "Real", "AAC-Low complexity", "AAC-Main profile", "AAC-Scalable sample rate", "AAC-Long term prediction", /* 25~29 */ + "AAC-High Efficiency v1", "AAC-High efficiency v2", "DolbyDigital", "Apple Lossless", "Sony proprietary", /* 30~34 */ + "SPEEX", "Vorbis", "AIFF", "AU", "None (will be deprecated)", /*35~39 */ + "PCM", "ALAW", "MULAW", "MS ADPCM", "FLAC" /* 40~44 */ }; -char * VideoCodecTypeString [] = { - "None (will be deprecated)", - "H263", "H264", "H26L", "MPEG4", "MPEG1", "WMV", "DIVX", "XVID", "H261", "H262/MPEG2-part2", "H263v2", "H263v3", - "Motion JPEG", "MPEG2", "MPEG4 part-2 Simple profile", "MPEG4 part-2 Advanced Simple profile", "MPEG4 part-2 Main profile", - "MPEG4 part-2 Core profile", "MPEG4 part-2 Adv Coding Eff profile", "MPEG4 part-2 Adv RealTime Simple profile", - "MPEG4 part-10 (h.264)", "Real", "VC-1", "AVS", "Cinepak", "Indeo", "Theora", "Flv" +const char *VideoCodecTypeString[] = { + "None (will be deprecated)", /* 0 */ + "H263", "H264", "H26L", "MPEG4", "MPEG1", /* 1~5 */ + "WMV", "DIVX", "XVID", "H261", "H262/MPEG2-part2", /* 6~10 */ + "H263v2", "H263v3", "Motion JPEG", "MPEG2", "MPEG4 part-2 Simple profile", /* 11~15 */ + "MPEG4 part-2 Advanced Simple profile", "MPEG4 part-2 Main profile", "MPEG4 part-2 Core profile", "MPEG4 part-2 Adv Coding Eff profile", "MPEG4 part-2 Adv RealTime Simple profile", /* 16~20 */ + "MPEG4 part-10 (h.264)", "Real", "VC-1", "AVS", "Cinepak", /* 21~25 */ + "Indeo", "Theora", "Flv" /* 26~28 */ }; FILE *fpFailList = NULL; -static int mmfile_get_file_infomation (void *data, void* user_data, bool file_test); +static int mmfile_get_file_infomation(void *data, void *user_data, bool file_test); -inline static int mm_file_is_little_endian (void) +inline static int mm_file_is_little_endian(void) { - int i = 0x00000001; - return ((char *)&i)[0]; + int i = 0x00000001; + 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); \ + do { \ + FILE *fp = fopen(FILE_PATH, "r"); \ + if (fp) { \ + fseek(fp, 0, SEEK_END); \ size = ftell(fp); \ - fseek (fp, 0, SEEK_SET); \ - if(size > 0) data = malloc (size); \ - if(data != NULL ) { if (fread (data, size, sizeof(char), fp) != size) { printf("fread error\n"); } } \ - fclose (fp); \ - printf("file size = %d\n", size ); \ - } \ -}while(0) + fseek(fp, 0, SEEK_SET); \ + if (size > 0) data = malloc(size); \ + if (data != NULL) { if (fread(data, size, sizeof(char), fp) != size) { printf("fread error\n"); } } \ + fclose(fp); \ + printf("file size = %d\n", size); \ + } \ + } while (0) static int -_is_file_exist (const char *filename) +_is_file_exist(const char *filename) { int ret = 1; if (filename) { - const char* to_access = (strstr(filename,"file://")!=NULL)? filename+7:filename; - ret = access (to_access, R_OK ); + const char *to_access = (strstr(filename, "file://") != NULL) ? filename + 7 : filename; + ret = access(to_access, R_OK); if (ret != 0) { - printf ("file [%s] not found.\n", to_access); + printf("file [%s] not found.\n", to_access); } } return !ret; @@ -165,36 +169,36 @@ _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 ( ret < 0 ) { - printf ("lstat error[%d]\n", ret); - return MMFILE_FAIL; - } + 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 (ret < 0) { + printf("lstat error[%d]\n", ret); + return MMFILE_FAIL; + } if (fpFailList == NULL) { - fpFailList = fopen ("/opt/var/log/mmfile_fails.txt", "w"); + fpFailList = fopen("/opt/var/log/mmfile_fails.txt", "w"); } - if ( S_ISDIR (statbuf.st_mode) ) { - mmfile_get_file_names (argv[1], mmfile_get_file_infomation, NULL); + 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, file_test); + mmfile_get_file_infomation(argv[1], NULL, file_test); } if (fpFailList != NULL) { - fflush (fpFailList); - fclose (fpFailList); + fflush(fpFailList); + fclose(fpFailList); } - } + } - return 0;//exit(0); + return 0;/*exit(0); */ } -static int mmfile_get_file_infomation (void *data, void* user_data, bool file_test) +static int mmfile_get_file_infomation(void *data, void *user_data, bool file_test) { MMHandleType content_attrs = 0; MMHandleType tag_attrs = 0; @@ -204,65 +208,63 @@ static int mmfile_get_file_infomation (void *data, void* user_data, bool file_te int ret = 0; char filename[512]; - memset (filename, 0x00, 512); - memcpy (filename, (char*)data, strlen ((char*)data)); + memset(filename, 0x00, 512); + memcpy(filename, (char *)data, strlen((char *)data)); MM_TIME_CHECK_START - printf ("Extracting information for [%s] \n", filename); + printf("Extracting information for [%s] \n", filename); /* get track info */ ret = mm_file_get_stream_info(filename, &audio_track_num, &video_track_num); if (ret == MM_ERROR_NONE) { - printf ("# audio=%d, video=%d\n", audio_track_num, video_track_num); + printf("# audio=%d, video=%d\n", audio_track_num, video_track_num); } else { - printf ("Failed to mm_file_get_stream_info() error=[%x]\n", ret); + printf("Failed to mm_file_get_stream_info() error=[%x]\n", ret); } - if(file_test) { + if (file_test) { /* get content handle */ ret = mm_file_create_content_attrs(&content_attrs, filename); } else { - int file_size = 0; - unsigned char * buffer = NULL; + unsigned 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); + 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; - memset (&ccontent, 0, sizeof (ContentContext_t)); + memset(&ccontent, 0, sizeof(ContentContext_t)); ret = mm_file_get_attrs(content_attrs, &err_attr_name, MM_FILE_CONTENT_DURATION, &ccontent.duration, NULL); printf("# duration: %d\n", ccontent.duration); - if (ret != MM_ERROR_NONE && err_attr_name) - { + if (ret != MM_ERROR_NONE && err_attr_name) { printf("failed to get %s\n", err_attr_name); free(err_attr_name); err_attr_name = NULL; } - if (audio_track_num) - { + if (audio_track_num) { ret = mm_file_get_attrs(content_attrs, - NULL, - MM_FILE_CONTENT_AUDIO_CODEC, &ccontent.audio_codec, - MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate, - MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate, - MM_FILE_CONTENT_AUDIO_CHANNELS, &ccontent.audio_channel, - MM_FILE_CONTENT_AUDIO_TRACK_INDEX, &ccontent.audio_track_id, - MM_FILE_CONTENT_AUDIO_TRACK_COUNT, &ccontent.audio_track_num, - MM_FILE_CONTENT_AUDIO_BITPERSAMPLE, &ccontent.audio_bitpersample, - NULL); - - if(ret != MM_ERROR_NONE) { + NULL, + MM_FILE_CONTENT_AUDIO_CODEC, &ccontent.audio_codec, + MM_FILE_CONTENT_AUDIO_SAMPLERATE, &ccontent.audio_samplerate, + MM_FILE_CONTENT_AUDIO_BITRATE, &ccontent.audio_bitrate, + MM_FILE_CONTENT_AUDIO_CHANNELS, &ccontent.audio_channel, + MM_FILE_CONTENT_AUDIO_TRACK_INDEX, &ccontent.audio_track_id, + MM_FILE_CONTENT_AUDIO_TRACK_COUNT, &ccontent.audio_track_num, + MM_FILE_CONTENT_AUDIO_BITPERSAMPLE, &ccontent.audio_bitpersample, + NULL); + + if (ret != MM_ERROR_NONE) { printf("failed to get audio attrs\n"); } else { - printf ("[Audio] ----------------------------------------- \n"); + printf("[Audio] ----------------------------------------- \n"); printf("# audio codec: %d ", ccontent.audio_codec); - printf ("[%s]\n", (ccontent.audio_codec >= 0 && ccontent.audio_codec < MM_AUDIO_CODEC_NUM)? AudioCodecTypeString[ccontent.audio_codec] : "Invalid"); + printf("[%s]\n", (ccontent.audio_codec >= 0 && ccontent.audio_codec < MM_AUDIO_CODEC_NUM) ? AudioCodecTypeString[ccontent.audio_codec] : "Invalid"); printf("# audio samplerate: %d Hz\n", ccontent.audio_samplerate); printf("# audio bitrate: %d bps\n", ccontent.audio_bitrate); printf("# audio channel: %d\n", ccontent.audio_channel); @@ -271,26 +273,25 @@ static int mmfile_get_file_infomation (void *data, void* user_data, bool file_te printf("# audio bit per sample: %d\n", ccontent.audio_bitpersample); } } - - if (video_track_num) - { + + if (video_track_num) { ret = mm_file_get_attrs(content_attrs, - NULL, - MM_FILE_CONTENT_VIDEO_CODEC, &ccontent.video_codec, - MM_FILE_CONTENT_VIDEO_BITRATE, &ccontent.video_bitrate, - MM_FILE_CONTENT_VIDEO_FPS, &ccontent.video_fps, - MM_FILE_CONTENT_VIDEO_TRACK_INDEX, &ccontent.video_track_id, - MM_FILE_CONTENT_VIDEO_WIDTH, &ccontent.video_w, - MM_FILE_CONTENT_VIDEO_HEIGHT, &ccontent.video_h, - MM_FILE_CONTENT_VIDEO_THUMBNAIL, &ccontent.thumbnail.value.p_val, &ccontent.thumbnail.len, - NULL); - - if(ret != MM_ERROR_NONE) { + NULL, + MM_FILE_CONTENT_VIDEO_CODEC, &ccontent.video_codec, + MM_FILE_CONTENT_VIDEO_BITRATE, &ccontent.video_bitrate, + MM_FILE_CONTENT_VIDEO_FPS, &ccontent.video_fps, + MM_FILE_CONTENT_VIDEO_TRACK_INDEX, &ccontent.video_track_id, + MM_FILE_CONTENT_VIDEO_WIDTH, &ccontent.video_w, + MM_FILE_CONTENT_VIDEO_HEIGHT, &ccontent.video_h, + MM_FILE_CONTENT_VIDEO_THUMBNAIL, &ccontent.thumbnail.value.p_val, &ccontent.thumbnail.len, + NULL); + + if (ret != MM_ERROR_NONE) { printf("failed to get video attrs\n"); } else { - printf ("[Video] ----------------------------------------- \n"); + printf("[Video] ----------------------------------------- \n"); printf("# video codec: %d ", ccontent.video_codec); - printf ("[%s]\n", (ccontent.video_codec >= 0 && ccontent.video_codec < MM_VIDEO_CODEC_NUM)? VideoCodecTypeString[ccontent.video_codec] : "Invalid"); + printf("[%s]\n", (ccontent.video_codec >= 0 && ccontent.video_codec < MM_VIDEO_CODEC_NUM) ? VideoCodecTypeString[ccontent.video_codec] : "Invalid"); printf("# video bitrate: %d bps\n", ccontent.video_bitrate); printf("# video fps: %d\n", ccontent.video_fps); printf("# video track id: %d\n", ccontent.video_track_id); @@ -301,61 +302,59 @@ static int mmfile_get_file_infomation (void *data, void* user_data, bool file_te mm_file_destroy_content_attrs(content_attrs); } else { - printf ("Failed to mm_file_create_content_attrs() error=[%x]\n", ret); + printf("Failed to mm_file_create_content_attrs() error=[%x]\n", ret); } - if(file_test) { + if (file_test) { /* get tag handle */ ret = mm_file_create_tag_attrs(&tag_attrs, filename); } else { - int file_size = 0; - unsigned char * buffer = NULL; + unsigned 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); + 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; - memset (&ctag, 0, sizeof (TagContext_t)); + memset(&ctag, 0, sizeof(TagContext_t)); /* get attributes of tag */ - ret = mm_file_get_attrs( tag_attrs, - &err_attr_name, - MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len, - MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len, - MM_FILE_TAG_ALBUM_ARTIST, &ctag.album_artist.value.s_val, &ctag.album_artist.len, - MM_FILE_TAG_TITLE, &ctag.title.value.s_val, &ctag.title.len, - MM_FILE_TAG_GENRE, &ctag.genre.value.s_val, &ctag.genre.len, - MM_FILE_TAG_AUTHOR, &ctag.author.value.s_val, &ctag.author.len, - MM_FILE_TAG_COPYRIGHT, &ctag.copyright.value.s_val, &ctag.copyright.len, - MM_FILE_TAG_DATE, &ctag.date.value.s_val, &ctag.date.len, - MM_FILE_TAG_RECDATE, &ctag.recdate.value.s_val, &ctag.recdate.len, - MM_FILE_TAG_DESCRIPTION, &ctag.description.value.s_val, &ctag.description.len, - MM_FILE_TAG_COMMENT, &ctag.comment.value.s_val, &ctag.comment.len, - MM_FILE_TAG_ARTWORK, &ctag.artwork.value.p_val, &ctag.artwork.len, - MM_FILE_TAG_ARTWORK_SIZE, &ctag.artwork_size.value.i_val, - MM_FILE_TAG_ARTWORK_MIME, &ctag.artwork_mime.value.s_val, &ctag.artwork_mime.len, - MM_FILE_TAG_TRACK_NUM, &ctag.track_num.value.s_val, &ctag.track_num.len, - MM_FILE_TAG_CLASSIFICATION, &ctag.classfication.value.s_val, &ctag.classfication.len, - MM_FILE_TAG_RATING, &ctag.rating.value.s_val, &ctag.rating.len, - MM_FILE_TAG_LONGITUDE, &ctag.longitude.value.d_val, - MM_FILE_TAG_LATIDUE, &ctag.latitude.value.d_val, - MM_FILE_TAG_ALTIDUE, &ctag.altitude.value.d_val, - MM_FILE_TAG_CONDUCTOR, &ctag.conductor.value.s_val, &ctag.conductor.len, - MM_FILE_TAG_UNSYNCLYRICS, &ctag.unsynclyrics.value.s_val, &ctag.unsynclyrics.len, - MM_FILE_TAG_SYNCLYRICS_NUM, &ctag.synclyrics_size.value.i_val, - MM_FILE_TAG_ROTATE, &ctag.rotate.value.s_val, &ctag.rotate.len, - NULL); - if (ret != MM_ERROR_NONE && err_attr_name) - { + ret = mm_file_get_attrs(tag_attrs, + &err_attr_name, + MM_FILE_TAG_ARTIST, &ctag.artist.value.s_val, &ctag.artist.len, + MM_FILE_TAG_ALBUM, &ctag.album.value.s_val, &ctag.album.len, + MM_FILE_TAG_ALBUM_ARTIST, &ctag.album_artist.value.s_val, &ctag.album_artist.len, + MM_FILE_TAG_TITLE, &ctag.title.value.s_val, &ctag.title.len, + MM_FILE_TAG_GENRE, &ctag.genre.value.s_val, &ctag.genre.len, + MM_FILE_TAG_AUTHOR, &ctag.author.value.s_val, &ctag.author.len, + MM_FILE_TAG_COPYRIGHT, &ctag.copyright.value.s_val, &ctag.copyright.len, + MM_FILE_TAG_DATE, &ctag.date.value.s_val, &ctag.date.len, + MM_FILE_TAG_RECDATE, &ctag.recdate.value.s_val, &ctag.recdate.len, + MM_FILE_TAG_DESCRIPTION, &ctag.description.value.s_val, &ctag.description.len, + MM_FILE_TAG_COMMENT, &ctag.comment.value.s_val, &ctag.comment.len, + MM_FILE_TAG_ARTWORK, &ctag.artwork.value.p_val, &ctag.artwork.len, + MM_FILE_TAG_ARTWORK_SIZE, &ctag.artwork_size.value.i_val, + MM_FILE_TAG_ARTWORK_MIME, &ctag.artwork_mime.value.s_val, &ctag.artwork_mime.len, + MM_FILE_TAG_TRACK_NUM, &ctag.track_num.value.s_val, &ctag.track_num.len, + MM_FILE_TAG_CLASSIFICATION, &ctag.classfication.value.s_val, &ctag.classfication.len, + MM_FILE_TAG_RATING, &ctag.rating.value.s_val, &ctag.rating.len, + MM_FILE_TAG_LONGITUDE, &ctag.longitude.value.d_val, + MM_FILE_TAG_LATIDUE, &ctag.latitude.value.d_val, + MM_FILE_TAG_ALTIDUE, &ctag.altitude.value.d_val, + MM_FILE_TAG_CONDUCTOR, &ctag.conductor.value.s_val, &ctag.conductor.len, + MM_FILE_TAG_UNSYNCLYRICS, &ctag.unsynclyrics.value.s_val, &ctag.unsynclyrics.len, + MM_FILE_TAG_SYNCLYRICS_NUM, &ctag.synclyrics_size.value.i_val, + MM_FILE_TAG_ROTATE, &ctag.rotate.value.s_val, &ctag.rotate.len, + NULL); + if (ret != MM_ERROR_NONE && err_attr_name) { printf("failed to get %s attrs\n", err_attr_name); free(err_attr_name); err_attr_name = NULL; - if (msg_tmp_fp) /* opened by MM_TIME_CHECK_START */ - { - fclose (msg_tmp_fp); + if (msg_tmp_fp) { /* opened by MM_TIME_CHECK_START */ + fclose(msg_tmp_fp); msg_tmp_fp = NULL; } mm_file_destroy_tag_attrs(tag_attrs); @@ -363,7 +362,7 @@ static int mmfile_get_file_infomation (void *data, void* user_data, bool file_te } /* print tag information */ - printf ("[Tag] =================================== \n"); + printf("[Tag] =================================== \n"); printf("# artist: [%s]\n", ctag.artist.value.s_val); printf("# title: [%s]\n", ctag.title.value.s_val); printf("# album: [%s]\n", ctag.album.value.s_val); @@ -390,16 +389,16 @@ static int mmfile_get_file_infomation (void *data, void* user_data, bool file_te printf("# synclyrics size: [%d]\n", ctag.synclyrics_size.value.i_val); printf("# rotate: [%s]\n", ctag.rotate.value.s_val); - if(ctag.synclyrics_size.value.i_val > 0) { + if (ctag.synclyrics_size.value.i_val > 0) { int idx = 0; unsigned long time_info = 0; - char * lyrics_info = NULL; + char *lyrics_info = NULL; printf("# synclyrics: \n"); - - for(idx = 0; idx < ctag.synclyrics_size.value.i_val; idx++) { + + for (idx = 0; idx < ctag.synclyrics_size.value.i_val; idx++) { ret = mm_file_get_synclyrics_info(tag_attrs, idx, &time_info, &lyrics_info); - if(ret == MM_ERROR_NONE) { + if (ret == MM_ERROR_NONE) { printf("[%2d][%6ld][%s]\n", idx, time_info, lyrics_info); } else { printf("Error when get lyrics\n"); @@ -407,17 +406,25 @@ static int mmfile_get_file_infomation (void *data, void* user_data, bool file_te } } } - + /* release tag */ - mm_file_destroy_tag_attrs(tag_attrs); + ret = mm_file_destroy_tag_attrs(tag_attrs); + if (ret != MM_ERROR_NONE) { + printf("Error mm_file_destroy_tag_attrs: %d", ret); + if (msg_tmp_fp) { + fclose(msg_tmp_fp); + msg_tmp_fp = NULL; + } + return -1; + } } else { - printf ("Failed to mm_file_create_tag_attrs() error=[%x]\n", ret); + printf("Failed to mm_file_create_tag_attrs() error=[%x]\n", ret); } - printf ("=================================================\n\n"); + printf("=================================================\n\n"); - MM_TIME_CHECK_FINISH (filename); + MM_TIME_CHECK_FINISH(filename); - return 0; + return 0; } diff --git a/tests/mm_file_traverse.h b/tests/mm_file_traverse.h index fc05bee..6d051b1 100755 --- a/tests/mm_file_traverse.h +++ b/tests/mm_file_traverse.h @@ -24,14 +24,13 @@ #define MMFILE_PATH_MAX 256 -typedef enum -{ +typedef enum { MMFILE_FAIL = 0, - MMFILE_SUCCESS + MMFILE_SUCCESS } MMFILE_RETURN; -typedef int (*MMFunc) (void *data, void* user_data, bool file_test); +typedef int (*MMFunc)(void *data, void *user_data, bool file_test); -int mmfile_get_file_names (char *root_dir, MMFunc cbfunc, void* user_data); +int mmfile_get_file_names(char *root_dir, MMFunc cbfunc, void *user_data); #endif /* _MM_FILE_TRAVERSE_H_ */ diff --git a/tests/mm_file_traverser.c b/tests/mm_file_traverser.c index 000ee9c..ec69a1f 100755 --- a/tests/mm_file_traverser.c +++ b/tests/mm_file_traverser.c @@ -33,91 +33,79 @@ static GList *g_directories = NULL; -int mmfile_get_file_names (char *root_dir, MMFunc cbfunc, void* user_data) +int mmfile_get_file_names(char *root_dir, MMFunc cbfunc, void *user_data) { struct stat statbuf; struct dirent dirp; struct dirent *result = NULL; DIR *dp; - char pdirname[MMFILE_PATH_MAX+1]; + char pdirname[MMFILE_PATH_MAX + 1]; - memset (pdirname, 0x00, MMFILE_PATH_MAX+1); - - if ( lstat (root_dir, &statbuf) < 0 ) - { - printf ("lstat error\n"); + memset(pdirname, 0x00, MMFILE_PATH_MAX + 1); + + if (lstat(root_dir, &statbuf) < 0) { + printf("lstat error\n"); return MMFILE_FAIL; } - if ( S_ISDIR (statbuf.st_mode) == 0 ) - { - printf ("it is not directory\n"); + if (S_ISDIR(statbuf.st_mode) == 0) { + printf("it is not directory\n"); return MMFILE_FAIL; } - g_directories = g_list_append(g_directories, strdup (root_dir)); + g_directories = g_list_append(g_directories, strdup(root_dir)); int i = 0; gpointer element_data = NULL; - while ( (element_data = g_list_nth_data (g_directories, i)) != NULL ) - { - if (strlen ((char*) element_data) > 0 && strlen ((char*) element_data) <= MMFILE_PATH_MAX) - { - strncpy (pdirname, (char*) element_data, strlen((char*) element_data)); - - if ( (dp = opendir (pdirname)) != NULL ) - { - while (!readdir_r(dp, &dirp, &result)) - { - char cdirname[MMFILE_PATH_MAX+1]; - - if ( strcmp (dirp.d_name, ".") == 0 || - strcmp (dirp.d_name, "..") == 0 ) - { + while ((element_data = g_list_nth_data(g_directories, i)) != NULL) { + if (strlen((char *) element_data) > 0 && strlen((char *) element_data) <= MMFILE_PATH_MAX) { + strncpy(pdirname, (char *) element_data, strlen((char *) element_data)); + + if ((dp = opendir(pdirname)) != NULL) { + while (!readdir_r(dp, &dirp, &result)) { + char cdirname[MMFILE_PATH_MAX + 1]; + + if (strcmp(dirp.d_name, ".") == 0 || + strcmp(dirp.d_name, "..") == 0) { continue; } - memset (cdirname, 0x00, MMFILE_PATH_MAX+1); - strncpy (cdirname, pdirname, strlen(pdirname)); - strncat (cdirname, "/", 1); - strncat (cdirname, dirp.d_name, strlen(dirp.d_name)); - - if ( lstat (cdirname, &statbuf) < 0 ) - { - printf ("lstat error\n"); - closedir (dp); + memset(cdirname, 0x00, MMFILE_PATH_MAX + 1); + strncpy(cdirname, pdirname, strlen(pdirname)); + strncat(cdirname, "/", 1); + strncat(cdirname, dirp.d_name, strlen(dirp.d_name)); + + if (lstat(cdirname, &statbuf) < 0) { + printf("lstat error\n"); + closedir(dp); return MMFILE_FAIL; } - if ( S_ISDIR (statbuf.st_mode) ) - { - printf ("directory: %s\n", cdirname); - g_directories = g_list_append(g_directories, strdup (cdirname)); - } - else - { - printf ("file: %s\n", cdirname); - if ( cbfunc != NULL ) - { - cbfunc (cdirname, user_data, true); + if (S_ISDIR(statbuf.st_mode)) { + printf("directory: %s\n", cdirname); + g_directories = g_list_append(g_directories, strdup(cdirname)); + } else { + printf("file: %s\n", cdirname); + if (cbfunc != NULL) { + cbfunc(cdirname, user_data, true); } } - + } - closedir (dp); + closedir(dp); } } i++; } - g_list_free (g_directories); - + g_list_free(g_directories); + return MMFILE_SUCCESS; - - + + } diff --git a/utils/Makefile.am b/utils/Makefile.am index 1ac70fd..1ff58e0 100755 --- a/utils/Makefile.am +++ b/utils/Makefile.am @@ -30,5 +30,5 @@ libmmfile_utils_la_LIBADD = $(MMCOMMON_LIBS) \ $(ICU_LIBS) \ $(VCONF_LIBS) -libmmfile_utils_la_CFLAGS += $(MMLOG_CFLAGS) -DMMF_LOG_OWNER=0x040 -DMMF_DEBUG_PREFIX=\"MMF-FILE-UTILS\" -libmmfile_utils_la_LIBADD += $(MMLOG_LIBS) +libmmfile_utils_la_CFLAGS += $(DLOG_CFLAGS) +libmmfile_utils_la_LIBADD += $(DLOG_LIBS) diff --git a/utils/include/mm_file_utils.h b/utils/include/mm_file_utils.h index 44a37df..561ccfe 100755 --- a/utils/include/mm_file_utils.h +++ b/utils/include/mm_file_utils.h @@ -54,49 +54,58 @@ extern "C" { #endif -//////////////////////////////////////////////////////////////////////// -// ENDIAN UTIL API // -//////////////////////////////////////////////////////////////////////// -inline unsigned int mmfile_io_be_uint32 (unsigned int value); -inline unsigned int mmfile_io_le_uint32 (unsigned int value); -inline int mmfile_io_be_int32 (unsigned int value); -inline int mmfile_io_le_int32 (unsigned int value); -inline unsigned short mmfile_io_be_uint16 (unsigned short value); -inline unsigned short mmfile_io_le_uint16 (unsigned short value); -inline short mmfile_io_be_int16 (unsigned short value); -inline short mmfile_io_le_int16 (unsigned short value); - - -//////////////////////////////////////////////////////////////////////// -// FILE HEADER CHECK API // -//////////////////////////////////////////////////////////////////////// -int MMFileFormatIsValidMP3 (const char *mmfileuri, int frameCnt); -int MMFileFormatIsValidAAC (const char *mmfileuri); -int MMFileFormatIsValidASF (const char *mmfileuri); -int MMFileFormatIsValidMP4 (const char *mmfileuri); -int MMFileFormatIsValidAVI (const char *mmfileuri); -int MMFileFormatIsValidAMR (const char *mmfileuri); -int MMFileFormatIsValidWAV (const char *mmfileuri); -int MMFileFormatIsValidMMF (const char *mmfileuri); -int MMFileFormatIsValidMID (const char *mmfileuri); -int MMFileFormatIsValidIMY (const char *mmfileuri); -int MMFileFormatIsValidWMA (const char *mmfileuri); -int MMFileFormatIsValidWMV (const char *mmfileuri); -int MMFileFormatIsValidOGG (const char *mmfileuri); -int MMFileFormatIsValidMatroska (const char *mmfileuri); -int MMFileFormatIsValidQT (const char *mmfileuri); -int MMFileFormatIsValidFLAC (const char *mmfileuri); -int MMFileFormatIsValidFLV (const char *mmfileuri); - - -//////////////////////////////////////////////////////////////////////// -// IO HANDLER API // -//////////////////////////////////////////////////////////////////////// +/*////////////////////////////////////////////////////////////////////// */ +/* ENDIAN UTIL API // */ +/*////////////////////////////////////////////////////////////////////// */ +inline unsigned int mmfile_io_be_uint32(unsigned int value); +inline unsigned int mmfile_io_le_uint32(unsigned int value); +inline int mmfile_io_be_int32(unsigned int value); +inline int mmfile_io_le_int32(unsigned int value); +inline unsigned short mmfile_io_be_uint16(unsigned short value); +inline unsigned short mmfile_io_le_uint16(unsigned short value); +inline short mmfile_io_be_int16(unsigned short value); +inline short mmfile_io_le_int16(unsigned short value); + +typedef struct MMFileIOHandle { + struct MMFileIOFunc *iofunc; + int flags; /* file flags */ + void *privateData; + char *fileName; +} MMFileIOHandle; + +/*////////////////////////////////////////////////////////////////////// */ +/* FILE HEADER CHECK API // */ +/*////////////////////////////////////////////////////////////////////// */ +int MMFileFormatIsValidMP3(MMFileIOHandle *pFileIO, const char *mmfileuri, int frameCnt); +int MMFileFormatIsValidAAC(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidASF(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidMP4(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidAVI(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidAMR(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidWAV(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidMMF(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidMID(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidIMY(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidWMA(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidWMV(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidOGG(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidREAL(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidMatroska(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidQT(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidFLAC(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidFLV(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidMPEGTS(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidMPEGPS(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidMPEGVIDEO(MMFileIOHandle *pFileIO, const char *mmfileuri); +int MMFileFormatIsValidMPEGAUDIO(MMFileIOHandle *pFileIO, const char *mmfileuri); + + +/*////////////////////////////////////////////////////////////////////// */ +/* IO HANDLER API // */ +/*////////////////////////////////////////////////////////////////////// */ #define MMFILE_URI_MAX_LEN 512 #define MMFILE_FILE_URI "file://" #define MMFILE_FILE_URI_LEN 7 -#define MMFILE_DRM_URI "drm://" -#define MMFILE_DRM_URI_LEN 6 #define MMFILE_MEM_URI "mem://" #define MMFILE_MEM_URI_LEN 6 #define MMFILE_MMAP_URI "mmap://" @@ -110,152 +119,142 @@ int MMFileFormatIsValidFLV (const char *mmfileuri); #define MMFILE_SEEK_CUR SEEK_CUR #define MMFILE_SEEK_END SEEK_END -typedef struct MMFileIOHandle -{ - struct MMFileIOFunc *iofunc; - int flags; /* file flags */ - void *privateData; - char *fileName; -} MMFileIOHandle; - -typedef struct MMFileIOFunc -{ +typedef struct MMFileIOFunc { const char *handleName; - int (*mmfile_open) (MMFileIOHandle *h, const char *filename, int flags); - int (*mmfile_read) (MMFileIOHandle *h, unsigned char *buf, int size); - int (*mmfile_write)(MMFileIOHandle *h, unsigned char *buf, int size); - long long (*mmfile_seek) (MMFileIOHandle *h, long long pos, int whence); - long long (*mmfile_tell) (MMFileIOHandle *h); - int (*mmfile_close)(MMFileIOHandle *h); + int (*mmfile_open)(MMFileIOHandle *h, const char *filename, int flags); + int (*mmfile_read)(MMFileIOHandle *h, unsigned char *buf, int size); + int (*mmfile_write)(MMFileIOHandle *h, unsigned char *buf, int size); + int64_t(*mmfile_seek)(MMFileIOHandle *h, int64_t pos, int whence); + long long(*mmfile_tell)(MMFileIOHandle *h); + int (*mmfile_close)(MMFileIOHandle *h); struct MMFileIOFunc *next; } MMFileIOFunc; -int mmfile_register_io_func (MMFileIOFunc *iofunc); -int mmfile_register_io_all (); +int mmfile_register_io_func(MMFileIOFunc *iofunc); +int mmfile_register_io_all(); -int mmfile_open (MMFileIOHandle **h, const char *filename, int flags); -int mmfile_read (MMFileIOHandle *h, unsigned char *buf, int size); +int mmfile_open(MMFileIOHandle **h, const char *filename, int flags); +int mmfile_read(MMFileIOHandle *h, unsigned char *buf, int size); int mmfile_write(MMFileIOHandle *h, unsigned char *buf, int size); -long long mmfile_seek (MMFileIOHandle *h, long long pos, int whence); -long long mmfile_tell (MMFileIOHandle *h); +int64_t mmfile_seek(MMFileIOHandle *h, int64_t pos, int whence); +long long mmfile_tell(MMFileIOHandle *h); int mmfile_close(MMFileIOHandle *h); -//////////////////////////////////////////////////////////////////////// -// MIME API // -//////////////////////////////////////////////////////////////////////// +/*////////////////////////////////////////////////////////////////////// */ +/* MIME API // */ +/*////////////////////////////////////////////////////////////////////// */ #define MMFILE_FILE_FMT_MAX_LEN 25 #define MMFILE_MIMETYPE_MAX_LEN 40 #define MMFILE_FILE_EXT_MAX_LEN 7 -int mmfile_util_get_ffmpeg_format (const char *mime, char *ffmpegFormat); -int mmfile_util_get_file_ext (const char *mime, char *ext); +int mmfile_util_get_ffmpeg_format(const char *mime, char *ffmpegFormat); +int mmfile_util_get_file_ext(const char *mime, char *ext); -//////////////////////////////////////////////////////////////////////// -// PRINT API // -//////////////////////////////////////////////////////////////////////// -void mmfile_format_print_contents (MMFileFormatContext*in); -void mmfile_format_print_tags (MMFileFormatContext*in); -void mmfile_codec_print (MMFileCodecContext *in); -void mmfile_format_print_frame (MMFileFormatFrame *in); +/*////////////////////////////////////////////////////////////////////// */ +/* PRINT API // */ +/*////////////////////////////////////////////////////////////////////// */ +void mmfile_format_print_contents(MMFileFormatContext *in); +void mmfile_format_print_tags(MMFileFormatContext *in); +void mmfile_codec_print(MMFileCodecContext *in); +void mmfile_format_print_frame(MMFileFormatFrame *in); -//////////////////////////////////////////////////////////////////////// -// STRING API // -//////////////////////////////////////////////////////////////////////// -char **mmfile_strsplit (const char *string, const char *delimiter); -void mmfile_strfreev (char **str_array); -int mmfile_util_wstrlen (unsigned short *wText); -short* mmfile_swap_2byte_string (short* mszOutput, short* mszInput, int length); +/*////////////////////////////////////////////////////////////////////// */ +/* STRING API // */ +/*////////////////////////////////////////////////////////////////////// */ +char **mmfile_strsplit(const char *string, const char *delimiter); +void mmfile_strfreev(char **str_array); +int mmfile_util_wstrlen(unsigned short *wText); +short *mmfile_swap_2byte_string(short *mszOutput, short *mszInput, int length); char *mmfile_get_charset(const char *str); -char *mmfile_string_convert (const char *str, unsigned int len, - const char *to_codeset, const char *from_codeset, - unsigned int *bytes_read, - unsigned int *bytes_written); -char *mmfile_strdup (const char *str); +char *mmfile_string_convert(const char *str, unsigned int len, + const char *to_codeset, const char *from_codeset, + gsize *bytes_read, + unsigned int *bytes_written); +char *mmfile_strdup(const char *str); -//////////////////////////////////////////////////////////////////////// -// LOCALE API // -//////////////////////////////////////////////////////////////////////// -char *MMFileUtilGetLocale (int *error); +/*////////////////////////////////////////////////////////////////////// */ +/* LOCALE API // */ +/*////////////////////////////////////////////////////////////////////// */ +char *MMFileUtilGetLocale(int *error); -//////////////////////////////////////////////////////////////////////// -// IMAGE API // -//////////////////////////////////////////////////////////////////////// -typedef enum -{ - MMFILE_PIXEL_FORMAT_YUV420 = 0, - MMFILE_PIXEL_FORMAT_YUV422 = 1, - MMFILE_PIXEL_FORMAT_RGB565 = 2, - MMFILE_PIXEL_FORMAT_RGB888 = 3, - MMFILE_PIXEL_FORMAT_MAX, +/*////////////////////////////////////////////////////////////////////// */ +/* IMAGE API // */ +/*////////////////////////////////////////////////////////////////////// */ +typedef enum { + MMFILE_PIXEL_FORMAT_YUV420 = 0, + MMFILE_PIXEL_FORMAT_YUV422 = 1, + MMFILE_PIXEL_FORMAT_RGB565 = 2, + MMFILE_PIXEL_FORMAT_RGB888 = 3, + MMFILE_PIXEL_FORMAT_MAX, } eMMFilePixelFormat; -int mmfile_util_image_convert (unsigned char *src, eMMFilePixelFormat src_fmt, int src_width, int src_height, - unsigned char *dst, eMMFilePixelFormat dst_fmt, int dst_width, int dst_height); +int mmfile_util_image_convert(unsigned char *src, eMMFilePixelFormat src_fmt, int src_width, int src_height, + unsigned char *dst, eMMFilePixelFormat dst_fmt, int dst_width, int dst_height); -//////////////////////////////////////////////////////////////////////// -// MEMORY API // -//////////////////////////////////////////////////////////////////////// -void *mmfile_malloc (unsigned int size); +/*////////////////////////////////////////////////////////////////////// */ +/* MEMORY API // */ +/*////////////////////////////////////////////////////////////////////// */ +void *mmfile_malloc(unsigned int size); #define mmfile_free(ptr) do { if((ptr)) { mmfile_free_r((ptr)); (ptr) = NULL;} } while (0) -void mmfile_free_r (void *ptr); +void mmfile_free_r(void *ptr); void *mmfile_realloc(void *ptr, unsigned int size); -void *mmfile_memset (void *s, int c, unsigned int n); -void *mmfile_memcpy (void *dest, const void *src, unsigned int n); - -//////////////////////////////////////////////////////////////////////// -// DATA STRUCTURE API // -//////////////////////////////////////////////////////////////////////// -typedef void* MMFileList; -MMFileList mmfile_list_alloc (); -MMFileList mmfile_list_append (MMFileList list, void* data); -MMFileList mmfile_list_prepend (MMFileList list, void* data); -MMFileList mmfile_list_find (MMFileList list, void* data); -MMFileList mmfile_list_first (MMFileList list); -MMFileList mmfile_list_last (MMFileList list); -MMFileList mmfile_list_nth (MMFileList list, unsigned int n); -MMFileList mmfile_list_next (MMFileList list); -MMFileList mmfile_list_previous (MMFileList list); -unsigned int mmfile_list_length (MMFileList list); -MMFileList mmfile_list_remove (MMFileList list, void *data); -MMFileList mmfile_list_remove_all (MMFileList list, void *data); -MMFileList mmfile_list_reverse (MMFileList list); -void mmfile_list_free (MMFileList list); - - - -//////////////////////////////////////////////////////////////////////// -// MEMORY DEBUG API // -//////////////////////////////////////////////////////////////////////// +void *mmfile_memset(void *s, int c, unsigned int n); +void *mmfile_memcpy(void *dest, const void *src, unsigned int n); + +/*////////////////////////////////////////////////////////////////////// */ +/* DATA STRUCTURE API // */ +/*////////////////////////////////////////////////////////////////////// */ +typedef void *MMFileList; +MMFileList mmfile_list_alloc(); +MMFileList mmfile_list_append(MMFileList list, void *data); +MMFileList mmfile_list_prepend(MMFileList list, void *data); +MMFileList mmfile_list_find(MMFileList list, void *data); +MMFileList mmfile_list_first(MMFileList list); +MMFileList mmfile_list_last(MMFileList list); +MMFileList mmfile_list_nth(MMFileList list, unsigned int n); +MMFileList mmfile_list_next(MMFileList list); +MMFileList mmfile_list_previous(MMFileList list); +unsigned int mmfile_list_length(MMFileList list); +MMFileList mmfile_list_remove(MMFileList list, void *data); +MMFileList mmfile_list_remove_all(MMFileList list, void *data); +MMFileList mmfile_list_reverse(MMFileList list); +void mmfile_list_free(MMFileList list); + + + +/*////////////////////////////////////////////////////////////////////// */ +/* MEMORY DEBUG API // */ +/*////////////////////////////////////////////////////////////////////// */ #ifdef __MMFILE_MEM_TRACE__ -void *mmfile_malloc_debug (unsigned int size, const char *func, unsigned int line); -void *mmfile_calloc_debug (unsigned int nmemb, unsigned int size, const char *func, unsigned int line); -void mmfile_free_debug (void *ptr, const char *func, unsigned int line); -void *mmfile_realloc_debug (void *ptr, unsigned int size, const char *func, unsigned int line); -void *mmfile_memset_debug (void *s, int c, unsigned int n, const char *func, unsigned int line); -void *mmfile_memcpy_debug (void *dest, const void *src, unsigned int n, const char *func, unsigned int line); - -char *mmfile_string_convert_debug (const char *str, unsigned int len, - const char *to_codeset, const char *from_codeset, - int *bytes_read, - int *bytes_written, - const char *func, - unsigned int line); -char *mmfile_strdup_debug (const char *str, const char *func, unsigned int line); +void *mmfile_malloc_debug(unsigned int size, const char *func, unsigned int line); +void *mmfile_calloc_debug(unsigned int nmemb, unsigned int size, const char *func, unsigned int line); +void mmfile_free_debug(void *ptr, const char *func, unsigned int line); +void *mmfile_realloc_debug(void *ptr, unsigned int size, const char *func, unsigned int line); +void *mmfile_memset_debug(void *s, int c, unsigned int n, const char *func, unsigned int line); +void *mmfile_memcpy_debug(void *dest, const void *src, unsigned int n, const char *func, unsigned int line); + +char *mmfile_string_convert_debug(const char *str, unsigned int len, + const char *to_codeset, const char *from_codeset, + int *bytes_read, + int *bytes_written, + const char *func, + unsigned int line); +char *mmfile_strdup_debug(const char *str, const char *func, unsigned int line); #define mmfile_malloc(size) mmfile_malloc_debug((size), __func__, __LINE__) #define mmfile_calloc(size) mmfile_calloc_debug((size), __func__, __LINE__) @@ -264,16 +263,16 @@ char *mmfile_strdup_debug (const char *str, const char *func, unsigned int line) #define mmfile_memset(ptr, c, n) mmfile_memset_debug((ptr), (c), (n), __func__, __LINE__) #define mmfile_memcpy(dest, src, n) mmfile_memcpy_debug((ptr), (src), (n), __func__, __LINE__) -#define mmfile_string_convert(str,len,to_codeset,from_codeset,bytes_read,bytes_written) mmfile_string_convert_debug((str),(len),(to_codeset),(from_codeset),(bytes_read),(bytes_written), __func__,__LINE__) -#define mmfile_strdup(x) mmfile_strdup_debug((x),__func__,__LINE__) - +#define mmfile_string_convert(str, len, to_codeset, from_codeset, bytes_read, bytes_written) mmfile_string_convert_debug((str), (len), (to_codeset), (from_codeset), (bytes_read), (bytes_written), __func__, __LINE__) +#define mmfile_strdup(x) mmfile_strdup_debug((x), __func__, __LINE__) + #endif -//////////////////////////////////////////////////////////////////////// -// TAG API // -//////////////////////////////////////////////////////////////////////// +/*////////////////////////////////////////////////////////////////////// */ +/* TAG API // */ +/*////////////////////////////////////////////////////////////////////// */ #define MM_FILE_REVERSE_BYTE_ORDER_INT(i) ((int)((((i)&0xFF000000)>>24) | (((i)&0x00FF0000)>>8) | (((i)&0x0000FF00)<<8) | (((i)&0x000000FF)<<24))) #define MM_FILE_REVERSE_BYTE_ORDER_SHORT(s) ((short)((((s)&0xFF00)>>8) | (((s)&0x00FF)<<8))) @@ -281,13 +280,12 @@ char *mmfile_strdup_debug (const char *str, const char *func, unsigned int line) #define _FREE_EX(ptr) { if ((ptr)) {mmfile_free ((ptr)); (ptr) = NULL;} } #define _STRNCPY_EX(dst,src,size) { if ((size>0)) {strncpy((char*)(dst), (char*)(src),(size)); *((dst) + (size)) = '\0';}} -inline static int __AvMemstr (unsigned char* mem, unsigned char* str, int str_len, int search_range) +inline static int __AvMemstr(unsigned char *mem, unsigned char *str, int str_len, int search_range) { int offset = 0; unsigned char *pSrc = mem; - for (offset = 0; offset < search_range; offset++ ) - { + for (offset = 0; offset < search_range; offset++) { pSrc = mem + offset; if (memcmp(pSrc, str, str_len) == 0) return offset; @@ -343,7 +341,7 @@ typedef enum { } AvID3v2PictureType; -#define MP3TAGINFO_SIZE 128 // file end 128 byte +#define MP3TAGINFO_SIZE 128 /* file end 128 byte */ #define MP3_ID3_TITLE_LENGTH 30 #define MP3_ID3_ARTIST_LENGTH 30 #define MP3_ID3_ALBUM_LENGTH 30 @@ -370,11 +368,11 @@ typedef enum { AV_ID3V2_UTF16_BE, AV_ID3V2_UTF8, AV_ID3V2_MAX - + } AvID3v2EncodingType; -typedef struct{ +typedef struct { char *pImageBuf; char *imageDescription; char imageMIMEType[MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH]; @@ -384,10 +382,10 @@ typedef struct{ int imgDesLen; int imgMimetypeLen; bool bURLInfo; - + } AvTagVer2ImageInfo; - typedef struct{ +typedef struct { int tagLen; char tagVersion; @@ -419,9 +417,8 @@ typedef struct{ } AvTagVer2AdditionalData; - -typedef struct -{ + +typedef struct { int titleLen; int artistLen; int authorLen; @@ -436,11 +433,11 @@ typedef struct int recdateLen; int conductorLen; int album_artistLen; - -// for PC Studio Podcast + +/* for PC Studio Podcast */ int contentGroupLen; - -// for ID3V2 Tag + +/* for ID3V2 Tag */ int encbyLen; int urlLen; int originartistLen; @@ -448,68 +445,65 @@ typedef struct int unsynclyricsLen; int syncLyricsNum; -// To send resolution info to appl from OEM - int width; +/* To send resolution info to appl from OEM */ + int width; int height; - + unsigned int bitRate; unsigned int sampleRate; unsigned int channels; -// unsigned long creationTime; +/* unsigned long creationTime; */ long long duration; -// for mp3 Info - char *pToc; // VBR�϶� SeekPosition�� ���ϱ� ���� TOC ���̺��� ������ ��\EF\BF?�ִ� char ï¿½è¿ , 100 ����Ʈ ���� - unsigned int mpegVersion; // 1 : mpeg 1, 2 : mpeg 2, 3 : mpeg2.5 - unsigned int layer; // 1 : layer1, 2 : layer2, 3 : layer3 - unsigned int channelIndex; // 0 : stereo, 1 : joint_stereo, 2 : dual_channel, 3 : mono +/* for mp3 Info */ + char *pToc; /* VBR�϶� SeekPosition�� ���ϱ� ���� TOC ���̺��� ������ ��\EF\BF?�ִ� char �è¿, 100 ����Ʈ ���� */ + unsigned int mpegVersion; /* 1 : mpeg 1, 2 : mpeg 2, 3 : mpeg2.5 */ + unsigned int layer; /* 1 : layer1, 2 : layer2, 3 : layer3 */ + unsigned int channelIndex; /* 0 : stereo, 1 : joint_stereo, 2 : dual_channel, 3 : mono */ unsigned int objectType; unsigned int headerType; - long long fileLen; // mp3 ������ ��ü ���� - long headerPos; // mp3 ����\EF\BF?���� ��Ÿ���� ��ġ - long long datafileLen; // ID3Tag���� �����ϰ� ���� mp3 frame���� ���� , VBR�϶� XHEADDATA �� bytes �� �ش��Ѵ� - int frameSize; // mp3 frame �� ���� ũ�� - int frameNum; // mp3 ���Ͽ� �������� � ����ִ°\EF\BF? - bool bVbr; // VBR mp3? - bool bPadding; // Padding? + long long fileLen; /* mp3 ������ ��ü ���� */ + long headerPos; /* mp3 ����\EF\BF?���� ��Ÿ���� ��ġ */ + long long datafileLen; /* ID3Tag���� �����ϰ� ���� mp3 frame���� ����, VBR�϶� XHEADDATA �� bytes �� �ش��Ѵ� */ + int frameSize; /* mp3 frame �� ���� ũ�� */ + int frameNum; /* mp3 ���Ͽ� �������� � ����ִ°\EF\BF? */ + bool bVbr; /* VBR mp3? */ + bool bPadding; /* Padding? */ bool bV1tagFound; - char *pTitle; //Title/songname/ - char *pArtist; //Lead performer(s)/Soloist(s), - char *pAuthor; //Author + char *pTitle; /*Title/songname/ */ + char *pArtist; /*Lead performer(s)/Soloist(s), */ + char *pAuthor; /*Author */ char *pCopyright; char *pDescription; char *pComment; char *pRating; - char *pAlbum; //Album/Movie/ + char *pAlbum; /*Album/Movie/ */ char *pAlbum_Artist; char *pYear; - char *pGenre; - char *pTrackNum; //Track number/Position in set - char *pRecDate; //Recording dates - + char *pGenre; + char *pTrackNum; /*Track number/Position in set */ + char *pRecDate; /*Recording dates */ + char *pConductor; /*[#TPE3 Conductor/performer refinement], ADDED: 2010-01-xx*/ - -// for PC Studio Podcast + +/* for PC Studio Podcast */ char *pContentGroup; -// for ID3V2 Tag - char *pEncBy; //Encoded by - char *pURL; //User defined URL link frame for ID3V2 Tag - char *pOriginArtist; //Original artist(s)/performer(s) - char *pComposer; //Composer - char *pUnsyncLyrics; //Unsychronised lyrics/text transcription - GList *pSyncLyrics; //Sychronised lyrics/text - - AvTagVer2ImageInfo imageInfo; //Album art attached feature - AvTagVer2AdditionalData tagV2Info; //Needed data for ID3 tag parsing - -// for DRM 2.0 - char *pTransactionID; - -//for ID3V1 Tag - unsigned char genre; - +/* for ID3V2 Tag */ + char *pEncBy; /*Encoded by */ + char *pURL; /*User defined URL link frame for ID3V2 Tag */ + char *pOriginArtist; /*Original artist(s)/performer(s) */ + char *pComposer; /*Composer */ + char *pUnsyncLyrics; /*Unsychronised lyrics/text transcription */ + GList *pSyncLyrics; /*Sychronised lyrics/text */ + + AvTagVer2ImageInfo imageInfo; /*Album art attached feature */ + AvTagVer2AdditionalData tagV2Info; /*Needed data for ID3 tag parsing */ + +/*for ID3V1 Tag */ + unsigned char genre; + } AvFileContentInfo; typedef struct { @@ -522,49 +516,47 @@ typedef struct { typedef struct { unsigned long time_info; char *lyric_info; -}AvSynclyricsInfo; +} AvSynclyricsInfo; -void mm_file_free_synclyrics_list(GList * synclyrics_list); +void mm_file_free_synclyrics_list(GList *synclyrics_list); -inline static void mm_file_free_AvFileContentInfo (AvFileContentInfo *pInfo) +inline static void mm_file_free_AvFileContentInfo(AvFileContentInfo *pInfo) { if (pInfo) { - if (pInfo->pToc) mmfile_free (pInfo->pToc); - if (pInfo->pTitle) mmfile_free (pInfo->pTitle); - if (pInfo->pArtist) mmfile_free (pInfo->pArtist); - if (pInfo->pAuthor) mmfile_free (pInfo->pAuthor); - if (pInfo->pCopyright) mmfile_free (pInfo->pCopyright); - if (pInfo->pDescription) mmfile_free (pInfo->pDescription); - if (pInfo->pComment) mmfile_free (pInfo->pComment); - if (pInfo->pRating) mmfile_free (pInfo->pRating); - if (pInfo->pAlbum) mmfile_free (pInfo->pAlbum); - if (pInfo->pAlbum_Artist) mmfile_free (pInfo->pAlbum_Artist); - if (pInfo->pYear) mmfile_free (pInfo->pYear); - if (pInfo->pGenre) mmfile_free (pInfo->pGenre); - if (pInfo->pTrackNum) mmfile_free (pInfo->pTrackNum); - if (pInfo->pRecDate) mmfile_free (pInfo->pRecDate); - if (pInfo->pConductor) mmfile_free (pInfo->pConductor); - if (pInfo->pContentGroup) mmfile_free (pInfo->pContentGroup); - if (pInfo->pEncBy) mmfile_free (pInfo->pEncBy); - if (pInfo->pURL) mmfile_free (pInfo->pURL); - if (pInfo->pOriginArtist) mmfile_free (pInfo->pOriginArtist); - if (pInfo->pComposer) mmfile_free (pInfo->pComposer); - if (pInfo->pUnsyncLyrics) mmfile_free (pInfo->pUnsyncLyrics); - if (pInfo->imageInfo.pImageBuf) mmfile_free (pInfo->imageInfo.pImageBuf); - if (pInfo->imageInfo.imageDescription) mmfile_free (pInfo->imageInfo.imageDescription); - if (strlen(pInfo->imageInfo.imageMIMEType)>0) memset(pInfo->imageInfo.imageMIMEType, 0, MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH); - if (pInfo->pTransactionID) mmfile_free (pInfo->pTransactionID); - + if (pInfo->pToc) mmfile_free(pInfo->pToc); + if (pInfo->pTitle) mmfile_free(pInfo->pTitle); + if (pInfo->pArtist) mmfile_free(pInfo->pArtist); + if (pInfo->pAuthor) mmfile_free(pInfo->pAuthor); + if (pInfo->pCopyright) mmfile_free(pInfo->pCopyright); + if (pInfo->pDescription) mmfile_free(pInfo->pDescription); + if (pInfo->pComment) mmfile_free(pInfo->pComment); + if (pInfo->pRating) mmfile_free(pInfo->pRating); + if (pInfo->pAlbum) mmfile_free(pInfo->pAlbum); + if (pInfo->pAlbum_Artist) mmfile_free(pInfo->pAlbum_Artist); + if (pInfo->pYear) mmfile_free(pInfo->pYear); + if (pInfo->pGenre) mmfile_free(pInfo->pGenre); + if (pInfo->pTrackNum) mmfile_free(pInfo->pTrackNum); + if (pInfo->pRecDate) mmfile_free(pInfo->pRecDate); + if (pInfo->pConductor) mmfile_free(pInfo->pConductor); + if (pInfo->pContentGroup) mmfile_free(pInfo->pContentGroup); + if (pInfo->pEncBy) mmfile_free(pInfo->pEncBy); + if (pInfo->pURL) mmfile_free(pInfo->pURL); + if (pInfo->pOriginArtist) mmfile_free(pInfo->pOriginArtist); + if (pInfo->pComposer) mmfile_free(pInfo->pComposer); + if (pInfo->pUnsyncLyrics) mmfile_free(pInfo->pUnsyncLyrics); + if (pInfo->imageInfo.pImageBuf) mmfile_free(pInfo->imageInfo.pImageBuf); + if (pInfo->imageInfo.imageDescription) mmfile_free(pInfo->imageInfo.imageDescription); + if (strlen(pInfo->imageInfo.imageMIMEType) > 0) memset(pInfo->imageInfo.imageMIMEType, 0, MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH); } } -bool mm_file_id3tag_parse_v110 (AvFileContentInfo* pInfo, unsigned char *buffer); //20050401 Condol : for MP3 content Info. -bool mm_file_id3tag_parse_v222 (AvFileContentInfo* pInfo, unsigned char *buffer); -bool mm_file_id3tag_parse_v223 (AvFileContentInfo* pInfo, unsigned char *buffer); -bool mm_file_id3tag_parse_v224 (AvFileContentInfo* pInfo, unsigned char *buffer); -void mm_file_id3tag_restore_content_info (AvFileContentInfo* pInfo); -int MMFileUtilGetMetaDataFromMP4 (MMFileFormatContext *formatContext); +bool mm_file_id3tag_parse_v110(AvFileContentInfo *pInfo, unsigned char *buffer); /*20050401 Condol : for MP3 content Info. */ +bool mm_file_id3tag_parse_v222(AvFileContentInfo *pInfo, unsigned char *buffer); +bool mm_file_id3tag_parse_v223(AvFileContentInfo *pInfo, unsigned char *buffer); +bool mm_file_id3tag_parse_v224(AvFileContentInfo *pInfo, unsigned char *buffer); +void mm_file_id3tag_restore_content_info(AvFileContentInfo *pInfo); +int MMFileUtilGetMetaDataFromMP4(MMFileFormatContext *formatContext); #ifdef __cplusplus diff --git a/utils/mm_file_util_io.c b/utils/mm_file_util_io.c index adc8f0a..60722ae 100755 --- a/utils/mm_file_util_io.c +++ b/utils/mm_file_util_io.c @@ -23,63 +23,63 @@ #include <string.h> #include <stdlib.h> #include <ctype.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" static unsigned char is_little_endian = 0; -inline static int _is_little_endian (void) +inline static int _is_little_endian(void) { int i = 0x00000001; return ((char *)&i)[0]; } EXPORT_API -inline unsigned int mmfile_io_be_uint32 (unsigned int value) +inline unsigned int mmfile_io_be_uint32(unsigned int value) { - return (is_little_endian == 0) ? value : ((unsigned int)((((value)&0xFF000000)>>24) | (((value)&0x00FF0000)>>8) | (((value)&0x0000FF00)<<8) | (((value)&0x000000FF)<<24))); + return (is_little_endian == 0) ? value : ((unsigned int)((((value) & 0xFF000000) >> 24) | (((value) & 0x00FF0000) >> 8) | (((value) & 0x0000FF00) << 8) | (((value) & 0x000000FF) << 24))); } EXPORT_API -inline unsigned int mmfile_io_le_uint32 (unsigned int value) +inline unsigned int mmfile_io_le_uint32(unsigned int value) { - return (is_little_endian == 1) ? value : ((unsigned int)((((value)&0xFF000000)>>24) | (((value)&0x00FF0000)>>8) | (((value)&0x0000FF00)<<8) | (((value)&0x000000FF)<<24))); + return (is_little_endian == 1) ? value : ((unsigned int)((((value) & 0xFF000000) >> 24) | (((value) & 0x00FF0000) >> 8) | (((value) & 0x0000FF00) << 8) | (((value) & 0x000000FF) << 24))); } EXPORT_API -inline int mmfile_io_be_int32 (unsigned int value) +inline int mmfile_io_be_int32(unsigned int value) { - return (is_little_endian == 0) ? value : ((int)((((value)&0xFF000000)>>24) | (((value)&0x00FF0000)>>8) | (((value)&0x0000FF00)<<8) | (((value)&0x000000FF)<<24))); + return (is_little_endian == 0) ? value : ((unsigned int)((((value) & 0xFF000000) >> 24) | (((value) & 0x00FF0000) >> 8) | (((value) & 0x0000FF00) << 8) | (((value) & 0x000000FF) << 24))); } EXPORT_API -inline int mmfile_io_le_int32 (unsigned int value) +inline int mmfile_io_le_int32(unsigned int value) { - return (is_little_endian == 1) ? value : ((int)((((value)&0xFF000000)>>24) | (((value)&0x00FF0000)>>8) | (((value)&0x0000FF00)<<8) | (((value)&0x000000FF)<<24))); + return (is_little_endian == 1) ? value : ((unsigned int)((((value) & 0xFF000000) >> 24) | (((value) & 0x00FF0000) >> 8) | (((value) & 0x0000FF00) << 8) | (((value) & 0x000000FF) << 24))); } EXPORT_API -inline unsigned short mmfile_io_be_uint16 (unsigned short value) +inline unsigned short mmfile_io_be_uint16(unsigned short value) { - return (is_little_endian == 0) ? value : ((unsigned short)((((value)&0xFF00)>>8) | (((value)&0x00FF)<<8))); + return (is_little_endian == 0) ? value : ((unsigned short)((((value) & 0xFF00) >> 8) | (((value) & 0x00FF) << 8))); } EXPORT_API -inline unsigned short mmfile_io_le_uint16 (unsigned short value) +inline unsigned short mmfile_io_le_uint16(unsigned short value) { - return (is_little_endian == 1) ? value : ((unsigned short)((((value)&0xFF00)>>8) | (((value)&0x00FF)<<8))); + return (is_little_endian == 1) ? value : ((unsigned short)((((value) & 0xFF00) >> 8) | (((value) & 0x00FF) << 8))); } EXPORT_API -inline short mmfile_io_be_int16 (unsigned short value) +inline short mmfile_io_be_int16(unsigned short value) { - return (is_little_endian == 0) ? value : ((short)((((value)&0xFF00)>>8) | (((value)&0x00FF)<<8))); + return (is_little_endian == 0) ? value : ((short)((((value) & 0xFF00) >> 8) | (((value) & 0x00FF) << 8))); } EXPORT_API -inline short mmfile_io_le_int16 (unsigned short value) +inline short mmfile_io_le_int16(unsigned short value) { - return (is_little_endian == 1) ? value : ((short)((((value)&0xFF00)>>8) | (((value)&0x00FF)<<8))); + return (is_little_endian == 1) ? value : ((short)((((value) & 0xFF00) >> 8) | (((value) & 0x00FF) << 8))); } @@ -94,14 +94,14 @@ static int _mmfile_open(MMFileIOHandle **handle, struct MMFileIOFunc *Func, cons int fileNameLen = 0; if (!handle || !Func || !filename || !Func->mmfile_open) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); err = MMFILE_IO_FAILED; goto fail; } - pHandle = mmfile_malloc (sizeof(MMFileIOHandle)); + pHandle = mmfile_malloc(sizeof(MMFileIOHandle)); if (!pHandle) { - debug_error ("mmfile_malloc: pHandle\n"); + debug_error("mmfile_malloc: pHandle\n"); err = MMFILE_IO_FAILED; goto fail; } @@ -112,34 +112,33 @@ static int _mmfile_open(MMFileIOHandle **handle, struct MMFileIOFunc *Func, cons pHandle->flags = flags; pHandle->privateData = NULL; fileNameLen = strlen(filename); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("[%d, %s]\n", fileNameLen, filename); - #endif - pHandle->fileName = mmfile_malloc (fileNameLen + 1); +#ifdef __MMFILE_TEST_MODE__ + debug_msg("[%d, %s]\n", fileNameLen, filename); +#endif + pHandle->fileName = mmfile_malloc(fileNameLen + 1); if (!pHandle->fileName) { - debug_error ("mmfile_malloc: pHandle->fileName\n"); + debug_error("mmfile_malloc: pHandle->fileName\n"); err = MMFILE_IO_FAILED; goto fail; } memcpy(pHandle->fileName, filename, fileNameLen); - err = Func->mmfile_open (pHandle, filename, flags); + err = Func->mmfile_open(pHandle, filename, flags); if (err < 0) { - debug_error ("mmfile_open: pHandle->fileName\n"); + debug_error("mmfile_open: pHandle->fileName\n"); err = MMFILE_IO_FAILED; goto fail; } - + return MMFILE_IO_SUCCESS; fail: - if (handle && *handle) // fix for prevent - { + if (handle && *handle) { /* fix for prevent */ mmfile_close(*handle); *handle = NULL; } - + return err; } @@ -148,15 +147,15 @@ int mmfile_open(MMFileIOHandle **handle, const char *filename, int flags) { MMFileIOFunc *pFuc = NULL; const char *pFile = NULL; - char handle_str[256] = {0,}; + char handle_str[256] = {0, }; char *pHandleName = NULL; if (!handle || !filename) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_IO_FAILED; } - memset (handle_str, 0x00, sizeof(handle_str)); + memset(handle_str, 0x00, sizeof(handle_str)); pFile = filename; pHandleName = handle_str; @@ -167,7 +166,7 @@ int mmfile_open(MMFileIOHandle **handle, const char *filename, int flags) goto file_handle; } - if ((pHandleName - handle_str) < sizeof(handle_str) - 1) { + if ((pHandleName - handle_str) < (int)sizeof(handle_str) - 1) { *pHandleName++ = *pFile; } pFile++; @@ -184,7 +183,7 @@ file_handle: while (pFuc != NULL) { if (!strcmp(handle_str, pFuc->handleName)) { - return _mmfile_open (handle, pFuc, filename, flags); + return _mmfile_open(handle, pFuc, filename, flags); } pFuc = pFuc->next; } @@ -206,7 +205,7 @@ int mmfile_read(MMFileIOHandle *handle, unsigned char *buf, int size) return MMFILE_IO_FAILED; } - ret = handle->iofunc->mmfile_read (handle, buf, size); + ret = handle->iofunc->mmfile_read(handle, buf, size); return ret; } @@ -222,12 +221,12 @@ int mmfile_write(MMFileIOHandle *handle, unsigned char *buf, int size) return MMFILE_IO_FAILED; } - ret = handle->iofunc->mmfile_write (handle, buf, size); + ret = handle->iofunc->mmfile_write(handle, buf, size); return ret; } EXPORT_API -long long mmfile_seek(MMFileIOHandle *handle, long long pos, int whence) +int64_t mmfile_seek(MMFileIOHandle *handle, int64_t pos, int whence) { long long ret = 0; if (!handle || !handle->iofunc || !handle->iofunc->mmfile_seek) { @@ -271,7 +270,7 @@ int mmfile_close(MMFileIOHandle *handle) } EXPORT_API -int mmfile_register_io_func (MMFileIOFunc *iofunc) +int mmfile_register_io_func(MMFileIOFunc *iofunc) { MMFileIOFunc **ptr = NULL; @@ -290,7 +289,7 @@ int mmfile_register_io_func (MMFileIOFunc *iofunc) } EXPORT_API -int mmfile_register_io_all () +int mmfile_register_io_all() { static int initialized = 0; @@ -298,16 +297,16 @@ int mmfile_register_io_all () return MMFILE_IO_FAILED; } - is_little_endian = _is_little_endian (); + is_little_endian = _is_little_endian(); initialized = 1; extern MMFileIOFunc mmfile_file_io_handler; extern MMFileIOFunc mmfile_mem_io_handler; extern MMFileIOFunc mmfile_mmap_io_handler; - mmfile_register_io_func (&mmfile_file_io_handler); - mmfile_register_io_func (&mmfile_mem_io_handler); - mmfile_register_io_func (&mmfile_mmap_io_handler); + mmfile_register_io_func(&mmfile_file_io_handler); + mmfile_register_io_func(&mmfile_mem_io_handler); + mmfile_register_io_func(&mmfile_mmap_io_handler); return MMFILE_IO_SUCCESS; } diff --git a/utils/mm_file_util_io_file.c b/utils/mm_file_util_io_file.c index aca9ba1..f42b870 100755 --- a/utils/mm_file_util_io_file.c +++ b/utils/mm_file_util_io_file.c @@ -27,142 +27,131 @@ #include <string.h> #include <unistd.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" -typedef struct mmfileiodata -{ - int fd; - long long offset; +typedef struct mmfileiodata { + int fd; + long long offset; } tMMFORMAT_FILEIO_DATA; static int file_open(MMFileIOHandle *handle, const char *filename, int flags) { - tMMFORMAT_FILEIO_DATA *privateData = NULL; - int access = 0; - int fd = 0; - - if (!handle || !filename) - { - debug_error ("invalid param\n"); - return MMFILE_IO_FAILED; - } - - filename += strlen(handle->iofunc->handleName) + 3; /* :// */ - - if (flags & MMFILE_RDWR) - { - access = O_CREAT | O_TRUNC | O_RDWR; - } - else if (flags & MMFILE_WRONLY) - { - access = O_CREAT | O_TRUNC | O_WRONLY; - } - else - { - access = O_RDONLY; - } + tMMFORMAT_FILEIO_DATA *privateData = NULL; + int access = 0; + int fd = 0; + + if (!handle || !filename) { + debug_error("invalid param\n"); + return MMFILE_IO_FAILED; + } + + filename += strlen(handle->iofunc->handleName) + 3; /* :// */ + + if (flags & MMFILE_RDWR) { + access = O_CREAT | O_TRUNC | O_RDWR; + } else if (flags & MMFILE_WRONLY) { + access = O_CREAT | O_TRUNC | O_WRONLY; + } else { + access = O_RDONLY; + } #ifdef O_BINARY - access |= O_BINARY; + access |= O_BINARY; #endif fd = open(filename, access, 0666); - if (fd < 0) - { - debug_error ("open error\n"); + if (fd < 0) { + debug_error("open error\n"); return MMFILE_IO_FAILED; } - privateData = mmfile_malloc (sizeof(tMMFORMAT_FILEIO_DATA)); - if (!privateData) - { + privateData = mmfile_malloc(sizeof(tMMFORMAT_FILEIO_DATA)); + if (!privateData) { close(fd); - debug_error ("calloc privateData\n"); + debug_error("calloc privateData\n"); return MMFILE_IO_FAILED; } - privateData->fd = fd; - privateData->offset = 0; - - handle->privateData = (void *)privateData; - return MMFILE_IO_SUCCESS; + privateData->fd = fd; + privateData->offset = 0; + + handle->privateData = (void *)privateData; + return MMFILE_IO_SUCCESS; } static int file_read(MMFileIOHandle *handle, unsigned char *buf, int size) { - tMMFORMAT_FILEIO_DATA *privateData = handle->privateData; - int readSize = 0; - - readSize = read(privateData->fd, buf, size); - if (readSize < 0) - { - debug_error ("read\n"); - return MMFILE_IO_FAILED; - } - - privateData->offset += readSize; - - return readSize; + tMMFORMAT_FILEIO_DATA *privateData = handle->privateData; + int readSize = 0; + + readSize = read(privateData->fd, buf, size); + if (readSize < 0) { + debug_error("read\n"); + return MMFILE_IO_FAILED; + } + + privateData->offset += readSize; + + return readSize; } static int file_write(MMFileIOHandle *handle, unsigned char *buf, int size) { - tMMFORMAT_FILEIO_DATA *privateData = handle->privateData; - int writtenSize = 0; - - writtenSize = write(privateData->fd, buf, size); - if (writtenSize < 0) - { - debug_error ("write\n"); - return MMFILE_IO_FAILED; - } - - privateData->offset += writtenSize; - - return writtenSize; + tMMFORMAT_FILEIO_DATA *privateData = handle->privateData; + int writtenSize = 0; + + writtenSize = write(privateData->fd, buf, size); + if (writtenSize < 0) { + debug_error("write\n"); + return MMFILE_IO_FAILED; + } + + privateData->offset += writtenSize; + + return writtenSize; } -static long long file_seek(MMFileIOHandle *handle, long long pos, int whence) +static int64_t file_seek(MMFileIOHandle *handle, int64_t pos, int whence) { - tMMFORMAT_FILEIO_DATA *privateData = handle->privateData; - privateData->offset = lseek(privateData->fd, pos, whence); - return privateData->offset; + tMMFORMAT_FILEIO_DATA *privateData = handle->privateData; + privateData->offset = lseek(privateData->fd, pos, whence); + return privateData->offset; } static long long file_tell(MMFileIOHandle *handle) { - tMMFORMAT_FILEIO_DATA *privateData = handle->privateData; - - return privateData->offset; + tMMFORMAT_FILEIO_DATA *privateData = handle->privateData; + + return privateData->offset; } static int file_close(MMFileIOHandle *handle) { - tMMFORMAT_FILEIO_DATA *privateData = handle->privateData; - int ret = 0; - - if (privateData) - { - ret = close(privateData->fd); - mmfile_free (privateData); - handle->privateData = NULL; - return MMFILE_IO_SUCCESS; - } - - return MMFILE_IO_FAILED; + tMMFORMAT_FILEIO_DATA *privateData = handle->privateData; + /*int ret = 0;*/ + + if (privateData) { + /*ret = */close(privateData->fd); + mmfile_free(privateData); + handle->privateData = NULL; + return MMFILE_IO_SUCCESS; + } + + return MMFILE_IO_FAILED; } MMFileIOFunc mmfile_file_io_handler = { - "file", - file_open, - file_read, - file_write, - file_seek, - file_tell, - file_close, + "file", + file_open, + file_read, + file_write, + file_seek, + file_tell, + file_close, + NULL }; diff --git a/utils/mm_file_util_io_mem.c b/utils/mm_file_util_io_mem.c index f8f48d5..82b4744 100755 --- a/utils/mm_file_util_io_mem.c +++ b/utils/mm_file_util_io_mem.c @@ -18,12 +18,12 @@ * limitations under the License. * */ - + #include <stdio.h> #include <stdlib.h> #include <string.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" @@ -34,229 +34,207 @@ typedef struct { int state; } MMFmemIOHandle; -static int mmf_mem_open (MMFileIOHandle *handle, const char *filename, int flags) +static int mmf_mem_open(MMFileIOHandle *handle, const char *filename, int flags) { - MMFmemIOHandle *memHandle = NULL; - char **splitedString = NULL; - - if (!handle || !filename || !handle->iofunc || !handle->iofunc->handleName) - { - debug_error ("invalid param\n"); - return MMFILE_IO_FAILED; - } - - filename += strlen(handle->iofunc->handleName) + 3; /* ://%d:%d means (memory addr:mem size)*/ - - splitedString = mmfile_strsplit (filename, ":"); - if (splitedString == NULL) - { - debug_error ("invalid param\n"); - return MMFILE_IO_FAILED; - } - - if (!splitedString[0] || !splitedString[1]) - { - debug_error ("invalid param\n"); - goto exception; - } - - memHandle = mmfile_malloc (sizeof(MMFmemIOHandle)); - if (!memHandle) - { - debug_error ("error: mmfile_malloc memHandle\n"); - goto exception; - } - - memHandle->ptr = (unsigned char*)atoll(splitedString[0]); //memory allocation address changed. memHandle->ptr = (unsigned char*)atoi(splitedString[0]); - memHandle->size = atoi(splitedString[1]); - memHandle->offset = 0; - memHandle->state = 0; - - handle->privateData = (void*) memHandle; - - if (splitedString) - { - mmfile_strfreev (splitedString); - } - - return MMFILE_IO_SUCCESS; + MMFmemIOHandle *memHandle = NULL; + char **splitedString = NULL; + + if (!handle || !filename || !handle->iofunc || !handle->iofunc->handleName) { + debug_error("invalid param\n"); + return MMFILE_IO_FAILED; + } + + filename += strlen(handle->iofunc->handleName) + 3; /* ://%d:%d means (memory addr:mem size)*/ + + splitedString = mmfile_strsplit(filename, ":"); + if (splitedString == NULL) { + debug_error("invalid param\n"); + return MMFILE_IO_FAILED; + } + + if (!splitedString[0] || !splitedString[1]) { + debug_error("invalid param\n"); + goto exception; + } + + memHandle = mmfile_malloc(sizeof(MMFmemIOHandle)); + if (!memHandle) { + debug_error("error: mmfile_malloc memHandle\n"); + goto exception; + } + + memHandle->ptr = (unsigned char *)atoll(splitedString[0]); /*memory allocation address changed. memHandle->ptr = (unsigned char*)atoi(splitedString[0]); */ + memHandle->size = atoi(splitedString[1]); + memHandle->offset = 0; + memHandle->state = 0; + + handle->privateData = (void *) memHandle; + + if (splitedString) { + mmfile_strfreev(splitedString); + } + + return MMFILE_IO_SUCCESS; exception: - if (splitedString) - { - mmfile_strfreev (splitedString); - } - -#if 0 //dead code - if (memHandle) - { - mmfile_free (memHandle); - handle->privateData = NULL; - } + if (splitedString) { + mmfile_strfreev(splitedString); + } + +#if 0 /*dead code */ + if (memHandle) { + mmfile_free(memHandle); + handle->privateData = NULL; + } #endif - return MMFILE_IO_FAILED; + return MMFILE_IO_FAILED; } -static int mmf_mem_read (MMFileIOHandle *h, unsigned char *buf, int size) +static int mmf_mem_read(MMFileIOHandle *h, unsigned char *buf, int size) { - MMFmemIOHandle *memHandle = NULL; - const unsigned char *c = NULL; - int len = 0; - - if (!h || !h->privateData || !buf) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } - - memHandle = h->privateData; - - if (!memHandle->ptr) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } - - c = memHandle->ptr + memHandle->offset; - - if (memHandle->state != EOF) - { - len = size; - if (len + memHandle->offset > memHandle->size) - { - len = memHandle->size - memHandle->offset; - } - } - - memcpy (buf, c, len); - - memHandle->offset += len; - - if ( memHandle->offset == memHandle->size) - { - memHandle->state = EOF; - } - - return len; + MMFmemIOHandle *memHandle = NULL; + const unsigned char *c = NULL; + int len = 0; + + if (!h || !h->privateData || !buf) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } + + memHandle = h->privateData; + + if (!memHandle->ptr) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } + + c = memHandle->ptr + memHandle->offset; + + if (memHandle->state != EOF) { + len = size; + if (len + memHandle->offset > memHandle->size) { + len = memHandle->size - memHandle->offset; + } + } + + memcpy(buf, c, len); + + memHandle->offset += len; + + if (memHandle->offset == memHandle->size) { + memHandle->state = EOF; + } + + return len; } -static int mmf_mem_write (MMFileIOHandle *h, unsigned char *buf, int size) +static int mmf_mem_write(MMFileIOHandle *h, unsigned char *buf, int size) { - MMFmemIOHandle *memHandle = NULL; - unsigned char *c = NULL; - int len = 0; - - if (!h || !h->privateData || !buf) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } - - memHandle = h->privateData; - - c = memHandle->ptr + memHandle->offset; - - if (memHandle->state != EOF) - { - len = size; - if (len + memHandle->offset > memHandle->size) - { - len = memHandle->size - memHandle->offset; - } - } - - memcpy (c, buf, len); - - memHandle->offset += len; - - if ( memHandle->offset == memHandle->size) - { - memHandle->state = EOF; - } - - return len; + MMFmemIOHandle *memHandle = NULL; + unsigned char *c = NULL; + int len = 0; + + if (!h || !h->privateData || !buf) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } + + memHandle = h->privateData; + + c = memHandle->ptr + memHandle->offset; + + if (memHandle->state != EOF) { + len = size; + if (len + memHandle->offset > memHandle->size) { + len = memHandle->size - memHandle->offset; + } + } + + memcpy(c, buf, len); + + memHandle->offset += len; + + if (memHandle->offset == memHandle->size) { + memHandle->state = EOF; + } + + return len; } -static long long mmf_mem_seek (MMFileIOHandle *h, long long pos, int whence) +static int64_t mmf_mem_seek(MMFileIOHandle *h, int64_t pos, int whence) { - MMFmemIOHandle *memHandle = NULL; - long tmp_offset = 0; - - if (!h || !h->privateData) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } - - memHandle = h->privateData; - - switch (whence) - { - case MMFILE_SEEK_SET: - tmp_offset = 0 + pos; - break; - case MMFILE_SEEK_CUR: - tmp_offset = memHandle->offset + pos; - break; - case MMFILE_SEEK_END: - tmp_offset = memHandle->size + pos; - break; - default: - return MMFILE_IO_FAILED; - } - - /*check validation*/ - if (tmp_offset < 0) - { - debug_error ("invalid file offset\n"); - return MMFILE_IO_FAILED; - } - - /*set */ - memHandle->state = (tmp_offset >= memHandle->size) ? EOF : !EOF; - memHandle->offset = tmp_offset; - - return memHandle->offset; + MMFmemIOHandle *memHandle = NULL; + long tmp_offset = 0; + + if (!h || !h->privateData) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } + + memHandle = h->privateData; + + switch (whence) { + case MMFILE_SEEK_SET: + tmp_offset = 0 + pos; + break; + case MMFILE_SEEK_CUR: + tmp_offset = memHandle->offset + pos; + break; + case MMFILE_SEEK_END: + tmp_offset = memHandle->size + pos; + break; + default: + return MMFILE_IO_FAILED; + } + + /*check validation*/ + if (tmp_offset < 0) { + debug_error("invalid file offset\n"); + return MMFILE_IO_FAILED; + } + + /*set */ + memHandle->state = (tmp_offset >= memHandle->size) ? EOF : !EOF; + memHandle->offset = tmp_offset; + + return memHandle->offset; } -static long long mmf_mem_tell (MMFileIOHandle *h) +static long long mmf_mem_tell(MMFileIOHandle *h) { - MMFmemIOHandle *memHandle = NULL; + MMFmemIOHandle *memHandle = NULL; - if (!h || !h->privateData) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } + if (!h || !h->privateData) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } - memHandle = h->privateData; + memHandle = h->privateData; - return memHandle->offset; + return memHandle->offset; } -static int mmf_mem_close (MMFileIOHandle *h) +static int mmf_mem_close(MMFileIOHandle *h) { - MMFmemIOHandle *memHandle = NULL; + MMFmemIOHandle *memHandle = NULL; - if (!h || !h->privateData) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } + if (!h || !h->privateData) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } - memHandle = h->privateData; + memHandle = h->privateData; - if (memHandle) - { - mmfile_free (memHandle); - h->privateData = NULL; - } + if (memHandle) { + mmfile_free(memHandle); + h->privateData = NULL; + } - return MMFILE_IO_SUCCESS; + return MMFILE_IO_SUCCESS; } @@ -267,8 +245,6 @@ MMFileIOFunc mmfile_mem_io_handler = { mmf_mem_write, mmf_mem_seek, mmf_mem_tell, - mmf_mem_close + mmf_mem_close, + NULL }; - - - diff --git a/utils/mm_file_util_io_mmap.c b/utils/mm_file_util_io_mmap.c index cf4025e..1e0a273 100755 --- a/utils/mm_file_util_io_mmap.c +++ b/utils/mm_file_util_io_mmap.c @@ -19,7 +19,7 @@ * */ - + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -30,7 +30,7 @@ #include <sys/stat.h> #include <fcntl.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" @@ -42,287 +42,248 @@ typedef struct { int state; } MMFMMapIOHandle; -static int mmf_mmap_open (MMFileIOHandle *handle, const char *filename, int flags) +static int mmf_mmap_open(MMFileIOHandle *handle, const char *filename, int flags) { - MMFMMapIOHandle *mmapHandle = NULL; - struct stat finfo = {0, }; - int access = 0; - - if (!handle || !filename || !handle->iofunc || !handle->iofunc->handleName) - { - debug_error ("invalid param\n"); - return MMFILE_IO_FAILED; - } - - filename += strlen(handle->iofunc->handleName) + 3; /* :// */ - - memset (&finfo, 0x00, sizeof (struct stat)); - - mmapHandle = mmfile_malloc (sizeof(MMFMMapIOHandle)); - if (!mmapHandle) - { - debug_error ("error: mmfile_malloc mmapHandle\n"); - return MMFILE_IO_FAILED; - } - - if (flags & MMFILE_RDWR) - { - access = O_CREAT | O_TRUNC | O_RDWR; - } - else if (flags & MMFILE_WRONLY) - { - access = O_CREAT | O_TRUNC | O_WRONLY; - } - else - { - access = O_RDONLY; - } - + MMFMMapIOHandle *mmapHandle = NULL; + struct stat finfo = {0, }; + int access = 0; + + if (!handle || !filename || !handle->iofunc || !handle->iofunc->handleName) { + debug_error("invalid param\n"); + return MMFILE_IO_FAILED; + } + + filename += strlen(handle->iofunc->handleName) + 3; /* :// */ + + memset(&finfo, 0x00, sizeof(struct stat)); + + mmapHandle = mmfile_malloc(sizeof(MMFMMapIOHandle)); + if (!mmapHandle) { + debug_error("error: mmfile_malloc mmapHandle\n"); + return MMFILE_IO_FAILED; + } + + if (flags & MMFILE_RDWR) { + access = O_CREAT | O_TRUNC | O_RDWR; + } else if (flags & MMFILE_WRONLY) { + access = O_CREAT | O_TRUNC | O_WRONLY; + } else { + access = O_RDONLY; + } + #ifdef O_BINARY - access |= O_BINARY; + access |= O_BINARY; #endif - mmapHandle->fd = open (filename, access, 0666); - if (mmapHandle->fd < 0) - { - debug_error ("error: open error: %s\n", filename); - goto exception; - } - - if (fstat (mmapHandle->fd, &finfo) == -1) - { - debug_error ("error: fstat\n"); - goto exception; - } - - if (!S_ISREG(finfo.st_mode)) - { - debug_error ("error: it is not regular file\n"); - goto exception; - } - - mmapHandle->size = finfo.st_size; - mmapHandle->offset = 0; - mmapHandle->state = 0; - - if (flags & MMFILE_RDWR) - { - //mmapHandle->ptr = mmap64 (0, mmapHandle->size, PROT_WRITE | PROT_READ, MAP_SHARED, mmapHandle->fd, 0); - mmapHandle->ptr = mmap (0, mmapHandle->size, PROT_WRITE | PROT_READ, MAP_SHARED, mmapHandle->fd, 0); - } - else if (flags & MMFILE_WRONLY) - { - //mmapHandle->ptr = mmap64 (0, mmapHandle->size, PROT_WRITE, MAP_SHARED, mmapHandle->fd, 0); - mmapHandle->ptr = mmap (0, mmapHandle->size, PROT_WRITE, MAP_SHARED, mmapHandle->fd, 0); - } - else - { - //mmapHandle->ptr = mmap64 (0, mmapHandle->size, PROT_READ, MAP_SHARED, mmapHandle->fd, 0); - mmapHandle->ptr = mmap (0, mmapHandle->size, PROT_READ, MAP_SHARED, mmapHandle->fd, 0); - } - - if (mmapHandle->ptr == (void*)-1) - { - debug_error ("error: mmap\n"); - mmapHandle->ptr = NULL; - goto exception; - } - - handle->privateData = (void*) mmapHandle; - - return MMFILE_IO_SUCCESS; + mmapHandle->fd = open(filename, access, 0666); + if (mmapHandle->fd < 0) { + debug_error("error: open error: %s\n", filename); + goto exception; + } + + if (fstat(mmapHandle->fd, &finfo) == -1) { + debug_error("error: fstat\n"); + goto exception; + } + + if (!S_ISREG(finfo.st_mode)) { + debug_error("error: it is not regular file\n"); + goto exception; + } + + mmapHandle->size = finfo.st_size; + mmapHandle->offset = 0; + mmapHandle->state = 0; + + if (flags & MMFILE_RDWR) { + /*mmapHandle->ptr = mmap64(0, mmapHandle->size, PROT_WRITE | PROT_READ, MAP_SHARED, mmapHandle->fd, 0); */ + mmapHandle->ptr = mmap(0, mmapHandle->size, PROT_WRITE | PROT_READ, MAP_SHARED, mmapHandle->fd, 0); + } else if (flags & MMFILE_WRONLY) { + /*mmapHandle->ptr = mmap64(0, mmapHandle->size, PROT_WRITE, MAP_SHARED, mmapHandle->fd, 0); */ + mmapHandle->ptr = mmap(0, mmapHandle->size, PROT_WRITE, MAP_SHARED, mmapHandle->fd, 0); + } else { + /*mmapHandle->ptr = mmap64(0, mmapHandle->size, PROT_READ, MAP_SHARED, mmapHandle->fd, 0); */ + mmapHandle->ptr = mmap(0, mmapHandle->size, PROT_READ, MAP_SHARED, mmapHandle->fd, 0); + } + + if (mmapHandle->ptr == (void *)-1) { + debug_error("error: mmap\n"); + mmapHandle->ptr = NULL; + goto exception; + } + + handle->privateData = (void *) mmapHandle; + + return MMFILE_IO_SUCCESS; exception: - if (mmapHandle) - { - if (mmapHandle->ptr) - { - munmap (mmapHandle->ptr, mmapHandle->size); - } - - if (mmapHandle->fd > 2) - { - close (mmapHandle->fd); - } - - mmfile_free (mmapHandle); - handle->privateData = NULL; - } - - return MMFILE_IO_FAILED; + if (mmapHandle) { + if (mmapHandle->ptr) { + munmap(mmapHandle->ptr, mmapHandle->size); + } + + if (mmapHandle->fd > 2) { + close(mmapHandle->fd); + } + + mmfile_free(mmapHandle); + handle->privateData = NULL; + } + + return MMFILE_IO_FAILED; } -static int mmf_mmap_read (MMFileIOHandle *h, unsigned char *buf, int size) +static int mmf_mmap_read(MMFileIOHandle *h, unsigned char *buf, int size) { - MMFMMapIOHandle *mmapHandle = NULL; - const unsigned char *c = NULL; - int len = 0; - - if (!h || !h->privateData || !buf) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } - - mmapHandle = h->privateData; - - c = mmapHandle->ptr + mmapHandle->offset; - - if (mmapHandle->state != EOF) - { - len = size; - if (len + mmapHandle->offset > mmapHandle->size) - { - len = mmapHandle->size - mmapHandle->offset; - } - } - else - { - return 0; - } - - memcpy (buf, c, len); - - mmapHandle->offset += len; - - if ( mmapHandle->offset == mmapHandle->size) - { - mmapHandle->state = EOF; - } - - return len; + MMFMMapIOHandle *mmapHandle = NULL; + const unsigned char *c = NULL; + int len = 0; + + if (!h || !h->privateData || !buf) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } + + mmapHandle = h->privateData; + + c = mmapHandle->ptr + mmapHandle->offset; + + if (mmapHandle->state != EOF) { + len = size; + if (len + mmapHandle->offset > mmapHandle->size) { + len = mmapHandle->size - mmapHandle->offset; + } + } else { + return 0; + } + + memcpy(buf, c, len); + + mmapHandle->offset += len; + + if (mmapHandle->offset == mmapHandle->size) { + mmapHandle->state = EOF; + } + + return len; } -static int mmf_mmap_write (MMFileIOHandle *h, unsigned char *buf, int size) +static int mmf_mmap_write(MMFileIOHandle *h, unsigned char *buf, int size) { - MMFMMapIOHandle *mmapHandle = NULL; - unsigned char *c = NULL; - int len = 0; - - if (!h || !h->privateData || !buf) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } - - mmapHandle = h->privateData; - - c = mmapHandle->ptr + mmapHandle->offset; - - if (mmapHandle->state != EOF) - { - len = size; - if (len + mmapHandle->offset > mmapHandle->size) - { - len = mmapHandle->size - mmapHandle->offset; - } - } - else - { - return 0; - } - - memcpy (c, buf, len); - - mmapHandle->offset += len; - - if ( mmapHandle->offset == mmapHandle->size) - { - mmapHandle->state = EOF; - } - - return len; + MMFMMapIOHandle *mmapHandle = NULL; + unsigned char *c = NULL; + int len = 0; + + if (!h || !h->privateData || !buf) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } + + mmapHandle = h->privateData; + + c = mmapHandle->ptr + mmapHandle->offset; + + if (mmapHandle->state != EOF) { + len = size; + if (len + mmapHandle->offset > mmapHandle->size) { + len = mmapHandle->size - mmapHandle->offset; + } + } else { + return 0; + } + + memcpy(c, buf, len); + + mmapHandle->offset += len; + + if (mmapHandle->offset == mmapHandle->size) { + mmapHandle->state = EOF; + } + + return len; } -static long long mmf_mmap_seek (MMFileIOHandle *h, long long pos, int whence) +static int64_t mmf_mmap_seek(MMFileIOHandle *h, int64_t pos, int whence) { - MMFMMapIOHandle *mmapHandle = NULL; - long tmp_offset = 0; - - if (!h || !h->privateData) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } - - mmapHandle = h->privateData; - - switch (whence) - { - case SEEK_SET: - tmp_offset = 0 + pos; - break; - case SEEK_CUR: - tmp_offset = mmapHandle->offset + pos; - break; - case SEEK_END: - tmp_offset = mmapHandle->size + pos; - break; - default: - return MMFILE_IO_FAILED; - } - - /*check validation*/ - if (tmp_offset < 0) - { - debug_error ("invalid file offset\n"); - return MMFILE_IO_FAILED; - } - - /*set */ - mmapHandle->state = (tmp_offset >= mmapHandle->size) ? EOF : !EOF; - mmapHandle->offset = tmp_offset; - - return mmapHandle->offset; + MMFMMapIOHandle *mmapHandle = NULL; + long tmp_offset = 0; + + if (!h || !h->privateData) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } + + mmapHandle = h->privateData; + + switch (whence) { + case SEEK_SET: + tmp_offset = 0 + pos; + break; + case SEEK_CUR: + tmp_offset = mmapHandle->offset + pos; + break; + case SEEK_END: + tmp_offset = mmapHandle->size + pos; + break; + default: + return MMFILE_IO_FAILED; + } + + /*check validation*/ + if (tmp_offset < 0) { + debug_error("invalid file offset\n"); + return MMFILE_IO_FAILED; + } + + /*set */ + mmapHandle->state = (tmp_offset >= mmapHandle->size) ? EOF : !EOF; + mmapHandle->offset = tmp_offset; + + return mmapHandle->offset; } -static long long mmf_mmap_tell (MMFileIOHandle *h) +static long long mmf_mmap_tell(MMFileIOHandle *h) { - MMFMMapIOHandle *mmapHandle = NULL; + MMFMMapIOHandle *mmapHandle = NULL; - if (!h || !h->privateData) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } + if (!h || !h->privateData) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } - mmapHandle = h->privateData; + mmapHandle = h->privateData; - return mmapHandle->offset; + return mmapHandle->offset; } -static int mmf_mmap_close (MMFileIOHandle *h) +static int mmf_mmap_close(MMFileIOHandle *h) { - MMFMMapIOHandle *mmapHandle = NULL; - - if (!h || !h->privateData) - { - debug_error ("invalid para\n"); - return MMFILE_IO_FAILED; - } - - mmapHandle = h->privateData; - - if (mmapHandle) - { - if (mmapHandle->ptr) - { - munmap (mmapHandle->ptr, mmapHandle->size); - } - - if (mmapHandle->fd > 2) - { - close (mmapHandle->fd); - } - - mmfile_free (mmapHandle); - } - - h->privateData = NULL; - - return MMFILE_IO_SUCCESS; + MMFMMapIOHandle *mmapHandle = NULL; + + if (!h || !h->privateData) { + debug_error("invalid para\n"); + return MMFILE_IO_FAILED; + } + + mmapHandle = h->privateData; + + if (mmapHandle) { + if (mmapHandle->ptr) { + munmap(mmapHandle->ptr, mmapHandle->size); + } + + if (mmapHandle->fd > 2) { + close(mmapHandle->fd); + } + + mmfile_free(mmapHandle); + } + + h->privateData = NULL; + + return MMFILE_IO_SUCCESS; } @@ -333,5 +294,6 @@ MMFileIOFunc mmfile_mmap_io_handler = { mmf_mmap_write, mmf_mmap_seek, mmf_mmap_tell, - mmf_mmap_close + mmf_mmap_close, + NULL }; diff --git a/utils/mm_file_util_list.c b/utils/mm_file_util_list.c index 09ced62..896c1e7 100755 --- a/utils/mm_file_util_list.c +++ b/utils/mm_file_util_list.c @@ -20,91 +20,91 @@ */ #include <glib.h> -#include <mm_debug.h> +#include "mm_file_debug.h" #include "mm_file_utils.h" -EXPORT_API -MMFileList mmfile_list_alloc () +EXPORT_API +MMFileList mmfile_list_alloc() { - return g_list_alloc (); + return g_list_alloc(); } EXPORT_API -MMFileList mmfile_list_append (MMFileList list, void* data) +MMFileList mmfile_list_append(MMFileList list, void *data) { - return g_list_append (list, data); + return g_list_append(list, data); } EXPORT_API -MMFileList mmfile_list_prepend (MMFileList list, void* data) +MMFileList mmfile_list_prepend(MMFileList list, void *data) { - return g_list_prepend (list, data); + return g_list_prepend(list, data); } EXPORT_API -MMFileList mmfile_list_find (MMFileList list, void* data) +MMFileList mmfile_list_find(MMFileList list, void *data) { - return g_list_find (list, data); + return g_list_find(list, data); } EXPORT_API -MMFileList mmfile_list_first (MMFileList list) +MMFileList mmfile_list_first(MMFileList list) { - return g_list_first (list); + return g_list_first(list); } EXPORT_API -MMFileList mmfile_list_last (MMFileList list) +MMFileList mmfile_list_last(MMFileList list) { - return g_list_last (list); + return g_list_last(list); } EXPORT_API -MMFileList mmfile_list_nth (MMFileList list, unsigned int n) +MMFileList mmfile_list_nth(MMFileList list, unsigned int n) { - return g_list_nth (list, n); + return g_list_nth(list, n); } EXPORT_API -MMFileList mmfile_list_next (MMFileList list) +MMFileList mmfile_list_next(MMFileList list) { - return g_list_next (list); + return g_list_next(list); } EXPORT_API -MMFileList mmfile_list_previous (MMFileList list) +MMFileList mmfile_list_previous(MMFileList list) { - return g_list_previous (list); + return g_list_previous(list); } EXPORT_API -unsigned int mmfile_list_length (MMFileList list) +unsigned int mmfile_list_length(MMFileList list) { - return g_list_length (list); + return g_list_length(list); } EXPORT_API -MMFileList mmfile_list_remove (MMFileList list, void *data) +MMFileList mmfile_list_remove(MMFileList list, void *data) { - return g_list_remove (list, data); + return g_list_remove(list, data); } EXPORT_API -MMFileList mmfile_list_remove_all (MMFileList list, void *data) +MMFileList mmfile_list_remove_all(MMFileList list, void *data) { - return g_list_remove_all (list, data); + return g_list_remove_all(list, data); } EXPORT_API -MMFileList mmfile_list_reverse (MMFileList list) +MMFileList mmfile_list_reverse(MMFileList list) { - return g_list_reverse (list); + return g_list_reverse(list); } EXPORT_API -void mmfile_list_free (MMFileList list) +void mmfile_list_free(MMFileList list) { - g_list_free (list); + g_list_free(list); } diff --git a/utils/mm_file_util_locale.c b/utils/mm_file_util_locale.c index 982a622..343135b 100755 --- a/utils/mm_file_util_locale.c +++ b/utils/mm_file_util_locale.c @@ -18,8 +18,8 @@ * limitations under the License. * */ - -#include <stdlib.h> + +#include <stdlib.h> #include <string.h> #include <vconf.h> @@ -27,13 +27,12 @@ #include <gconf/gconf-client.h> #endif -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" /* This macro is the same with global-gconf.h */ #define MMFILE_LANGUAGETYPE_REPOSITORY "/Apps/Settings/language_type" -typedef enum -{ +typedef enum { MMFILE_LANGUAGE_ENGLISH = 0x00, /**<Language - English*/ MMFILE_LANGUAGE_GERMAN, /**<Language - German*/ MMFILE_LANGUAGE_FRENCH, /**<Language - French*/ @@ -47,15 +46,14 @@ typedef enum MMFILE_LANGUAGE_SIM_CHINA, /**<Language - Simplified Chinese*/ MMFILE_LANGUAGE_TRA_CHINA, /**<Language - Traditional Chinese*/ MMFILE_LANGUAGE_JAPAN, /**<Language - Japanease*/ -#if 0 +#if 0 MMFILE_LANGUAGE_BULGARIAN, /**<Language - Bulgarian*/ MMFILE_LANGUAGE_ARABIC, /**<Language - Arabic*/ #endif - MMFILE_LANGUAGE_MAX + MMFILE_LANGUAGE_MAX } eMMFileSettingPhoneLanguage; -const char *MMFILE_LOCALE_TABLE [MMFILE_LANGUAGE_MAX] = -{ +const char *MMFILE_LOCALE_TABLE[MMFILE_LANGUAGE_MAX] = { "EUC-KR", /* Temporally - Language - English */ "ISO8859-1", /* Language - German */ "ISO8859-1", /* Language - French */ @@ -70,8 +68,8 @@ const char *MMFILE_LOCALE_TABLE [MMFILE_LANGUAGE_MAX] = "BIG5", /* Language - Traditional Chinese */ "SHIFT_JIS" /* Language - Japanease */ #if 0 - /* Language - Bulgarian */ - /* Language - Arabic */ + /* Language - Bulgarian */ + /* Language - Arabic */ #endif }; @@ -80,22 +78,19 @@ static int _MMFileUtilGetLocaleindex() { int index = MMFILE_LANGUAGE_ENGLISH; char *lang = NULL; - char *con_iso = NULL; - - char *china_prefix = "zh"; - char *eng_prefix = "en"; - char *china_lang = "zh_CN"; - char *hongkong_lang = "zh_HK"; - char *taiwan_lang = "zh_TW"; - char *jpn_lang = "ja_JP"; + const char *china_prefix = "zh"; + const char *eng_prefix = "en"; + const char *china_lang = "zh_CN"; + /*const char *hongkong_lang = "zh_HK";*/ + /*const char *taiwan_lang = "zh_TW";*/ + const char *jpn_lang = "ja_JP"; - con_iso = vconf_get_str(VCONFKEY_CSC_COUNTRY_ISO); lang = vconf_get_str(VCONFKEY_LANGSET); if (lang != NULL) { - if (strncmp(lang,china_prefix, strlen(china_prefix)) == 0) { + if (strncmp(lang, china_prefix, strlen(china_prefix)) == 0) { /* This case is selected language is china */ if (strncmp(lang, china_lang, strlen(china_lang)) == 0) { debug_msg("[%s]character set is simplified chinese", lang); @@ -108,21 +103,7 @@ static int _MMFileUtilGetLocaleindex() /* This case is selected language is engilish In case of engilish, the character set is related with region of target binary */ debug_msg("[%s]character set is engilish", lang); - if (con_iso!=NULL) { - if (strncmp(con_iso, "CN", strlen("CN")) == 0) { - debug_msg("region of this target is China."); - index = MMFILE_LANGUAGE_SIM_CHINA; - } else if ((strncmp(con_iso, "TW", strlen("TW")) == 0) || (strncmp(con_iso, "HK", strlen("HK")) == 0)) { - debug_msg("region of this target is Hong kong or Twian."); - index = MMFILE_LANGUAGE_TRA_CHINA; - } else { - debug_msg("Use default character set."); - index = MMFILE_LANGUAGE_ENGLISH; - } - } else { - debug_error("country iso value is NULL"); - index = MMFILE_LANGUAGE_ENGLISH; - } + index = MMFILE_LANGUAGE_ENGLISH; } else if (strncmp(lang, jpn_lang, strlen(jpn_lang)) == 0) { /* This case is selected language is japanease */ debug_msg("[%s]character set is japanease", lang); @@ -136,29 +117,29 @@ static int _MMFileUtilGetLocaleindex() index = MMFILE_LANGUAGE_ENGLISH; } - if(!con_iso) free(con_iso); - if(!lang) free(lang); + if (lang) { + free(lang); + lang = NULL; + } return index; } EXPORT_API -char *MMFileUtilGetLocale (int *error) +char *MMFileUtilGetLocale(int *error) { int index = 0; int err = 0; index = _MMFileUtilGetLocaleindex(); - if (index < 0 || index >= MMFILE_LANGUAGE_MAX) - { - debug_error ("invalid index\n"); + if (index < 0 || index >= MMFILE_LANGUAGE_MAX) { + debug_error("invalid index\n"); err = MMFILE_UTIL_FAIL; return NULL; } err = MMFILE_UTIL_SUCCESS; - if (error) - { + if (error) { *error = err; } diff --git a/utils/mm_file_util_memory.c b/utils/mm_file_util_memory.c index b88733c..625c6af 100755 --- a/utils/mm_file_util_memory.c +++ b/utils/mm_file_util_memory.c @@ -26,117 +26,116 @@ #ifdef __MMFILE_MEM_TRACE__ EXPORT_API -void *mmfile_malloc_debug (unsigned int size, const char *func, unsigned int line) +void *mmfile_malloc_debug(unsigned int size, const char *func, unsigned int line) { - void *tmp = malloc (size); + void *tmp = malloc(size); if (tmp) { - memset (tmp, 0x00, size); - #ifdef __MMFILE_TEST_MODE__ + memset(tmp, 0x00, size); +#ifdef __MMFILE_TEST_MODE__ debug_msg("## DEBUG ## %p = malloc (%d) by %s() %d\n", tmp, size, func, line); - #endif +#endif } return tmp; } EXPORT_API -void *mmfile_calloc_debug (unsigned int nmemb, unsigned int size, const char *func, unsigned int line) +void *mmfile_calloc_debug(unsigned int nmemb, unsigned int size, const char *func, unsigned int line) { - void *tmp = calloc (nmemb, size); + void *tmp = calloc(nmemb, size); if (tmp) { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("## DEBUG ## %p = calloc (%d, %d) by %s() %d\n", tmp, nmemb, size, func, line); - #endif +#endif } return tmp; } EXPORT_API -void mmfile_free_debug (void *ptr, const char *func, unsigned int line) +void mmfile_free_debug(void *ptr, const char *func, unsigned int line) { if (ptr) { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("## DEBUG ## free (%p) by %s() %d\n", ptr, func, line); - #endif - free (ptr); +#endif + free(ptr); } } EXPORT_API -void *mmfile_realloc_debug (void *ptr, unsigned int size, const char *func, unsigned int line) +void *mmfile_realloc_debug(void *ptr, unsigned int size, const char *func, unsigned int line) { - void *tmp = realloc (ptr, size); + void *tmp = realloc(ptr, size); if (tmp) { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("## DEBUG ## %p = realloc (%p, %d) by %s() %d\n", tmp, ptr, size, func, line); - #endif +#endif } return tmp; } EXPORT_API -void *mmfile_memset_debug (void *s, int c, unsigned int n, const char *func, unsigned int line) +void *mmfile_memset_debug(void *s, int c, unsigned int n, const char *func, unsigned int line) { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("## DEBUG ## memset (%p, %d, %d) by %s() %d\n", s, c, n, func, line); - #endif - return memset (s, c, n); +#endif + return memset(s, c, n); } EXPORT_API -void *mmfile_memcpy_debug (void *dest, const void *src, unsigned int n, const char *func, unsigned int line) +void *mmfile_memcpy_debug(void *dest, const void *src, unsigned int n, const char *func, unsigned int line) { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("## DEBUG ## memcpy (%p, %p, %d) by %s() %d\n", dest, src, n, func, line); - #endif - return memcpy (dest, src, n); +#endif + return memcpy(dest, src, n); } #else /* __MMFILE_MEM_TRACE__ : ------------------------------------------------------------------*/ EXPORT_API -void *mmfile_malloc (unsigned int size) +void *mmfile_malloc(unsigned int size) { - void *tmp = malloc (size); - if (tmp) - { - memset (tmp, 0x00, size); - } - return tmp; + void *tmp = malloc(size); + if (tmp) { + memset(tmp, 0x00, size); + } + return tmp; } EXPORT_API -void *mmfile_calloc (unsigned int nmemb, unsigned int size) +void *mmfile_calloc(unsigned int nmemb, unsigned int size) { - void *tmp = calloc (nmemb, size); - return tmp; + void *tmp = calloc(nmemb, size); + return tmp; } EXPORT_API -void mmfile_free_r (void *ptr) +void mmfile_free_r(void *ptr) { - if (ptr) free (ptr); + if (ptr) free(ptr); } EXPORT_API -void *mmfile_realloc (void *ptr, unsigned int size) +void *mmfile_realloc(void *ptr, unsigned int size) { - return realloc (ptr, size); + return realloc(ptr, size); } EXPORT_API -void *mmfile_memset (void *s, int c, unsigned int n) +void *mmfile_memset(void *s, int c, unsigned int n) { - return memset (s, c, n); + return memset(s, c, n); } EXPORT_API -void *mmfile_memcpy (void *dest, const void *src, unsigned int n) +void *mmfile_memcpy(void *dest, const void *src, unsigned int n) { - return memcpy (dest, src, n); + return memcpy(dest, src, n); } #endif diff --git a/utils/mm_file_util_mime.c b/utils/mm_file_util_mime.c index a461f3e..2f57b2e 100755 --- a/utils/mm_file_util_mime.c +++ b/utils/mm_file_util_mime.c @@ -21,173 +21,166 @@ #include <stdlib.h> #include <string.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" - -typedef struct _mmfileavmimetype -{ - char mimetype[MMFILE_MIMETYPE_MAX_LEN]; - char ffmpegFormat[MMFILE_FILE_FMT_MAX_LEN]; - char extension[MMFILE_FILE_EXT_MAX_LEN]; +typedef struct _mmfileavmimetype { + char mimetype[MMFILE_MIMETYPE_MAX_LEN]; + char ffmpegFormat[MMFILE_FILE_FMT_MAX_LEN]; + char extension[MMFILE_FILE_EXT_MAX_LEN]; } MMFileAVMimeType; -#define __FFMPEG_MIME_TABLE_SIZE 75 -const MMFileAVMimeType MMFILE_FFMPEG_MIME_TABLE [] = -{ - {"audio/mpeg", "mp3", "mp3"}, - {"audio/mp3", "mp3", "mp3"}, - {"audio/mpg3", "mp3", "mp3"}, - {"audio/mpeg3", "mp3", "mp3"}, - {"audio/mpg", "mp3", "mp3"}, - {"audio/x-mpeg", "mp3", "mp3"}, - {"audio/x-mp3", "mp3", "mp3"}, - {"audio/x-mpeg3", "mp3", "mp3"}, - {"audio/x-mpg", "mp3", "mp3"}, - {"audio/x-mpegaudio", "mp3", "mp3"}, //10 - - {"video/3gpp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, - {"video/h263", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, - {"video/3gp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, - {"video/3gpp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, - {"video/mp4v-es", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, - {"video/mpeg", "mov,mp4,m4a,3gp,3g2,mj2", "mpeg"}, - {"audio/3gpp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, //17 - - {"video/mpeg4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, - {"video/mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, - {"video/x-mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, - {"video/x-pv-mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, - {"audio/mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, - {"audio/MP4A-LATM", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, - {"audio/mpeg4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, - {"audio/m4a", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, //25 - - {"video/avi", "avi", "avi"}, - {"video/divx", "divx", "divx"}, - - {"audio/x-ms-asf", "asf", "asf"}, - {"video/x-ms-asf", "asf", "asf"}, - {"video/x-ms-asf", "asf", "asf"}, - - {"video/x-ms-wmv", "asf", "wmv"}, - {"audio/wma", "asf", "wma"}, - {"audio/x-ms-wma", "asf", "wma"}, - - {"audio/wave", "wav", "wav"}, /* Not Sure */ - {"audio/wav", "wav", "wav"}, /* Not Sure */ - {"audio/x-wave", "wav", "wav"}, /* Not Sure */ - {"audio/x-wav", "wav", "wav"}, /* Not Sure */ - - {"audio/aac", "aac", "aac"}, /* Not Sure */ - {"audio/g72", "aac", "aac"}, /* Not Sure */ //39 - - {"audio/AMR", "amr", "amr"}, /* Not Sure */ - {"audio/amr-wb", "amr", "amr"}, /* Not Sure */ - {"audio/x-amr", "amr", "amr"}, /* Not Sure */ - - {"audio/x-mid", "mid", "mid"}, /* Not Sure */ - {"audio/x-midi", "mid", "mid"}, /* Not Sure */ - {"audio/mid", "mid", "mid"}, /* Not Sure */ - {"audio/midi", "mid", "mid"}, /* Not Sure */ - {"audio/mid", "mid", "mid"}, /* Not Sure */ //47 - - {"audio/iMelody", "imy", "imy"}, /* Not Sure */ - {"audio/imelody", "imy", "imy"}, /* Not Sure */ - {"audio/melody", "imy", "imy"}, /* Not Sure */ - {"audio/imy", "imy", "imy"}, /* Not Sure */ - {"audio/x-iMelody", "imy", "imy"}, /* Not Sure */ - - {"audio/basic", "snd", ""}, /* Not Sure */ - {"audio/pmd", "pmd", ""}, /* Not Sure */ - {"audio/sp-midi", "smp", ""}, /* Not Sure */ //55 - - {"audio/mmf", "mmf", "mmf"}, /* Not Sure */ - {"audio/smaf", "mmf", "mmf"}, /* Not Sure */ - {"audio/x-mmf", "mmf", "mmf"}, /* Not Sure */ - {"audio/x-smaf", "mmf", "mmf"}, /* Not Sure */ - - {"audio/xmf", "xmf", "xmf"}, /* Not Sure */ - {"audio/mobile-xmf", "xmf", "xmf"}, /* Not Sure */ - {"audio/x-xmf", "xmf", "xmf"}, /* Not Sure */ //62 - - {"audio/vnd.rn-realaudio", "rm", ""}, /* Not Sure */ - {"audio/x-pn-multirate-realaudio", "rm", ""}, /* Not Sure */ - {"audio/x-pn-multirate-realaudio-live", "rm", ""}, /* Not Sure */ - {"video/vnd.rn-realvideo", "rm", ""}, /* Not Sure */ - {"video/vnd.rn-realmedia", "rm", ""}, /* Not Sure */ - {"video/x-pn-multirate-realvideo", "rm", ""}, /* Not Sure */ //68 - - {"video/ogg", "ogg", "ogg"}, - {"video/theora", "ogg", "ogg"}, - {"audio/ogg", "ogg", "ogg"}, - {"audio/x-ogg", "ogg", "ogg"}, - {"audio/vorbis", "ogg", "ogg"}, //73 - - {"audio/x-flac", "flac", "flac"}, //74 - {"video/x-flv", "flv", "flv"}, //75 +const MMFileAVMimeType MMFILE_FFMPEG_MIME_TABLE[] = { + {"audio/mpeg", "mp3", "mp3"}, + {"audio/mp3", "mp3", "mp3"}, + {"audio/mpg3", "mp3", "mp3"}, + {"audio/mpeg3", "mp3", "mp3"}, + {"audio/mpg", "mp3", "mp3"}, + {"audio/x-mpeg", "mp3", "mp3"}, + {"audio/x-mp3", "mp3", "mp3"}, + {"audio/x-mpeg3", "mp3", "mp3"}, + {"audio/x-mpg", "mp3", "mp3"}, + {"audio/x-mpegaudio", "mp3", "mp3"}, /*10 */ + + {"video/3gpp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, + {"video/h263", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, + {"video/3gp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, + {"video/3gpp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, + {"video/mp4v-es", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, + {"video/dvd", "mov,mp4,m4a,3gp,3g2,mj2", "mpeg"}, + {"audio/3gpp", "mov,mp4,m4a,3gp,3g2,mj2", "3gp"}, /*17 */ + + {"video/mpeg4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, + {"video/mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, + {"video/x-mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, + {"video/x-pv-mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, + {"audio/mp4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, + {"audio/MP4A-LATM", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, + {"audio/mpeg4", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, + {"audio/m4a", "mov,mp4,m4a,3gp,3g2,mj2", "mp4"}, /*25 */ + + {"video/avi", "avi", "avi"}, + {"video/divx", "divx", "divx"}, + + {"audio/x-ms-asf", "asf", "asf"}, + {"video/x-ms-asf", "asf", "asf"}, + {"video/x-ms-asf", "asf", "asf"}, + + {"video/x-ms-wmv", "asf", "wmv"}, + {"audio/wma", "asf", "wma"}, + {"audio/x-ms-wma", "asf", "wma"}, + + {"audio/wave", "wav", "wav"}, /* Not Sure */ + {"audio/wav", "wav", "wav"}, /* Not Sure */ + {"audio/x-wave", "wav", "wav"}, /* Not Sure */ + {"audio/x-wav", "wav", "wav"}, /* Not Sure */ + + {"audio/aac", "aac", "aac"}, /* Not Sure */ + {"audio/g72", "aac", "aac"}, /* Not Sure */ /*39 */ + + {"audio/AMR", "amr", "amr"}, /* Not Sure */ + {"audio/amr-wb", "amr", "amr"}, /* Not Sure */ + {"audio/x-amr", "amr", "amr"}, /* Not Sure */ + + {"audio/x-mid", "mid", "mid"}, /* Not Sure */ + {"audio/x-midi", "mid", "mid"}, /* Not Sure */ + {"audio/mid", "mid", "mid"}, /* Not Sure */ + {"audio/midi", "mid", "mid"}, /* Not Sure */ + {"audio/mid", "mid", "mid"}, /* Not Sure */ /*47 */ + + {"audio/iMelody", "imy", "imy"}, /* Not Sure */ + {"audio/imelody", "imy", "imy"}, /* Not Sure */ + {"audio/melody", "imy", "imy"}, /* Not Sure */ + {"audio/imy", "imy", "imy"}, /* Not Sure */ + {"audio/x-iMelody", "imy", "imy"}, /* Not Sure */ + + {"audio/basic", "snd", ""}, /* Not Sure */ + {"audio/pmd", "pmd", ""}, /* Not Sure */ + {"audio/sp-midi", "smp", ""}, /* Not Sure */ /*55 */ + + {"audio/mmf", "mmf", "mmf"}, /* Not Sure */ + {"audio/smaf", "mmf", "mmf"}, /* Not Sure */ + {"audio/x-mmf", "mmf", "mmf"}, /* Not Sure */ + {"audio/x-smaf", "mmf", "mmf"}, /* Not Sure */ + + {"audio/xmf", "xmf", "xmf"}, /* Not Sure */ + {"audio/mobile-xmf", "xmf", "xmf"}, /* Not Sure */ + {"audio/x-xmf", "xmf", "xmf"}, /* Not Sure */ /*62 */ + + {"audio/vnd.rn-realaudio", "rm", ""}, /* Not Sure */ + {"audio/x-pn-multirate-realaudio", "rm", ""}, /* Not Sure */ + {"audio/x-pn-multirate-realaudio-live", "rm", ""}, /* Not Sure */ + {"video/vnd.rn-realvideo", "rm", ""}, /* Not Sure */ + {"video/vnd.rn-realmedia", "rm", ""}, /* Not Sure */ + {"video/x-pn-multirate-realvideo", "rm", ""}, /* Not Sure */ /*68 */ + + {"video/ogg", "ogg", "ogg"}, + {"video/theora", "ogg", "ogg"}, + {"audio/ogg", "ogg", "ogg"}, + {"audio/x-ogg", "ogg", "ogg"}, + {"audio/vorbis", "ogg", "ogg"}, /*73 */ + + {"audio/x-flac", "flac", "flac"}, /*74 */ + {"video/x-flv", "flv", "flv"}, /*75 */ + {"video/MP2T", "mpegts", "ts"}, + {"video/MP2P", "mpeg", "mpg"}, + {"video/mpeg", "mpegvideo", "mpeg"}, /*mpeg 1 video */ }; EXPORT_API -int mmfile_util_get_ffmpeg_format (const char *mime, char *ffmpegFormat) +int mmfile_util_get_ffmpeg_format(const char *mime, char *ffmpegFormat) { - int i = 0; - - if ( NULL == mime || NULL == ffmpegFormat) - { - debug_error ("error: mmfile_util_get_format\n"); - return MMFILE_UTIL_FAIL; - } - - for (i = 0; i < __FFMPEG_MIME_TABLE_SIZE; i++) - { - if (!strcasecmp (MMFILE_FFMPEG_MIME_TABLE[i].mimetype, mime)) - { - break; - } - } - - if (i == __FFMPEG_MIME_TABLE_SIZE) - { - debug_error ("error: not found[%s]\n", mime); - return MMFILE_UTIL_FAIL; - } - - memcpy (ffmpegFormat, MMFILE_FFMPEG_MIME_TABLE[i].ffmpegFormat, strlen(MMFILE_FFMPEG_MIME_TABLE[i].ffmpegFormat)); - - return MMFILE_UTIL_SUCCESS; + int i = 0; + int table_size = sizeof(MMFILE_FFMPEG_MIME_TABLE) / sizeof(MMFileAVMimeType); + + if (NULL == mime || NULL == ffmpegFormat) { + debug_error("error: mmfile_util_get_format\n"); + return MMFILE_UTIL_FAIL; + } + + for (i = 0; i < table_size; i++) { + if (!strcasecmp(MMFILE_FFMPEG_MIME_TABLE[i].mimetype, mime)) { + break; + } + } + + if (i == table_size) { + debug_error("error: not found[%s]\n", mime); + return MMFILE_UTIL_FAIL; + } + + memcpy(ffmpegFormat, MMFILE_FFMPEG_MIME_TABLE[i].ffmpegFormat, strlen(MMFILE_FFMPEG_MIME_TABLE[i].ffmpegFormat)); + + return MMFILE_UTIL_SUCCESS; } EXPORT_API -int mmfile_util_get_file_ext (const char *mime, char *ext) +int mmfile_util_get_file_ext(const char *mime, char *ext) { - int i = 0; - - if ( NULL == mime || NULL == ext) - { - debug_error ("error: mmfile_util_get_file_ext\n"); - return MMFILE_UTIL_FAIL; - } - - for (i = 0; i < __FFMPEG_MIME_TABLE_SIZE; i++) - { - if (!strcasecmp (MMFILE_FFMPEG_MIME_TABLE[i].mimetype, mime)) - { - break; - } - } - - if (i == __FFMPEG_MIME_TABLE_SIZE) - { - debug_error ("error: not found[%s]\n", mime); - return MMFILE_UTIL_FAIL; - } - - memcpy (ext, MMFILE_FFMPEG_MIME_TABLE[i].extension, strlen(MMFILE_FFMPEG_MIME_TABLE[i].extension)); - - return MMFILE_UTIL_SUCCESS; + int i = 0; + int table_size = sizeof(MMFILE_FFMPEG_MIME_TABLE) / sizeof(MMFileAVMimeType); + + if (NULL == mime || NULL == ext) { + debug_error("error: mmfile_util_get_file_ext\n"); + return MMFILE_UTIL_FAIL; + } + + for (i = 0; i < table_size; i++) { + if (!strcasecmp(MMFILE_FFMPEG_MIME_TABLE[i].mimetype, mime)) { + break; + } + } + + if (i == table_size) { + debug_error("error: not found[%s]\n", mime); + return MMFILE_UTIL_FAIL; + } + + memcpy(ext, MMFILE_FFMPEG_MIME_TABLE[i].extension, strlen(MMFILE_FFMPEG_MIME_TABLE[i].extension)); + + return MMFILE_UTIL_SUCCESS; } diff --git a/utils/mm_file_util_print.c b/utils/mm_file_util_print.c index 7aa888f..cc25b66 100755 --- a/utils/mm_file_util_print.c +++ b/utils/mm_file_util_print.c @@ -19,89 +19,89 @@ * */ -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" EXPORT_API -void mmfile_format_print_contents (MMFileFormatContext *in) +void mmfile_format_print_contents(MMFileFormatContext *in) { if (in) { - debug_msg ("formatType = %d\n", in->formatType); - debug_msg ("commandType = %d\n", in->commandType); - debug_msg ("duration = %d\n", in->duration); - debug_msg ("videoTotalTrackNum = %d\n", in->videoTotalTrackNum); - debug_msg ("audioTotalTrackNum = %d\n", in->audioTotalTrackNum); - debug_msg ("nbStreams = %d\n", in->nbStreams); - debug_msg ("audioStreamId = %d\n", in->audioStreamId); - debug_msg ("videoStreamId = %d\n", in->videoStreamId); + debug_msg("formatType = %d\n", in->formatType); + debug_msg("commandType = %d\n", in->commandType); + debug_msg("duration = %d\n", in->duration); + debug_msg("videoTotalTrackNum = %d\n", in->videoTotalTrackNum); + debug_msg("audioTotalTrackNum = %d\n", in->audioTotalTrackNum); + debug_msg("nbStreams = %d\n", in->nbStreams); + debug_msg("audioStreamId = %d\n", in->audioStreamId); + debug_msg("videoStreamId = %d\n", in->videoStreamId); if (in->videoTotalTrackNum > 0 && in->streams[MMFILE_VIDEO_STREAM]) { - debug_msg ("VstreamType = %d\n", in->streams[MMFILE_VIDEO_STREAM]->streamType); - debug_msg ("VcodecId = %d\n", in->streams[MMFILE_VIDEO_STREAM]->codecId); - debug_msg ("VbitRate = %d\n", in->streams[MMFILE_VIDEO_STREAM]->bitRate); - debug_msg ("VframePerSec = %d\n", in->streams[MMFILE_VIDEO_STREAM]->framePerSec); - debug_msg ("Vwidth = %d\n", in->streams[MMFILE_VIDEO_STREAM]->width); - debug_msg ("Vheight = %d\n", in->streams[MMFILE_VIDEO_STREAM]->height); - debug_msg ("VnbChannel = %d\n", in->streams[MMFILE_VIDEO_STREAM]->nbChannel); - debug_msg ("VsamplePerSec = %d\n", in->streams[MMFILE_VIDEO_STREAM]->samplePerSec); + debug_msg("VstreamType = %d\n", in->streams[MMFILE_VIDEO_STREAM]->streamType); + debug_msg("VcodecId = %d\n", in->streams[MMFILE_VIDEO_STREAM]->codecId); + debug_msg("VbitRate = %d\n", in->streams[MMFILE_VIDEO_STREAM]->bitRate); + debug_msg("VframePerSec = %d\n", in->streams[MMFILE_VIDEO_STREAM]->framePerSec); + debug_msg("Vwidth = %d\n", in->streams[MMFILE_VIDEO_STREAM]->width); + debug_msg("Vheight = %d\n", in->streams[MMFILE_VIDEO_STREAM]->height); + debug_msg("VnbChannel = %d\n", in->streams[MMFILE_VIDEO_STREAM]->nbChannel); + debug_msg("VsamplePerSec = %d\n", in->streams[MMFILE_VIDEO_STREAM]->samplePerSec); } if (in->audioTotalTrackNum > 0 && in->streams[MMFILE_AUDIO_STREAM]) { - debug_msg ("AstreamType = %d\n", in->streams[MMFILE_AUDIO_STREAM]->streamType); - debug_msg ("AcodecId = %d\n", in->streams[MMFILE_AUDIO_STREAM]->codecId); - debug_msg ("AbitRate = %d\n", in->streams[MMFILE_AUDIO_STREAM]->bitRate); - debug_msg ("AframePerSec = %d\n", in->streams[MMFILE_AUDIO_STREAM]->framePerSec); - debug_msg ("Awidth = %d\n", in->streams[MMFILE_AUDIO_STREAM]->width); - debug_msg ("Aheight = %d\n", in->streams[MMFILE_AUDIO_STREAM]->height); - debug_msg ("AnbChannel = %d\n", in->streams[MMFILE_AUDIO_STREAM]->nbChannel); - debug_msg ("AsamplePerSec = %d\n", in->streams[MMFILE_AUDIO_STREAM]->samplePerSec); + debug_msg("AstreamType = %d\n", in->streams[MMFILE_AUDIO_STREAM]->streamType); + debug_msg("AcodecId = %d\n", in->streams[MMFILE_AUDIO_STREAM]->codecId); + debug_msg("AbitRate = %d\n", in->streams[MMFILE_AUDIO_STREAM]->bitRate); + debug_msg("AframePerSec = %d\n", in->streams[MMFILE_AUDIO_STREAM]->framePerSec); + debug_msg("Awidth = %d\n", in->streams[MMFILE_AUDIO_STREAM]->width); + debug_msg("Aheight = %d\n", in->streams[MMFILE_AUDIO_STREAM]->height); + debug_msg("AnbChannel = %d\n", in->streams[MMFILE_AUDIO_STREAM]->nbChannel); + debug_msg("AsamplePerSec = %d\n", in->streams[MMFILE_AUDIO_STREAM]->samplePerSec); } } } EXPORT_API -void mmfile_format_print_tags (MMFileFormatContext *in) +void mmfile_format_print_tags(MMFileFormatContext *in) { if (in) { - if (in->title) debug_msg ("title = %s\n", in->title); - if (in->artist) debug_msg ("artist = %s\n", in->artist); - if (in->author) debug_msg ("author = %s\n", in->author); - if (in->composer) debug_msg ("composer = %s\n", in->composer); - if (in->album) debug_msg ("album = %s\n", in->album); - if (in->album_artist) debug_msg ("album_artist = %s\n", in->album_artist); - if (in->copyright) debug_msg ("copyright = %s\n", in->copyright); - if (in->comment) debug_msg ("comment = %s\n", in->comment); - if (in->genre) debug_msg ("genre = %s\n", in->genre); - if (in->year) debug_msg ("year = %s\n", in->year); - if (in->recDate) debug_msg ("recDate = %s\n", in->recDate); - if (in->tagTrackNum) debug_msg ("tagTrackNum = %s\n", in->tagTrackNum); - if (in->artworkMime) debug_msg ("artworkMime = %s\n", in->artworkMime); - debug_msg ("artworksize = %d\n", in->artworkSize); - if (in->artwork) debug_msg ("artwork = %p\n", in->artwork); - if (in->classification) debug_msg ("classification = %s\n", in->classification); + if (in->title) debug_msg("title = %s\n", in->title); + if (in->artist) debug_msg("artist = %s\n", in->artist); + if (in->author) debug_msg("author = %s\n", in->author); + if (in->composer) debug_msg("composer = %s\n", in->composer); + if (in->album) debug_msg("album = %s\n", in->album); + if (in->album_artist) debug_msg("album_artist = %s\n", in->album_artist); + if (in->copyright) debug_msg("copyright = %s\n", in->copyright); + if (in->comment) debug_msg("comment = %s\n", in->comment); + if (in->genre) debug_msg("genre = %s\n", in->genre); + if (in->year) debug_msg("year = %s\n", in->year); + if (in->recDate) debug_msg("recDate = %s\n", in->recDate); + if (in->tagTrackNum) debug_msg("tagTrackNum = %s\n", in->tagTrackNum); + if (in->artworkMime) debug_msg("artworkMime = %s\n", in->artworkMime); + debug_msg("artworksize = %d\n", in->artworkSize); + if (in->artwork) debug_msg("artwork = %p\n", in->artwork); + if (in->classification) debug_msg("classification = %s\n", in->classification); } } EXPORT_API -void mmfile_format_print_frame (MMFileFormatFrame *in) +void mmfile_format_print_frame(MMFileFormatFrame *in) { if (in) { - debug_msg ("in->bCompressed = %d\n", in->bCompressed); - debug_msg ("in->frameData = %p\n", in->frameData); - debug_msg ("in->frameHeight = %d\n", in->frameHeight); - debug_msg ("in->frameWidth = %d\n", in->frameWidth); - debug_msg ("in->frameSize = %d\n", in->frameSize); - debug_msg ("in->configLenth = %d\n", in->configLenth); - debug_msg ("in->configData = %p\n", in->configData); + debug_msg("in->bCompressed = %d\n", in->bCompressed); + debug_msg("in->frameData = %p\n", in->frameData); + debug_msg("in->frameHeight = %d\n", in->frameHeight); + debug_msg("in->frameWidth = %d\n", in->frameWidth); + debug_msg("in->frameSize = %d\n", in->frameSize); + debug_msg("in->configLenth = %d\n", in->configLenth); + debug_msg("in->configData = %p\n", in->configData); } } EXPORT_API -void mmfile_codec_print (MMFileCodecContext *in) +void mmfile_codec_print(MMFileCodecContext *in) { if (in) { - debug_msg ("codecType = %d\n", in->codecType); - debug_msg ("codec id = %d\n", in->codecId); + debug_msg("codecType = %d\n", in->codecType); + debug_msg("codec id = %d\n", in->codecId); } } diff --git a/utils/mm_file_util_string.c b/utils/mm_file_util_string.c index 41432f1..59dad60 100755 --- a/utils/mm_file_util_string.c +++ b/utils/mm_file_util_string.c @@ -18,52 +18,49 @@ * limitations under the License. * */ - -#include <stdlib.h> + +#include <stdlib.h> #include <string.h> #include <glib.h> #include <unicode/ucsdet.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" #ifdef __MMFILE_MEM_TRACE__ EXPORT_API -int mmfile_util_wstrlen (unsigned short *wText) +int mmfile_util_wstrlen(unsigned short *wText) { - int n = 0; + int n = 0; - if (NULL == wText) - { - debug_error ("wText is NULL\n"); - return MMFILE_UTIL_FAIL; - } + if (NULL == wText) { + debug_error("wText is NULL\n"); + return MMFILE_UTIL_FAIL; + } - n = 0; + n = 0; - while ( *(wText+n) != 0 ) - { - n++; - } + while (*(wText + n) != 0) { + n++; + } - return n; + return n; } -short __WmLngSwapShort( short aShort ) +short __WmLngSwapShort(short aShort) { - return ( ( aShort << 8 ) + ( aShort >> 8 ) ); + return ((aShort << 8) + (aShort >> 8)); } EXPORT_API -short* mmfile_swap_2byte_string (short* mszOutput, short* mszInput, int length) +short *mmfile_swap_2byte_string(short *mszOutput, short *mszInput, int length) { int i; - for ( i = 0; i < length; i++ ) - { - if ( mszInput[i] == 0 ) + for (i = 0; i < length; i++) { + if (mszInput[i] == 0) break; - mszOutput[i] = __WmLngSwapShort( mszInput[i] ); + mszOutput[i] = __WmLngSwapShort(mszInput[i]); } mszOutput[i] = 0; @@ -73,108 +70,105 @@ short* mmfile_swap_2byte_string (short* mszOutput, short* mszInput, int length) EXPORT_API -char *mmfile_string_convert_debug (const char *str, unsigned int len, - const char *to_codeset, const char *from_codeset, - int *bytes_read, - int *bytes_written, - const char *func, - unsigned int line) +char *mmfile_string_convert_debug(const char *str, unsigned int len, + const char *to_codeset, const char *from_codeset, + int *bytes_read, + int *bytes_written, + const char *func, + unsigned int line) { - char *tmp = g_convert (str, len, to_codeset, from_codeset, bytes_read, bytes_written, NULL); + char *tmp = g_convert(str, len, to_codeset, from_codeset, bytes_read, bytes_written, NULL); - if (tmp) - { + if (tmp) { #ifdef __MMFILE_TEST_MODE__ debug_msg("## DEBUG ## %p = g_convert (%p, %u, %p, %p, %p ,%p, %p, %u) by %s() %d\n", - tmp, str, len, to_codeset, from_codeset, bytes_read, bytes_written, func, line); + tmp, str, len, to_codeset, from_codeset, bytes_read, bytes_written, func, line); #endif - } + } + + return tmp; - return tmp; - } EXPORT_API -char **mmfile_strsplit (const char *string, const char *delimiter) +char **mmfile_strsplit(const char *string, const char *delimiter) { - return g_strsplit (string, delimiter, -1); + return g_strsplit(string, delimiter, -1); } EXPORT_API -void mmfile_strfreev (char **str_array) +void mmfile_strfreev(char **str_array) { - g_strfreev(str_array); + g_strfreev(str_array); } EXPORT_API -char *mmfile_strdup_debug (const char *str, const char *func, unsigned int line) +char *mmfile_strdup_debug(const char *str, const char *func, unsigned int line) { - char *temp = NULL; - - if (!str) - return NULL; - - temp = strdup (str); - - if (temp) { + char *temp = NULL; + + if (!str) + return NULL; + + temp = strdup(str); + + if (temp) { #ifdef __MMFILE_TEST_MODE__ - debug_msg("## DEBUG ## %p = strdup (%p) by %s() %d\n", temp, str, func, line); + debug_msg("## DEBUG ## %p = strdup (%p) by %s() %d\n", temp, str, func, line); #endif - } + } - return temp; + return temp; } #else /* __MMFILE_MEM_TRACE__ */ EXPORT_API -int mmfile_util_wstrlen (unsigned short *wText) +int mmfile_util_wstrlen(unsigned short *wText) { - int n = 0; + int n = 0; - if (NULL == wText) - { - debug_error ("wText is NULL\n"); - return MMFILE_UTIL_FAIL; - } + if (NULL == wText) { + debug_error("wText is NULL\n"); + return MMFILE_UTIL_FAIL; + } - n = 0; + n = 0; - while ( *(wText+n) != 0 ) - { - n++; - } + while (*(wText + n) != 0) { + n++; + } - return n; + return n; } EXPORT_API char *mmfile_get_charset(const char *str) { - UCharsetDetector* ucsd = NULL; - const UCharsetMatch* ucm = NULL; + UCharsetDetector *ucsd = NULL; + const UCharsetMatch *ucm = NULL; UErrorCode status = U_ZERO_ERROR; - const char* charset = NULL; + const char *charset = NULL; char *ret_charset = NULL; - ucsd = ucsdet_open( &status ); - if( U_FAILURE(status) ) { + ucsd = ucsdet_open(&status); + if (U_FAILURE(status)) { debug_error("fail to ucsdet_open\n"); return NULL; } - ucsdet_enableInputFilter( ucsd, TRUE ); + ucsdet_enableInputFilter(ucsd, TRUE); - ucsdet_setText( ucsd, str, strlen(str), &status ); - if( U_FAILURE(status) ) { + ucsdet_setText(ucsd, str, strlen(str), &status); + if (U_FAILURE(status)) { debug_error("fail to ucsdet_setText\n"); goto done; } - ucm = ucsdet_detect( ucsd, &status ); - if( U_FAILURE(status) ) { + ucm = ucsdet_detect(ucsd, &status); + if (U_FAILURE(status)) { debug_error("fail to ucsdet_detect\n"); goto done; } @@ -184,8 +178,8 @@ char *mmfile_get_charset(const char *str) goto done; } - charset = ucsdet_getName( ucm, &status ); - if( U_FAILURE(status) ) { + charset = ucsdet_getName(ucm, &status); + if (U_FAILURE(status)) { debug_error("fail to ucsdet_getName\n"); charset = NULL; goto done; @@ -196,41 +190,41 @@ done: if (charset != NULL) ret_charset = strdup(charset); - ucsdet_close( ucsd ); + ucsdet_close(ucsd); return ret_charset; } EXPORT_API -char *mmfile_string_convert (const char *str, unsigned int len, - const char *to_codeset, const char *from_codeset, - unsigned int *bytes_read, - unsigned int *bytes_written) +char *mmfile_string_convert(const char *str, unsigned int len, + const char *to_codeset, const char *from_codeset, + gsize *bytes_read, + unsigned int *bytes_written) { char *result = NULL; GError *err = NULL; - int i = 0; - unsigned int written_len = 0; + /*int i = 0;*/ + gsize written_len = 0; if (len != 0) { - result = g_convert (str, len, to_codeset, from_codeset, bytes_read, &written_len, &err); + result = g_convert(str, len, to_codeset, from_codeset, bytes_read, &written_len, &err); /*if converting failed, return duplicated source string.*/ if (result == NULL) { #ifdef __MMFILE_TEST_MODE__ - debug_warning ("text encoding failed.[%s][%d]\n", str, len); - if(err != NULL) { - debug_warning ("Error msg [%s]", err->message); + debug_warning("text encoding failed.[%s][%d]\n", str, len); + if (err != NULL) { + debug_warning("Error msg [%s]", err->message); g_error_free(err); } #endif written_len = 0; } else { /* check carrige return */ - int i = 0; + unsigned int i = 0; for (i = 0; i < written_len; i++) { - if (result[i] == 13){ - if (result[i+1] != 10) + if (result[i] == 13) { + if (result[i + 1] != 10) result[i] = 10; } } @@ -239,7 +233,7 @@ char *mmfile_string_convert (const char *str, unsigned int len, written_len = 0; } - if(bytes_written != NULL) { + if (bytes_written != NULL) { *bytes_written = written_len; } @@ -247,24 +241,24 @@ char *mmfile_string_convert (const char *str, unsigned int len, } EXPORT_API -char **mmfile_strsplit (const char *string, const char *delimiter) +char **mmfile_strsplit(const char *string, const char *delimiter) { - return g_strsplit (string, delimiter, -1); + return g_strsplit(string, delimiter, -1); } EXPORT_API -void mmfile_strfreev (char **str_array) +void mmfile_strfreev(char **str_array) { - g_strfreev(str_array); + g_strfreev(str_array); } EXPORT_API -char *mmfile_strdup (const char *str) +char *mmfile_strdup(const char *str) { - if (!str) - return NULL; - - return strdup (str); + if (!str) + return NULL; + + return strdup(str); } #endif /*__MMFILE_MEM_TRACE__*/ diff --git a/utils/mm_file_util_tag.c b/utils/mm_file_util_tag.c index 05057d3..b0cb122 100755 --- a/utils/mm_file_util_tag.c +++ b/utils/mm_file_util_tag.c @@ -24,11 +24,12 @@ #include <stdlib.h> #include <ctype.h> #include <vconf.h> +#include <glib.h> -#include "mm_debug.h" +#include "mm_file_debug.h" #include "mm_file_utils.h" -#define ENABLE_ITUNES_META //All itunes metadata extracted by ffmpeg. see mov_read_udta_string() but Some cover art not support. +#define ENABLE_ITUNES_META /*All itunes metadata extracted by ffmpeg. see mov_read_udta_string() but Some cover art not support. */ typedef struct _mmfilemp4basicboxheader { unsigned int size; @@ -142,395 +143,391 @@ typedef struct _mmfilesmtabox { #define MMFILE_SYNC_LYRIC_INFO_MIN_LEN 5 -#define FOURCC(a,b,c,d) ((a) + ((b) << 8) + ((c) << 16) + ((d) << 24)) +#define FOURCC(a, b, c, d) ((a) + ((b) << 8) + ((c) << 16) + ((d) << 24)) -#define MIN(a,b) (((a)<(b))?(a):(b)) +/*#define MIN(a, b) (((a) < (b)) ? (a):(b))*/ #define GENRE_COUNT 149 -static char* MpegAudio_Genre[GENRE_COUNT] = {"Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", "Hip-Hop", "Jazz", "Metal", -"New Age", "Oldies", "Other", "Pop", "R&B", "Rap", "Reggae", "Rock", "Techno", "Industrial", -"Alternative", "Ska", "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop", "Vocal", "Jazz+Funk", -"Fusion", "Trance", "Classical", "Instrumental", "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise", -"AlternRock", "Bass", "Soul", "Punk", "Space", "Meditative", "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic", -"Darkwave", "Techno-Industrial", "Electronic", "Pop-Folk", "Eurodance", "Dream", "Southern Rock", "Comedy", "Cult", "Gangsta", -"Top 40", "Christian Rap", "Pop/Funk", "Jungle", "Native American", "Cabaret", "New Wave", "Psychadelic", "Rave", "Showtunes", -"Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", "Polka", "Retro", "Musical", "Rock & Roll", "Hard Rock", -"Folk", "Folk-Rock", "National Folk", "Swing", "Fast Fusion", "Bebob", "Latin", "Revival", "Celtic", "Bluegrass", -"Avantgarde", "Gothic Rock", "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", "Slow Rock", "Big Band", "Chorus", "Easy Listening", "Acoustic", -"Humour", "Speech", "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", "Booty Bass", "Primus", "Porn Groove", -"Satire", "Slow Jam", "Club", "Tango", "Samba", "Folklore", "Ballad", "Power Ballad", "Rhythmic Soul", "Freestyle", -"Duet", "Punk Rock", "Drum Solo", "A capella", "Euro-House", "Dance Hall", "Goa", "Drum & Bass", "Club-House", "Hardcore", -"Terror", "Indie", "BritPop", "Negerpunk", "Polsk Punk", "Beat", "Christian", "Heavy Metal", "Black Metal", "Crossover", -"Contemporary", "Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", "Synthpop", "Unknown" }; - - -static int GetStringFromTextTagBox (MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header, eMMFILE_3GP_TEXT_TAG eTag) +static const char *MpegAudio_Genre[GENRE_COUNT] = {"Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", "Hip-Hop", "Jazz", "Metal", + "New Age", "Oldies", "Other", "Pop", "R&B", "Rap", "Reggae", "Rock", "Techno", "Industrial", + "Alternative", "Ska", "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop", "Vocal", "Jazz+Funk", + "Fusion", "Trance", "Classical", "Instrumental", "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise", + "AlternRock", "Bass", "Soul", "Punk", "Space", "Meditative", "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic", + "Darkwave", "Techno-Industrial", "Electronic", "Pop-Folk", "Eurodance", "Dream", "Southern Rock", "Comedy", "Cult", "Gangsta", + "Top 40", "Christian Rap", "Pop/Funk", "Jungle", "Native American", "Cabaret", "New Wave", "Psychadelic", "Rave", "Showtunes", + "Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", "Polka", "Retro", "Musical", "Rock & Roll", "Hard Rock", + "Folk", "Folk-Rock", "National Folk", "Swing", "Fast Fusion", "Bebob", "Latin", "Revival", "Celtic", "Bluegrass", + "Avantgarde", "Gothic Rock", "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", "Slow Rock", "Big Band", "Chorus", "Easy Listening", "Acoustic", + "Humour", "Speech", "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", "Booty Bass", "Primus", "Porn Groove", + "Satire", "Slow Jam", "Club", "Tango", "Samba", "Folklore", "Ballad", "Power Ballad", "Rhythmic Soul", "Freestyle", + "Duet", "Punk Rock", "Drum Solo", "A capella", "Euro-House", "Dance Hall", "Goa", "Drum & Bass", "Club-House", "Hardcore", + "Terror", "Indie", "BritPop", "Negerpunk", "Polsk Punk", "Beat", "Christian", "Heavy Metal", "Black Metal", "Crossover", + "Contemporary", "Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", "Synthpop", "Unknown" + }; + + +static int GetStringFromTextTagBox(MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header, eMMFILE_3GP_TEXT_TAG eTag) { int ret = MMFILE_UTIL_FAIL; /*fail*/ - MMFILE_3GP_TEXT_TAGBOX texttag = {0,}; + MMFILE_3GP_TEXT_TAGBOX texttag = {0, }; int readed = 0; int textBytes = 0; char *temp_text = NULL; if (!formatContext || !fp || !basic_header) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_UTIL_FAIL; } textBytes = basic_header->size - MMFILE_MP4_BASIC_BOX_HEADER_LEN - MMFILE_3GP_TEXT_TAGBOX_LEN; - readed = mmfile_read (fp, (unsigned char *)&texttag, MMFILE_3GP_TEXT_TAGBOX_LEN); + readed = mmfile_read(fp, (unsigned char *)&texttag, MMFILE_3GP_TEXT_TAGBOX_LEN); if (readed != MMFILE_3GP_TEXT_TAGBOX_LEN) { - debug_error ("read text tag header fail\n"); + debug_error("read text tag header fail\n"); ret = MMFILE_UTIL_FAIL; goto exception; } - if (textBytes <= 1) /* there exist only 00 (null) */ - { - debug_error ("Text is NULL\n"); + if (textBytes <= 1) { /* there exist only 00(null) */ + debug_error("Text is NULL\n"); goto exception; } - texttag.text = mmfile_malloc (textBytes); + texttag.text = mmfile_malloc(textBytes); if (!texttag.text) { - debug_error ("malloc fail for text box\n"); + debug_error("malloc fail for text box\n"); ret = MMFILE_UTIL_FAIL; goto exception; } - readed = mmfile_read (fp, (unsigned char *)texttag.text, textBytes); + readed = mmfile_read(fp, (unsigned char *)texttag.text, textBytes); if (readed != textBytes) { - debug_error ("read text fail\n"); + debug_error("read text fail\n"); ret = MMFILE_UTIL_FAIL; goto exception; } /* check BOM char */ - if ( (texttag.text[0] == 0xFE) && (texttag.text[1] == 0xFF)) { + if ((texttag.text[0] == 0xFE) && (texttag.text[1] == 0xFF)) { /* this char is UTF-16 */ unsigned int bytes_written = 0; - temp_text = mmfile_string_convert ((const char *)&texttag.text[2], readed-2, "UTF-8", "UTF-16",NULL, (unsigned int*)&bytes_written); + temp_text = mmfile_string_convert((const char *)&texttag.text[2], readed - 2, "UTF-8", "UTF-16", NULL, (unsigned int *)&bytes_written); } else { - temp_text = mmfile_strdup ((const char *)texttag.text); + temp_text = mmfile_strdup((const char *)texttag.text); } switch (eTag) { case eMMFILE_3GP_TAG_TITLE: { - if (!formatContext->title) { - formatContext->title = temp_text; + if (!formatContext->title) { + formatContext->title = temp_text; + } + break; } - break; - } case eMMFILE_3GP_TAG_CAPTION: { - if (!formatContext->description) { - formatContext->description = temp_text; + if (!formatContext->description) { + formatContext->description = temp_text; + } + break; } - break; - } case eMMFILE_3GP_TAG_COPYRIGHT: { - if (!formatContext->copyright) { - formatContext->copyright = temp_text; + if (!formatContext->copyright) { + formatContext->copyright = temp_text; + } + break; } - break; - } case eMMFILE_3GP_TAG_PERFORMER: { - if (!formatContext->artist) { - formatContext->artist = temp_text; + if (!formatContext->artist) { + formatContext->artist = temp_text; + } + break; } - break; - } case eMMFILE_3GP_TAG_AUTHOR: { - if (!formatContext->author) { - formatContext->author = temp_text; + if (!formatContext->author) { + formatContext->author = temp_text; + } + break; } - break; - } case eMMFILE_3GP_TAG_GENRE: { - if (!formatContext->genre) { - formatContext->genre = temp_text; + if (!formatContext->genre) { + formatContext->genre = temp_text; + } + break; } - break; - } default: { - debug_warning("Not supported Text Tag type[%d]\n", eTag); - break; - } + debug_warning("Not supported Text Tag type[%d]\n", eTag); + break; + } } - mmfile_free (texttag.text); + mmfile_free(texttag.text); texttag.text = NULL; - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); return MMFILE_UTIL_SUCCESS; exception: - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); if (texttag.text) { mmfile_free(texttag.text); } return ret; } -static int GetYearFromYearTagBox (MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) +static int GetYearFromYearTagBox(MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) { #define MAX_YEAR_BUFFER 10 int readed = 0; - MMFILE_3GP_YEAR_TAGBOX yearbox = {0,}; - char temp_year[MAX_YEAR_BUFFER] = {0,}; + MMFILE_3GP_YEAR_TAGBOX yearbox = {0, }; + char temp_year[MAX_YEAR_BUFFER] = {0, }; if (!formatContext || !fp || !basic_header) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_UTIL_FAIL; } - readed = mmfile_read (fp, (unsigned char *)&yearbox, MMFILE_3GP_YEAR_TAGBOX_LEN); + readed = mmfile_read(fp, (unsigned char *)&yearbox, MMFILE_3GP_YEAR_TAGBOX_LEN); if (readed != MMFILE_3GP_YEAR_TAGBOX_LEN) { - debug_error ("read yeartag header fail\n"); + debug_error("read yeartag header fail\n"); goto exception; } if (!formatContext->year) { - yearbox.year = mmfile_io_be_int16 (yearbox.year); - snprintf (temp_year, MAX_YEAR_BUFFER, "%d", yearbox.year); - temp_year[MAX_YEAR_BUFFER-1] = '\0'; - formatContext->year = mmfile_strdup ((const char*)temp_year); + yearbox.year = mmfile_io_be_int16(yearbox.year); + snprintf(temp_year, MAX_YEAR_BUFFER, "%d", yearbox.year); + temp_year[MAX_YEAR_BUFFER - 1] = '\0'; + formatContext->year = mmfile_strdup((const char *)temp_year); } - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); return MMFILE_UTIL_SUCCESS; exception: - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); return MMFILE_UTIL_FAIL; } -static int GetAlbumFromAlbumTagBox (MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) +static int GetAlbumFromAlbumTagBox(MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) { int albumTitleLen = 0; char *temp_text = NULL; int readed = 0; int trackFlags = 0; - MMFILE_3GP_ALBUM_TAGBOX albumbox = {0,}; + MMFILE_3GP_ALBUM_TAGBOX albumbox = {0, }; if (!formatContext || !fp || !basic_header) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_UTIL_FAIL; } - readed = mmfile_read (fp, (unsigned char *)&albumbox, MMFILE_3GP_ALBUM_TAGBOX_LEN); + readed = mmfile_read(fp, (unsigned char *)&albumbox, MMFILE_3GP_ALBUM_TAGBOX_LEN); if (readed != MMFILE_3GP_ALBUM_TAGBOX_LEN) { - debug_error ("read albumtag header fail\n"); + debug_error("read albumtag header fail\n"); goto exception; } albumTitleLen = basic_header->size - MMFILE_MP4_BASIC_BOX_HEADER_LEN - MMFILE_3GP_ALBUM_TAGBOX_LEN - 1; /* 1: track number */ - if (albumTitleLen > 1) /* there exist only 00 (null) */ - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("albumTitleLen=%d\n", albumTitleLen); - #endif + if (albumTitleLen > 1) { /* there exist only 00(null) */ +#ifdef __MMFILE_TEST_MODE__ + debug_msg("albumTitleLen=%d\n", albumTitleLen); +#endif - albumbox.albumtile = mmfile_malloc (albumTitleLen + 1); /* 1: for null char */ + albumbox.albumtile = mmfile_malloc(albumTitleLen + 1); /* 1: for null char */ if (!albumbox.albumtile) { - debug_error ("malloc fail for album title text\n"); + debug_error("malloc fail for album title text\n"); goto exception; } - readed = mmfile_read (fp, (unsigned char *)albumbox.albumtile, albumTitleLen); + readed = mmfile_read(fp, (unsigned char *)albumbox.albumtile, albumTitleLen); if (readed != albumTitleLen) { - debug_error ("read album title fail\n"); + debug_error("read album title fail\n"); goto exception; } - if (albumbox.albumtile[albumTitleLen-1] == '\0') /* there exist track number */ - { + if (albumbox.albumtile[albumTitleLen - 1] == '\0') { /* there exist track number */ trackFlags = 1; - } - else - { + } else { trackFlags = 0; - readed = mmfile_read (fp, (unsigned char *)&(albumbox.albumtile[albumTitleLen]), 1); + readed = mmfile_read(fp, (unsigned char *)&(albumbox.albumtile[albumTitleLen]), 1); if (readed != 1) { - debug_error ("read album title fail\n"); + debug_error("read album title fail\n"); goto exception; - } + } albumbox.albumtile[albumTitleLen] = '\0'; } /* check BOM char */ - if ( (albumbox.albumtile[0] == 0xFE) && (albumbox.albumtile[1] == 0xFF)) { + if ((albumbox.albumtile[0] == 0xFE) && (albumbox.albumtile[1] == 0xFF)) { /* this char is UTF-16 */ unsigned int bytes_written = 0; - temp_text = mmfile_string_convert ((const char*)&albumbox.albumtile[2], readed-2, "UTF-8", "UTF-16", NULL, (unsigned int*)&bytes_written); + temp_text = mmfile_string_convert((const char *)&albumbox.albumtile[2], readed - 2, "UTF-8", "UTF-16", NULL, (unsigned int *)&bytes_written); } else { - temp_text = mmfile_strdup ((const char*)albumbox.albumtile); + temp_text = mmfile_strdup((const char *)albumbox.albumtile); } if (!formatContext->album) { formatContext->album = temp_text; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("formatContext->album=%s, strlen=%d\n", formatContext->album, strlen(formatContext->album)); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("formatContext->album=%s, strlen=%d\n", formatContext->album, strlen(formatContext->album)); +#endif } if (trackFlags) { - readed = mmfile_read (fp, (unsigned char *)&albumbox.trackNumber, 1); + readed = mmfile_read(fp, (unsigned char *)&albumbox.trackNumber, 1); if (readed != 1) { - debug_error ("read track number fail\n"); + debug_error("read track number fail\n"); goto exception; } if (formatContext->tagTrackNum == 0) { - char tracknum[10] = {0,}; - snprintf (tracknum, 10, "%d", albumbox.trackNumber); + char tracknum[10] = {0, }; + snprintf(tracknum, 10, "%d", albumbox.trackNumber); tracknum[9] = '\0'; - formatContext->tagTrackNum = mmfile_strdup ((const char*)tracknum); + formatContext->tagTrackNum = mmfile_strdup((const char *)tracknum); } } - mmfile_free (albumbox.albumtile); - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_free(albumbox.albumtile); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); return MMFILE_UTIL_SUCCESS; exception: - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); - mmfile_free (albumbox.albumtile); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_free(albumbox.albumtile); return MMFILE_UTIL_FAIL; } -static int GetRatingFromRatingTagBox (MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) +static int GetRatingFromRatingTagBox(MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) { int readed = 0; int ratinginfoLen = 0; char *temp_text = NULL; - MMFILE_3GP_RATING_TAGBOX ratingTag = {0,}; + MMFILE_3GP_RATING_TAGBOX ratingTag = {0, }; if (!formatContext || !fp || !basic_header) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_UTIL_FAIL; } - readed = mmfile_read (fp, (unsigned char *)&ratingTag, MMFILE_3GP_RATING_TAGBOX_LEN); + readed = mmfile_read(fp, (unsigned char *)&ratingTag, MMFILE_3GP_RATING_TAGBOX_LEN); if (readed != MMFILE_3GP_RATING_TAGBOX_LEN) { - debug_error ("read rating tag header fail\n"); + debug_error("read rating tag header fail\n"); goto exception; } ratinginfoLen = basic_header->size - MMFILE_MP4_BASIC_BOX_HEADER_LEN - MMFILE_3GP_RATING_TAGBOX_LEN; if (ratinginfoLen == 1) { - debug_error ("Rating Text is NULL\n"); + debug_error("Rating Text is NULL\n"); goto exception; } - ratingTag.ratingInfo = mmfile_malloc (ratinginfoLen); + ratingTag.ratingInfo = mmfile_malloc(ratinginfoLen); if (!ratingTag.ratingInfo) { - debug_error ("rating info error\n"); + debug_error("rating info error\n"); goto exception; } - readed = mmfile_read (fp, (unsigned char *)ratingTag.ratingInfo, ratinginfoLen); + readed = mmfile_read(fp, (unsigned char *)ratingTag.ratingInfo, ratinginfoLen); if (readed != ratinginfoLen) { - debug_error ("read rating info string fail\n"); + debug_error("read rating info string fail\n"); goto exception; } /* check BOM char */ - if ( (ratingTag.ratingInfo[0] == 0xFE) && (ratingTag.ratingInfo[1] == 0xFF)) { + if ((ratingTag.ratingInfo[0] == 0xFE) && (ratingTag.ratingInfo[1] == 0xFF)) { /* this char is UTF-16 */ unsigned int bytes_written = 0; - temp_text = mmfile_string_convert ((const char*)&ratingTag.ratingInfo[2], readed-2, "UTF-8", "UTF-16", NULL, (unsigned int*)&bytes_written); + temp_text = mmfile_string_convert((const char *)&ratingTag.ratingInfo[2], readed - 2, "UTF-8", "UTF-16", NULL, (unsigned int *)&bytes_written); } else { - temp_text = mmfile_strdup ((const char*)ratingTag.ratingInfo); + temp_text = mmfile_strdup((const char *)ratingTag.ratingInfo); } if (!formatContext->rating) { formatContext->rating = temp_text; } else { - mmfile_free (temp_text); + mmfile_free(temp_text); } - mmfile_free (ratingTag.ratingInfo); - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_free(ratingTag.ratingInfo); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); return MMFILE_UTIL_SUCCESS; exception: - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); - mmfile_free (ratingTag.ratingInfo); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_free(ratingTag.ratingInfo); return MMFILE_UTIL_FAIL; } -static int GetClassficationFromClsfTagBox (MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) +static int GetClassficationFromClsfTagBox(MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) { int classinfoLen = 0; int readed = 0; char *temp_text = NULL; - MMFILE_3GP_CLASSIFICATION_TAGBOX classTag = {0,}; + MMFILE_3GP_CLASSIFICATION_TAGBOX classTag = {0, }; if (!formatContext || !fp || !basic_header) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_UTIL_FAIL; } - readed = mmfile_read (fp, (unsigned char *)&classTag, MMFILE_3GP_CLASS_TAGBOX_LEN); + readed = mmfile_read(fp, (unsigned char *)&classTag, MMFILE_3GP_CLASS_TAGBOX_LEN); if (readed != MMFILE_3GP_CLASS_TAGBOX_LEN) { - debug_error ("read classification tag header fail\n"); + debug_error("read classification tag header fail\n"); goto exception; } classinfoLen = basic_header->size - MMFILE_MP4_BASIC_BOX_HEADER_LEN - MMFILE_3GP_CLASS_TAGBOX_LEN; if (classinfoLen == 1) { - debug_error ("Classification Text is NULL\n"); + debug_error("Classification Text is NULL\n"); goto exception; } - classTag.classificationInfo = mmfile_malloc (classinfoLen); + classTag.classificationInfo = mmfile_malloc(classinfoLen); if (!classTag.classificationInfo) { - debug_error ("class info error\n"); + debug_error("class info error\n"); goto exception; } - readed = mmfile_read (fp, (unsigned char *)classTag.classificationInfo, classinfoLen); + readed = mmfile_read(fp, (unsigned char *)classTag.classificationInfo, classinfoLen); if (readed != classinfoLen) { - debug_error ("read class info string fail\n"); + debug_error("read class info string fail\n"); goto exception; } /* check BOM char */ - if ( (classTag.classificationInfo[0] == 0xFE) && (classTag.classificationInfo[1] == 0xFF)) { + if ((classTag.classificationInfo[0] == 0xFE) && (classTag.classificationInfo[1] == 0xFF)) { /* this char is UTF-16 */ unsigned int bytes_written = 0; - temp_text = mmfile_string_convert ((const char*)&classTag.classificationInfo[2], readed-2, "UTF-8", "UTF-16", NULL, (unsigned int*)&bytes_written); + temp_text = mmfile_string_convert((const char *)&classTag.classificationInfo[2], readed - 2, "UTF-8", "UTF-16", NULL, (unsigned int *)&bytes_written); } else { - temp_text = mmfile_strdup ((const char*)classTag.classificationInfo); + temp_text = mmfile_strdup((const char *)classTag.classificationInfo); } if (!formatContext->classification) { formatContext->classification = temp_text; } else { - mmfile_free (temp_text); + mmfile_free(temp_text); } - mmfile_free (classTag.classificationInfo); - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_free(classTag.classificationInfo); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); return MMFILE_UTIL_SUCCESS; exception: - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); - mmfile_free (classTag.classificationInfo); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_free(classTag.classificationInfo); return MMFILE_UTIL_FAIL; } @@ -557,21 +554,21 @@ exception: * information * --------------------+-------------------+-----------------------------------+------ */ -static int _get_char_position (unsigned char *src, char ch, int max) +static int _get_char_position(unsigned char *src, char ch, int max) { int i; for (i = 0; i < max; i++) { - if ( *(src + i) == ch) + if (*(src + i) == ch) return i; } return -1; -} - -static int GetLocationFromLociTagBox (MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) +} + +static int GetLocationFromLociTagBox(MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) { - MMFILE_3GP_LOCATION_TAGBOX lociTag = {0,}; + MMFILE_3GP_LOCATION_TAGBOX lociTag = {0, }; int readed = 0; int bufferLen = 0; unsigned char *buffer = NULL; @@ -586,43 +583,43 @@ static int GetLocationFromLociTagBox (MMFileFormatContext *formatContext, MMFile if (!formatContext || !fp || !basic_header) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_UTIL_FAIL; } - readed = mmfile_read (fp, (unsigned char *)&lociTag, 6); /*6 = version + flag + pad + language */ + readed = mmfile_read(fp, (unsigned char *)&lociTag, 6); /*6 = version + flag + pad + language */ if (readed != 6) { - debug_error ("read location tag header fail\n"); + debug_error("read location tag header fail\n"); goto exception; } /*buffer len = name + role + ... + additional notes length */ bufferLen = basic_header->size - MMFILE_MP4_BASIC_BOX_HEADER_LEN - 6; if (bufferLen < 1) { - debug_error ("too small buffer\n"); + debug_error("too small buffer\n"); goto exception; } - buffer = mmfile_malloc (bufferLen); + buffer = mmfile_malloc(bufferLen); if (!buffer) { - debug_error ("buffer malloc error\n"); + debug_error("buffer malloc error\n"); goto exception; } - readed = mmfile_read (fp, (unsigned char *)buffer, bufferLen); + readed = mmfile_read(fp, (unsigned char *)buffer, bufferLen); if (readed != bufferLen) { - debug_error ("read location tag fail\n"); + debug_error("read location tag fail\n"); goto exception; } p = buffer; /*name*/ - pos = _get_char_position (p, '\0', readed - (1+4+4+4+2)); + pos = _get_char_position(p, '\0', readed - (1 + 4 + 4 + 4 + 2)); if (pos >= 0) { if (p[0] == 0xFE && p[1] == 0xFF) { - lociTag.name = (unsigned char*)mmfile_string_convert ((const char*)(p + 2), pos - 2, "UTF-8", "UTF-16", NULL, (unsigned int*)&bytes_written); + lociTag.name = (unsigned char *)mmfile_string_convert((const char *)(p + 2), pos - 2, "UTF-8", "UTF-16", NULL, (unsigned int *)&bytes_written); } else { - lociTag.name = (unsigned char*)mmfile_strdup ((const char*)p); + lociTag.name = (unsigned char *)mmfile_strdup((const char *)p); } } else { goto exception; @@ -634,19 +631,19 @@ static int GetLocationFromLociTagBox (MMFileFormatContext *formatContext, MMFile lociTag.role = *p; p++; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("long: 0x%02X 0x%02X 0x%02X 0x%02X \n", *(p+0), *(p+1), *(p+2), *(p+3)); - debug_msg ("lati: 0x%02X 0x%02X 0x%02X 0x%02X \n", *(p+4), *(p+5), *(p+6), *(p+7)); - debug_msg ("alti: 0x%02X 0x%02X 0x%02X 0x%02X \n", *(p+8), *(p+9), *(p+10), *(p+11)); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("long: 0x%02X 0x%02X 0x%02X 0x%02X \n", *(p + 0), *(p + 1), *(p + 2), *(p + 3)); + debug_msg("lati: 0x%02X 0x%02X 0x%02X 0x%02X \n", *(p + 4), *(p + 5), *(p + 6), *(p + 7)); + debug_msg("alti: 0x%02X 0x%02X 0x%02X 0x%02X \n", *(p + 8), *(p + 9), *(p + 10), *(p + 11)); +#endif - ilong = mmfile_io_be_uint32 (*(unsigned int*)p); - ilati = mmfile_io_be_uint32 (*(unsigned int*)(p+4)); - ialti = mmfile_io_be_uint32 (*(unsigned int*)(p+8)); + ilong = mmfile_io_be_uint32(*(unsigned int *)p); + ilati = mmfile_io_be_uint32(*(unsigned int *)(p + 4)); + ialti = mmfile_io_be_uint32(*(unsigned int *)(p + 8)); - flong = (float)ilong / (1<<16); - flati = (float)ilati / (1<<16); - falti = (float)ialti / (1<<16); + flong = (float)ilong / (1 << 16); + flati = (float)ilati / (1 << 16); + falti = (float)ialti / (1 << 16); /*longitude*/ lociTag.longitude = flong; @@ -654,16 +651,16 @@ static int GetLocationFromLociTagBox (MMFileFormatContext *formatContext, MMFile lociTag.latitude = flati; /*altitude*/ lociTag.altitude = falti; - + p += 12; /*astronomical body*/ - pos = _get_char_position (p, '\0', readed - (name_sz+1+4+4+4+1)); + pos = _get_char_position(p, '\0', readed - (name_sz + 1 + 4 + 4 + 4 + 1)); if (pos >= 0) { if (p[0] == 0xFE && p[1] == 0xFF) { - lociTag.astronomical_body = (unsigned char*)mmfile_string_convert ((const char*)(p + 2), pos - 2, "UTF-8", "UTF-16", NULL, (unsigned int*)&bytes_written); + lociTag.astronomical_body = (unsigned char *)mmfile_string_convert((const char *)(p + 2), pos - 2, "UTF-8", "UTF-16", NULL, (unsigned int *)&bytes_written); } else { - lociTag.astronomical_body = (unsigned char*)mmfile_strdup ((const char*)p); + lociTag.astronomical_body = (unsigned char *)mmfile_strdup((const char *)p); } } else { goto exception; @@ -672,63 +669,63 @@ static int GetLocationFromLociTagBox (MMFileFormatContext *formatContext, MMFile p += (pos + 1); /*additional notes*/ - pos = _get_char_position (p, '\0', readed - (name_sz+1+4+4+4+astro_sz)); + pos = _get_char_position(p, '\0', readed - (name_sz + 1 + 4 + 4 + 4 + astro_sz)); if (pos >= 0) { if (p[0] == 0xFE && p[1] == 0xFF) { - lociTag.additional_notes = (unsigned char*)mmfile_string_convert ((const char*)(p + 2), pos - 2, "UTF-8", "UTF-16", NULL, (unsigned int*)&bytes_written); + lociTag.additional_notes = (unsigned char *)mmfile_string_convert((const char *)(p + 2), pos - 2, "UTF-8", "UTF-16", NULL, (unsigned int *)&bytes_written); } else { - lociTag.additional_notes = (unsigned char*)mmfile_strdup ((const char*)p); + lociTag.additional_notes = (unsigned char *)mmfile_strdup((const char *)p); } } else { goto exception; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("** Location Information **\n"); - debug_msg ("Name : %s\n", lociTag.name); - debug_msg ("Role : %d (0: shooting, 1: real, 2: fictional, other: reserved)\n", lociTag.role); - debug_msg ("Longitude : %16.16f\n", lociTag.longitude); - debug_msg ("Latitude : %16.16f\n", lociTag.latitude); - debug_msg ("Altitude : %16.16f\n", lociTag.altitude); - debug_msg ("Astronomical body: %s\n", lociTag.astronomical_body); - debug_msg ("Additional notes : %s\n", lociTag.additional_notes); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("** Location Information **\n"); + debug_msg("Name : %s\n", lociTag.name); + debug_msg("Role : %d (0: shooting, 1: real, 2: fictional, other: reserved)\n", lociTag.role); + debug_msg("Longitude : %16.16f\n", lociTag.longitude); + debug_msg("Latitude : %16.16f\n", lociTag.latitude); + debug_msg("Altitude : %16.16f\n", lociTag.altitude); + debug_msg("Astronomical body: %s\n", lociTag.astronomical_body); + debug_msg("Additional notes : %s\n", lociTag.additional_notes); +#endif formatContext->longitude = lociTag.longitude; formatContext->latitude = lociTag.latitude; formatContext->altitude = lociTag.altitude; - mmfile_free (buffer); - mmfile_free (lociTag.name); - mmfile_free (lociTag.astronomical_body); - mmfile_free (lociTag.additional_notes); + mmfile_free(buffer); + mmfile_free(lociTag.name); + mmfile_free(lociTag.astronomical_body); + mmfile_free(lociTag.additional_notes); - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); return MMFILE_UTIL_SUCCESS; - + exception: - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); - mmfile_free (buffer); - mmfile_free (lociTag.name); - mmfile_free (lociTag.astronomical_body); - mmfile_free (lociTag.additional_notes); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_free(buffer); + mmfile_free(lociTag.name); + mmfile_free(lociTag.astronomical_body); + mmfile_free(lociTag.additional_notes); return MMFILE_UTIL_FAIL; } static int GetSAUTInfoFromSMTATagBox(MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) { - MMFILE_M4A_SMTA_TAGBOX smtaTag = {0,}; + MMFILE_M4A_SMTA_TAGBOX smtaTag = {0, }; int readed = 0; if (!formatContext || !fp || !basic_header) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_UTIL_FAIL; } - readed = mmfile_read (fp, (unsigned char *)&smtaTag, sizeof(MMFILE_M4A_SMTA_TAGBOX)); + readed = mmfile_read(fp, (unsigned char *)&smtaTag, sizeof(MMFILE_M4A_SMTA_TAGBOX)); if (readed != sizeof(MMFILE_M4A_SMTA_TAGBOX)) { - debug_error ("read smta tag header fail\n"); + debug_error("read smta tag header fail\n"); goto exception; } @@ -741,13 +738,13 @@ static int GetSAUTInfoFromSMTATagBox(MMFileFormatContext *formatContext, MMFileI #endif if (smtaTag.saut[0] == 's' - && smtaTag.saut[1] == 'a' - && smtaTag.saut[2] == 'u' - && smtaTag.saut[3] == 't') { + && smtaTag.saut[1] == 'a' + && smtaTag.saut[2] == 'u' + && smtaTag.saut[3] == 't') { if (smtaTag.value == 0x01) { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("This has saut tag and valid value"); - #endif +#endif formatContext->smta = 1; } else { debug_error("This has saut tag and but invalid value"); @@ -761,7 +758,7 @@ static int GetSAUTInfoFromSMTATagBox(MMFileFormatContext *formatContext, MMFileI return MMFILE_UTIL_SUCCESS; exception: - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); return MMFILE_UTIL_FAIL; } @@ -772,13 +769,13 @@ static int GetValueFromCDISTagBox(MMFileFormatContext *formatContext, MMFileIOHa int readed = 0; if (!formatContext || !fp || !basic_header) { - debug_error ("invalid param\n"); + debug_error("invalid param\n"); return MMFILE_UTIL_FAIL; } - readed = mmfile_read (fp, (unsigned char *)&value, sizeof(unsigned int)); + readed = mmfile_read(fp, (unsigned char *)&value, sizeof(unsigned int)); if (readed != sizeof(unsigned int)) { - debug_error ("read cdis tag header fail\n"); + debug_error("read cdis tag header fail\n"); goto exception; } @@ -789,9 +786,9 @@ static int GetValueFromCDISTagBox(MMFileFormatContext *formatContext, MMFileIOHa #endif if (value == 0x01) { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("This has cdis tag and valid value"); - #endif +#endif formatContext->cdis = 1; } else { debug_error("This has cdis tag and but invalid value"); @@ -801,115 +798,115 @@ static int GetValueFromCDISTagBox(MMFileFormatContext *formatContext, MMFileIOHa return MMFILE_UTIL_SUCCESS; exception: - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); return MMFILE_UTIL_FAIL; } -static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) +static int GetTagFromMetaBox(MMFileFormatContext *formatContext, MMFileIOHandle *fp, MMFILE_MP4_BASIC_BOX_HEADER *basic_header) { int readed = 0; - MMFILE_MP4_BASIC_BOX_HEADER hdlrBoxHeader = {0,}; - MMFILE_MP4_BASIC_BOX_HEADER id3v2BoxHeader = {0,}; - MMFILE_3GP_ID3V2_BOX id3v2Box = {0,}; - AvFileContentInfo tagInfo = {0,}; + MMFILE_MP4_BASIC_BOX_HEADER hdlrBoxHeader = {0, }; + MMFILE_MP4_BASIC_BOX_HEADER id3v2BoxHeader = {0, }; + MMFILE_3GP_ID3V2_BOX id3v2Box = {0, }; + AvFileContentInfo tagInfo = {0, }; unsigned char tagVersion = 0; bool versionCheck = false; int id3v2Len = 0; unsigned int meta_version = 0; - MMFILE_3GP_HANDLER_BOX hdlrBox = {0,}; - int encSize = 0; + MMFILE_3GP_HANDLER_BOX hdlrBox = {0, }; + unsigned 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 /* meta box */ - readed = mmfile_read (fp, (unsigned char *)&meta_version, 4); + readed = mmfile_read(fp, (unsigned char *)&meta_version, 4); if (readed != 4) { - debug_error ("read meta box version\n"); + debug_error("read meta box version\n"); goto exception; } /* hdlr box */ - readed = mmfile_read (fp, (unsigned char *)&hdlrBoxHeader, MMFILE_MP4_BASIC_BOX_HEADER_LEN); + readed = mmfile_read(fp, (unsigned char *)&hdlrBoxHeader, MMFILE_MP4_BASIC_BOX_HEADER_LEN); if (readed != MMFILE_MP4_BASIC_BOX_HEADER_LEN) { - debug_error ("read hdlr box header\n"); + debug_error("read hdlr box header\n"); goto exception; } - if (hdlrBoxHeader.type != FOURCC ('h', 'd', 'l', 'r')) { - debug_warning ("meta type is not hdlr\n"); + if (hdlrBoxHeader.type != FOURCC('h', 'd', 'l', 'r')) { + debug_warning("meta type is not hdlr\n"); goto exception; } - hdlrBoxHeader.size = mmfile_io_be_uint32 (hdlrBoxHeader.size); - hdlrBoxHeader.type = mmfile_io_le_uint32 (hdlrBoxHeader.type); + hdlrBoxHeader.size = mmfile_io_be_uint32(hdlrBoxHeader.size); + hdlrBoxHeader.type = mmfile_io_le_uint32(hdlrBoxHeader.type); - readed = mmfile_read (fp, (unsigned char *)&hdlrBox, MMFILE_3GP_HANDLER_BOX_LEN); + readed = mmfile_read(fp, (unsigned char *)&hdlrBox, MMFILE_3GP_HANDLER_BOX_LEN); if (readed != MMFILE_3GP_HANDLER_BOX_LEN) { - debug_error ("read hdlr box\n"); + debug_error("read hdlr box\n"); goto exception; } - hdlrBox.handler_type = mmfile_io_le_uint32 (hdlrBox.handler_type); + hdlrBox.handler_type = mmfile_io_le_uint32(hdlrBox.handler_type); /** * check tag type (ID3v2 or iTunes) */ - if (hdlrBox.handler_type == FOURCC ('I', 'D', '3', '2')) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("ID3v2 tag detected.\n"); - #endif + if (hdlrBox.handler_type == FOURCC('I', 'D', '3', '2')) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("ID3v2 tag detected.\n"); +#endif id3_meta = 1; #ifdef ENABLE_ITUNES_META iTunes_meta = 0; #endif - } else if (hdlrBox.handler_type == FOURCC ('m', 'd', 'i', 'r') && - mmfile_io_le_uint32 (hdlrBox.reserved[0]) == FOURCC ('a', 'p', 'p', 'l')) { + } else if (hdlrBox.handler_type == FOURCC('m', 'd', 'i', 'r') && + mmfile_io_le_uint32(hdlrBox.reserved[0]) == FOURCC('a', 'p', 'p', 'l')) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("Apple iTunes tag detected by mdir.\n"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Apple iTunes tag detected by mdir.\n"); +#endif #ifdef ENABLE_ITUNES_META iTunes_meta = 1; #endif } else { - debug_warning ("unknown meta type. 4CC:[%c%c%c%c]\n", ((char*)&hdlrBox.handler_type)[0], - ((char*)&hdlrBox.handler_type)[1], - ((char*)&hdlrBox.handler_type)[2], - ((char*)&hdlrBox.handler_type)[3]); - //goto exception; + debug_warning("unknown meta type. 4CC:[%c%c%c%c]\n", ((char *)&hdlrBox.handler_type)[0], + ((char *)&hdlrBox.handler_type)[1], + ((char *)&hdlrBox.handler_type)[2], + ((char *)&hdlrBox.handler_type)[3]); + /*goto exception; */ } #ifdef ENABLE_ITUNES_META - if(!id3_meta && !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"; + const char *ilst_box = "ilst"; int buf_size = strlen(ilst_box); - unsigned char read_buf[buf_size+1]; - memset(read_buf, 0x00, buf_size+1); + 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 + 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' + readed = mmfile_read(fp, read_buf, buf_size); /* to find 'ilst' */ if (readed != buf_size) { - debug_error ("read fail [%d]\n", readed); + 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 + 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; } @@ -936,51 +933,51 @@ static int GetTagFromMetaBox (MMFileFormatContext *formatContext, MMFileIOHandle unsigned char read_buf[_ITUNES_READ_BUF_SZ]; int i = 0; int cover_sz = 0, cover_type = 0, cover_found = 0; - int track_num = 0, track_found = 0; - int genre_index = 0, genre_found = 0; - int artist_sz = 0, artist_found = 0; + /* int track_found = 0; */ /* , track_num = 0; */ + /* int genre_found = 0; */ /* , genre_index = 0; */ + /* int artist_found = 0; */ /* , artist_sz = 0; */ int limit = basic_header->size - hdlrBoxHeader.size; - long long cover_offset = 0, track_offset =0 , genre_offset = 0, artist_offset = 0; + long long cover_offset = 0; /*, track_offset =0, genre_offset = 0, artist_offset = 0; */ -// for (i = 0, cover_found = 0, track_found = 0, genre_found = 0, artist_found = 0; i < limit && (cover_found == 0 || track_found == 0 || genre_found == 0 || artist_found == 0) ; i++) { + /* for (i = 0, cover_found = 0, track_found = 0, genre_found = 0, artist_found = 0; i < limit && (cover_found == 0 || track_found == 0 || genre_found == 0 || artist_found == 0) ; i++) { */ for (i = 0; (i < limit) && (cover_found == 0) ; i++) { - readed = mmfile_read (fp, read_buf, _ITUNES_READ_BUF_SZ); + readed = mmfile_read(fp, read_buf, _ITUNES_READ_BUF_SZ); if (readed != _ITUNES_READ_BUF_SZ) goto exception; -/*ffmpeg extract artist, tracknum, genre and cover image. see mov_read_udta_string(). -but ffmpeg does not support strange cover image. -only support covr type 0xd(JPEG), 0xe(PNG), 0x1b(BMP). but we support other type*/ + /*ffmpeg extract artist, tracknum, genre and cover image. see mov_read_udta_string(). + but ffmpeg does not support strange cover image. + only support covr type 0xd(JPEG), 0xe(PNG), 0x1b(BMP). but we support other type*/ #if 0 /** * Artist : Added 2010.10.28 */ if (artist_found == 0 && - read_buf[0] == 0xa9 && read_buf[1] == 'A' && read_buf[2] == 'R' && read_buf[3] == 'T' && - read_buf[8] == 'd' && read_buf[9] == 'a' && read_buf[10] == 't' && read_buf[11] == 'a') { + read_buf[0] == 0xa9 && read_buf[1] == 'A' && read_buf[2] == 'R' && read_buf[3] == 'T' && + read_buf[8] == 'd' && read_buf[9] == 'a' && read_buf[10] == 't' && read_buf[11] == 'a') { artist_found = 1; - artist_offset = mmfile_tell (fp); - artist_sz = mmfile_io_be_uint32 (*(int*)(read_buf + 4)) - 16; /* atom len(4)+data(4)+atom verion(1)+flag(3)+null(4) = 16 */ + artist_offset = mmfile_tell(fp); + artist_sz = mmfile_io_be_uint32(*(int *)(read_buf + 4)) - 16; /* atom len(4)+data(4)+atom verion(1)+flag(3)+null(4) = 16 */ - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("----------------------------------- artist found, offset=[%lld], size=[%d]\n", artist_offset, artist_sz); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("----------------------------------- artist found, offset=[%lld], size=[%d]\n", artist_offset, artist_sz); +#endif } /** * Track number */ 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') { + 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') { track_found = 1; - track_offset = mmfile_tell (fp); + track_offset = mmfile_tell(fp); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("----------------------------------- Track found, offset=[%lld]\n", track_offset); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("----------------------------------- Track found, offset=[%lld]\n", track_offset); +#endif } /** @@ -988,15 +985,15 @@ only support covr type 0xd(JPEG), 0xe(PNG), 0x1b(BMP). but we support other type */ /*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') { + 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') { genre_found = 1; - genre_offset = mmfile_tell (fp); + genre_offset = mmfile_tell(fp); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("----------------------------------- genre found, offset=[%lld]\n", genre_offset); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("----------------------------------- genre found, offset=[%lld]\n", genre_offset); +#endif } #endif @@ -1005,457 +1002,443 @@ only support covr type 0xd(JPEG), 0xe(PNG), 0x1b(BMP). but we support other type */ if (cover_found == 0 && - read_buf[0] == 'c' && read_buf[1] == 'o' && read_buf[2] == 'v' && read_buf[3] == 'r' && - read_buf[8] == 'd' && read_buf[9] == 'a' && read_buf[10] == 't' && read_buf[11] == 'a') { + read_buf[0] == 'c' && read_buf[1] == 'o' && read_buf[2] == 'v' && read_buf[3] == 'r' && + read_buf[8] == 'd' && read_buf[9] == 'a' && read_buf[10] == 't' && read_buf[11] == 'a') { cover_found = 1; - cover_sz = mmfile_io_be_uint32 (*(int*)(read_buf + 4)) - 12; - cover_type = mmfile_io_be_uint32 (*(int*)(read_buf + 12)); + cover_sz = mmfile_io_be_uint32(*(int *)(read_buf + 4)) - 12; + cover_type = mmfile_io_be_uint32(*(int *)(read_buf + 12)); - cover_offset = mmfile_tell (fp); + cover_offset = mmfile_tell(fp); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("----------------------------------- cover_found found, offset=[%lld]\n", cover_offset); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("----------------------------------- cover_found found, offset=[%lld]\n", cover_offset); +#endif } - mmfile_seek (fp, -(_ITUNES_READ_BUF_SZ - 1), SEEK_CUR); /*FIXME: poor search*/ + mmfile_seek(fp, -(_ITUNES_READ_BUF_SZ - 1), SEEK_CUR); /*FIXME: poor search*/ } /*loop*/ -/*ffmpeg extract artist, 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) { - mmfile_seek (fp, artist_offset, SEEK_SET); + mmfile_seek(fp, artist_offset, SEEK_SET); if (formatContext->artist) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("----------------------------------- previous artist was [%s] \n", formatContext->artist); - #endif - free (formatContext->artist); +#ifdef __MMFILE_TEST_MODE__ + debug_msg("----------------------------------- previous artist was [%s] \n", formatContext->artist); +#endif + free(formatContext->artist); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("----------------------------------- new artist will be allocated with size (len+1) [%d] \n", artist_sz+1); - #endif - formatContext->artist = mmfile_malloc (artist_sz+1); +#ifdef __MMFILE_TEST_MODE__ + debug_msg("----------------------------------- new artist will be allocated with size (len+1) [%d] \n", artist_sz + 1); +#endif + formatContext->artist = mmfile_malloc(artist_sz + 1); if (formatContext->artist) { - readed = mmfile_read (fp, (unsigned char*)formatContext->artist, artist_sz); + readed = mmfile_read(fp, (unsigned char *)formatContext->artist, artist_sz); formatContext->artist[artist_sz] = '\0'; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("----------------------------------- new artist is [%s] \n", formatContext->artist); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("----------------------------------- new artist is [%s] \n", formatContext->artist); +#endif if (readed != artist_sz) { - debug_error ("failed to read. ret = %d, in = %d\n", readed, artist_sz); - mmfile_free (formatContext->artist); + debug_error("failed to read. ret = %d, in = %d\n", readed, artist_sz); + mmfile_free(formatContext->artist); } } } } if (track_found) { - mmfile_seek (fp, track_offset, SEEK_SET); - readed = mmfile_read (fp, read_buf, _ITUNES_TRACK_NUM_SZ); + mmfile_seek(fp, track_offset, SEEK_SET); + readed = mmfile_read(fp, read_buf, _ITUNES_TRACK_NUM_SZ); if (readed != _ITUNES_TRACK_NUM_SZ) { - debug_error ("failed to read. ret = %d, in = %d\n", readed, _ITUNES_TRACK_NUM_SZ); + debug_error("failed to read. ret = %d, in = %d\n", readed, _ITUNES_TRACK_NUM_SZ); } else { - track_num = mmfile_io_be_uint32 (*(int*)read_buf); + track_num = mmfile_io_be_uint32(*(int *)read_buf); if (!formatContext->tagTrackNum) { - memset (read_buf, 0x00, _ITUNES_READ_BUF_SZ); - snprintf ((char*)read_buf, sizeof(read_buf), "%d", track_num); - formatContext->tagTrackNum = mmfile_strdup ((const char*)read_buf); + memset(read_buf, 0x00, _ITUNES_READ_BUF_SZ); + snprintf((char *)read_buf, sizeof(read_buf), "%d", track_num); + formatContext->tagTrackNum = mmfile_strdup((const char *)read_buf); } } } if (genre_found) { - mmfile_seek (fp, genre_offset, SEEK_SET); - readed = mmfile_read (fp, read_buf, _ITUNES_GENRE_NUM_SZ); + 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); + 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 ("genre index=[%d] \n", genre_index); - #endif + genre_index = mmfile_io_be_uint16(*(int *)read_buf); +#ifdef __MMFILE_TEST_MODE__ + debug_msg("genre index=[%d] \n", 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 ("genre string=[%s] \n", read_buf); - #endif - formatContext->genre = mmfile_strdup ((const char*)read_buf); + 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("genre string=[%s] \n", read_buf); +#endif + formatContext->genre = mmfile_strdup((const char *)read_buf); } } } } #endif -/* - 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 - - RGB (screen standard) - - Minimum size of 600 x 600 pixels - - Images must be at least 72 dpi - - 2)I found below info from google. - cover image flag : JPEG (13, 0xd), PNG (14, 0xe) - - 3)So, FIXME when cover image format is tif! -*/ + /* + 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 + - RGB (screen standard) + - Minimum size of 600 x 600 pixels + - Images must be at least 72 dpi + + 2)I found below info from google. + cover image flag : JPEG (13, 0xd), PNG (14, 0xe) + + 3)So, FIXME when cover image format is tif! + */ if (cover_found) { if (cover_sz > 0) { - mmfile_seek (fp, cover_offset, SEEK_SET); + mmfile_seek(fp, cover_offset, SEEK_SET); - formatContext->artwork = mmfile_malloc (cover_sz); + formatContext->artwork = mmfile_malloc(cover_sz); formatContext->artworkSize = cover_sz; - if(cover_type == _ITUNES_COVER_TYPE_JPEG) { + if (cover_type == _ITUNES_COVER_TYPE_JPEG) { formatContext->artworkMime = mmfile_strdup("image/jpeg"); - } else if(cover_type == _ITUNES_COVER_TYPE_PNG) { + } else if (cover_type == _ITUNES_COVER_TYPE_PNG) { formatContext->artworkMime = mmfile_strdup("image/png"); - /*} else if(cover_type == _ITUNES_COVER_TYPE_TIF) { - formatContext->artworkMime = mmfile_strdup("image/tif");*/ + /*} else if(cover_type == _ITUNES_COVER_TYPE_TIF) { + formatContext->artworkMime = mmfile_strdup("image/tif");*/ } else { debug_warning("Not proper cover image type, but set to jpeg. cover_type[%d]", cover_type); formatContext->artworkMime = mmfile_strdup("image/jpeg"); } if (formatContext->artwork) { - readed = mmfile_read (fp, formatContext->artwork, cover_sz); + readed = mmfile_read(fp, formatContext->artwork, cover_sz); if (readed != cover_sz) { - debug_error ("failed to read. ret = %d, in = %d\n", readed, cover_sz); - mmfile_free (formatContext->artwork); + debug_error("failed to read. ret = %d, in = %d\n", readed, cover_sz); + mmfile_free(formatContext->artwork); formatContext->artworkSize = 0; - mmfile_free (formatContext->artworkMime); + mmfile_free(formatContext->artworkMime); } } } } /*reset seek position*/ - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); return MMFILE_UTIL_SUCCESS; } else #endif - if(id3_meta) { - /** - * ID3v2 - */ - /* skip hdlr box name */ - mmfile_seek (fp, hdlrBoxHeader.size - MMFILE_MP4_BASIC_BOX_HEADER_LEN - MMFILE_3GP_HANDLER_BOX_LEN, SEEK_CUR); - - /* id3 tag box */ - readed = mmfile_read (fp, (unsigned char *)&id3v2BoxHeader, MMFILE_MP4_BASIC_BOX_HEADER_LEN); - if (readed != MMFILE_MP4_BASIC_BOX_HEADER_LEN) - { - debug_error ("read id3v2 box header\n"); - goto exception; - } - - id3v2BoxHeader.size = mmfile_io_be_uint32 (id3v2BoxHeader.size); - id3v2BoxHeader.type = mmfile_io_le_uint32 (id3v2BoxHeader.type); - - if (id3v2BoxHeader.type != FOURCC ('I', 'D', '3', '2')) - { - debug_warning ("meta type is not id3v2\n"); - goto exception; - } + if (id3_meta) { + /** + * ID3v2 + */ + /* skip hdlr box name */ + mmfile_seek(fp, hdlrBoxHeader.size - MMFILE_MP4_BASIC_BOX_HEADER_LEN - MMFILE_3GP_HANDLER_BOX_LEN, SEEK_CUR); - readed = mmfile_read (fp, (unsigned char *)&id3v2Box, MMFILE_3GP_ID3V2_BOX_LEN); - if (readed != MMFILE_3GP_ID3V2_BOX_LEN) - { - debug_error ("read id3v2 box\n"); - goto exception; - } + /* id3 tag box */ + readed = mmfile_read(fp, (unsigned char *)&id3v2BoxHeader, MMFILE_MP4_BASIC_BOX_HEADER_LEN); + if (readed != MMFILE_MP4_BASIC_BOX_HEADER_LEN) { + debug_error("read id3v2 box header\n"); + goto exception; + } - id3v2Len = id3v2BoxHeader.size - MMFILE_MP4_BASIC_BOX_HEADER_LEN - MMFILE_3GP_ID3V2_BOX_LEN; + id3v2BoxHeader.size = mmfile_io_be_uint32(id3v2BoxHeader.size); + id3v2BoxHeader.type = mmfile_io_le_uint32(id3v2BoxHeader.type); - id3v2Box.id3v2Data = mmfile_malloc (id3v2Len); - if (!id3v2Box.id3v2Data) - { - debug_error ("malloc id3tag data error\n"); - goto exception; - } + if (id3v2BoxHeader.type != FOURCC('I', 'D', '3', '2')) { + debug_warning("meta type is not id3v2\n"); + goto exception; + } - readed = mmfile_read (fp, (unsigned char *)id3v2Box.id3v2Data, id3v2Len); - if (readed != id3v2Len) - { - debug_error ("read id3tag data error\n"); - goto exception; - } + readed = mmfile_read(fp, (unsigned char *)&id3v2Box, MMFILE_3GP_ID3V2_BOX_LEN); + if (readed != MMFILE_3GP_ID3V2_BOX_LEN) { + debug_error("read id3v2 box\n"); + goto exception; + } - /* check id3v2 */ - if (!IS_ID3V2_TAG(id3v2Box.id3v2Data)) - { - debug_error ("it is not id3tag\n"); - goto exception; - } + id3v2Len = id3v2BoxHeader.size - MMFILE_MP4_BASIC_BOX_HEADER_LEN - MMFILE_3GP_ID3V2_BOX_LEN; - if (id3v2Box.id3v2Data[3] == 0xFF || id3v2Box.id3v2Data[4] == 0xFF || - id3v2Box.id3v2Data[6] >= 0x80 || id3v2Box.id3v2Data[7] >= 0x80 || - id3v2Box.id3v2Data[8] >= 0x80 || id3v2Box.id3v2Data[9] >= 0x80) - { - debug_error ("it is not valid id3tag\n"); - goto exception; - } + id3v2Box.id3v2Data = mmfile_malloc(id3v2Len); + if (!id3v2Box.id3v2Data) { + debug_error("malloc id3tag data error\n"); + goto exception; + } - tagVersion = id3v2Box.id3v2Data[3]; - if ( tagVersion > 4) - { - debug_error ("tag vesion is too high\n"); - goto exception; - } + readed = mmfile_read(fp, (unsigned char *)id3v2Box.id3v2Data, id3v2Len); + if (readed != id3v2Len) { + debug_error("read id3tag data error\n"); + goto exception; + } - encSize = mmfile_io_le_uint32(&id3v2Box.id3v2Data[6]); - tagInfo.tagV2Info.tagLen = MP3_TAGv2_HEADER_LEN; - tagInfo.tagV2Info.tagLen += (((encSize & 0x0000007F) >> 0) | ((encSize & 0x00007F00) >> 1) | ((encSize & 0x007F0000) >> 2) | ((encSize & 0x7F000000) >> 3)); - tagInfo.tagV2Info.tagVersion = tagVersion; - tagInfo.fileLen = id3v2Len; - - /* set id3v2 data to formatContext */ - switch (tagVersion) - { - case 2: - { - versionCheck = mm_file_id3tag_parse_v222(&tagInfo, id3v2Box.id3v2Data); - break; + /* check id3v2 */ + if (!IS_ID3V2_TAG(id3v2Box.id3v2Data)) { + debug_error("it is not id3tag\n"); + goto exception; } - case 3: - { - versionCheck = mm_file_id3tag_parse_v223(&tagInfo, id3v2Box.id3v2Data); - break; + + if (id3v2Box.id3v2Data[3] == 0xFF || id3v2Box.id3v2Data[4] == 0xFF || + id3v2Box.id3v2Data[6] >= 0x80 || id3v2Box.id3v2Data[7] >= 0x80 || + id3v2Box.id3v2Data[8] >= 0x80 || id3v2Box.id3v2Data[9] >= 0x80) { + debug_error("it is not valid id3tag\n"); + goto exception; } - case 4: - { - versionCheck = mm_file_id3tag_parse_v224(&tagInfo, id3v2Box.id3v2Data); - break; + + tagVersion = id3v2Box.id3v2Data[3]; + if (tagVersion > 4) { + debug_error("tag vesion is too high\n"); + goto exception; } - case 1: - default: - { - debug_error ("tag vesion is not support\n"); - versionCheck = false; - break; + + encSize = mmfile_io_le_uint32((unsigned int)&id3v2Box.id3v2Data[6]); + tagInfo.tagV2Info.tagLen = MP3_TAGv2_HEADER_LEN; + tagInfo.tagV2Info.tagLen += (((encSize & 0x0000007F) >> 0) | ((encSize & 0x00007F00) >> 1) | ((encSize & 0x007F0000) >> 2) | ((encSize & 0x7F000000) >> 3)); + tagInfo.tagV2Info.tagVersion = tagVersion; + tagInfo.fileLen = id3v2Len; + + /* set id3v2 data to formatContext */ + switch (tagVersion) { + case 2: { + versionCheck = mm_file_id3tag_parse_v222(&tagInfo, id3v2Box.id3v2Data); + break; + } + case 3: { + versionCheck = mm_file_id3tag_parse_v223(&tagInfo, id3v2Box.id3v2Data); + break; + } + case 4: { + versionCheck = mm_file_id3tag_parse_v224(&tagInfo, id3v2Box.id3v2Data); + break; + } + case 1: + default: { + debug_error("tag vesion is not support\n"); + versionCheck = false; + break; + } } - } - if (versionCheck == false) - { - debug_error ("tag parsing is fail\n"); - goto exception; - } + if (versionCheck == false) { + debug_error("tag parsing is fail\n"); + goto exception; + } - if (!formatContext->title) formatContext->title = mmfile_strdup((const char*)tagInfo.pTitle); - if (!formatContext->artist) formatContext->artist = mmfile_strdup((const char*)tagInfo.pArtist); - if (!formatContext->author) formatContext->author = mmfile_strdup((const char*)tagInfo.pAuthor); - if (!formatContext->copyright) formatContext->copyright = mmfile_strdup((const char*)tagInfo.pCopyright); - if (!formatContext->comment) formatContext->comment = mmfile_strdup((const char*)tagInfo.pComment); - if (!formatContext->album) formatContext->album = mmfile_strdup((const char*)tagInfo.pAlbum); - if (!formatContext->album_artist) formatContext->album_artist = mmfile_strdup((const char*)tagInfo.pAlbum_Artist); - if (!formatContext->year) formatContext->year = mmfile_strdup((const char*)tagInfo.pYear); - if (!formatContext->genre) formatContext->genre = mmfile_strdup((const char*)tagInfo.pGenre); - if (!formatContext->tagTrackNum) formatContext->tagTrackNum = mmfile_strdup((const char*)tagInfo.pTrackNum); - if (!formatContext->composer) formatContext->composer = mmfile_strdup((const char*)tagInfo.pComposer); - if (!formatContext->classification) formatContext->classification = mmfile_strdup((const char*)tagInfo.pContentGroup); - if (!formatContext->conductor) formatContext->conductor = mmfile_strdup((const char*)tagInfo.pConductor); - - formatContext->artwork = mmfile_malloc (tagInfo.imageInfo.imageLen); - if ((tagInfo.imageInfo.imageLen > 0) && formatContext->artwork) - { - formatContext->artworkSize = tagInfo.imageInfo.imageLen; - memcpy (formatContext->artwork, tagInfo.imageInfo.pImageBuf, tagInfo.imageInfo.imageLen); - } + if (!formatContext->title) formatContext->title = mmfile_strdup((const char *)tagInfo.pTitle); + if (!formatContext->artist) formatContext->artist = mmfile_strdup((const char *)tagInfo.pArtist); + if (!formatContext->author) formatContext->author = mmfile_strdup((const char *)tagInfo.pAuthor); + if (!formatContext->copyright) formatContext->copyright = mmfile_strdup((const char *)tagInfo.pCopyright); + if (!formatContext->comment) formatContext->comment = mmfile_strdup((const char *)tagInfo.pComment); + if (!formatContext->album) formatContext->album = mmfile_strdup((const char *)tagInfo.pAlbum); + if (!formatContext->album_artist) formatContext->album_artist = mmfile_strdup((const char *)tagInfo.pAlbum_Artist); + if (!formatContext->year) formatContext->year = mmfile_strdup((const char *)tagInfo.pYear); + if (!formatContext->genre) formatContext->genre = mmfile_strdup((const char *)tagInfo.pGenre); + if (!formatContext->tagTrackNum) formatContext->tagTrackNum = mmfile_strdup((const char *)tagInfo.pTrackNum); + if (!formatContext->composer) formatContext->composer = mmfile_strdup((const char *)tagInfo.pComposer); + if (!formatContext->classification) formatContext->classification = mmfile_strdup((const char *)tagInfo.pContentGroup); + if (!formatContext->conductor) formatContext->conductor = mmfile_strdup((const char *)tagInfo.pConductor); + + formatContext->artwork = mmfile_malloc(tagInfo.imageInfo.imageLen); + if ((tagInfo.imageInfo.imageLen > 0) && formatContext->artwork) { + formatContext->artworkSize = tagInfo.imageInfo.imageLen; + memcpy(formatContext->artwork, tagInfo.imageInfo.pImageBuf, tagInfo.imageInfo.imageLen); + } - mm_file_free_AvFileContentInfo (&tagInfo); - mmfile_free (id3v2Box.id3v2Data); + mm_file_free_AvFileContentInfo(&tagInfo); + mmfile_free(id3v2Box.id3v2Data); - /*reset seek position*/ - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); + /*reset seek position*/ + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); - return MMFILE_UTIL_SUCCESS; + return MMFILE_UTIL_SUCCESS; - } + } exception: - mmfile_seek (fp, basic_header->start_offset + basic_header->size, SEEK_SET); - mmfile_free (id3v2Box.id3v2Data); + mmfile_seek(fp, basic_header->start_offset + basic_header->size, SEEK_SET); + mmfile_free(id3v2Box.id3v2Data); + mm_file_free_AvFileContentInfo(&tagInfo); return MMFILE_UTIL_FAIL; } -EXPORT_API int MMFileUtilGetMetaDataFromMP4 (MMFileFormatContext * formatContext) +EXPORT_API int MMFileUtilGetMetaDataFromMP4(MMFileFormatContext *formatContext) { MMFileIOHandle *fp = NULL; int ret = 0; int readed; - ret = mmfile_open (&fp, formatContext->uriFileName, MMFILE_RDONLY); - if(ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); + ret = mmfile_open(&fp, formatContext->uriFileName, MMFILE_RDONLY); + if (ret == MMFILE_UTIL_FAIL) { + debug_error("error: mmfile_open\n"); goto exit; } - MMFILE_MP4_BASIC_BOX_HEADER basic_header = {0,}; - basic_header.start_offset = mmfile_tell (fp); + MMFILE_MP4_BASIC_BOX_HEADER basic_header = {0, }; + basic_header.start_offset = mmfile_tell(fp); - while ( (ret != MMFILE_UTIL_FAIL) && ((readed = mmfile_read (fp, (unsigned char *)&basic_header, MMFILE_MP4_BASIC_BOX_HEADER_LEN)) > 0 ) ) { - basic_header.size = mmfile_io_be_uint32 (basic_header.size); - basic_header.type = mmfile_io_le_uint32 (basic_header.type); + while ((ret != MMFILE_UTIL_FAIL) && ((readed = mmfile_read(fp, (unsigned char *)&basic_header, MMFILE_MP4_BASIC_BOX_HEADER_LEN)) > 0)) { + basic_header.size = mmfile_io_be_uint32(basic_header.size); + basic_header.type = mmfile_io_le_uint32(basic_header.type); if (basic_header.size == 0) { - debug_warning ("header is invalid.\n"); + debug_warning("header is invalid.\n"); basic_header.size = readed; basic_header.type = 0; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("START_OFFSET:[%lld] SIZE:[%d Byte] 4CC:[%c%c%c%c]\n", - basic_header.start_offset, basic_header.size, - ((char*)&basic_header.type)[0], ((char*)&basic_header.type)[1], - ((char*)&basic_header.type)[2], ((char*)&basic_header.type)[3]); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("START_OFFSET:[%lld] SIZE:[%d Byte] 4CC:[%c%c%c%c]\n", + basic_header.start_offset, basic_header.size, + ((char *)&basic_header.type)[0], ((char *)&basic_header.type)[1], + ((char *)&basic_header.type)[2], ((char *)&basic_header.type)[3]); +#endif switch (basic_header.type) { - case FOURCC ('m', 'o', 'o', 'v'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [moov] SIZE: [%d]Byte\n", basic_header.size); - #endif - break; - } - case FOURCC ('u', 'd', 't', 'a'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [udat] SIZE: [%d]Byte\n", basic_header.size); - #endif - break; - } - ///////////////////////////////////////////////////////////////// - // Extracting Tag Data // - ///////////////////////////////////////////////////////////////// - case FOURCC ('t', 'i', 't', 'l'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [titl] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetStringFromTextTagBox (formatContext, fp, &basic_header, eMMFILE_3GP_TAG_TITLE); - break; - } - case FOURCC ('d', 's', 'c', 'p'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [dscp] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetStringFromTextTagBox (formatContext, fp, &basic_header, eMMFILE_3GP_TAG_CAPTION); - break; - } - case FOURCC ('c', 'p', 'r', 't'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [cprt] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetStringFromTextTagBox (formatContext, fp, &basic_header, eMMFILE_3GP_TAG_COPYRIGHT); - break; - } - case FOURCC ('p', 'e', 'r', 'f'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [perf] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetStringFromTextTagBox (formatContext, fp, &basic_header, eMMFILE_3GP_TAG_PERFORMER ); - break; - } - case FOURCC ('a', 'u', 't', 'h'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [auth] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetStringFromTextTagBox (formatContext, fp, &basic_header, eMMFILE_3GP_TAG_AUTHOR); - break; - } - case FOURCC ('g', 'n', 'r', 'e'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [gnre] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetStringFromTextTagBox (formatContext, fp, &basic_header, eMMFILE_3GP_TAG_GENRE); - break; - } - case FOURCC ('a', 'l', 'b', 'm'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [albm] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetAlbumFromAlbumTagBox (formatContext, fp, &basic_header); - break; - } - case FOURCC ('y', 'r', 'r', 'c'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [yrrc] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetYearFromYearTagBox (formatContext, fp, &basic_header); - break; - } - case FOURCC ('r', 't', 'n', 'g'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [rtng] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetRatingFromRatingTagBox (formatContext, fp, &basic_header); /* not use */ - break; - } - case FOURCC ('c', 'l', 's', 'f'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [clsf] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetClassficationFromClsfTagBox (formatContext, fp, &basic_header); - break; - } - case FOURCC ('k', 'y', 'w', 'd'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [kywd] SIZE: [%d]Byte\n", basic_header.size); - #endif - ret = mmfile_seek (fp, basic_header.start_offset + basic_header.size, SEEK_SET); - break; - } - case FOURCC ('l', 'o', 'c', 'i'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [loci] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetLocationFromLociTagBox (formatContext, fp, &basic_header); - break; - } - /* Check smta in user data field to be compatible with android */ - case FOURCC ('s', 'm', 't', 'a'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [smta] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetSAUTInfoFromSMTATagBox (formatContext, fp, &basic_header); - break; - } - /* Check smta in user data field to be compatible with android */ - case FOURCC ('c', 'd', 'i', 's'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [smta] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetValueFromCDISTagBox (formatContext, fp, &basic_header); - break; - } - ///////////////////////////////////////////////////////////////// - // Extracting ID3 Tag Data // - ///////////////////////////////////////////////////////////////// - case FOURCC ('m', 'e', 't', 'a'): { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MPEG4: [meta] SIZE: [%d]Byte\n", basic_header.size); - #endif - GetTagFromMetaBox (formatContext, fp, &basic_header); - break; - } + case FOURCC('m', 'o', 'o', 'v'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [moov] SIZE: [%d]Byte\n", basic_header.size); +#endif + break; + } + case FOURCC('u', 'd', 't', 'a'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [udat] SIZE: [%d]Byte\n", basic_header.size); +#endif + break; + } + /*/////////////////////////////////////////////////////////////// */ + /* Extracting Tag Data // */ + /*/////////////////////////////////////////////////////////////// */ + case FOURCC('t', 'i', 't', 'l'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [titl] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetStringFromTextTagBox(formatContext, fp, &basic_header, eMMFILE_3GP_TAG_TITLE); + break; + } + case FOURCC('d', 's', 'c', 'p'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [dscp] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetStringFromTextTagBox(formatContext, fp, &basic_header, eMMFILE_3GP_TAG_CAPTION); + break; + } + case FOURCC('c', 'p', 'r', 't'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [cprt] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetStringFromTextTagBox(formatContext, fp, &basic_header, eMMFILE_3GP_TAG_COPYRIGHT); + break; + } + case FOURCC('p', 'e', 'r', 'f'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [perf] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetStringFromTextTagBox(formatContext, fp, &basic_header, eMMFILE_3GP_TAG_PERFORMER); + break; + } + case FOURCC('a', 'u', 't', 'h'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [auth] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetStringFromTextTagBox(formatContext, fp, &basic_header, eMMFILE_3GP_TAG_AUTHOR); + break; + } + case FOURCC('g', 'n', 'r', 'e'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [gnre] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetStringFromTextTagBox(formatContext, fp, &basic_header, eMMFILE_3GP_TAG_GENRE); + break; + } + case FOURCC('a', 'l', 'b', 'm'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [albm] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetAlbumFromAlbumTagBox(formatContext, fp, &basic_header); + break; + } + case FOURCC('y', 'r', 'r', 'c'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [yrrc] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetYearFromYearTagBox(formatContext, fp, &basic_header); + break; + } + case FOURCC('r', 't', 'n', 'g'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [rtng] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetRatingFromRatingTagBox(formatContext, fp, &basic_header); /* not use */ + break; + } + case FOURCC('c', 'l', 's', 'f'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [clsf] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetClassficationFromClsfTagBox(formatContext, fp, &basic_header); + break; + } + case FOURCC('k', 'y', 'w', 'd'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [kywd] SIZE: [%d]Byte\n", basic_header.size); +#endif + ret = mmfile_seek(fp, basic_header.start_offset + basic_header.size, SEEK_SET); + break; + } + case FOURCC('l', 'o', 'c', 'i'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [loci] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetLocationFromLociTagBox(formatContext, fp, &basic_header); + break; + } + /* Check smta in user data field to be compatible with android */ + case FOURCC('s', 'm', 't', 'a'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [smta] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetSAUTInfoFromSMTATagBox(formatContext, fp, &basic_header); + break; + } + /* Check smta in user data field to be compatible with android */ + case FOURCC('c', 'd', 'i', 's'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [smta] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetValueFromCDISTagBox(formatContext, fp, &basic_header); + break; + } + /*/////////////////////////////////////////////////////////////// */ + /* Extracting ID3 Tag Data // */ + /*/////////////////////////////////////////////////////////////// */ + case FOURCC('m', 'e', 't', 'a'): { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MPEG4: [meta] SIZE: [%d]Byte\n", basic_header.size); +#endif + GetTagFromMetaBox(formatContext, fp, &basic_header); + break; + } default: { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("4CC: Not Support.. so skip it\n"); - #endif - ret = mmfile_seek (fp, basic_header.start_offset + basic_header.size, SEEK_SET); - break; - } +#ifdef __MMFILE_TEST_MODE__ + debug_msg("4CC: Not Support.. so skip it\n"); +#endif + ret = mmfile_seek(fp, basic_header.start_offset + basic_header.size, SEEK_SET); + break; + } } if (ret == MMFILE_UTIL_FAIL) { @@ -1464,32 +1447,32 @@ EXPORT_API int MMFileUtilGetMetaDataFromMP4 (MMFileFormatContext * formatContext goto exit; } - basic_header.start_offset = mmfile_tell (fp); + basic_header.start_offset = mmfile_tell(fp); } exit: - mmfile_close (fp); + mmfile_close(fp); return ret; } -static char * get_string(const char *buf, int buf_size, int *bytes_written) +static char *get_string(const char *buf, int buf_size, int *bytes_written) { int i = 0, c = 0; char *q = NULL; char str[512] = {0, }; q = str; - for(i = 0; i < buf_size; i++) { + for (i = 0; i < buf_size; i++) { c = buf[i]; if (c == '\0') break; - if ((q - str) >= sizeof(str) - 1) - break; + if ((q - str) >= (int)sizeof(str) - 1) + break; *q++ = c; } *q = '\0'; - if(strlen(str) > 0) { + if (strlen(str) > 0) { *bytes_written = strlen(str); return strdup(str); } else { @@ -1503,11 +1486,10 @@ static bool is_numeric(const char *buf, int buf_size) int idx = 0; bool is_num = true; - for(idx = 0; idx < buf_size; idx++) { - if(isdigit((int)buf[idx])) { + for (idx = 0; idx < buf_size; idx++) { + if (isdigit((int)buf[idx])) { continue; - } - else { + } else { is_num = false; break; } @@ -1516,14 +1498,30 @@ static bool is_numeric(const char *buf, int buf_size) return is_num; } +char *rtrimN(char *pStr) +{ + int pos = 0; + pos = strlen(pStr) - 1; + for (; pos >= 0; pos--) { + if (pStr[pos] == 0x20) { + pStr[pos] = 0x00; + } else { + break; + } + } + + return strdup(pStr); +} + static bool make_characterset_array(char ***charset_array) { - char *locale = MMFileUtilGetLocale (NULL); + char *locale = MMFileUtilGetLocale(NULL); - *charset_array = calloc(AV_ID3V2_MAX, sizeof(char*)); + *charset_array = calloc(AV_ID3V2_MAX, sizeof(char *)); - if(*charset_array == NULL) { - if(locale != NULL) + if (*charset_array == NULL) { + debug_error("calloc failed "); + if (locale != NULL) free(locale); return false; } @@ -1547,34 +1545,39 @@ static bool release_characterset_array(char **charset_array) int i = 0; for (i = 0; i < AV_ID3V2_MAX; i++) { - if (charset_array[i] != NULL) + if (charset_array[i] != NULL) { free(charset_array[i]); + charset_array[i] = NULL; + } } - free(charset_array); + if (charset_array != NULL) { + free(charset_array); + charset_array = NULL; + } return true; } -static void init_content_info(AvFileContentInfo* pInfo) +static void init_content_info(AvFileContentInfo *pInfo) { pInfo->tagV2Info.bTitleMarked = false; - pInfo->tagV2Info.bArtistMarked= false; - pInfo->tagV2Info.bAlbumMarked= false; - pInfo->tagV2Info.bAlbum_ArtistMarked= false; - pInfo->tagV2Info.bYearMarked= false; - pInfo->tagV2Info.bDescriptionMarked= false; - pInfo->tagV2Info.bGenreMarked= false; - pInfo->tagV2Info.bTrackNumMarked= false; - pInfo->tagV2Info.bEncByMarked= false; - pInfo->tagV2Info.bURLMarked= false; - pInfo->tagV2Info.bCopyRightMarked= false; - pInfo->tagV2Info.bOriginArtistMarked= false; - pInfo->tagV2Info.bComposerMarked= false; - pInfo->tagV2Info.bImageMarked= false; - - pInfo->tagV2Info.bRecDateMarked= false; - pInfo->tagV2Info.bContentGroupMarked= false; + pInfo->tagV2Info.bArtistMarked = false; + pInfo->tagV2Info.bAlbumMarked = false; + pInfo->tagV2Info.bAlbum_ArtistMarked = false; + pInfo->tagV2Info.bYearMarked = false; + pInfo->tagV2Info.bDescriptionMarked = false; + pInfo->tagV2Info.bGenreMarked = false; + pInfo->tagV2Info.bTrackNumMarked = false; + pInfo->tagV2Info.bEncByMarked = false; + pInfo->tagV2Info.bURLMarked = false; + pInfo->tagV2Info.bCopyRightMarked = false; + pInfo->tagV2Info.bOriginArtistMarked = false; + pInfo->tagV2Info.bComposerMarked = false; + pInfo->tagV2Info.bImageMarked = false; + + pInfo->tagV2Info.bRecDateMarked = false; + pInfo->tagV2Info.bContentGroupMarked = false; pInfo->tagV2Info.bUnsyncLyricsMarked = false; pInfo->tagV2Info.bSyncLyricsMarked = false; @@ -1587,109 +1590,104 @@ static void init_content_info(AvFileContentInfo* pInfo) } EXPORT_API -bool mm_file_id3tag_parse_v110(AvFileContentInfo* pInfo, unsigned char *buffer) +bool mm_file_id3tag_parse_v110(AvFileContentInfo *pInfo, unsigned char *buffer) { - const char *locale = MMFileUtilGetLocale (NULL); + const char *locale = MMFileUtilGetLocale(NULL); + char *pFullStr = NULL; #ifdef __MMFILE_TEST_MODE__ - debug_msg ("ID3tag v110--------------------------------------------------------------\n"); + debug_msg("ID3tag v110--------------------------------------------------------------\n"); #endif - if(pInfo->tagV2Info.bTitleMarked == false) { - pInfo->pTitle = mmfile_string_convert ((const char*)&buffer[3], MP3_ID3_TITLE_LENGTH, "UTF-8", locale, NULL, (unsigned int*)&pInfo->titleLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pTitle returned =(%s), pInfo->titleLen(%d)\n", pInfo->pTitle, pInfo->titleLen); - #endif - - if(pInfo->pTitle == NULL) { /*Use same logic with ffmpeg*/ - pInfo->pTitle = get_string((const char*)&buffer[3], MP3_ID3_TITLE_LENGTH, (int*)&pInfo->titleLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pTitle returned =(%s), pInfo->titleLen(%d)\n", pInfo->pTitle, pInfo->titleLen); - #endif + if (pInfo->tagV2Info.bTitleMarked == false) { + pFullStr = mmfile_string_convert((const char *)&buffer[3], MP3_ID3_TITLE_LENGTH, "UTF-8", locale, NULL, (unsigned int *)&pInfo->titleLen); + if (pFullStr != NULL) { + pInfo->pTitle = rtrimN(pFullStr); + free(pFullStr); } + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pTitle returned =(%s), pInfo->titleLen(%d)\n", pInfo->pTitle, pInfo->titleLen); +#endif } - if(pInfo->tagV2Info.bArtistMarked == false) { - pInfo->pArtist = mmfile_string_convert ((const char*)&buffer[33], MP3_ID3_ARTIST_LENGTH, "UTF-8", locale, NULL, (unsigned int*)&pInfo->artistLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pArtist returned =(%s), pInfo->artistLen(%d)\n", pInfo->pArtist, pInfo->artistLen); - #endif - - if(pInfo->pArtist == NULL) { /*Use same logic with ffmpeg*/ - pInfo->pArtist = get_string((const char*)&buffer[33], MP3_ID3_ARTIST_LENGTH, (int*)&pInfo->artistLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pArtist returned =(%s), pInfo->artistLen(%d)\n", pInfo->pArtist, pInfo->artistLen); - #endif + if (pInfo->tagV2Info.bArtistMarked == false) { + pFullStr = mmfile_string_convert((const char *)&buffer[33], MP3_ID3_ARTIST_LENGTH, "UTF-8", locale, NULL, (unsigned int *)&pInfo->artistLen); + if (pFullStr != NULL) { + pInfo->pArtist = rtrimN(pFullStr); + free(pFullStr); } + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pArtist returned =(%s), pInfo->artistLen(%d)\n", pInfo->pArtist, pInfo->artistLen); +#endif } - if(pInfo->tagV2Info.bAlbumMarked == false) { - pInfo->pAlbum = mmfile_string_convert ((const char*)&buffer[63], MP3_ID3_ALBUM_LENGTH, "UTF-8", locale, NULL, (unsigned int*)&pInfo->albumLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pAlbum returned =(%s), pInfo->albumLen(%d)\n", pInfo->pAlbum, pInfo->albumLen); - #endif - - if(pInfo->pAlbum == NULL) { /*Use same logic with ffmpeg*/ - pInfo->pAlbum = get_string((const char*)&buffer[63], MP3_ID3_ALBUM_LENGTH, (int*)&pInfo->albumLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pAlbum returned =(%s), pInfo->albumLen(%d)\n", pInfo->pAlbum, pInfo->albumLen); - #endif + if (pInfo->tagV2Info.bAlbumMarked == false) { + pFullStr = mmfile_string_convert((const char *)&buffer[63], MP3_ID3_ALBUM_LENGTH, "UTF-8", locale, NULL, (unsigned int *)&pInfo->albumLen); + if (pFullStr != NULL) { + pInfo->pAlbum = rtrimN(pFullStr); + free(pFullStr); } + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pAlbum returned =(%s), pInfo->albumLen(%d)\n", pInfo->pAlbum, pInfo->albumLen); +#endif } - if(pInfo->tagV2Info.bYearMarked == false) { + if (pInfo->tagV2Info.bYearMarked == false) { - pInfo->pYear = mmfile_string_convert ((const char*)&buffer[93], MP3_ID3_YEAR_LENGTH, "UTF-8", locale, NULL, (unsigned int*)&pInfo->yearLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pYear returned =(%s), pInfo->yearLen(%d)\n", pInfo->pYear, pInfo->yearLen); - #endif + pInfo->pYear = mmfile_string_convert((const char *)&buffer[93], MP3_ID3_YEAR_LENGTH, "UTF-8", locale, NULL, (unsigned int *)&pInfo->yearLen); +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pYear returned =(%s), pInfo->yearLen(%d)\n", pInfo->pYear, pInfo->yearLen); +#endif - if(pInfo->pYear == NULL) { /*Use same logic with ffmpeg*/ - pInfo->pYear = get_string((const char*)&buffer[93], MP3_ID3_YEAR_LENGTH, (int*)&pInfo->yearLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pYear returned =(%s), pInfo->yearLen(%d)\n", pInfo->pYear, pInfo->yearLen); - #endif + if (pInfo->pYear == NULL) { /*Use same logic with ffmpeg*/ + pInfo->pYear = get_string((const char *)&buffer[93], MP3_ID3_YEAR_LENGTH, (int *)&pInfo->yearLen); +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pYear returned =(%s), pInfo->yearLen(%d)\n", pInfo->pYear, pInfo->yearLen); +#endif } } - if(pInfo->tagV2Info.bDescriptionMarked == false) { - pInfo->pComment = mmfile_string_convert ((const char*)&buffer[97], MP3_ID3_DESCRIPTION_LENGTH, "UTF-8", locale, NULL, (unsigned int*)&pInfo->commentLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pComment returned =(%s), pInfo->commentLen(%d)\n", pInfo->pComment, pInfo->commentLen); - #endif - - if(pInfo->pComment == NULL) { /*Use same logic with ffmpeg*/ - pInfo->pComment = get_string((const char*)&buffer[97], MP3_ID3_DESCRIPTION_LENGTH, (int*)&pInfo->commentLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pComment returned =(%s), pInfo->commentLen(%d)\n", pInfo->pComment, pInfo->commentLen); - #endif + if (pInfo->tagV2Info.bDescriptionMarked == false) { + pInfo->pComment = mmfile_string_convert((const char *)&buffer[97], MP3_ID3_DESCRIPTION_LENGTH, "UTF-8", locale, NULL, (unsigned int *)&pInfo->commentLen); +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pComment returned =(%s), pInfo->commentLen(%d)\n", pInfo->pComment, pInfo->commentLen); +#endif + + if (pInfo->pComment == NULL) { /*Use same logic with ffmpeg*/ + pInfo->pComment = get_string((const char *)&buffer[97], MP3_ID3_DESCRIPTION_LENGTH, (int *)&pInfo->commentLen); +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pComment returned =(%s), pInfo->commentLen(%d)\n", pInfo->pComment, pInfo->commentLen); +#endif } } - if(pInfo->tagV2Info.bTrackNumMarked== false) { - pInfo->pTrackNum = mmfile_malloc (5); - if(pInfo->pTrackNum != NULL) { + if (pInfo->tagV2Info.bTrackNumMarked == false) { + pInfo->pTrackNum = mmfile_malloc(5); + if (pInfo->pTrackNum != NULL) { pInfo->pTrackNum[4] = 0; snprintf(pInfo->pTrackNum, 4, "%04d", (int)buffer[126]); pInfo->tracknumLen = strlen(pInfo->pTrackNum); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pTrackNum returned =(%s), pInfo->tracknumLen(%d)\n", pInfo->pTrackNum, pInfo->tracknumLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pTrackNum returned =(%s), pInfo->tracknumLen(%d)\n", pInfo->pTrackNum, pInfo->tracknumLen); +#endif } } - if(pInfo->tagV2Info.bGenreMarked == false) { + if (pInfo->tagV2Info.bGenreMarked == false) { pInfo->genre = buffer[127]; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->genre returned genre number (%d)\n", pInfo->genre); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->genre returned genre number (%d)\n", pInfo->genre); +#endif } return true; } EXPORT_API -bool mm_file_id3tag_parse_v222(AvFileContentInfo* pInfo, unsigned char *buffer) +bool mm_file_id3tag_parse_v222(AvFileContentInfo *pInfo, unsigned char *buffer) { unsigned long taglen = 0; unsigned long needToloopv2taglen; @@ -1697,11 +1695,12 @@ bool mm_file_id3tag_parse_v222(AvFileContentInfo* pInfo, unsigned char *buffer) unsigned long v2numOfFrames = 0; unsigned long curPos = 0; char CompTmp[4]; - char *pExtContent = NULL; + unsigned char *pExtContent = NULL; unsigned long purelyFramelen = 0; - int inx=0, encodingOffSet=0, realCpyFrameNum=0, - checkImgMimeTypeMax=0, checkImgExtMax=0, - imgstartOffset=0, tmp = 0; + unsigned int encodingOffSet = 0; + int inx = 0, realCpyFrameNum = 0, + /*checkImgMimeTypeMax = 0, */checkImgExtMax = 0, + imgstartOffset = 0, tmp = 0; int textEncodingType = 0; @@ -1714,191 +1713,168 @@ bool mm_file_id3tag_parse_v222(AvFileContentInfo* pInfo, unsigned char *buffer) taglen = pInfo->tagV2Info.tagLen; needToloopv2taglen = taglen - MP3_TAGv2_HEADER_LEN; curPos = MP3_TAGv2_HEADER_LEN; - + #ifdef __MMFILE_TEST_MODE__ - debug_msg ("ID3tag v222--------------------------------------------------------------\n"); + debug_msg("ID3tag v222--------------------------------------------------------------\n"); #endif - if(needToloopv2taglen -MP3_TAGv2_22_TXT_HEADER_LEN > MP3_TAGv2_22_TXT_HEADER_LEN) { + if (needToloopv2taglen - MP3_TAGv2_22_TXT_HEADER_LEN > MP3_TAGv2_22_TXT_HEADER_LEN) { v2numOfFrames = 1; - while(needToloopv2taglen > MP3_TAGv2_22_TXT_HEADER_LEN) - { - if((buffer[curPos] < '0' || buffer[curPos] > 'Z') || (buffer[curPos+1] < '0' || buffer[curPos+1] > 'Z') - || (buffer[curPos+2] < '0' || buffer[curPos+2] > 'Z')) + while (needToloopv2taglen > MP3_TAGv2_22_TXT_HEADER_LEN) { + if ((buffer[curPos] < '0' || buffer[curPos] > 'Z') || (buffer[curPos + 1] < '0' || buffer[curPos + 1] > 'Z') + || (buffer[curPos + 2] < '0' || buffer[curPos + 2] > 'Z')) break; memcpy(CompTmp, &buffer[curPos], 3); CompTmp[3] = 0; oneFrameLen = MP3_TAGv2_22_TXT_HEADER_LEN; - oneFrameLen += (unsigned long)buffer[3+curPos] << 16 | (unsigned long)buffer[4+curPos] << 8 - | (unsigned long)buffer[5+curPos]; - if(oneFrameLen > taglen-curPos) + oneFrameLen += (unsigned long)buffer[3 + curPos] << 16 | (unsigned long)buffer[4 + curPos] << 8 + | (unsigned long)buffer[5 + curPos]; + if (oneFrameLen > taglen - curPos) break; purelyFramelen = oneFrameLen - MP3_TAGv2_22_TXT_HEADER_LEN; - curPos +=MP3_TAGv2_22_TXT_HEADER_LEN; + curPos += MP3_TAGv2_22_TXT_HEADER_LEN; - if(oneFrameLen > MP3_TAGv2_22_TXT_HEADER_LEN && purelyFramelen <= taglen-curPos) - { + if (oneFrameLen > MP3_TAGv2_22_TXT_HEADER_LEN && purelyFramelen <= taglen - curPos) { curPos += purelyFramelen; - if(buffer[curPos-purelyFramelen] == 0x00) - { + if (buffer[curPos - purelyFramelen] == 0x00) { encodingOffSet = 1; textEncodingType = AV_ID3V2_ISO_8859; - } - else if(buffer[curPos-purelyFramelen] == 0x01) - { + } else if (buffer[curPos - purelyFramelen] == 0x01) { encodingOffSet = 1; textEncodingType = AV_ID3V2_UTF16; } if (textEncodingType > AV_ID3V2_MAX) { - debug_msg ( "WRONG ENCOIDNG TYPE [%d], FRAME[%s]\n", textEncodingType, (char*)CompTmp); + debug_msg("WRONG ENCOIDNG TYPE [%d], FRAME[%s]\n", textEncodingType, (char *)CompTmp); continue; } - //in order to deliver valid string to MP - while((buffer[curPos-purelyFramelen+encodingOffSet] < 0x20) && (encodingOffSet < purelyFramelen)) + /*in order to deliver valid string to MP */ + while ((buffer[curPos - purelyFramelen + encodingOffSet] < 0x20) && (encodingOffSet < purelyFramelen)) encodingOffSet++; - if(encodingOffSet < purelyFramelen) - { + if (encodingOffSet < purelyFramelen) { realCpyFrameNum = purelyFramelen - encodingOffSet; - pExtContent = mmfile_malloc (realCpyFrameNum+3); - memset(pExtContent, '\0', realCpyFrameNum+3); + pExtContent = mmfile_malloc(realCpyFrameNum + 3); + + if (pExtContent == NULL) { + debug_error("out of memory for pExtContent\n"); + continue; + } + + memset(pExtContent, '\0', realCpyFrameNum + 3); - memcpy(pExtContent, &buffer[curPos-purelyFramelen+encodingOffSet], purelyFramelen-encodingOffSet); + memcpy(pExtContent, &buffer[curPos - purelyFramelen + encodingOffSet], purelyFramelen - encodingOffSet); - if(realCpyFrameNum > 0) - { - if(strncmp((char *)CompTmp, "TT2", 3) == 0 && pInfo->tagV2Info.bTitleMarked == false) - { - pInfo->pTitle = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->titleLen); + if (realCpyFrameNum > 0) { + if (strncmp((char *)CompTmp, "TT2", 3) == 0 && pInfo->tagV2Info.bTitleMarked == false) { + pInfo->pTitle = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->titleLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pTitle returned = (%s), pInfo->titleLen(%d)\n", pInfo->pTitle, pInfo->titleLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pTitle returned = (%s), pInfo->titleLen(%d)\n", pInfo->pTitle, pInfo->titleLen); +#endif pInfo->tagV2Info.bTitleMarked = true; - } - else if(strncmp((char *)CompTmp, "TP1", 3) == 0 && pInfo->tagV2Info.bArtistMarked == false) - { - pInfo->pArtist = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->artistLen); + } else if (strncmp((char *)CompTmp, "TP1", 3) == 0 && pInfo->tagV2Info.bArtistMarked == false) { + pInfo->pArtist = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->artistLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pArtist returned = (%s), pInfo->artistLen(%d)\n", pInfo->pArtist, pInfo->artistLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pArtist returned = (%s), pInfo->artistLen(%d)\n", pInfo->pArtist, pInfo->artistLen); +#endif pInfo->tagV2Info.bArtistMarked = true; - } - else if(strncmp((char *)CompTmp, "TP2", 3) == 0 && pInfo->tagV2Info.bAlbum_ArtistMarked == false) - { - pInfo->pAlbum_Artist = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->album_artistLen); + } else if (strncmp((char *)CompTmp, "TP2", 3) == 0 && pInfo->tagV2Info.bAlbum_ArtistMarked == false) { + pInfo->pAlbum_Artist = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->album_artistLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pAlbum_Artist returned = (%s), pInfo->album_artistLen(%d)\n", pInfo->pAlbum_Artist, pInfo->album_artistLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pAlbum_Artist returned = (%s), pInfo->album_artistLen(%d)\n", pInfo->pAlbum_Artist, pInfo->album_artistLen); +#endif pInfo->tagV2Info.bAlbum_ArtistMarked = true; - } - else if(strncmp((char *)CompTmp, "TP3", 3) == 0 && pInfo->tagV2Info.bConductorMarked == false) - { - pInfo->pConductor = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->conductorLen); + } else if (strncmp((char *)CompTmp, "TP3", 3) == 0 && pInfo->tagV2Info.bConductorMarked == false) { + pInfo->pConductor = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->conductorLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pConductor returned = (%s), pInfo->conductorLen(%d)\n", pInfo->pConductor, pInfo->conductorLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pConductor returned = (%s), pInfo->conductorLen(%d)\n", pInfo->pConductor, pInfo->conductorLen); +#endif pInfo->tagV2Info.bConductorMarked = true; - } - else if(strncmp((char *)CompTmp, "TAL", 3) == 0 && pInfo->tagV2Info.bAlbumMarked == false) - { - pInfo->pAlbum = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->albumLen); + } else if (strncmp((char *)CompTmp, "TAL", 3) == 0 && pInfo->tagV2Info.bAlbumMarked == false) { + pInfo->pAlbum = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->albumLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pAlbum returned = (%s), pInfo->albumLen(%d)\n", pInfo->pAlbum, pInfo->albumLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pAlbum returned = (%s), pInfo->albumLen(%d)\n", pInfo->pAlbum, pInfo->albumLen); +#endif pInfo->tagV2Info.bAlbumMarked = true; - } - else if(strncmp((char *)CompTmp, "TYE", 3) == 0 && pInfo->tagV2Info.bYearMarked == false) - { - pInfo->pYear = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->yearLen); + } else if (strncmp((char *)CompTmp, "TYE", 3) == 0 && pInfo->tagV2Info.bYearMarked == false) { + pInfo->pYear = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->yearLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pYear returned = (%s), pInfo->yearLen(%d)\n", pInfo->pYear, pInfo->yearLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pYear returned = (%s), pInfo->yearLen(%d)\n", pInfo->pYear, pInfo->yearLen); +#endif pInfo->tagV2Info.bYearMarked = true; - } - else if(strncmp((char *)CompTmp, "COM", 3) == 0 && pInfo->tagV2Info.bDescriptionMarked == false) - { - //skip language data! - if(realCpyFrameNum > 4) - { + } else if (strncmp((char *)CompTmp, "COM", 3) == 0 && pInfo->tagV2Info.bDescriptionMarked == false) { + /*skip language data! */ + if (realCpyFrameNum > 4) { realCpyFrameNum -= 4; tmp = 4; - //pExtContent[tmp+1] value should't have encoding value - if(pExtContent[tmp] > 0x20 && (pExtContent[tmp - 1] == 0x00 || pExtContent[tmp - 1] == 0x01)) - { - if(pExtContent[tmp - 1] == 0x00) + /*pExtContent[tmp+1] value should't have encoding value */ + if (pExtContent[tmp] > 0x20 && (pExtContent[tmp - 1] == 0x00 || pExtContent[tmp - 1] == 0x01)) { + if (pExtContent[tmp - 1] == 0x00) textEncodingType = AV_ID3V2_ISO_8859; else textEncodingType = AV_ID3V2_UTF16; - pInfo->pComment = mmfile_string_convert ((char*)&pExtContent[tmp], realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->commentLen); + pInfo->pComment = mmfile_string_convert((char *)&pExtContent[tmp], realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->commentLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pComment returned = (%s), pInfo->commentLen(%d)\n", pInfo->pComment, pInfo->commentLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pComment returned = (%s), pInfo->commentLen(%d)\n", pInfo->pComment, pInfo->commentLen); +#endif pInfo->tagV2Info.bDescriptionMarked = true; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("mmf_file_id3tag_parse_v222: failed to get Comment Info tmp(%d), purelyFramelen - encodingOffSet(%d)\n", tmp, purelyFramelen - encodingOffSet); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "mmf_file_id3tag_parse_v222: failed to get Comment Info tmp(%d), purelyFramelen - encodingOffSet(%d)\n", tmp, purelyFramelen - encodingOffSet ); - #endif - } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "mmf_file_id3tag_parse_v222: Description info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum ); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("mmf_file_id3tag_parse_v222: Description info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); +#endif } tmp = 0; - } - else if(strncmp((char *)CompTmp, "TCO", 3) == 0 && pInfo->tagV2Info.bGenreMarked == false) - { - pInfo->pGenre = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->genreLen); + } else if (strncmp((char *)CompTmp, "TCO", 3) == 0 && pInfo->tagV2Info.bGenreMarked == false) { + pInfo->pGenre = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->genreLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pGenre returned = (%s), pInfo->genreLen(%d)\n", pInfo->pGenre, pInfo->genreLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pGenre returned = (%s), pInfo->genreLen(%d)\n", pInfo->pGenre, pInfo->genreLen); +#endif - if((pInfo->pGenre != NULL) && (pInfo->genreLen > 0)) { + if ((pInfo->pGenre != NULL) && (pInfo->genreLen > 0)) { bool ret = FALSE; int int_genre = -1; ret = is_numeric(pInfo->pGenre, pInfo->genreLen); - if(ret == TRUE) { - sscanf( pInfo->pGenre, "%d", &int_genre); - #ifdef __MMFILE_TEST_MODE__ + if (ret == TRUE) { + sscanf(pInfo->pGenre, "%d", &int_genre); +#ifdef __MMFILE_TEST_MODE__ debug_msg("genre information is inteager [%d]\n", int_genre); - #endif +#endif - //Change int to string - if((0 <= int_genre) && (int_genre < GENRE_COUNT-1)) { + /*Change int to string */ + if ((0 <= int_genre) && (int_genre < GENRE_COUNT - 1)) { /*save genreinfo like "(123)". mm_file_id3tag_restore_content_info convert it to string*/ - char tmp_genre[6] = {0,}; /*ex. "(123)+NULL"*/ + char tmp_genre[6] = {0, }; /*ex. "(123)+NULL"*/ int tmp_genre_len = 0; - memset (tmp_genre, 0, 6); + memset(tmp_genre, 0, 6); snprintf(tmp_genre, sizeof(tmp_genre), "(%d)", int_genre); tmp_genre_len = strlen(tmp_genre); - if(tmp_genre_len > 0) { - if(pInfo->pGenre) _FREE_EX(pInfo->pGenre); - pInfo->pGenre = mmfile_malloc (sizeof(char) * (tmp_genre_len + 1) ); - if (pInfo->pGenre) - { + if (tmp_genre_len > 0) { + if (pInfo->pGenre) _FREE_EX(pInfo->pGenre); + pInfo->pGenre = mmfile_malloc(sizeof(char) * (tmp_genre_len + 1)); + if (pInfo->pGenre) { strncpy(pInfo->pGenre, tmp_genre, tmp_genre_len); pInfo->pGenre[tmp_genre_len] = 0; } @@ -1908,235 +1884,200 @@ bool mm_file_id3tag_parse_v222(AvFileContentInfo* pInfo, unsigned char *buffer) } pInfo->tagV2Info.bGenreMarked = true; - } - else if(strncmp((char *)CompTmp, "TRK", 3) == 0 && pInfo->tagV2Info.bTrackNumMarked == false) - { - pInfo->pTrackNum = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->tracknumLen); + } else if (strncmp((char *)CompTmp, "TRK", 3) == 0 && pInfo->tagV2Info.bTrackNumMarked == false) { + pInfo->pTrackNum = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->tracknumLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pTrackNum returned = (%s), pInfo->tracknumLen(%d)\n", pInfo->pTrackNum, pInfo->tracknumLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pTrackNum returned = (%s), pInfo->tracknumLen(%d)\n", pInfo->pTrackNum, pInfo->tracknumLen); +#endif pInfo->tagV2Info.bTrackNumMarked = true; - } - else if(strncmp((char *)CompTmp, "TEN", 3) == 0 && pInfo->tagV2Info.bEncByMarked == false) - { - pInfo->pEncBy = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->encbyLen); + } else if (strncmp((char *)CompTmp, "TEN", 3) == 0 && pInfo->tagV2Info.bEncByMarked == false) { + pInfo->pEncBy = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->encbyLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pEncBy returned = (%s), pInfo->encbyLen(%d)\n", pInfo->pEncBy, pInfo->encbyLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pEncBy returned = (%s), pInfo->encbyLen(%d)\n", pInfo->pEncBy, pInfo->encbyLen); +#endif pInfo->tagV2Info.bEncByMarked = true; - } - else if(strncmp((char *)CompTmp, "WXX", 3) == 0 && pInfo->tagV2Info.bURLMarked == false) - { - if(realCpyFrameNum > 4) - { - //skip language data! + } else if (strncmp((char *)CompTmp, "WXX", 3) == 0 && pInfo->tagV2Info.bURLMarked == false) { + if (realCpyFrameNum > 4) { + /*skip language data! */ realCpyFrameNum -= 4; tmp = 4; - //pExtContent[tmp+1] value should't have null value - if(pExtContent[tmp] > 0x20 && (pExtContent[tmp - 1] == 0x00 || pExtContent[tmp - 1] == 0x01)) - { - if(pExtContent[tmp - 1] == 0x00) + /*pExtContent[tmp+1] value should't have null value */ + if (pExtContent[tmp] > 0x20 && (pExtContent[tmp - 1] == 0x00 || pExtContent[tmp - 1] == 0x01)) { + if (pExtContent[tmp - 1] == 0x00) textEncodingType = AV_ID3V2_ISO_8859; else textEncodingType = AV_ID3V2_UTF16; - pInfo->pURL = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->urlLen); + pInfo->pURL = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->urlLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pURL returned = (%s), pInfo->urlLen(%d)\n", pInfo->pURL, pInfo->urlLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pURL returned = (%s), pInfo->urlLen(%d)\n", pInfo->pURL, pInfo->urlLen); +#endif pInfo->tagV2Info.bURLMarked = true; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("mmf_file_id3tag_parse_v222: failed to get URL Info tmp(%d), purelyFramelen - encodingOffSet(%d)\n", tmp, purelyFramelen - encodingOffSet); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "mmf_file_id3tag_parse_v222: failed to get URL Info tmp(%d), purelyFramelen - encodingOffSet(%d)\n", tmp, purelyFramelen - encodingOffSet ); - #endif - } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "mmf_file_id3tag_parse_v222: URL info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum ); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("mmf_file_id3tag_parse_v222: URL info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); +#endif } tmp = 0; - } - else if(strncmp((char *)CompTmp, "TCR", 3) == 0 && pInfo->tagV2Info.bCopyRightMarked == false) - { - pInfo->pCopyright = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->copyrightLen); + } else if (strncmp((char *)CompTmp, "TCR", 3) == 0 && pInfo->tagV2Info.bCopyRightMarked == false) { + pInfo->pCopyright = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->copyrightLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pCopyright returned = (%s), pInfo->copyrightLen(%d)\n", pInfo->pCopyright, pInfo->copyrightLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pCopyright returned = (%s), pInfo->copyrightLen(%d)\n", pInfo->pCopyright, pInfo->copyrightLen); +#endif pInfo->tagV2Info.bCopyRightMarked = true; - } - else if(strncmp((char *)CompTmp, "TOA", 3) == 0 && pInfo->tagV2Info.bOriginArtistMarked == false) - { - pInfo->pOriginArtist = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->originartistLen); + } else if (strncmp((char *)CompTmp, "TOA", 3) == 0 && pInfo->tagV2Info.bOriginArtistMarked == false) { + pInfo->pOriginArtist = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->originartistLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pOriginArtist returned = (%s), pInfo->originartistLen(%d)\n", pInfo->pOriginArtist, pInfo->originartistLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pOriginArtist returned = (%s), pInfo->originartistLen(%d)\n", pInfo->pOriginArtist, pInfo->originartistLen); +#endif pInfo->tagV2Info.bOriginArtistMarked = true; - } - else if(strncmp((char *)CompTmp, "TCM", 3) == 0 && pInfo->tagV2Info.bComposerMarked == false) - { - pInfo->pComposer = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->composerLen); + } else if (strncmp((char *)CompTmp, "TCM", 3) == 0 && pInfo->tagV2Info.bComposerMarked == false) { + pInfo->pComposer = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->composerLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pComposer returned = (%s), pInfo->originartistLen(%d)\n", pInfo->pComposer, pInfo->composerLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pComposer returned = (%s), pInfo->originartistLen(%d)\n", pInfo->pComposer, pInfo->composerLen); +#endif pInfo->tagV2Info.bComposerMarked = true; - } - else if(strncmp((char *)CompTmp, "TRD", 3) == 0 && pInfo->tagV2Info.bRecDateMarked== false) - { - pInfo->pRecDate = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->recdateLen); + } else if (strncmp((char *)CompTmp, "TRD", 3) == 0 && pInfo->tagV2Info.bRecDateMarked == false) { + pInfo->pRecDate = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->recdateLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pRecDate returned = (%s), pInfo->recdateLen(%d)\n", pInfo->pRecDate, pInfo->recdateLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pRecDate returned = (%s), pInfo->recdateLen(%d)\n", pInfo->pRecDate, pInfo->recdateLen); +#endif pInfo->tagV2Info.bRecDateMarked = true; - } - else if(strncmp((char *)CompTmp, "PIC", 3) == 0 && pInfo->tagV2Info.bImageMarked == false && realCpyFrameNum <= 2000000) - { - if(pExtContent[0] != 0) - { - for(inx = 0; inx < MP3_ID3_IMAGE_EXT_MAX_LENGTH; inx++) - pInfo->imageInfo.imageExt[inx] = '\0';//ini mimetype variable - - while((checkImgExtMax < MP3_ID3_IMAGE_EXT_MAX_LENGTH-1) && pExtContent[checkImgExtMax] != '\0') - { + } else if (strncmp((char *)CompTmp, "PIC", 3) == 0 && pInfo->tagV2Info.bImageMarked == false && realCpyFrameNum <= 2000000) { + if (pExtContent[0] != 0) { + for (inx = 0; inx < MP3_ID3_IMAGE_EXT_MAX_LENGTH; inx++) + pInfo->imageInfo.imageExt[inx] = '\0';/*ini mimetype variable */ + + while ((checkImgExtMax < MP3_ID3_IMAGE_EXT_MAX_LENGTH - 1) && pExtContent[checkImgExtMax] != '\0') { pInfo->imageInfo.imageExt[checkImgExtMax] = pExtContent[checkImgExtMax]; checkImgExtMax++; } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "mmf_file_id3tag_parse_v222: PIC image's not included to image Extention\n"); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("mmf_file_id3tag_parse_v222: PIC image's not included to image Extention\n"); +#endif } imgstartOffset += checkImgExtMax; - if(pExtContent[imgstartOffset] < AV_ID3V2_PICTURE_TYPE_MAX) - { + if (pExtContent[imgstartOffset] < AV_ID3V2_PICTURE_TYPE_MAX) { pInfo->imageInfo.pictureType = pExtContent[imgstartOffset]; } - imgstartOffset++;//PictureType(1byte) + imgstartOffset++;/*PictureType(1byte) */ - if(pExtContent[imgstartOffset] != 0x0) - { + if (pExtContent[imgstartOffset] != 0x0) { int cur_pos = 0; int dis_len = 0; int new_dis_len = 0; - char jpg_sign[3] = {0xff, 0xd8, 0xff}; - char png_sign[8] = {0x80, 0x50, 0x4e, 0x47,0x0d, 0x0a, 0x1a, 0x0a}; + unsigned char jpg_sign[3] = {0xff, 0xd8, 0xff}; + unsigned char png_sign[8] = {0x80, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a}; char *tmp_desc = NULL; while (1) { if (pExtContent[imgstartOffset + cur_pos] == '\0') { if (realCpyFrameNum < imgstartOffset + cur_pos) { - debug_error("End of APIC Tag %d %d %d\n", realCpyFrameNum, imgstartOffset, cur_pos); - break; + debug_error("End of APIC Tag %d %d %d\n", realCpyFrameNum, imgstartOffset, cur_pos); + break; } /*check end of image description*/ if ((pExtContent[imgstartOffset + cur_pos + 1] == jpg_sign[0]) || - (pExtContent[imgstartOffset + cur_pos + 1] == png_sign[0])) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "length of description (%d)", cur_pos); - #endif + (pExtContent[imgstartOffset + cur_pos + 1] == png_sign[0])) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("length of description (%d)", cur_pos); +#endif break; } } - cur_pos ++; + cur_pos++; } dis_len = cur_pos + 1; tmp_desc = mmfile_malloc(sizeof(char) * dis_len); - memcpy(tmp_desc, pExtContent + imgstartOffset, dis_len); - /*convert description*/ - pInfo->imageInfo.imageDescription = mmfile_string_convert (tmp_desc, dis_len, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&new_dis_len); - mmfile_free(tmp_desc); + if(tmp_desc != NULL) { + memcpy(tmp_desc, pExtContent + imgstartOffset, dis_len); + + /*convert description*/ + pInfo->imageInfo.imageDescription = mmfile_string_convert(tmp_desc, dis_len, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&new_dis_len); + mmfile_free(tmp_desc); + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("new_desc %s(%d)\n", pInfo->imageInfo.imageDescription, new_dis_len); +#endif + pInfo->imageInfo.imgDesLen = new_dis_len; /**/ + } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "new_desc %s(%d)\n", pInfo->imageInfo.imageDescription, new_dis_len); - #endif - pInfo->imageInfo.imgDesLen = new_dis_len; /**/ imgstartOffset += cur_pos; - } - else - { - pInfo->imageInfo.imgDesLen= 0; + } else { + pInfo->imageInfo.imgDesLen = 0; } - if((pExtContent[imgstartOffset] == '\0') && (realCpyFrameNum - imgstartOffset > 0)) - { - imgstartOffset ++; // endofDesceriptionType(1byte) + if ((pExtContent[imgstartOffset] == '\0') && (realCpyFrameNum - imgstartOffset > 0)) { + imgstartOffset++; /* endofDesceriptionType(1byte) */ - while(pExtContent[imgstartOffset] == '\0') //some content has useless '\0' in front of picture data - { - imgstartOffset ++; + while (pExtContent[imgstartOffset] == '\0') { /*some content has useless '\0' in front of picture data */ + imgstartOffset++; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "after scaning imgDescription imgstartOffset(%d) value!\n", imgstartOffset); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("after scaning imgDescription imgstartOffset(%d) value!\n", imgstartOffset); +#endif - if(realCpyFrameNum - imgstartOffset > 0) - { + if (realCpyFrameNum - imgstartOffset > 0) { pInfo->imageInfo.imageLen = realCpyFrameNum - imgstartOffset; - pInfo->imageInfo.pImageBuf= mmfile_malloc (pInfo->imageInfo.imageLen + 1); + pInfo->imageInfo.pImageBuf = mmfile_malloc(pInfo->imageInfo.imageLen + 1); - if(pInfo->imageInfo.pImageBuf != NULL) { - memcpy(pInfo->imageInfo.pImageBuf, pExtContent+ imgstartOffset, pInfo->imageInfo.imageLen); + if (pInfo->imageInfo.pImageBuf != NULL) { + memcpy(pInfo->imageInfo.pImageBuf, pExtContent + imgstartOffset, pInfo->imageInfo.imageLen); pInfo->imageInfo.pImageBuf[pInfo->imageInfo.imageLen] = 0; } - if(IS_INCLUDE_URL(pInfo->imageInfo.imageMIMEType)) - pInfo->imageInfo.bURLInfo = true; //if mimetype is "-->", image date has an URL - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "No APIC image!! realCpyFrameNum(%d) - imgstartOffset(%d)\n", realCpyFrameNum, imgstartOffset); - #endif + if (IS_INCLUDE_URL(pInfo->imageInfo.imageMIMEType)) + pInfo->imageInfo.bURLInfo = true; /*if mimetype is "-->", image date has an URL */ + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("No APIC image!! realCpyFrameNum(%d) - imgstartOffset(%d)\n", realCpyFrameNum, imgstartOffset); +#endif } } - checkImgMimeTypeMax = 0; + /*checkImgMimeTypeMax = 0;*/ checkImgExtMax = 0; inx = 0; imgstartOffset = 0; - pInfo->tagV2Info.bImageMarked= true; + pInfo->tagV2Info.bImageMarked = true; } } } - } - else - { + } else { curPos += purelyFramelen; - if(purelyFramelen != 0) + if (purelyFramelen != 0) needToloopv2taglen = MP3_TAGv2_22_TXT_HEADER_LEN; } - if(pExtContent) _FREE_EX(pExtContent); + if (pExtContent) _FREE_EX(pExtContent); memset(CompTmp, 0, 4); - if(curPos < taglen) - { + if (curPos < taglen) { needToloopv2taglen -= oneFrameLen; v2numOfFrames++; - } - else + } else needToloopv2taglen = MP3_TAGv2_22_TXT_HEADER_LEN; oneFrameLen = 0; encodingOffSet = 0; @@ -2149,7 +2090,7 @@ bool mm_file_id3tag_parse_v222(AvFileContentInfo* pInfo, unsigned char *buffer) release_characterset_array(charset_array); - if(taglen) { + if (taglen) { return true; } else { return false; @@ -2157,7 +2098,7 @@ bool mm_file_id3tag_parse_v222(AvFileContentInfo* pInfo, unsigned char *buffer) } EXPORT_API -bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) +bool mm_file_id3tag_parse_v223(AvFileContentInfo *pInfo, unsigned char *buffer) { unsigned long taglen = 0; unsigned long needToloopv2taglen; @@ -2167,10 +2108,11 @@ bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) char CompTmp[5]; unsigned char *pExtContent = NULL; unsigned long purelyFramelen = 0; - int inx=0, encodingOffSet=0, realCpyFrameNum=0, checkImgMimeTypeMax=0, imgstartOffset=0, tmp = 0; + unsigned int encodingOffSet = 0; + int inx = 0, realCpyFrameNum = 0, checkImgMimeTypeMax = 0, imgstartOffset = 0, tmp = 0; int textEncodingType = 0; char **charset_array = NULL; - char *MIME_PRFIX = "image/"; + const char *MIME_PRFIX = "image/"; make_characterset_array(&charset_array); @@ -2181,436 +2123,349 @@ bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) curPos = MP3_TAGv2_HEADER_LEN; #ifdef __MMFILE_TEST_MODE__ - debug_msg ("ID3tag v223--------------------------------------------------------------\n"); + debug_msg("ID3tag v223--------------------------------------------------------------\n"); #endif /* check Extended Header */ - if (buffer[5] & 0x40) - { + if (buffer[5] & 0x40) { /* if extended header exists, skip it*/ int extendedHeaderLen = (unsigned long)buffer[10] << 21 | (unsigned long)buffer[11] << 14 | (unsigned long)buffer[12] << 7 | (unsigned long)buffer[13]; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("--------------- extendedHeaderLen = %d\n", extendedHeaderLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("--------------- extendedHeaderLen = %d\n", extendedHeaderLen); +#endif curPos += extendedHeaderLen; curPos += 4; } - if(needToloopv2taglen -MP3_TAGv2_23_TXT_HEADER_LEN > MP3_TAGv2_23_TXT_HEADER_LEN) - { + if (needToloopv2taglen - MP3_TAGv2_23_TXT_HEADER_LEN > MP3_TAGv2_23_TXT_HEADER_LEN) { v2numOfFrames = 1; - while(needToloopv2taglen > MP3_TAGv2_23_TXT_HEADER_LEN) - { - if((buffer[curPos] < '0' || buffer[curPos] > 'Z') || (buffer[curPos+1] < '0' || buffer[curPos+1] > 'Z') - || (buffer[curPos+2] < '0' || buffer[curPos+2] > 'Z')|| (buffer[curPos+3] < '0' || buffer[curPos+3] > 'Z')) + while (needToloopv2taglen > MP3_TAGv2_23_TXT_HEADER_LEN) { + if ((buffer[curPos] < '0' || buffer[curPos] > 'Z') || (buffer[curPos + 1] < '0' || buffer[curPos + 1] > 'Z') + || (buffer[curPos + 2] < '0' || buffer[curPos + 2] > 'Z') || (buffer[curPos + 3] < '0' || buffer[curPos + 3] > 'Z')) break; memcpy(CompTmp, &buffer[curPos], 4); CompTmp[4] = 0; oneFrameLen = MP3_TAGv2_23_TXT_HEADER_LEN; - oneFrameLen += (unsigned long)buffer[4+curPos] << 24 | (unsigned long)buffer[5+curPos] << 16 - | (unsigned long)buffer[6+curPos] << 8 | (unsigned long)buffer[7+curPos]; - - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("----------------------------------------------------------------------------------------------------\n"); - #endif - - if(oneFrameLen > taglen-curPos) + oneFrameLen += (unsigned long)buffer[4 + curPos] << 24 | (unsigned long)buffer[5 + curPos] << 16 + | (unsigned long)buffer[6 + curPos] << 8 | (unsigned long)buffer[7 + curPos]; + +#ifdef __MMFILE_TEST_MODE__ + debug_msg("----------------------------------------------------------------------------------------------------\n"); +#endif + + if (oneFrameLen > taglen - curPos) break; purelyFramelen = oneFrameLen - MP3_TAGv2_23_TXT_HEADER_LEN; - curPos +=MP3_TAGv2_23_TXT_HEADER_LEN; + curPos += MP3_TAGv2_23_TXT_HEADER_LEN; - if(oneFrameLen > MP3_TAGv2_23_TXT_HEADER_LEN && purelyFramelen <= taglen-curPos) - { + if (oneFrameLen > MP3_TAGv2_23_TXT_HEADER_LEN && purelyFramelen <= taglen - curPos) { curPos += purelyFramelen; - if( IS_ENCODEDBY_UTF16(buffer+(curPos-purelyFramelen)) ) - { + if (IS_ENCODEDBY_UTF16(buffer + (curPos - purelyFramelen))) { encodingOffSet = 2; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "this text string(%s) encoded by UTF16 encodingOffSet(%d)\n", CompTmp, encodingOffSet); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("this text string(%s) encoded by UTF16 encodingOffSet(%d)\n", CompTmp, encodingOffSet); +#endif textEncodingType = AV_ID3V2_UTF16; - } - else if ( IS_ENCODEDBY_UTF16_R(buffer+(curPos-purelyFramelen)) ) - { + } else if (IS_ENCODEDBY_UTF16_R(buffer + (curPos - purelyFramelen))) { encodingOffSet = 2; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "this text string(%s) encoded by UTF16 encodingOffSet(%d)\n", CompTmp, encodingOffSet); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("this text string(%s) encoded by UTF16 encodingOffSet(%d)\n", CompTmp, encodingOffSet); +#endif textEncodingType = AV_ID3V2_UTF16_BE; - } - else if( IS_ENCODEDBY_UTF16(buffer+(curPos-purelyFramelen+1)) ) - { + } else if (IS_ENCODEDBY_UTF16(buffer + (curPos - purelyFramelen + 1))) { encodingOffSet = 3; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "this text string(%s) encoded by UTF16 encodingOffSet(%d)\n", CompTmp, encodingOffSet); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("this text string(%s) encoded by UTF16 encodingOffSet(%d)\n", CompTmp, encodingOffSet); +#endif textEncodingType = AV_ID3V2_UTF16; - } - else if ( IS_ENCODEDBY_UTF16_R(buffer+(curPos-purelyFramelen+1)) ) - { + } else if (IS_ENCODEDBY_UTF16_R(buffer + (curPos - purelyFramelen + 1))) { encodingOffSet = 3; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "this text string(%s) encoded by UTF16 encodingOffSet(%d)\n", CompTmp, encodingOffSet); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("this text string(%s) encoded by UTF16 encodingOffSet(%d)\n", CompTmp, encodingOffSet); +#endif textEncodingType = AV_ID3V2_UTF16_BE; - } - else - { - if (buffer[curPos-purelyFramelen+encodingOffSet] == 0x00) - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("encodingOffset will be set to 1\n"); - #endif - - encodingOffSet=1; - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("Finding encodingOffset\n"); - #endif + } else { + if (buffer[curPos - purelyFramelen + encodingOffSet] == 0x00) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("encodingOffset will be set to 1\n"); +#endif + + encodingOffSet = 1; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Finding encodingOffset\n"); +#endif - while((buffer[curPos-purelyFramelen+encodingOffSet] < 0x20) && (encodingOffSet < purelyFramelen)) // text string encoded by ISO-8859-1 + while ((buffer[curPos - purelyFramelen + encodingOffSet] < 0x20) && (encodingOffSet < purelyFramelen)) /* text string encoded by ISO-8859-1 */ encodingOffSet++; } textEncodingType = AV_ID3V2_ISO_8859; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "this text string(%s) encoded by ISO-8859-1 encodingOffSet(%d)\n", CompTmp, encodingOffSet); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("this text string(%s) encoded by ISO-8859-1 encodingOffSet(%d)\n", CompTmp, encodingOffSet); +#endif } - if(encodingOffSet < purelyFramelen) - { + if (encodingOffSet < purelyFramelen) { realCpyFrameNum = purelyFramelen - encodingOffSet; - pExtContent = mmfile_malloc (realCpyFrameNum+3); - memset(pExtContent, '\0', realCpyFrameNum+3); + pExtContent = mmfile_malloc(realCpyFrameNum + 3); + memset(pExtContent, '\0', realCpyFrameNum + 3); if (textEncodingType != AV_ID3V2_UTF16 && textEncodingType != AV_ID3V2_UTF16_BE) { - if (CompTmp[0] == 'T' ||(strcmp(CompTmp, "APIC")==0)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "get the new text ecoding type\n"); - #endif - textEncodingType = buffer[curPos-purelyFramelen+encodingOffSet -1]; + if (CompTmp[0] == 'T' || (strcmp(CompTmp, "APIC") == 0)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("get the new text ecoding type\n"); +#endif + textEncodingType = buffer[curPos - purelyFramelen + encodingOffSet - 1]; } } if (textEncodingType > AV_ID3V2_MAX) { - debug_msg ( "WRONG ENCOIDNG TYPE [%d], FRAME[%s]\n", textEncodingType, (char*)CompTmp); + debug_msg("WRONG ENCOIDNG TYPE [%d], FRAME[%s]\n", textEncodingType, (char *)CompTmp); continue; } - memcpy(pExtContent, &buffer[curPos-purelyFramelen+encodingOffSet], purelyFramelen-encodingOffSet); - if(realCpyFrameNum > 0) - { - if(strncmp((char *)CompTmp, "TIT2", 4) == 0 && pInfo->tagV2Info.bTitleMarked == false) - { - pInfo->pTitle = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->titleLen); + memcpy(pExtContent, &buffer[curPos - purelyFramelen + encodingOffSet], purelyFramelen - encodingOffSet); + if (realCpyFrameNum > 0) { + if (strncmp((char *)CompTmp, "TIT2", 4) == 0 && pInfo->tagV2Info.bTitleMarked == false) { + pInfo->pTitle = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->titleLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pTitle returned = (%s), pInfo->titleLen(%d)\n", pInfo->pTitle, pInfo->titleLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pTitle returned = (%s), pInfo->titleLen(%d)\n", pInfo->pTitle, pInfo->titleLen); +#endif pInfo->tagV2Info.bTitleMarked = true; - } - else if(strncmp((char *)CompTmp, "TPE1", 4) == 0 && pInfo->tagV2Info.bArtistMarked == false) - { - pInfo->pArtist = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->artistLen); + } else if (strncmp((char *)CompTmp, "TPE1", 4) == 0 && pInfo->tagV2Info.bArtistMarked == false) { + pInfo->pArtist = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->artistLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pArtist returned = (%s), pInfo->artistLen(%d)\n", pInfo->pArtist, pInfo->artistLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pArtist returned = (%s), pInfo->artistLen(%d)\n", pInfo->pArtist, pInfo->artistLen); +#endif pInfo->tagV2Info.bArtistMarked = true; - } - else if(strncmp((char *)CompTmp, "TPE2", 4) == 0 && pInfo->tagV2Info.bAlbum_ArtistMarked == false) - { - pInfo->pAlbum_Artist = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->album_artistLen); + } else if (strncmp((char *)CompTmp, "TPE2", 4) == 0 && pInfo->tagV2Info.bAlbum_ArtistMarked == false) { + pInfo->pAlbum_Artist = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->album_artistLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pAlbum_Artist returned = (%s), pInfo->album_artistLen(%d)\n", pInfo->pAlbum_Artist, pInfo->album_artistLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pAlbum_Artist returned = (%s), pInfo->album_artistLen(%d)\n", pInfo->pAlbum_Artist, pInfo->album_artistLen); +#endif pInfo->tagV2Info.bAlbum_ArtistMarked = true; - } - else if(strncmp((char *)CompTmp, "TPE3", 4) == 0 && pInfo->tagV2Info.bConductorMarked == false) - { - pInfo->pConductor = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->conductorLen); + } else if (strncmp((char *)CompTmp, "TPE3", 4) == 0 && pInfo->tagV2Info.bConductorMarked == false) { + pInfo->pConductor = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->conductorLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pConductor returned = (%s), pInfo->conductorLen(%d)\n", pInfo->pConductor, pInfo->conductorLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pConductor returned = (%s), pInfo->conductorLen(%d)\n", pInfo->pConductor, pInfo->conductorLen); +#endif pInfo->tagV2Info.bConductorMarked = true; - } - else if(strncmp((char *)CompTmp, "TALB", 4) == 0 && pInfo->tagV2Info.bAlbumMarked == false) - { - pInfo->pAlbum = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->albumLen); + } else if (strncmp((char *)CompTmp, "TALB", 4) == 0 && pInfo->tagV2Info.bAlbumMarked == false) { + pInfo->pAlbum = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->albumLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pAlbum returned = (%s), pInfo->albumLen(%d)\n", pInfo->pAlbum, pInfo->albumLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pAlbum returned = (%s), pInfo->albumLen(%d)\n", pInfo->pAlbum, pInfo->albumLen); +#endif pInfo->tagV2Info.bAlbumMarked = true; - } - else if(strncmp((char *)CompTmp, "TYER", 4) == 0 && pInfo->tagV2Info.bYearMarked == false) - { - pInfo->pYear = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->yearLen); + } else if (strncmp((char *)CompTmp, "TYER", 4) == 0 && pInfo->tagV2Info.bYearMarked == false) { + pInfo->pYear = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->yearLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pYear returned = (%s), pInfo->yearLen(%d)\n", pInfo->pYear, pInfo->yearLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pYear returned = (%s), pInfo->yearLen(%d)\n", pInfo->pYear, pInfo->yearLen); +#endif pInfo->tagV2Info.bYearMarked = true; - } - else if(strncmp((char *)CompTmp, "COMM", 4) == 0 && pInfo->tagV2Info.bDescriptionMarked == false) - { - if(realCpyFrameNum > 3) - { + } else if (strncmp((char *)CompTmp, "COMM", 4) == 0 && pInfo->tagV2Info.bDescriptionMarked == false) { + if (realCpyFrameNum > 3) { realCpyFrameNum -= 3; tmp = 3; - //pExtContent[tmp+1] value should't have encoding value - if(pExtContent[tmp] == 0x00 || pExtContent[tmp] == 0xFF|| pExtContent[tmp] == 0xFE) - { - if((IS_ENCODEDBY_UTF16(pExtContent+tmp) || IS_ENCODEDBY_UTF16_R(pExtContent+tmp)) && realCpyFrameNum > 2) - { - while((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp))&& realCpyFrameNum > 4) - { + /*pExtContent[tmp+1] value should't have encoding value */ + if (pExtContent[tmp] == 0x00 || pExtContent[tmp] == 0xFF || pExtContent[tmp] == 0xFE) { + if ((IS_ENCODEDBY_UTF16(pExtContent + tmp) || IS_ENCODEDBY_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 2) { + while ((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 4) { realCpyFrameNum -= 4; tmp += 4; } - if(IS_ENCODEDBY_UTF16(pExtContent+tmp) && (realCpyFrameNum > 2)) - { + if (IS_ENCODEDBY_UTF16(pExtContent + tmp) && (realCpyFrameNum > 2)) { realCpyFrameNum -= 2; tmp += 2; textEncodingType = AV_ID3V2_UTF16; - } - else if (IS_ENCODEDBY_UTF16_R(pExtContent+tmp) && (realCpyFrameNum > 2)) - { + } else if (IS_ENCODEDBY_UTF16_R(pExtContent + tmp) && (realCpyFrameNum > 2)) { realCpyFrameNum -= 2; tmp += 2; textEncodingType = AV_ID3V2_UTF16_BE; - } - else if(IS_ENCODEDBY_UTF16(pExtContent+tmp+1) && (realCpyFrameNum > 3)) - { + } else if (IS_ENCODEDBY_UTF16(pExtContent + tmp + 1) && (realCpyFrameNum > 3)) { realCpyFrameNum -= 3; tmp += 3; textEncodingType = AV_ID3V2_UTF16; - } - else if (IS_ENCODEDBY_UTF16_R(pExtContent+tmp+1) && (realCpyFrameNum > 3)) - { + } else if (IS_ENCODEDBY_UTF16_R(pExtContent + tmp + 1) && (realCpyFrameNum > 3)) { realCpyFrameNum -= 3; tmp += 3; textEncodingType = AV_ID3V2_UTF16_BE; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pComment Never Get Here!!\n"); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pComment Never Get Here!!\n"); - #endif - } - } - else - { - while((pExtContent[tmp] < 0x20) && (tmp < realCpyFrameNum)) // text string encoded by ISO-8859-1 - { - realCpyFrameNum --; + } else { + while ((pExtContent[tmp] < 0x20) && (tmp < realCpyFrameNum)) { /* text string encoded by ISO-8859-1 */ + realCpyFrameNum--; tmp++; } textEncodingType = AV_ID3V2_ISO_8859; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); +#endif - pInfo->pComment = mmfile_string_convert ((const char*)&pExtContent[tmp], realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->commentLen); - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "failed to get Comment Info tmp(%d), purelyFramelen - encodingOffSet(%d)\n", tmp, purelyFramelen - encodingOffSet); - #endif + pInfo->pComment = mmfile_string_convert((const char *)&pExtContent[tmp], realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->commentLen); + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("failed to get Comment Info tmp(%d), purelyFramelen - encodingOffSet(%d)\n", tmp, purelyFramelen - encodingOffSet); +#endif pInfo->commentLen = 0; } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Description info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Description info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); +#endif pInfo->commentLen = 0; } tmp = 0; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pComment returned = (%s), pInfo->commentLen(%d)\n", pInfo->pComment, pInfo->commentLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pComment returned = (%s), pInfo->commentLen(%d)\n", pInfo->pComment, pInfo->commentLen); +#endif pInfo->tagV2Info.bDescriptionMarked = true; - } - else if(strncmp((char *)CompTmp, "SYLT", 4) == 0 && pInfo->tagV2Info.bSyncLyricsMarked == false) - { + } else if (strncmp((char *)CompTmp, "SYLT", 4) == 0 && pInfo->tagV2Info.bSyncLyricsMarked == false) { int idx = 0; int copy_len = 0; int copy_start_pos = tmp; AvSynclyricsInfo *synclyrics_info = NULL; GList *synclyrics_info_list = NULL; - - if(realCpyFrameNum > 5) - { + + if (realCpyFrameNum > 5) { realCpyFrameNum -= 5; tmp = 5; - //pExtContent[tmp+1] value should't have encoding value - if(pExtContent[tmp] == 0x00 || pExtContent[tmp] == 0xFF|| pExtContent[tmp] == 0xFE) - { - if((IS_ENCODEDBY_UTF16(pExtContent+tmp) || IS_ENCODEDBY_UTF16_R(pExtContent+tmp)) && realCpyFrameNum > 2) - { - while((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp))&& realCpyFrameNum > 4) - { + /*pExtContent[tmp+1] value should't have encoding value */ + if (pExtContent[tmp] == 0x00 || pExtContent[tmp] == 0xFF || pExtContent[tmp] == 0xFE) { + if ((IS_ENCODEDBY_UTF16(pExtContent + tmp) || IS_ENCODEDBY_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 2) { + while ((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 4) { realCpyFrameNum -= 4; tmp += 4; } - if(IS_ENCODEDBY_UTF16(pExtContent+tmp) && (realCpyFrameNum > 2)) - { + if (IS_ENCODEDBY_UTF16(pExtContent + tmp) && (realCpyFrameNum > 2)) { realCpyFrameNum -= 2; tmp += 2; textEncodingType = AV_ID3V2_UTF16; - } - else if (IS_ENCODEDBY_UTF16_R(pExtContent+tmp) && (realCpyFrameNum > 2)) - { + } else if (IS_ENCODEDBY_UTF16_R(pExtContent + tmp) && (realCpyFrameNum > 2)) { realCpyFrameNum -= 2; tmp += 2; textEncodingType = AV_ID3V2_UTF16_BE; - } - else if(IS_ENCODEDBY_UTF16(pExtContent+tmp+1) && (realCpyFrameNum > 3)) - { + } else if (IS_ENCODEDBY_UTF16(pExtContent + tmp + 1) && (realCpyFrameNum > 3)) { realCpyFrameNum -= 3; tmp += 3; textEncodingType = AV_ID3V2_UTF16; - } - else if (IS_ENCODEDBY_UTF16_R(pExtContent+tmp+1) && (realCpyFrameNum > 3)) - { + } else if (IS_ENCODEDBY_UTF16_R(pExtContent + tmp + 1) && (realCpyFrameNum > 3)) { realCpyFrameNum -= 3; tmp += 3; textEncodingType = AV_ID3V2_UTF16_BE; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pSyncLyrics Never Get Here!!\n"); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pSyncLyrics Never Get Here!!\n"); - #endif - } - } - else - { - while((pExtContent[tmp] < 0x20) && (tmp < realCpyFrameNum)) // text string encoded by ISO-8859-1 - { - realCpyFrameNum --; + } else { + while ((pExtContent[tmp] < 0x20) && (tmp < realCpyFrameNum)) { /* text string encoded by ISO-8859-1 */ + realCpyFrameNum--; tmp++; } textEncodingType = AV_ID3V2_ISO_8859; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); +#endif - if(realCpyFrameNum < MMFILE_SYNC_LYRIC_INFO_MIN_LEN) - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "failed to get Synchronised lyrics Info realCpyFramNum(%d)\n", realCpyFrameNum); - #endif + if (realCpyFrameNum < MMFILE_SYNC_LYRIC_INFO_MIN_LEN) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("failed to get Synchronised lyrics Info realCpyFramNum(%d)\n", realCpyFrameNum); +#endif pInfo->syncLyricsNum = 0; - } - else - { - if(textEncodingType == AV_ID3V2_UTF16) - { - debug_warning ("[AV_ID3V2_UTF16] not implemented\n"); - } - else if (textEncodingType == AV_ID3V2_UTF16_BE) - { - debug_warning ("[AV_ID3V2_UTF16_BE] not implemented\n"); - } - else - { - for(idx = 0; idx < realCpyFrameNum; idx++) - { - if(pExtContent[tmp+idx] == 0x00) - { + } else { + if (textEncodingType == AV_ID3V2_UTF16) { + debug_warning("[AV_ID3V2_UTF16] not implemented\n"); + } else if (textEncodingType == AV_ID3V2_UTF16_BE) { + debug_warning("[AV_ID3V2_UTF16_BE] not implemented\n"); + } else { + for (idx = 0; idx < realCpyFrameNum; idx++) { + if (pExtContent[tmp + idx] == 0x00) { synclyrics_info = (AvSynclyricsInfo *)malloc(sizeof(AvSynclyricsInfo)); - if(synclyrics_info != NULL) { - if(textEncodingType == AV_ID3V2_UTF8) { - synclyrics_info->lyric_info= mmfile_malloc(copy_len+1); - if(synclyrics_info->lyric_info != NULL) { - memset(synclyrics_info->lyric_info, 0, copy_len+1); - memcpy(synclyrics_info->lyric_info, pExtContent+copy_start_pos, copy_len); - synclyrics_info->lyric_info[copy_len+1] = '\0'; + if (synclyrics_info != NULL) { + if (textEncodingType == AV_ID3V2_UTF8) { + synclyrics_info->lyric_info = mmfile_malloc(copy_len + 1); + if (synclyrics_info->lyric_info != NULL) { + memset(synclyrics_info->lyric_info, 0, copy_len + 1); + memcpy(synclyrics_info->lyric_info, pExtContent + copy_start_pos, copy_len); + synclyrics_info->lyric_info[copy_len + 1] = '\0'; } - } - else { - synclyrics_info->lyric_info = mmfile_string_convert ((const char*)&pExtContent[copy_start_pos], copy_len, "UTF-8", charset_array[AV_ID3V2_ISO_8859], NULL, NULL); + } else { + synclyrics_info->lyric_info = mmfile_string_convert((const char *)&pExtContent[copy_start_pos], copy_len, "UTF-8", charset_array[AV_ID3V2_ISO_8859], NULL, NULL); } - synclyrics_info->time_info= (unsigned long)pExtContent[tmp+idx+1] << 24 | (unsigned long)pExtContent[tmp+idx+2] << 16 | (unsigned long)pExtContent[tmp+idx+3] << 8 | (unsigned long)pExtContent[tmp+idx+4]; + synclyrics_info->time_info = (unsigned long)pExtContent[tmp + idx + 1] << 24 | (unsigned long)pExtContent[tmp + idx + 2] << 16 | (unsigned long)pExtContent[tmp + idx + 3] << 8 | (unsigned long)pExtContent[tmp + idx + 4]; idx += 4; copy_start_pos = tmp + idx + 1; - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("[%d][%s] idx[%d], copy_len[%d] copy_start_pos[%d]", synclyrics_info->time_info, synclyrics_info->lyric_info, idx, copy_len, copy_start_pos); - #endif +#endif copy_len = 0; synclyrics_info_list = g_list_append(synclyrics_info_list, synclyrics_info); } } - copy_len ++; + copy_len++; } pInfo->pSyncLyrics = synclyrics_info_list; pInfo->syncLyricsNum = g_list_length(pInfo->pSyncLyrics); } } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "failed to get Synchronised lyrics Info tmp(%d), purelyFramelen - encodingOffSet(%d)\n", tmp, purelyFramelen - encodingOffSet); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("failed to get Synchronised lyrics Info tmp(%d), purelyFramelen - encodingOffSet(%d)\n", tmp, purelyFramelen - encodingOffSet); +#endif pInfo->syncLyricsNum = 0; } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Synchronised lyrics too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Synchronised lyrics too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); +#endif pInfo->syncLyricsNum = 0; } tmp = 0; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pSyncLyrics returned = (%s), pInfo->syncLyricsNum(%d)\n", pInfo->pSyncLyrics, pInfo->syncLyricsNum); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pSyncLyrics returned = (%s), pInfo->syncLyricsNum(%d)\n", pInfo->pSyncLyrics, pInfo->syncLyricsNum); +#endif pInfo->tagV2Info.bSyncLyricsMarked = true; - } - else if(strncmp((char *)CompTmp, "USLT", 4) == 0 && pInfo->tagV2Info.bUnsyncLyricsMarked == false) - { - char *lang_info = strndup((char*)pExtContent, 3); + } else if (strncmp((char *)CompTmp, "USLT", 4) == 0 && pInfo->tagV2Info.bUnsyncLyricsMarked == false) { + char *lang_info = strndup((char *)pExtContent, 3); - if(realCpyFrameNum > 3) - { + if (realCpyFrameNum > 3) { realCpyFrameNum -= 3; tmp = 3; /*find start of lyrics */ - while(1) { + while (1) { if (pExtContent[tmp] == 0x00) { - if (pExtContent[tmp+1] == 0x00) { - realCpyFrameNum -=2; - tmp +=2; + if (pExtContent[tmp + 1] == 0x00) { + realCpyFrameNum -= 2; + tmp += 2; } break; } else { @@ -2619,139 +2474,118 @@ bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) } } - //pExtContent[tmp+1] value should't have encoding value - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "tpExtContent[%d] %x\n", tmp, pExtContent[tmp]); - #endif - if(pExtContent[tmp] == 0x00 || pExtContent[tmp] == 0xFF|| pExtContent[tmp] == 0xFE) - { - if((IS_ENCODEDBY_UTF16(pExtContent+tmp) || IS_ENCODEDBY_UTF16_R(pExtContent+tmp)) && realCpyFrameNum > 2) - { - while((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp))&& realCpyFrameNum > 4) - { + /*pExtContent[tmp+1] value should't have encoding value */ +#ifdef __MMFILE_TEST_MODE__ + debug_msg("tpExtContent[%d] %x\n", tmp, pExtContent[tmp]); +#endif + if (pExtContent[tmp] == 0x00 || pExtContent[tmp] == 0xFF || pExtContent[tmp] == 0xFE) { + if ((IS_ENCODEDBY_UTF16(pExtContent + tmp) || IS_ENCODEDBY_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 2) { + while ((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 4) { realCpyFrameNum -= 4; tmp += 4; } - if(IS_ENCODEDBY_UTF16(pExtContent+tmp) && (realCpyFrameNum > 2)) - { + if (IS_ENCODEDBY_UTF16(pExtContent + tmp) && (realCpyFrameNum > 2)) { realCpyFrameNum -= 2; tmp += 2; textEncodingType = AV_ID3V2_UTF16; - } - else if (IS_ENCODEDBY_UTF16_R(pExtContent+tmp) && (realCpyFrameNum > 2)) - { + } else if (IS_ENCODEDBY_UTF16_R(pExtContent + tmp) && (realCpyFrameNum > 2)) { realCpyFrameNum -= 2; tmp += 2; textEncodingType = AV_ID3V2_UTF16_BE; - } - else if(IS_ENCODEDBY_UTF16(pExtContent+tmp+1) && (realCpyFrameNum > 3)) - { + } else if (IS_ENCODEDBY_UTF16(pExtContent + tmp + 1) && (realCpyFrameNum > 3)) { realCpyFrameNum -= 3; tmp += 3; textEncodingType = AV_ID3V2_UTF16; - } - else if (IS_ENCODEDBY_UTF16_R(pExtContent+tmp+1) && (realCpyFrameNum > 3)) - { + } else if (IS_ENCODEDBY_UTF16_R(pExtContent + tmp + 1) && (realCpyFrameNum > 3)) { realCpyFrameNum -= 3; tmp += 3; textEncodingType = AV_ID3V2_UTF16_BE; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pUnsyncLyrics Never Get Here!!\n"); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pUnsyncLyrics Never Get Here!!\n"); - #endif - } - } - else - { - while((pExtContent[tmp] < 0x20) && (tmp < realCpyFrameNum)) // text string encoded by ISO-8859-1 - { - realCpyFrameNum --; + } else { + while ((pExtContent[tmp] < 0x20) && (tmp < realCpyFrameNum)) { /* text string encoded by ISO-8859-1 */ + realCpyFrameNum--; tmp++; } textEncodingType = AV_ID3V2_ISO_8859; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); +#endif char *char_set = NULL; if (textEncodingType == AV_ID3V2_ISO_8859) { if (lang_info != NULL && !strcasecmp(lang_info, "KOR")) { char_set = strdup("EUC-KR"); } else { - char_set = mmfile_get_charset((const char*)&pExtContent[tmp]); + char_set = mmfile_get_charset((const char *)&pExtContent[tmp]); } + _FREE_EX(lang_info); } if (char_set == NULL) { - pInfo->pUnsyncLyrics = mmfile_string_convert ((const char*)&pExtContent[tmp], realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->unsynclyricsLen); + pInfo->pUnsyncLyrics = mmfile_string_convert((const char *)&pExtContent[tmp], realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->unsynclyricsLen); } else { - pInfo->pUnsyncLyrics = mmfile_string_convert ((const char*)&pExtContent[tmp], realCpyFrameNum, "UTF-8", char_set, NULL, (unsigned int*)&pInfo->unsynclyricsLen); + pInfo->pUnsyncLyrics = mmfile_string_convert((const char *)&pExtContent[tmp], realCpyFrameNum, "UTF-8", char_set, NULL, (unsigned int *)&pInfo->unsynclyricsLen); _FREE_EX(char_set); } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "failed to get Unsynchronised lyrics Info tmp(%d), purelyFramelen - encodingOffSet(%d)\n", tmp, purelyFramelen - encodingOffSet); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("failed to get Unsynchronised lyrics Info tmp(%d), purelyFramelen - encodingOffSet(%d)\n", tmp, purelyFramelen - encodingOffSet); +#endif pInfo->unsynclyricsLen = 0; } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Unsynchronised lyrics too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Unsynchronised lyrics too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); +#endif pInfo->unsynclyricsLen = 0; } tmp = 0; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pUnsyncLyrics returned = (%s), pInfo->unsynclyricsLen(%d)\n", pInfo->pUnsyncLyrics, pInfo->unsynclyricsLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pUnsyncLyrics returned = (%s), pInfo->unsynclyricsLen(%d)\n", pInfo->pUnsyncLyrics, pInfo->unsynclyricsLen); +#endif pInfo->tagV2Info.bUnsyncLyricsMarked = true; mmfile_free(lang_info); - } - else if(strncmp((char *)CompTmp, "TCON", 4) == 0 && pInfo->tagV2Info.bGenreMarked == false) - { - pInfo->pGenre = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->genreLen); + } else if (strncmp((char *)CompTmp, "TCON", 4) == 0 && pInfo->tagV2Info.bGenreMarked == false) { + pInfo->pGenre = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->genreLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pGenre returned = (%s), pInfo->genreLen(%d)\n", pInfo->pGenre, pInfo->genreLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pGenre returned = (%s), pInfo->genreLen(%d)\n", pInfo->pGenre, pInfo->genreLen); +#endif - if((pInfo->pGenre != NULL) && (pInfo->genreLen > 0)) { + if ((pInfo->pGenre != NULL) && (pInfo->genreLen > 0)) { bool ret = FALSE; int int_genre = -1; ret = is_numeric(pInfo->pGenre, pInfo->genreLen); - if(ret == TRUE) { - sscanf( pInfo->pGenre, "%d", &int_genre); - #ifdef __MMFILE_TEST_MODE__ + if (ret == TRUE) { + sscanf(pInfo->pGenre, "%d", &int_genre); +#ifdef __MMFILE_TEST_MODE__ debug_msg("genre information is inteager [%d]\n", int_genre); - #endif +#endif - //Change int to string - if((0 <= int_genre) && (int_genre < GENRE_COUNT-1)) { + /*Change int to string */ + if ((0 <= int_genre) && (int_genre < GENRE_COUNT - 1)) { /*save genreinfo like "(123)". mm_file_id3tag_restore_content_info convert it to string*/ - char tmp_genre[6] = {0,}; /*ex. "(123)+NULL"*/ + char tmp_genre[6] = {0, }; /*ex. "(123)+NULL"*/ int tmp_genre_len = 0; - memset (tmp_genre, 0, 6); + memset(tmp_genre, 0, 6); snprintf(tmp_genre, sizeof(tmp_genre), "(%d)", int_genre); tmp_genre_len = strlen(tmp_genre); - if(tmp_genre_len > 0) { - if(pInfo->pGenre) _FREE_EX(pInfo->pGenre); - pInfo->pGenre = mmfile_malloc (sizeof(char) * (tmp_genre_len + 1) ); - if (pInfo->pGenre) - { + if (tmp_genre_len > 0) { + if (pInfo->pGenre) _FREE_EX(pInfo->pGenre); + pInfo->pGenre = mmfile_malloc(sizeof(char) * (tmp_genre_len + 1)); + if (pInfo->pGenre) { strncpy(pInfo->pGenre, tmp_genre, tmp_genre_len); pInfo->pGenre[tmp_genre_len] = 0; } @@ -2761,92 +2595,72 @@ bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) } pInfo->tagV2Info.bGenreMarked = true; - } - else if(strncmp((char *)CompTmp, "TRCK", 4) == 0 && pInfo->tagV2Info.bTrackNumMarked == false) - { - pInfo->pTrackNum = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->tracknumLen); + } else if (strncmp((char *)CompTmp, "TRCK", 4) == 0 && pInfo->tagV2Info.bTrackNumMarked == false) { + pInfo->pTrackNum = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->tracknumLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pTrackNum returned = (%s), pInfo->tracknumLen(%d)\n", pInfo->pTrackNum, pInfo->tracknumLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pTrackNum returned = (%s), pInfo->tracknumLen(%d)\n", pInfo->pTrackNum, pInfo->tracknumLen); +#endif pInfo->tagV2Info.bTrackNumMarked = true; - } - else if(strncmp((char *)CompTmp, "TENC", 4) == 0 && pInfo->tagV2Info.bEncByMarked == false) - { - pInfo->pEncBy = mmfile_string_convert ((char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->encbyLen); + } else if (strncmp((char *)CompTmp, "TENC", 4) == 0 && pInfo->tagV2Info.bEncByMarked == false) { + pInfo->pEncBy = mmfile_string_convert((char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->encbyLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pEncBy returned = (%s), pInfo->encbyLen(%d)\n", pInfo->pEncBy, pInfo->encbyLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pEncBy returned = (%s), pInfo->encbyLen(%d)\n", pInfo->pEncBy, pInfo->encbyLen); +#endif pInfo->tagV2Info.bEncByMarked = true; - } - else if(strncmp((char *)CompTmp, "WXXX", 4) == 0 && pInfo->tagV2Info.bURLMarked == false) - { - pInfo->pURL = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->urlLen); + } else if (strncmp((char *)CompTmp, "WXXX", 4) == 0 && pInfo->tagV2Info.bURLMarked == false) { + pInfo->pURL = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->urlLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pURL returned = (%s), pInfo->urlLen(%d)\n", pInfo->pURL, pInfo->urlLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pURL returned = (%s), pInfo->urlLen(%d)\n", pInfo->pURL, pInfo->urlLen); +#endif pInfo->tagV2Info.bURLMarked = true; - } - else if(strncmp((char *)CompTmp, "TCOP", 4) == 0 && pInfo->tagV2Info.bCopyRightMarked == false) - { - pInfo->pCopyright = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->copyrightLen); + } else if (strncmp((char *)CompTmp, "TCOP", 4) == 0 && pInfo->tagV2Info.bCopyRightMarked == false) { + pInfo->pCopyright = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->copyrightLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pCopyright returned = (%s), pInfo->copyrightLen(%d)\n", pInfo->pCopyright, pInfo->copyrightLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pCopyright returned = (%s), pInfo->copyrightLen(%d)\n", pInfo->pCopyright, pInfo->copyrightLen); +#endif pInfo->tagV2Info.bCopyRightMarked = true; - } - else if(strncmp((char *)CompTmp, "TOPE", 4) == 0 && pInfo->tagV2Info.bOriginArtistMarked == false) - { - pInfo->pOriginArtist = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->originartistLen); + } else if (strncmp((char *)CompTmp, "TOPE", 4) == 0 && pInfo->tagV2Info.bOriginArtistMarked == false) { + pInfo->pOriginArtist = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->originartistLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pOriginArtist returned = (%s), pInfo->originartistLen(%d)\n", pInfo->pOriginArtist, pInfo->originartistLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pOriginArtist returned = (%s), pInfo->originartistLen(%d)\n", pInfo->pOriginArtist, pInfo->originartistLen); +#endif pInfo->tagV2Info.bOriginArtistMarked = true; - } - else if(strncmp((char *)CompTmp, "TCOM", 4) == 0 && pInfo->tagV2Info.bComposerMarked == false) - { - pInfo->pComposer = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->composerLen); + } else if (strncmp((char *)CompTmp, "TCOM", 4) == 0 && pInfo->tagV2Info.bComposerMarked == false) { + pInfo->pComposer = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->composerLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pComposer returned = (%s), pInfo->composerLen(%d)\n", pInfo->pComposer, pInfo->composerLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pComposer returned = (%s), pInfo->composerLen(%d)\n", pInfo->pComposer, pInfo->composerLen); +#endif pInfo->tagV2Info.bComposerMarked = true; - } - else if(strncmp((char *)CompTmp, "TRDA", 4) == 0 && pInfo->tagV2Info.bRecDateMarked== false) - { - pInfo->pRecDate = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->recdateLen); + } else if (strncmp((char *)CompTmp, "TRDA", 4) == 0 && pInfo->tagV2Info.bRecDateMarked == false) { + pInfo->pRecDate = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->recdateLen); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pRecDate returned = (%s), pInfo->recdateLen(%d)\n", pInfo->pRecDate, pInfo->recdateLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pRecDate returned = (%s), pInfo->recdateLen(%d)\n", pInfo->pRecDate, pInfo->recdateLen); +#endif pInfo->tagV2Info.bRecDateMarked = true; - } - else if(strncmp((char *)CompTmp, "APIC", 4) == 0 && pInfo->tagV2Info.bImageMarked == false && realCpyFrameNum <= 2000000) - { - debug_msg ( "text encoding %d \n", textEncodingType); + } else if (strncmp((char *)CompTmp, "APIC", 4) == 0 && pInfo->tagV2Info.bImageMarked == false && realCpyFrameNum <= 2000000) { + debug_msg("text encoding %d \n", textEncodingType); - if(pExtContent[0] != '\0') - { - for(inx = 0; inx < MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH-1; inx++) - pInfo->imageInfo.imageMIMEType[inx] = '\0';//ini mimetype variable + if (pExtContent[0] != '\0') { + for (inx = 0; inx < MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH - 1; inx++) + pInfo->imageInfo.imageMIMEType[inx] = '\0';/*ini mimetype variable */ - while((checkImgMimeTypeMax < MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH-1) && pExtContent[checkImgMimeTypeMax] != '\0') - { + while ((checkImgMimeTypeMax < MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH - 1) && pExtContent[checkImgMimeTypeMax] != '\0') { pInfo->imageInfo.imageMIMEType[checkImgMimeTypeMax] = pExtContent[checkImgMimeTypeMax]; checkImgMimeTypeMax++; } pInfo->imageInfo.imgMimetypeLen = checkImgMimeTypeMax; - } - else - { + } else { pInfo->imageInfo.imgMimetypeLen = 0; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "APIC image's not included to MIME type\n"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("APIC image's not included to MIME type\n"); +#endif } imgstartOffset += checkImgMimeTypeMax; @@ -2857,35 +2671,30 @@ bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) continue; } - if((pExtContent[imgstartOffset] == '\0') && (realCpyFrameNum - imgstartOffset > 0)) - { - imgstartOffset++;//endofMIME(1byte) - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "after scaning Mime type imgstartOffset(%d) value!\n", imgstartOffset); - #endif + if ((pExtContent[imgstartOffset] == '\0') && (realCpyFrameNum - imgstartOffset > 0)) { + imgstartOffset++;/*endofMIME(1byte) */ +#ifdef __MMFILE_TEST_MODE__ + debug_msg("after scaning Mime type imgstartOffset(%d) value!\n", imgstartOffset); +#endif - if(pExtContent[imgstartOffset] < AV_ID3V2_PICTURE_TYPE_MAX) - { + if (pExtContent[imgstartOffset] < AV_ID3V2_PICTURE_TYPE_MAX) { pInfo->imageInfo.pictureType = pExtContent[imgstartOffset]; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("APIC image has invalid picture type(0x%x)\n", pExtContent[imgstartOffset]); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "APIC image has invalid picture type(0x%x)\n", pExtContent[imgstartOffset]); - #endif - } - imgstartOffset++;//PictureType(1byte) - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "after scaning PictureType imgstartOffset(%d) value!\n", imgstartOffset); - #endif + imgstartOffset++;/*PictureType(1byte) */ +#ifdef __MMFILE_TEST_MODE__ + debug_msg("after scaning PictureType imgstartOffset(%d) value!\n", imgstartOffset); +#endif - if(pExtContent[imgstartOffset] != 0x0) - { + if (pExtContent[imgstartOffset] != 0x0) { int cur_pos = 0; int dis_len = 0; int new_dis_len = 0; - char jpg_sign[3] = {0xff, 0xd8, 0xff}; - char png_sign[8] = {0x80, 0x50, 0x4e, 0x47,0x0d, 0x0a, 0x1a, 0x0a}; + unsigned char jpg_sign[3] = {0xff, 0xd8, 0xff}; + unsigned char png_sign[8] = {0x80, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a}; char *tmp_desc = NULL; while (1) { @@ -2896,15 +2705,15 @@ bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) } /*check end of image description*/ if ((pExtContent[imgstartOffset + cur_pos + 1] == jpg_sign[0]) || - (pExtContent[imgstartOffset + cur_pos + 1] == png_sign[0])) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "length of description (%d)", cur_pos); - #endif + (pExtContent[imgstartOffset + cur_pos + 1] == png_sign[0])) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("length of description (%d)", cur_pos); +#endif break; } } - cur_pos ++; + cur_pos++; } dis_len = cur_pos + 1; @@ -2913,116 +2722,97 @@ bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) memcpy(tmp_desc, pExtContent + imgstartOffset, dis_len); /*convert description*/ - pInfo->imageInfo.imageDescription = mmfile_string_convert (tmp_desc, dis_len, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&new_dis_len); - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "new_desc %s(%d)\n", pInfo->imageInfo.imageDescription, new_dis_len); - #endif + pInfo->imageInfo.imageDescription = mmfile_string_convert(tmp_desc, dis_len, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&new_dis_len); +#ifdef __MMFILE_TEST_MODE__ + debug_msg("new_desc %s(%d)\n", pInfo->imageInfo.imageDescription, new_dis_len); +#endif mmfile_free(tmp_desc); pInfo->imageInfo.imgDesLen = new_dis_len; /**/ imgstartOffset += cur_pos; - } - else - { - pInfo->imageInfo.imgDesLen= 0; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "APIC image's not included to Description!!!\n"); - #endif + } else { + pInfo->imageInfo.imgDesLen = 0; +#ifdef __MMFILE_TEST_MODE__ + debug_msg("APIC image's not included to Description!!!\n"); +#endif } - if((pExtContent[imgstartOffset] == '\0') && (realCpyFrameNum - imgstartOffset > 0)) - { - imgstartOffset ++; // endofDesceriptionType(1byte) + if ((pExtContent[imgstartOffset] == '\0') && (realCpyFrameNum - imgstartOffset > 0)) { + imgstartOffset++; /* endofDesceriptionType(1byte) */ - while(pExtContent[imgstartOffset] == '\0') //some content has useless '\0' in front of picture data - { - imgstartOffset ++; + while (pExtContent[imgstartOffset] == '\0') { /*some content has useless '\0' in front of picture data */ + imgstartOffset++; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "after scaning imgDescription imgstartOffset(%d) value!\n", imgstartOffset); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("after scaning imgDescription imgstartOffset(%d) value!\n", imgstartOffset); +#endif - if(realCpyFrameNum - imgstartOffset > 0) - { + if (realCpyFrameNum - imgstartOffset > 0) { pInfo->imageInfo.imageLen = realCpyFrameNum - imgstartOffset; - pInfo->imageInfo.pImageBuf = mmfile_malloc (pInfo->imageInfo.imageLen + 1); + pInfo->imageInfo.pImageBuf = mmfile_malloc(pInfo->imageInfo.imageLen + 1); - if(pInfo->imageInfo.pImageBuf != NULL ) { - memcpy(pInfo->imageInfo.pImageBuf, pExtContent+ imgstartOffset, pInfo->imageInfo.imageLen); + if (pInfo->imageInfo.pImageBuf != NULL) { + memcpy(pInfo->imageInfo.pImageBuf, pExtContent + imgstartOffset, pInfo->imageInfo.imageLen); pInfo->imageInfo.pImageBuf[pInfo->imageInfo.imageLen] = 0; } - if(IS_INCLUDE_URL(pInfo->imageInfo.imageMIMEType)) - pInfo->imageInfo.bURLInfo = true; //if mimetype is "-->", image date has an URL - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "No APIC image!! realCpyFrameNum(%d) - imgstartOffset(%d)\n", realCpyFrameNum, imgstartOffset); - #endif + if (IS_INCLUDE_URL(pInfo->imageInfo.imageMIMEType)) + pInfo->imageInfo.bURLInfo = true; /*if mimetype is "-->", image date has an URL */ + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("No APIC image!! realCpyFrameNum(%d) - imgstartOffset(%d)\n", realCpyFrameNum, imgstartOffset); +#endif } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->imageInfo.imageLen(%d), imgstartOffset(%d)!\n", pInfo->imageInfo.imageLen, imgstartOffset); - #endif - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pExtContent[imgstartOffset](%d) value should setted NULL value for end of description! realCpyFrameNum - imgstartOffset(%d)\n", - pExtContent[imgstartOffset], realCpyFrameNum - imgstartOffset); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->imageInfo.imageLen(%d), imgstartOffset(%d)!\n", pInfo->imageInfo.imageLen, imgstartOffset); +#endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pExtContent[imgstartOffset](%d) value should setted NULL value for end of description! realCpyFrameNum - imgstartOffset(%d)\n", + pExtContent[imgstartOffset], realCpyFrameNum - imgstartOffset); +#endif } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pExtContent[imgstartOffset](%d) value should setted NULL value for end of mimetype! realCpyFrameNum - imgstartOffset(%d)\n", - pExtContent[imgstartOffset], realCpyFrameNum - imgstartOffset); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pExtContent[imgstartOffset](%d) value should setted NULL value for end of mimetype! realCpyFrameNum - imgstartOffset(%d)\n", + pExtContent[imgstartOffset], realCpyFrameNum - imgstartOffset); +#endif } checkImgMimeTypeMax = 0; inx = 0; imgstartOffset = 0; - pInfo->tagV2Info.bImageMarked= true; + pInfo->tagV2Info.bImageMarked = true; - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "CompTmp(%s) This Frame ID currently not Supports!!\n", CompTmp); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("CompTmp(%s) This Frame ID currently not Supports!!\n", CompTmp); +#endif } } + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("All of the pExtContent Values are NULL\n"); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "All of the pExtContent Values are NULL\n"); - #endif - } - } - else - { + } else { curPos += purelyFramelen; - if(purelyFramelen != 0) + if (purelyFramelen != 0) needToloopv2taglen = MP3_TAGv2_23_TXT_HEADER_LEN; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "This Frame's size is Zero! purelyFramelen(%d)\n", purelyFramelen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("This Frame's size is Zero! purelyFramelen(%d)\n", purelyFramelen); +#endif } - if(pExtContent) _FREE_EX(pExtContent); + if (pExtContent) _FREE_EX(pExtContent); memset(CompTmp, 0, 4); - if(curPos < taglen) - { + if (curPos < taglen) { needToloopv2taglen -= oneFrameLen; v2numOfFrames++; - } - else + } else needToloopv2taglen = MP3_TAGv2_23_TXT_HEADER_LEN; oneFrameLen = 0; encodingOffSet = 0; @@ -3035,7 +2825,7 @@ bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) release_characterset_array(charset_array); - if(taglen) + if (taglen) return true; else return false; @@ -3043,7 +2833,7 @@ bool mm_file_id3tag_parse_v223(AvFileContentInfo* pInfo, unsigned char *buffer) } EXPORT_API -bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) +bool mm_file_id3tag_parse_v224(AvFileContentInfo *pInfo, unsigned char *buffer) { unsigned long taglen = 0; unsigned long needToloopv2taglen; @@ -3053,10 +2843,11 @@ bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) char CompTmp[5]; unsigned char *pExtContent = NULL; unsigned long purelyFramelen = 0; - int inx=0, encodingOffSet=0, realCpyFrameNum=0, checkImgMimeTypeMax=0, imgstartOffset=0, tmp = 0; + unsigned int encodingOffSet = 0; + int inx = 0, realCpyFrameNum = 0, checkImgMimeTypeMax = 0, imgstartOffset = 0, tmp = 0; int textEncodingType = 0; char **charset_array = NULL; - char *MIME_PRFIX = "image/"; + const char *MIME_PRFIX = "image/"; make_characterset_array(&charset_array); @@ -3067,578 +2858,471 @@ bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) curPos = MP3_TAGv2_HEADER_LEN; #ifdef __MMFILE_TEST_MODE__ - debug_msg ("ID3tag v224--------------------------------------------------------------\n"); + debug_msg("ID3tag v224--------------------------------------------------------------\n"); #endif /* check Extended Header */ - if (buffer[5] & 0x40) - { + if (buffer[5] & 0x40) { /* if extended header exists, skip it*/ int extendedHeaderLen = (unsigned long)buffer[10] << 21 | (unsigned long)buffer[11] << 14 | (unsigned long)buffer[12] << 7 | (unsigned long)buffer[13]; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("--------------- extendedHeaderLen = %d\n", extendedHeaderLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("--------------- extendedHeaderLen = %d\n", extendedHeaderLen); +#endif curPos += extendedHeaderLen; } - if(needToloopv2taglen -MP3_TAGv2_23_TXT_HEADER_LEN > MP3_TAGv2_23_TXT_HEADER_LEN) - { + if (needToloopv2taglen - MP3_TAGv2_23_TXT_HEADER_LEN > MP3_TAGv2_23_TXT_HEADER_LEN) { v2numOfFrames = 1; - while(needToloopv2taglen > MP3_TAGv2_23_TXT_HEADER_LEN) - { - if((buffer[curPos] < '0' || buffer[curPos] > 'Z') || (buffer[curPos+1] < '0' || buffer[curPos+1] > 'Z') - || (buffer[curPos+2] < '0' || buffer[curPos+2] > 'Z')|| (buffer[curPos+3] < '0' || buffer[curPos+3] > 'Z')) + while (needToloopv2taglen > MP3_TAGv2_23_TXT_HEADER_LEN) { + if ((buffer[curPos] < '0' || buffer[curPos] > 'Z') || (buffer[curPos + 1] < '0' || buffer[curPos + 1] > 'Z') + || (buffer[curPos + 2] < '0' || buffer[curPos + 2] > 'Z') || (buffer[curPos + 3] < '0' || buffer[curPos + 3] > 'Z')) break; memcpy(CompTmp, &buffer[curPos], 4); CompTmp[4] = 0; oneFrameLen = MP3_TAGv2_23_TXT_HEADER_LEN; - oneFrameLen += (unsigned long)buffer[4+curPos] << 21 | (unsigned long)buffer[5+curPos] << 14 - | (unsigned long)buffer[6+curPos] << 7 | (unsigned long)buffer[7+curPos]; - if(oneFrameLen > taglen-curPos) + oneFrameLen += (unsigned long)buffer[4 + curPos] << 21 | (unsigned long)buffer[5 + curPos] << 14 + | (unsigned long)buffer[6 + curPos] << 7 | (unsigned long)buffer[7 + curPos]; + if (oneFrameLen > taglen - curPos) break; purelyFramelen = oneFrameLen - MP3_TAGv2_23_TXT_HEADER_LEN; - curPos +=MP3_TAGv2_23_TXT_HEADER_LEN; + curPos += MP3_TAGv2_23_TXT_HEADER_LEN; #ifdef __MMFILE_TEST_MODE__ - debug_msg ("-----------------------------------------------------------------------------------\n"); + debug_msg("-----------------------------------------------------------------------------------\n"); #endif - if(oneFrameLen > MP3_TAGv2_23_TXT_HEADER_LEN && purelyFramelen <= taglen-curPos) - { + if (oneFrameLen > MP3_TAGv2_23_TXT_HEADER_LEN && purelyFramelen <= taglen - curPos) { curPos += purelyFramelen; - //in case of UTF 16 encoding - //buffer+(curPos-purelyFramelen) data should '0x01' but in order to expansion, we don't accurately check the value. - if(IS_ENCODEDBY_UTF16(buffer+(curPos-purelyFramelen))) - { + /*in case of UTF 16 encoding */ + /*buffer+(curPos-purelyFramelen) data should '0x01' but in order to expansion, we don't accurately check the value. */ + if (IS_ENCODEDBY_UTF16(buffer + (curPos - purelyFramelen))) { encodingOffSet = 2; textEncodingType = AV_ID3V2_UTF16; - } - else if (IS_ENCODEDBY_UTF16_R(buffer+(curPos-purelyFramelen))) - { + } else if (IS_ENCODEDBY_UTF16_R(buffer + (curPos - purelyFramelen))) { encodingOffSet = 2; textEncodingType = AV_ID3V2_UTF16_BE; - } - else if(IS_ENCODEDBY_UTF16(buffer+(curPos-purelyFramelen+1))) - { + } else if (IS_ENCODEDBY_UTF16(buffer + (curPos - purelyFramelen + 1))) { encodingOffSet = 3; textEncodingType = AV_ID3V2_UTF16; - } - else if(IS_ENCODEDBY_UTF16_R(buffer+(curPos-purelyFramelen+1))) - { + } else if (IS_ENCODEDBY_UTF16_R(buffer + (curPos - purelyFramelen + 1))) { encodingOffSet = 3; textEncodingType = AV_ID3V2_UTF16_BE; - } - else - { - //in case of UTF-16 BE encoding - if(buffer[curPos-purelyFramelen] == 0x02) - { + } else { + /*in case of UTF-16 BE encoding */ + if (buffer[curPos - purelyFramelen] == 0x02) { encodingOffSet = 1; - while((buffer[curPos-purelyFramelen+encodingOffSet] == '\0') && (encodingOffSet < purelyFramelen)) - encodingOffSet++;//null skip! + while ((buffer[curPos - purelyFramelen + encodingOffSet] == '\0') && (encodingOffSet < purelyFramelen)) + encodingOffSet++;/*null skip! */ textEncodingType = AV_ID3V2_UTF16_BE; } - //in case of UTF8 encoding - else if (buffer[curPos-purelyFramelen] == 0x03) - { + /*in case of UTF8 encoding */ + else if (buffer[curPos - purelyFramelen] == 0x03) { encodingOffSet = 1; - while((buffer[curPos-purelyFramelen+encodingOffSet] == '\0') && (encodingOffSet < purelyFramelen)) - encodingOffSet++;//null skip! + while ((buffer[curPos - purelyFramelen + encodingOffSet] == '\0') && (encodingOffSet < purelyFramelen)) + encodingOffSet++;/*null skip! */ textEncodingType = AV_ID3V2_UTF8; } - //in case of ISO-8859-1 encoding - else - { - //buffer+(curPos-purelyFramelen) data should 0x00 but in order to expansion, we don't accurately check the value. + /*in case of ISO-8859-1 encoding */ + else { + /*buffer+(curPos-purelyFramelen) data should 0x00 but in order to expansion, we don't accurately check the value. */ encodingOffSet = 1; - while((buffer[curPos-purelyFramelen+encodingOffSet] < 0x20) && (encodingOffSet < purelyFramelen)) - encodingOffSet++;//less than 0x20 value skip! + while ((buffer[curPos - purelyFramelen + encodingOffSet] < 0x20) && (encodingOffSet < purelyFramelen)) + encodingOffSet++;/*less than 0x20 value skip! */ textEncodingType = AV_ID3V2_ISO_8859; } } - if(encodingOffSet < purelyFramelen) - { + if (encodingOffSet < purelyFramelen) { realCpyFrameNum = purelyFramelen - encodingOffSet; - pExtContent = mmfile_malloc (realCpyFrameNum+3); - memset(pExtContent, '\0', realCpyFrameNum+3); + pExtContent = mmfile_malloc(realCpyFrameNum + 3); + + if (pExtContent == NULL) { + debug_error("out of memoryu for id3tag parse\n"); + continue; + } + + memset(pExtContent, '\0', realCpyFrameNum + 3); if (textEncodingType != AV_ID3V2_UTF16 && textEncodingType != AV_ID3V2_UTF16_BE) { - if (CompTmp[0] == 'T' ||(strcmp(CompTmp, "APIC")==0)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "get the new text ecoding type\n"); - #endif - textEncodingType = buffer[curPos-purelyFramelen+encodingOffSet -1]; + if (CompTmp[0] == 'T' || (strcmp(CompTmp, "APIC") == 0)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("get the new text ecoding type\n"); +#endif + textEncodingType = buffer[curPos - purelyFramelen + encodingOffSet - 1]; } } if (textEncodingType > AV_ID3V2_MAX) { - debug_msg ( "WRONG ENCOIDNG TYPE [%d], FRAME[%s]\n", textEncodingType, (char*)CompTmp); + debug_msg("WRONG ENCOIDNG TYPE [%d], FRAME[%s]\n", textEncodingType, (char *)CompTmp); continue; } - memcpy(pExtContent, &buffer[curPos-purelyFramelen+encodingOffSet], purelyFramelen-encodingOffSet); + memcpy(pExtContent, &buffer[curPos - purelyFramelen + encodingOffSet], purelyFramelen - encodingOffSet); - if(realCpyFrameNum > 0) - { - if(strncmp((char *)CompTmp, "TIT2", 4) == 0 && pInfo->tagV2Info.bTitleMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pTitle= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + if (realCpyFrameNum > 0) { + if (strncmp((char *)CompTmp, "TIT2", 4) == 0 && pInfo->tagV2Info.bTitleMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pTitle = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pTitle, pExtContent, realCpyFrameNum); pInfo->pTitle[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->titleLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pTitle, pExtContent, pInfo->titleLen); - } - else - { - pInfo->pTitle = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->titleLen); + _STRNCPY_EX(pInfo->pTitle, pExtContent, pInfo->titleLen); + } else { + pInfo->pTitle = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->titleLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pTitle returned = (%s), pInfo->titleLen(%d)\n", pInfo->pTitle, pInfo->titleLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pTitle returned = (%s), pInfo->titleLen(%d)\n", pInfo->pTitle, pInfo->titleLen); +#endif pInfo->tagV2Info.bTitleMarked = true; - } - else if(strncmp((char *)CompTmp, "TPE1", 4) == 0 && pInfo->tagV2Info.bArtistMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pArtist= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TPE1", 4) == 0 && pInfo->tagV2Info.bArtistMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pArtist = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pArtist, pExtContent, realCpyFrameNum); pInfo->pArtist[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->artistLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pArtist, pExtContent, pInfo->artistLen); - } - else - { - pInfo->pArtist = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->artistLen); + _STRNCPY_EX(pInfo->pArtist, pExtContent, pInfo->artistLen); + } else { + pInfo->pArtist = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->artistLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pArtist returned = (%s), pInfo->artistLen(%d)\n", pInfo->pArtist, pInfo->artistLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pArtist returned = (%s), pInfo->artistLen(%d)\n", pInfo->pArtist, pInfo->artistLen); +#endif pInfo->tagV2Info.bArtistMarked = true; - } - else if(strncmp((char *)CompTmp, "TPE2", 4) == 0 && pInfo->tagV2Info.bAlbum_ArtistMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pAlbum_Artist= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TPE2", 4) == 0 && pInfo->tagV2Info.bAlbum_ArtistMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pAlbum_Artist = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pAlbum_Artist, pExtContent, realCpyFrameNum); pInfo->pAlbum_Artist[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->album_artistLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pAlbum_Artist, pExtContent, pInfo->album_artistLen); - } - else - { - pInfo->pAlbum_Artist = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->album_artistLen); + _STRNCPY_EX(pInfo->pAlbum_Artist, pExtContent, pInfo->album_artistLen); + } else { + pInfo->pAlbum_Artist = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->album_artistLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pAlbum_Artist returned = (%s), pInfo->album_artistLen(%d)\n", pInfo->pAlbum_Artist, pInfo->album_artistLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pAlbum_Artist returned = (%s), pInfo->album_artistLen(%d)\n", pInfo->pAlbum_Artist, pInfo->album_artistLen); +#endif pInfo->tagV2Info.bAlbum_ArtistMarked = true; - } - else if(strncmp((char *)CompTmp, "TPE3", 4) == 0 && pInfo->tagV2Info.bConductorMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pConductor= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TPE3", 4) == 0 && pInfo->tagV2Info.bConductorMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pConductor = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pConductor, pExtContent, realCpyFrameNum); pInfo->pConductor[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->conductorLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pConductor, pExtContent, pInfo->conductorLen); - } - else - { - pInfo->pConductor = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->conductorLen); + _STRNCPY_EX(pInfo->pConductor, pExtContent, pInfo->conductorLen); + } else { + pInfo->pConductor = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->conductorLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pConductor returned = (%s), pInfo->conductorLen(%d)\n", pInfo->pConductor, pInfo->conductorLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pConductor returned = (%s), pInfo->conductorLen(%d)\n", pInfo->pConductor, pInfo->conductorLen); +#endif pInfo->tagV2Info.bConductorMarked = true; - } - else if(strncmp((char *)CompTmp, "TALB", 4) == 0 && pInfo->tagV2Info.bAlbumMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pAlbum= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TALB", 4) == 0 && pInfo->tagV2Info.bAlbumMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pAlbum = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pAlbum, pExtContent, realCpyFrameNum); pInfo->pAlbum[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->albumLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pAlbum, pExtContent, pInfo->albumLen); - } - else - { - pInfo->pAlbum = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->albumLen); + _STRNCPY_EX(pInfo->pAlbum, pExtContent, pInfo->albumLen); + } else { + pInfo->pAlbum = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->albumLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pAlbum returned = (%s), pInfo->albumLen(%d)\n", pInfo->pAlbum, pInfo->albumLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pAlbum returned = (%s), pInfo->albumLen(%d)\n", pInfo->pAlbum, pInfo->albumLen); +#endif pInfo->tagV2Info.bAlbumMarked = true; - } - 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_UTF8) - { - pInfo->pYear= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } 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_UTF8) { + pInfo->pYear = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pYear, pExtContent, realCpyFrameNum); pInfo->pYear[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->yearLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pYear, pExtContent, pInfo->yearLen); - } - else - { - pInfo->pYear = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->yearLen); + _STRNCPY_EX(pInfo->pYear, pExtContent, pInfo->yearLen); + } else { + pInfo->pYear = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->yearLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pYear returned = (%s), pInfo->yearLen(%d)\n", pInfo->pYear, pInfo->yearLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pYear returned = (%s), pInfo->yearLen(%d)\n", pInfo->pYear, pInfo->yearLen); +#endif pInfo->tagV2Info.bYearMarked = true; - } - else if(strncmp((char *)CompTmp, "COMM", 4) == 0 && pInfo->tagV2Info.bDescriptionMarked == false) - { - if(realCpyFrameNum > 3) - { + } else if (strncmp((char *)CompTmp, "COMM", 4) == 0 && pInfo->tagV2Info.bDescriptionMarked == false) { + if (realCpyFrameNum > 3) { realCpyFrameNum -= 3; tmp = 3; - if(textEncodingType == AV_ID3V2_UTF16 || textEncodingType == AV_ID3V2_UTF16_BE) - { - while((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp))&& realCpyFrameNum > 4) - { + if (textEncodingType == AV_ID3V2_UTF16 || textEncodingType == AV_ID3V2_UTF16_BE) { + while ((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 4) { realCpyFrameNum -= 4; tmp += 4; } - if((IS_ENCODEDBY_UTF16(pExtContent+tmp) || IS_ENCODEDBY_UTF16_R(pExtContent+tmp)) && realCpyFrameNum > 2) - { + if ((IS_ENCODEDBY_UTF16(pExtContent + tmp) || IS_ENCODEDBY_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 2) { realCpyFrameNum -= 2; tmp += 2; textEncodingType = AV_ID3V2_UTF16; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pComment Never Get Here!!\n"); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pComment Never Get Here!!\n"); - #endif - } - } - else if(textEncodingType == AV_ID3V2_UTF8) - { - while(pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) // text string encoded by ISO-8859-1 - { - realCpyFrameNum --; + } else if (textEncodingType == AV_ID3V2_UTF8) { + while (pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) { /* text string encoded by ISO-8859-1 */ + realCpyFrameNum--; tmp++; } textEncodingType = AV_ID3V2_UTF8; - } - else - { - while(pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) // text string encoded by ISO-8859-1 - { - realCpyFrameNum --; + } else { + while (pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) { /* text string encoded by ISO-8859-1 */ + realCpyFrameNum--; tmp++; } textEncodingType = AV_ID3V2_ISO_8859; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); +#endif - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pComment= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 - memset(pInfo->pComment, 0, (realCpyFrameNum+2)); - memcpy(pInfo->pComment, pExtContent+tmp, realCpyFrameNum); + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pComment = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ + memset(pInfo->pComment, 0, (realCpyFrameNum + 2)); + memcpy(pInfo->pComment, pExtContent + tmp, realCpyFrameNum); pInfo->pComment[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->commentLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pComment, pExtContent, pInfo->commentLen); + _STRNCPY_EX(pInfo->pComment, pExtContent, pInfo->commentLen); + } else { + pInfo->pComment = mmfile_string_convert((const char *)&pExtContent[tmp], realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->commentLen); } - else - { - pInfo->pComment = mmfile_string_convert ((const char*)&pExtContent[tmp], realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->commentLen); - } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Description info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Description info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); +#endif } tmp = 0; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pComment returned = (%s), pInfo->commentLen(%d)\n", pInfo->pComment, pInfo->commentLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pComment returned = (%s), pInfo->commentLen(%d)\n", pInfo->pComment, pInfo->commentLen); +#endif pInfo->tagV2Info.bDescriptionMarked = true; - } - else if(strncmp((char *)CompTmp, "SYLT", 4) == 0 && pInfo->tagV2Info.bSyncLyricsMarked == false) - { + } else if (strncmp((char *)CompTmp, "SYLT", 4) == 0 && pInfo->tagV2Info.bSyncLyricsMarked == false) { int idx = 0; int copy_len = 0; int copy_start_pos = tmp; AvSynclyricsInfo *synclyrics_info = NULL; GList *synclyrics_info_list = NULL; - - if(realCpyFrameNum > 5) - { + + if (realCpyFrameNum > 5) { realCpyFrameNum -= 5; tmp = 5; - if(textEncodingType == AV_ID3V2_UTF16 || textEncodingType == AV_ID3V2_UTF16_BE) - { - while((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp))&& realCpyFrameNum > 4) - { + if (textEncodingType == AV_ID3V2_UTF16 || textEncodingType == AV_ID3V2_UTF16_BE) { + while ((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 4) { realCpyFrameNum -= 4; tmp += 4; } - if((IS_ENCODEDBY_UTF16(pExtContent+tmp) || IS_ENCODEDBY_UTF16_R(pExtContent+tmp)) && realCpyFrameNum > 2) - { + if ((IS_ENCODEDBY_UTF16(pExtContent + tmp) || IS_ENCODEDBY_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 2) { realCpyFrameNum -= 2; tmp += 2; textEncodingType = AV_ID3V2_UTF16; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pSyncLyrics Never Get Here!!\n"); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pSyncLyrics Never Get Here!!\n"); - #endif - } - } - else if(textEncodingType == AV_ID3V2_UTF8) - { - while(pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) // text string encoded by ISO-8859-1 - { - realCpyFrameNum --; + } else if (textEncodingType == AV_ID3V2_UTF8) { + while (pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) { /* text string encoded by ISO-8859-1 */ + realCpyFrameNum--; tmp++; } textEncodingType = AV_ID3V2_UTF8; - } - else - { - while(pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) // text string encoded by ISO-8859-1 - { - realCpyFrameNum --; + } else { + while (pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) { /* text string encoded by ISO-8859-1 */ + realCpyFrameNum--; tmp++; } textEncodingType = AV_ID3V2_ISO_8859; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); +#endif - if(realCpyFrameNum < MMFILE_SYNC_LYRIC_INFO_MIN_LEN) - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "failed to get Synchronised lyrics Info realCpyFramNum(%d)\n", realCpyFrameNum); - #endif + if (realCpyFrameNum < MMFILE_SYNC_LYRIC_INFO_MIN_LEN) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("failed to get Synchronised lyrics Info realCpyFramNum(%d)\n", realCpyFrameNum); +#endif pInfo->syncLyricsNum = 0; - } - else - { - if(textEncodingType == AV_ID3V2_UTF16) - { - debug_warning ("[AV_ID3V2_UTF16] not implemented\n"); - } - else if(textEncodingType == AV_ID3V2_UTF16_BE) - { - debug_warning ("[AV_ID3V2_UTF16_BE] not implemented\n"); - } - else - { - for(idx = 0; idx < realCpyFrameNum; idx++) - { - if(pExtContent[tmp+idx] == 0x00) - { + } else { + if (textEncodingType == AV_ID3V2_UTF16) { + debug_warning("[AV_ID3V2_UTF16] not implemented\n"); + } else if (textEncodingType == AV_ID3V2_UTF16_BE) { + debug_warning("[AV_ID3V2_UTF16_BE] not implemented\n"); + } else { + for (idx = 0; idx < realCpyFrameNum; idx++) { + if (pExtContent[tmp + idx] == 0x00) { synclyrics_info = (AvSynclyricsInfo *)malloc(sizeof(AvSynclyricsInfo)); - if(textEncodingType == AV_ID3V2_UTF8) { - synclyrics_info->lyric_info= mmfile_malloc(copy_len+1); - memset(synclyrics_info->lyric_info, 0, copy_len+1); - memcpy(synclyrics_info->lyric_info, pExtContent+copy_start_pos, copy_len); - synclyrics_info->lyric_info[copy_len+1] = '\0'; - } - else { - synclyrics_info->lyric_info = mmfile_string_convert ((const char*)&pExtContent[copy_start_pos], copy_len, "UTF-8", charset_array[textEncodingType], NULL, NULL); + if (textEncodingType == AV_ID3V2_UTF8) { + synclyrics_info->lyric_info = mmfile_malloc(copy_len + 1); + memset(synclyrics_info->lyric_info, 0, copy_len + 1); + memcpy(synclyrics_info->lyric_info, pExtContent + copy_start_pos, copy_len); + synclyrics_info->lyric_info[copy_len + 1] = '\0'; + } else { + synclyrics_info->lyric_info = mmfile_string_convert((const char *)&pExtContent[copy_start_pos], copy_len, "UTF-8", charset_array[textEncodingType], NULL, NULL); } - synclyrics_info->time_info= (unsigned long)pExtContent[tmp+idx+1] << 24 | (unsigned long)pExtContent[tmp+idx+2] << 16 | (unsigned long)pExtContent[tmp+idx+3] << 8 | (unsigned long)pExtContent[tmp+idx+4]; + synclyrics_info->time_info = (unsigned long)pExtContent[tmp + idx + 1] << 24 | (unsigned long)pExtContent[tmp + idx + 2] << 16 | (unsigned long)pExtContent[tmp + idx + 3] << 8 | (unsigned long)pExtContent[tmp + idx + 4]; idx += 4; copy_start_pos = tmp + idx + 1; - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("[%d][%s] idx[%d], copy_len[%d] copy_start_pos[%d]", synclyrics_info->time_info, synclyrics_info->lyric_info, idx, copy_len, copy_start_pos); - #endif +#endif copy_len = 0; synclyrics_info_list = g_list_append(synclyrics_info_list, synclyrics_info); } - copy_len ++; + copy_len++; } pInfo->pSyncLyrics = synclyrics_info_list; pInfo->syncLyricsNum = g_list_length(pInfo->pSyncLyrics); } } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "SyncLyrics info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("SyncLyrics info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); +#endif } tmp = 0; pInfo->tagV2Info.bSyncLyricsMarked = true; - } - else if(strncmp((char *)CompTmp, "USLT", 4) == 0 && pInfo->tagV2Info.bUnsyncLyricsMarked == false) - { - if(realCpyFrameNum > 3) - { + } else if (strncmp((char *)CompTmp, "USLT", 4) == 0 && pInfo->tagV2Info.bUnsyncLyricsMarked == false) { + if (realCpyFrameNum > 3) { realCpyFrameNum -= 3; tmp = 3; - if(textEncodingType == AV_ID3V2_UTF16 || textEncodingType == AV_ID3V2_UTF16_BE) - { - while((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp))&& realCpyFrameNum > 4) - { + if (textEncodingType == AV_ID3V2_UTF16 || textEncodingType == AV_ID3V2_UTF16_BE) { + while ((NEWLINE_OF_UTF16(pExtContent + tmp) || NEWLINE_OF_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 4) { realCpyFrameNum -= 4; tmp += 4; } - if((IS_ENCODEDBY_UTF16(pExtContent+tmp) || IS_ENCODEDBY_UTF16_R(pExtContent+tmp)) && realCpyFrameNum > 2) - { + if ((IS_ENCODEDBY_UTF16(pExtContent + tmp) || IS_ENCODEDBY_UTF16_R(pExtContent + tmp)) && realCpyFrameNum > 2) { realCpyFrameNum -= 2; tmp += 2; textEncodingType = AV_ID3V2_UTF16; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pUnsyncLyrics Never Get Here!!\n"); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pUnsyncLyrics Never Get Here!!\n"); - #endif - } - } - else if(textEncodingType == AV_ID3V2_UTF8) - { - while(pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) // text string encoded by ISO-8859-1 - { - realCpyFrameNum --; + } else if (textEncodingType == AV_ID3V2_UTF8) { + while (pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) { /* text string encoded by ISO-8859-1 */ + realCpyFrameNum--; tmp++; } textEncodingType = AV_ID3V2_UTF8; - } - else - { - while(pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) // text string encoded by ISO-8859-1 - { - realCpyFrameNum --; + } else { + while (pExtContent[tmp] < 0x20 && (tmp < realCpyFrameNum)) { /* text string encoded by ISO-8859-1 */ + realCpyFrameNum--; tmp++; } textEncodingType = AV_ID3V2_ISO_8859; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("tmp(%d) textEncodingType(%d), realCpyFrameNum(%d)\n", tmp, textEncodingType, realCpyFrameNum); +#endif - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pUnsyncLyrics= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 - memset(pInfo->pUnsyncLyrics, 0, (realCpyFrameNum+2)); - memcpy(pInfo->pUnsyncLyrics, pExtContent+tmp, realCpyFrameNum); - pInfo->pUnsyncLyrics[realCpyFrameNum] = '\0'; - /*string copy with '\0'*/ - pInfo->unsynclyricsLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pUnsyncLyrics, pExtContent, pInfo->unsynclyricsLen); - } - else - { - pInfo->pUnsyncLyrics = mmfile_string_convert ((const char*)&pExtContent[tmp], realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->unsynclyricsLen); + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pUnsyncLyrics = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ + + if (pInfo->pUnsyncLyrics != NULL) { + memset(pInfo->pUnsyncLyrics, 0, (realCpyFrameNum + 2)); + memcpy(pInfo->pUnsyncLyrics, pExtContent + tmp, realCpyFrameNum); + pInfo->pUnsyncLyrics[realCpyFrameNum] = '\0'; + /*string copy with '\0'*/ + pInfo->unsynclyricsLen = realCpyFrameNum; + _STRNCPY_EX(pInfo->pUnsyncLyrics, pExtContent, pInfo->unsynclyricsLen); + } else { + debug_error("out of memoryu for SyncLyrics\n"); + } + } else { + pInfo->pUnsyncLyrics = mmfile_string_convert((const char *)&pExtContent[tmp], realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->unsynclyricsLen); } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Description info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Description info too small to parse realCpyFrameNum(%d)\n", realCpyFrameNum); +#endif } tmp = 0; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pUnsyncLyrics returned = (%s), pInfo->unsynclyricsLen(%d)\n", pInfo->pUnsyncLyrics, pInfo->unsynclyricsLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pUnsyncLyrics returned = (%s), pInfo->unsynclyricsLen(%d)\n", pInfo->pUnsyncLyrics, pInfo->unsynclyricsLen); +#endif pInfo->tagV2Info.bDescriptionMarked = true; - } - else if(strncmp((char *)CompTmp, "TCON", 4) == 0 && pInfo->tagV2Info.bGenreMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pGenre= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TCON", 4) == 0 && pInfo->tagV2Info.bGenreMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pGenre = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pGenre, pExtContent, realCpyFrameNum); pInfo->pGenre[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->genreLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pGenre, pExtContent, pInfo->genreLen); - } - else - { - pInfo->pGenre = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->genreLen); + _STRNCPY_EX(pInfo->pGenre, pExtContent, pInfo->genreLen); + } else { + pInfo->pGenre = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->genreLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pGenre returned = (%s), pInfo->genreLen(%d)\n", pInfo->pGenre, pInfo->genreLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pGenre returned = (%s), pInfo->genreLen(%d)\n", pInfo->pGenre, pInfo->genreLen); +#endif - if((pInfo->pGenre != NULL) && (pInfo->genreLen > 0)) { + if ((pInfo->pGenre != NULL) && (pInfo->genreLen > 0)) { bool ret = FALSE; int int_genre = -1; ret = is_numeric(pInfo->pGenre, pInfo->genreLen); - if(ret == TRUE) { - sscanf( pInfo->pGenre, "%d", &int_genre); - #ifdef __MMFILE_TEST_MODE__ + if (ret == TRUE) { + sscanf(pInfo->pGenre, "%d", &int_genre); +#ifdef __MMFILE_TEST_MODE__ debug_msg("genre information is inteager [%d]\n", int_genre); - #endif +#endif - //Change int to string - if((0 <= int_genre) && (int_genre < GENRE_COUNT-1)) { + /*Change int to string */ + if ((0 <= int_genre) && (int_genre < GENRE_COUNT - 1)) { /*save genreinfo like "(123)". mm_file_id3tag_restore_content_info convert it to string*/ - char tmp_genre[6] = {0,}; /*ex. "(123)+NULL"*/ + char tmp_genre[6] = {0, }; /*ex. "(123)+NULL"*/ int tmp_genre_len = 0; - memset (tmp_genre, 0, 6); + memset(tmp_genre, 0, 6); snprintf(tmp_genre, sizeof(tmp_genre), "(%d)", int_genre); tmp_genre_len = strlen(tmp_genre); - if(tmp_genre_len > 0) { - if(pInfo->pGenre) _FREE_EX(pInfo->pGenre); - pInfo->pGenre = mmfile_malloc (sizeof(char) * (tmp_genre_len + 1) ); - if (pInfo->pGenre) - { + if (tmp_genre_len > 0) { + if (pInfo->pGenre) _FREE_EX(pInfo->pGenre); + pInfo->pGenre = mmfile_malloc(sizeof(char) * (tmp_genre_len + 1)); + if (pInfo->pGenre) { strncpy(pInfo->pGenre, tmp_genre, tmp_genre_len); pInfo->pGenre[tmp_genre_len] = 0; } @@ -3648,191 +3332,145 @@ bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) } pInfo->tagV2Info.bGenreMarked = true; - } - else if(strncmp((char *)CompTmp, "TRCK", 4) == 0 && pInfo->tagV2Info.bTrackNumMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pTrackNum= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TRCK", 4) == 0 && pInfo->tagV2Info.bTrackNumMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pTrackNum = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pTrackNum, pExtContent, realCpyFrameNum); pInfo->pTrackNum[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->tracknumLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pTrackNum, pExtContent, pInfo->tracknumLen); - } - else - { - pInfo->pTrackNum = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->tracknumLen); + _STRNCPY_EX(pInfo->pTrackNum, pExtContent, pInfo->tracknumLen); + } else { + pInfo->pTrackNum = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->tracknumLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pTrackNum returned = (%s), pInfo->tracknumLen(%d)\n", pInfo->pTrackNum, pInfo->tracknumLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pTrackNum returned = (%s), pInfo->tracknumLen(%d)\n", pInfo->pTrackNum, pInfo->tracknumLen); +#endif pInfo->tagV2Info.bTrackNumMarked = true; - } - else if(strncmp((char *)CompTmp, "TENC", 4) == 0 && pInfo->tagV2Info.bEncByMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pEncBy= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TENC", 4) == 0 && pInfo->tagV2Info.bEncByMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pEncBy = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pEncBy, pExtContent, realCpyFrameNum); pInfo->pEncBy[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->encbyLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pEncBy, pExtContent, pInfo->encbyLen); - } - else - { - pInfo->pEncBy = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->encbyLen); + _STRNCPY_EX(pInfo->pEncBy, pExtContent, pInfo->encbyLen); + } else { + pInfo->pEncBy = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->encbyLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pEncBy returned = (%s), pInfo->encbyLen(%d)\n", pInfo->pEncBy, pInfo->encbyLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pEncBy returned = (%s), pInfo->encbyLen(%d)\n", pInfo->pEncBy, pInfo->encbyLen); +#endif pInfo->tagV2Info.bEncByMarked = true; - } - else if(strncmp((char *)CompTmp, "WXXX", 4) == 0 && pInfo->tagV2Info.bURLMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pURL= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "WXXX", 4) == 0 && pInfo->tagV2Info.bURLMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pURL = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pURL, pExtContent, realCpyFrameNum); pInfo->pURL[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->urlLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pURL, pExtContent, pInfo->urlLen); - } - else - { - pInfo->pURL = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->urlLen); + _STRNCPY_EX(pInfo->pURL, pExtContent, pInfo->urlLen); + } else { + pInfo->pURL = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->urlLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pURL returned = (%s), pInfo->urlLen(%d)\n", pInfo->pURL, pInfo->urlLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pURL returned = (%s), pInfo->urlLen(%d)\n", pInfo->pURL, pInfo->urlLen); +#endif pInfo->tagV2Info.bURLMarked = true; - } - else if(strncmp((char *)CompTmp, "TCOP", 4) == 0 && pInfo->tagV2Info.bCopyRightMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pCopyright= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TCOP", 4) == 0 && pInfo->tagV2Info.bCopyRightMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pCopyright = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pCopyright, pExtContent, realCpyFrameNum); pInfo->pCopyright[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->copyrightLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pCopyright, pExtContent, pInfo->copyrightLen); - } - else - { - pInfo->pCopyright = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->copyrightLen); + _STRNCPY_EX(pInfo->pCopyright, pExtContent, pInfo->copyrightLen); + } else { + pInfo->pCopyright = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->copyrightLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pCopyright returned = (%s), pInfo->copyrightLen(%d)\n", pInfo->pCopyright, pInfo->copyrightLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pCopyright returned = (%s), pInfo->copyrightLen(%d)\n", pInfo->pCopyright, pInfo->copyrightLen); +#endif pInfo->tagV2Info.bCopyRightMarked = true; - } - else if(strncmp((char *)CompTmp, "TOPE", 4) == 0 && pInfo->tagV2Info.bOriginArtistMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pOriginArtist= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TOPE", 4) == 0 && pInfo->tagV2Info.bOriginArtistMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pOriginArtist = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pOriginArtist, pExtContent, realCpyFrameNum); pInfo->pOriginArtist[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->originartistLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pOriginArtist, pExtContent, pInfo->originartistLen); - } - else - { - pInfo->pOriginArtist = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->originartistLen); + _STRNCPY_EX(pInfo->pOriginArtist, pExtContent, pInfo->originartistLen); + } else { + pInfo->pOriginArtist = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->originartistLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pOriginArtist returned = (%s), pInfo->originartistLen(%d)\n", pInfo->pOriginArtist, pInfo->originartistLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pOriginArtist returned = (%s), pInfo->originartistLen(%d)\n", pInfo->pOriginArtist, pInfo->originartistLen); +#endif pInfo->tagV2Info.bOriginArtistMarked = true; - } - else if(strncmp((char *)CompTmp, "TCOM", 4) == 0 && pInfo->tagV2Info.bComposerMarked == false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pComposer= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TCOM", 4) == 0 && pInfo->tagV2Info.bComposerMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pComposer = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pComposer, pExtContent, realCpyFrameNum); pInfo->pComposer[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->composerLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pComposer, pExtContent, pInfo->composerLen); - } - else - { - pInfo->pComposer = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->composerLen); + _STRNCPY_EX(pInfo->pComposer, pExtContent, pInfo->composerLen); + } else { + pInfo->pComposer = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->composerLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pComposer returned = (%s), pInfo->originartistLen(%d)\n", pInfo->pComposer, pInfo->composerLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pComposer returned = (%s), pInfo->originartistLen(%d)\n", pInfo->pComposer, pInfo->composerLen); +#endif pInfo->tagV2Info.bComposerMarked = true; - } - 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_UTF8) - { - pInfo->pRecDate= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } 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_UTF8) { + pInfo->pRecDate = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pRecDate, pExtContent, realCpyFrameNum); pInfo->pRecDate[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->recdateLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pRecDate, pExtContent, pInfo->recdateLen); - } - else - { - pInfo->pRecDate = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->recdateLen); + _STRNCPY_EX(pInfo->pRecDate, pExtContent, pInfo->recdateLen); + } else { + pInfo->pRecDate = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->recdateLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pRecDate returned = (%s), pInfo->recdateLen(%d)\n", pInfo->pRecDate, pInfo->recdateLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pRecDate returned = (%s), pInfo->recdateLen(%d)\n", pInfo->pRecDate, pInfo->recdateLen); +#endif pInfo->tagV2Info.bRecDateMarked = true; - } - else if(strncmp((char *)CompTmp, "TIT1", 4) == 0 && pInfo->tagV2Info.bContentGroupMarked== false) - { - if(textEncodingType == AV_ID3V2_UTF8) - { - pInfo->pContentGroup= mmfile_malloc (realCpyFrameNum+2);//Ignore NULL char for UTF16 + } else if (strncmp((char *)CompTmp, "TIT1", 4) == 0 && pInfo->tagV2Info.bContentGroupMarked == false) { + if (textEncodingType == AV_ID3V2_UTF8) { + pInfo->pContentGroup = mmfile_malloc(realCpyFrameNum + 2); /*Ignore NULL char for UTF16 */ memcpy(pInfo->pContentGroup, pExtContent, realCpyFrameNum); pInfo->pContentGroup[realCpyFrameNum] = '\0'; /*string copy with '\0'*/ pInfo->contentGroupLen = realCpyFrameNum; - _STRNCPY_EX (pInfo->pContentGroup, pExtContent, pInfo->contentGroupLen); - } - else - { - pInfo->pContentGroup = mmfile_string_convert ((const char*)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&pInfo->contentGroupLen); + _STRNCPY_EX(pInfo->pContentGroup, pExtContent, pInfo->contentGroupLen); + } else { + pInfo->pContentGroup = mmfile_string_convert((const char *)pExtContent, realCpyFrameNum, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&pInfo->contentGroupLen); } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pContentGroup returned = (%s), pInfo->contentGroupLen(%d)\n", pInfo->pContentGroup, pInfo->contentGroupLen); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pContentGroup returned = (%s), pInfo->contentGroupLen(%d)\n", pInfo->pContentGroup, pInfo->contentGroupLen); +#endif pInfo->tagV2Info.bContentGroupMarked = true; - } - else if(strncmp((char *)CompTmp, "APIC", 4) == 0 && pInfo->tagV2Info.bImageMarked == false && realCpyFrameNum <= 2000000) - { - if(pExtContent[0] != '\0') - { - for(inx = 0; inx < MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH-1; inx++) - pInfo->imageInfo.imageMIMEType[inx] = '\0';//ini mimetype variable - - while((checkImgMimeTypeMax < MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH-1) && pExtContent[checkImgMimeTypeMax] != '\0') - { + } else if (strncmp((char *)CompTmp, "APIC", 4) == 0 && pInfo->tagV2Info.bImageMarked == false && realCpyFrameNum <= 2000000) { + if (pExtContent[0] != '\0') { + for (inx = 0; inx < MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH - 1; inx++) + pInfo->imageInfo.imageMIMEType[inx] = '\0';/*ini mimetype variable */ + + while ((checkImgMimeTypeMax < MP3_ID3_IMAGE_MIME_TYPE_MAX_LENGTH - 1) && pExtContent[checkImgMimeTypeMax] != '\0') { pInfo->imageInfo.imageMIMEType[checkImgMimeTypeMax] = pExtContent[checkImgMimeTypeMax]; checkImgMimeTypeMax++; } pInfo->imageInfo.imgMimetypeLen = checkImgMimeTypeMax; - } - else - { + } else { pInfo->imageInfo.imgMimetypeLen = 0; } @@ -3844,23 +3482,20 @@ bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) continue; } - if((pExtContent[imgstartOffset] == '\0') && (realCpyFrameNum - imgstartOffset > 0)) - { - imgstartOffset++;//endofMIME(1byte) + if ((pExtContent[imgstartOffset] == '\0') && (realCpyFrameNum - imgstartOffset > 0)) { + imgstartOffset++;/*endofMIME(1byte) */ - if(pExtContent[imgstartOffset] < AV_ID3V2_PICTURE_TYPE_MAX) - { + if (pExtContent[imgstartOffset] < AV_ID3V2_PICTURE_TYPE_MAX) { pInfo->imageInfo.pictureType = pExtContent[imgstartOffset]; } - imgstartOffset++;//PictureType(1byte) + imgstartOffset++;/*PictureType(1byte) */ - if(pExtContent[imgstartOffset] != 0x0) - { + if (pExtContent[imgstartOffset] != 0x0) { int cur_pos = 0; int dis_len = 0; int new_dis_len = 0; - char jpg_sign[3] = {0xff, 0xd8, 0xff}; - char png_sign[8] = {0x80, 0x50, 0x4e, 0x47,0x0d, 0x0a, 0x1a, 0x0a}; + unsigned char jpg_sign[3] = {0xff, 0xd8, 0xff}; + unsigned char png_sign[8] = {0x80, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a}; char *tmp_desc = NULL; while (1) { @@ -3871,67 +3506,64 @@ bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) } /*check end of image description*/ if ((pExtContent[imgstartOffset + cur_pos + 1] == jpg_sign[0]) || - (pExtContent[imgstartOffset + cur_pos + 1] == png_sign[0])) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "length of description (%d)", cur_pos); - #endif + (pExtContent[imgstartOffset + cur_pos + 1] == png_sign[0])) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("length of description (%d)", cur_pos); +#endif break; } } - cur_pos ++; + cur_pos++; } dis_len = cur_pos + 1; tmp_desc = mmfile_malloc(sizeof(char) * dis_len); - memcpy(tmp_desc, pExtContent + imgstartOffset, dis_len); - debug_msg ( "tmp_desc %s\n", tmp_desc); - /*convert description*/ - pInfo->imageInfo.imageDescription = mmfile_string_convert (tmp_desc, dis_len, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int*)&new_dis_len); - debug_msg ( "new_desc %s(%d)\n", pInfo->imageInfo.imageDescription, new_dis_len); - mmfile_free(tmp_desc); + if(tmp_desc != NULL) { + memcpy(tmp_desc, pExtContent + imgstartOffset, dis_len); + debug_msg("tmp_desc %s\n", tmp_desc); + + /*convert description*/ + pInfo->imageInfo.imageDescription = mmfile_string_convert(tmp_desc, dis_len, "UTF-8", charset_array[textEncodingType], NULL, (unsigned int *)&new_dis_len); + debug_msg("new_desc %s(%d)\n", pInfo->imageInfo.imageDescription, new_dis_len); + mmfile_free(tmp_desc); + + pInfo->imageInfo.imgDesLen = new_dis_len; /**/ + } - pInfo->imageInfo.imgDesLen = new_dis_len; /**/ imgstartOffset += cur_pos; - } - else - { - pInfo->imageInfo.imgDesLen= 0; + } else { + pInfo->imageInfo.imgDesLen = 0; } - if((pExtContent[imgstartOffset] == '\0') && (realCpyFrameNum - imgstartOffset > 0)) - { - imgstartOffset ++; // endofDesceriptionType(1byte) + if ((pExtContent[imgstartOffset] == '\0') && (realCpyFrameNum - imgstartOffset > 0)) { + imgstartOffset++; /* endofDesceriptionType(1byte) */ - while(pExtContent[imgstartOffset] == '\0') //some content has useless '\0' in front of picture data - { - imgstartOffset ++; + while (pExtContent[imgstartOffset] == '\0') { /*some content has useless '\0' in front of picture data */ + imgstartOffset++; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "after scaning imgDescription imgstartOffset(%d) value!\n", imgstartOffset); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("after scaning imgDescription imgstartOffset(%d) value!\n", imgstartOffset); +#endif - if(realCpyFrameNum - imgstartOffset > 0) - { + if (realCpyFrameNum - imgstartOffset > 0) { pInfo->imageInfo.imageLen = realCpyFrameNum - imgstartOffset; - pInfo->imageInfo.pImageBuf= mmfile_malloc (pInfo->imageInfo.imageLen+1); + pInfo->imageInfo.pImageBuf = mmfile_malloc(pInfo->imageInfo.imageLen + 1); - if(pInfo->imageInfo.pImageBuf != NULL) { - memcpy(pInfo->imageInfo.pImageBuf, pExtContent+ imgstartOffset, pInfo->imageInfo.imageLen); + if (pInfo->imageInfo.pImageBuf != NULL) { + memcpy(pInfo->imageInfo.pImageBuf, pExtContent + imgstartOffset, pInfo->imageInfo.imageLen); pInfo->imageInfo.pImageBuf[pInfo->imageInfo.imageLen] = 0; } - if(IS_INCLUDE_URL(pInfo->imageInfo.imageMIMEType)) - pInfo->imageInfo.bURLInfo = true; //if mimetype is "-->", image date has an URL - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "No APIC image!! realCpyFrameNum(%d) - imgstartOffset(%d)\n", realCpyFrameNum, imgstartOffset); - #endif + if (IS_INCLUDE_URL(pInfo->imageInfo.imageMIMEType)) + pInfo->imageInfo.bURLInfo = true; /*if mimetype is "-->", image date has an URL */ + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("No APIC image!! realCpyFrameNum(%d) - imgstartOffset(%d)\n", realCpyFrameNum, imgstartOffset); +#endif } } } @@ -3939,40 +3571,32 @@ bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) checkImgMimeTypeMax = 0; inx = 0; imgstartOffset = 0; - pInfo->tagV2Info.bImageMarked= true; - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "CompTmp(%s) This Frame ID currently not Supports!!\n", CompTmp); - #endif + pInfo->tagV2Info.bImageMarked = true; + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("CompTmp(%s) This Frame ID currently not Supports!!\n", CompTmp); +#endif } } - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "mmf_file_id3tag_parse_v224: All of the pExtContent Values are NULL\n"); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("mmf_file_id3tag_parse_v224: All of the pExtContent Values are NULL\n"); +#endif } - } - else - { + } else { curPos += purelyFramelen; - if(purelyFramelen != 0) + if (purelyFramelen != 0) needToloopv2taglen = MP3_TAGv2_23_TXT_HEADER_LEN; } - if(pExtContent) _FREE_EX(pExtContent); + if (pExtContent) _FREE_EX(pExtContent); memset(CompTmp, 0, 4); - if(curPos < taglen) - { + if (curPos < taglen) { needToloopv2taglen -= oneFrameLen; v2numOfFrames++; - } - else + } else needToloopv2taglen = MP3_TAGv2_23_TXT_HEADER_LEN; oneFrameLen = 0; @@ -3986,7 +3610,7 @@ bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) release_characterset_array(charset_array); - if(taglen) + if (taglen) return true; else return false; @@ -3994,76 +3618,61 @@ bool mm_file_id3tag_parse_v224(AvFileContentInfo* pInfo, unsigned char *buffer) } EXPORT_API -void mm_file_id3tag_restore_content_info(AvFileContentInfo* pInfo) +void mm_file_id3tag_restore_content_info(AvFileContentInfo *pInfo) { - char *mpegAudioGenre=NULL, *tmpGenreForV1Tag = NULL; - bool bAdditionGenre= false /*, bMpegAudioFrame = false*/; - int mpegAudioFileLen=0, idv2IntGenre=148, tmpinx=0/*, tmpinx2=0*/; + char *mpegAudioGenre = NULL/*, *tmpGenreForV1Tag = NULL*/; + bool bAdditionGenre = false /*, bMpegAudioFrame = false*/; + int mpegAudioFileLen = 0, idv2IntGenre = 148/*, tmpinx = 0, tmpinx2=0*/; +#ifdef _SM_ONLY char *pGenreForUTF16; +#endif + unsigned char genre = pInfo->genre; - // for Genre Info - if(pInfo->tagV2Info.bGenreMarked == false) - { - if(pInfo->bV1tagFound == true) - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Genre: %d\n", pInfo->genre); - #endif - if(pInfo->genre > 147) - { - mpegAudioGenre = MpegAudio_Genre[148]; - } - else - { - mpegAudioGenre = MpegAudio_Genre[pInfo->genre]; - } - - if(mpegAudioGenre!=NULL) - { - pInfo->genreLen = strlen(mpegAudioGenre); - if (pInfo->genreLen > 0) - { - // Give space for NULL character. Hence added "+1" - pInfo->pGenre = mmfile_malloc (sizeof(char) * (pInfo->genreLen + 1) ); - if (pInfo->pGenre) - { - strncpy(pInfo->pGenre, mpegAudioGenre, pInfo->genreLen); + /* for Genre Info */ + if (pInfo->tagV2Info.bGenreMarked == false) { + if (pInfo->bV1tagFound == true) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Genre: %d\n", genre); +#endif + if (genre > 147) + genre = 148; + + if (MpegAudio_Genre[genre] != NULL) { + pInfo->genreLen = strlen(MpegAudio_Genre[genre]); + if (pInfo->genreLen > 0) { + /* Give space for NULL character. Hence added "+1" */ + pInfo->pGenre = mmfile_malloc(sizeof(char) * (pInfo->genreLen + 1)); + if (pInfo->pGenre) { + strncpy(pInfo->pGenre, MpegAudio_Genre[genre], pInfo->genreLen); pInfo->pGenre[pInfo->genreLen] = '\0'; } } } + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Genre was not Found.\n"); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Genre was not Found.\n"); - #endif - } - } - else if(pInfo->tagV2Info.bGenreMarked == true) - { - if(pInfo->genreLen && pInfo->tagV2Info.bGenreUTF16) - { - pInfo->pGenre[pInfo->genreLen+1] = '\0'; - mpegAudioGenre = mmfile_malloc (sizeof(char) * (pInfo->genreLen*AV_WM_LOCALCODE_SIZE_MAX + 1) ); - pGenreForUTF16 = (char *)pInfo->pGenre; + } else if (pInfo->tagV2Info.bGenreMarked == true) { + if (pInfo->genreLen && pInfo->tagV2Info.bGenreUTF16) { + pInfo->pGenre[pInfo->genreLen + 1] = '\0'; + mpegAudioGenre = mmfile_malloc(sizeof(char) * (pInfo->genreLen * AV_WM_LOCALCODE_SIZE_MAX + 1)); #ifdef _SM_ONLY - if(WmConvert2LCode(mpegAudioGenre, sizeof ( char ) * AV_WM_LOCALCODE_SIZE_MAX * ( pInfo->genreLen + 1 ), pGenreForUTF16)) - { + pGenreForUTF16 = (char *)pInfo->pGenre; + + if (WmConvert2LCode(mpegAudioGenre, sizeof(char) * AV_WM_LOCALCODE_SIZE_MAX * (pInfo->genreLen + 1), pGenreForUTF16)) { pInfo->genreLen = strlen(mpegAudioGenre); mpegAudioGenre[pInfo->genreLen] = '\0'; } #endif - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->genreLen size is Zero Or not UTF16 code! genreLen[%d] genre[%s]\n",pInfo->genreLen,pInfo->pGenre); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + 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); - mpegAudioGenre = mmfile_malloc (sizeof(char) * (pInfo->genreLen + 1) ); - if(mpegAudioGenre != NULL) { + mpegAudioGenre = mmfile_malloc(sizeof(char) * (pInfo->genreLen + 1)); + if (mpegAudioGenre != NULL) { mpegAudioGenre[pInfo->genreLen] = '\0'; strncpy(mpegAudioGenre, pInfo->pGenre, pInfo->genreLen); } @@ -4072,100 +3681,82 @@ void mm_file_id3tag_restore_content_info(AvFileContentInfo* pInfo) } } - if(pInfo->pGenre) _FREE_EX(pInfo->pGenre); + if (pInfo->pGenre) _FREE_EX(pInfo->pGenre); - tmpinx = 0; - if(mpegAudioGenre!=NULL) - { + /*tmpinx = 0;*/ + if (mpegAudioGenre != NULL) { /** *Genre number * (XXX) XXX is 0 - 148 */ - pInfo->genreLen = strlen (mpegAudioGenre); + pInfo->genreLen = strlen(mpegAudioGenre); if (pInfo->genreLen >= 3 && - mpegAudioGenre[0] == '(' && mpegAudioGenre[pInfo->genreLen - 1] == ')') { + mpegAudioGenre[0] == '(' && mpegAudioGenre[pInfo->genreLen - 1] == ')') { bAdditionGenre = true; for (mpegAudioFileLen = 1; mpegAudioFileLen <= pInfo->genreLen - 2; mpegAudioFileLen++) { - if(mpegAudioGenre[mpegAudioFileLen] < '0' || mpegAudioGenre[mpegAudioFileLen] > '9') { + if (mpegAudioGenre[mpegAudioFileLen] < '0' || mpegAudioGenre[mpegAudioFileLen] > '9') { bAdditionGenre = false; break; } } } - if(bAdditionGenre == true) - { - idv2IntGenre = atoi(mpegAudioGenre+1); - if(idv2IntGenre > 147 || idv2IntGenre < 0) - { - tmpGenreForV1Tag = MpegAudio_Genre[148]; - } - else - { - tmpGenreForV1Tag = MpegAudio_Genre[idv2IntGenre]; - } - if(tmpGenreForV1Tag!=NULL) - { - pInfo->genreLen = strlen(tmpGenreForV1Tag); - if (pInfo->genreLen > 0) - { - // Give space for NULL character. Hence added "+1" - pInfo->pGenre = mmfile_malloc (sizeof(char) * (pInfo->genreLen + 1) ); - if (pInfo->pGenre) - { - strncpy(pInfo->pGenre, tmpGenreForV1Tag, pInfo->genreLen); + if (bAdditionGenre == true) { + idv2IntGenre = atoi(mpegAudioGenre + 1); + + if (idv2IntGenre > 147 || idv2IntGenre < 0) + idv2IntGenre = 148; + + if (MpegAudio_Genre[idv2IntGenre] != NULL) { + pInfo->genreLen = strlen(MpegAudio_Genre[idv2IntGenre]); + if (pInfo->genreLen > 0) { + /* Give space for NULL character. Hence added "+1" */ + pInfo->pGenre = mmfile_malloc(sizeof(char) * (pInfo->genreLen + 1)); + if (pInfo->pGenre) { + strncpy(pInfo->pGenre, MpegAudio_Genre[idv2IntGenre], pInfo->genreLen); pInfo->pGenre[pInfo->genreLen] = 0; } } } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pGenre = %s\n", pInfo->pGenre); - #endif - } - else if (bAdditionGenre == false && pInfo->genreLen > 0) - { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pGenre = %s\n", pInfo->pGenre); +#endif + } else if (bAdditionGenre == false && pInfo->genreLen > 0) { /** * Genre string. */ - - // Give space for NULL character. Hence added "+1" - pInfo->pGenre = mmfile_malloc (sizeof(char) * (pInfo->genreLen + 1) ); - if (pInfo->pGenre) - { + + /* Give space for NULL character. Hence added "+1" */ + pInfo->pGenre = mmfile_malloc(sizeof(char) * (pInfo->genreLen + 1)); + if (pInfo->pGenre) { strncpy(pInfo->pGenre, mpegAudioGenre, pInfo->genreLen); pInfo->pGenre[pInfo->genreLen] = '\0'; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "pInfo->pGenre = %s, pInfo->genreLen = %d\n", pInfo->pGenre, pInfo->genreLen); - #endif - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Failed to \"(...)\" value to genre = %s\n", pInfo->pGenre); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("pInfo->pGenre = %s, pInfo->genreLen = %d\n", pInfo->pGenre, pInfo->genreLen); +#endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Failed to \"(...)\" value to genre = %s\n", pInfo->pGenre); +#endif } + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("mpegAudioGenre = %x\n", mpegAudioGenre); +#endif } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "mpegAudioGenre = %x\n", mpegAudioGenre); - #endif - } - if(mpegAudioGenre) + if (mpegAudioGenre) _FREE_EX(mpegAudioGenre); - } - else - { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Neither ID3 v1 nor v2 info doesn't have Genre Info.\n"); - #endif + } else { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Neither ID3 v1 nor v2 info doesn't have Genre Info.\n"); +#endif } } -void mm_file_free_synclyrics_list(GList * synclyrics_list) +void mm_file_free_synclyrics_list(GList *synclyrics_list) { int list_len = 0; int idx = 0; @@ -4181,7 +3772,7 @@ void mm_file_free_synclyrics_list(GList * synclyrics_list) free(synclyrics_info->lyric_info); synclyrics_info->lyric_info = NULL; - + free(synclyrics_info); synclyrics_info = NULL; } @@ -4190,7 +3781,7 @@ void mm_file_free_synclyrics_list(GList * synclyrics_list) g_list_free(synclyrics_list); synclyrics_list = NULL; } - + return; } diff --git a/utils/mm_file_util_validity.c b/utils/mm_file_util_validity.c index 4ec2d2c..3248cd3 100755 --- a/utils/mm_file_util_validity.c +++ b/utils/mm_file_util_validity.c @@ -22,7 +22,7 @@ #include <string.h> /*memcmp*/ #include <stdlib.h> /*malloc*/ #include <mm_error.h> -#include <mm_debug.h> +#include "mm_file_debug.h" #include "mm_file_utils.h" /* Description of return value @@ -33,62 +33,69 @@ /***********************************************************************/ /* Internal functions */ /***********************************************************************/ -static int _MMFileSearchID3Tag (MMFileIOHandle *fp, unsigned int *offset); -static int _MMFileIsMP3Header (void *header); -static int _MMFileIsOGGHeader (void *header); -static int _MMFileIsMP4Header (void *header); -static int _MMFileIsWAVHeader (void *header); -static int _MMFileIsAVIHeader (void *header); -static int _MMFileIsMIDHeader (void *header); -static int _MMFileIsMMFHeader (void *header); -static int _MMFileIsIMYHeader (void *header); -static int _MMFileIsASFHeader (void *header); -static int _MMFileIsAMRHeader (void *header); -static int _MMFileIsFLACHeader (void *header); -static int _MMFileIsFLVHeader (void *header); - - +static int _MMFileSearchID3Tag(MMFileIOHandle *fp, unsigned int *offset); +static int _MMFileIsMP3Header(void *header); +static int _MMFileIsOGGHeader(void *header); +static int _MMFileIsREALHeader(void *header); +static int _MMFileIsMP4Header(void *header); +static int _MMFileIsWAVHeader(void *header); +static int _MMFileIsAVIHeader(void *header); +static int _MMFileIsMIDHeader(void *header); +static int _MMFileIsMMFHeader(void *header); +static int _MMFileIsIMYHeader(void *header); +static int _MMFileIsASFHeader(void *header); +static int _MMFileIsAMRHeader(void *header); +static int _MMFileIsFLACHeader(void *header); +static int _MMFileIsFLVHeader(void *header); +static int _MMFileIsMPEGTSHeader(MMFileIOHandle *fp); +static int _MMFileIsMPEGPSHeader(void *header); +static int _MMFileIsMPEGAUDIOHeader(void *header); +static int _MMFileIsMPEGVIDEOHeader(void *header); /***********************************************************************/ /* MP3 Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidMP3 (const char *mmfileuri, int frameCnt) +int MMFileFormatIsValidMP3(MMFileIOHandle *pFileIO, const char *mmfileuri, int frameCnt) { #define _MMFILE_MP3_HEADER_LENGTH 4 #define _MMFILE_MP3_BUFFER_LENGTH 8200 - MMFileIOHandle *fp = NULL; - unsigned char *buffer=NULL; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_MP3_BUFFER_LENGTH] = {0, }; long long filesize = 0; - unsigned int sizeID3 = 0; - int readed = 0; - unsigned int startoffset = 0; - unsigned int endoffset = 0; - unsigned int i = 0, j = 0; - int ret = 0,frameSize,count,offset; - - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if(ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; + unsigned int sizeID3 = 0; + int readed = 0, i = 0, j = 0;; + unsigned int startoffset = 0; + int endoffset = 0; + int frameSize = 0; + int ret = 0, count = 0, offset = 0; + + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - mmfile_seek (fp, 0L, MMFILE_SEEK_END); - filesize = mmfile_tell (fp); - mmfile_seek (fp, 0L, MMFILE_SEEK_SET); + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); + + mmfile_seek(fp, 0L, MMFILE_SEEK_END); + filesize = mmfile_tell(fp); + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); if (filesize < _MMFILE_MP3_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); + debug_error("header is too small.\n"); ret = 0; goto exit; } /* Search the existance of ID3 tag */ - ret = _MMFileSearchID3Tag (fp, &sizeID3); + ret = _MMFileSearchID3Tag(fp, &sizeID3); if (ret == 0) { debug_error("Error in searching the ID3 tag\n"); -// goto exit; + /* goto exit; */ } ret = 0; @@ -96,58 +103,51 @@ int MMFileFormatIsValidMP3 (const char *mmfileuri, int frameCnt) /* set begin and end point at the file */ startoffset += sizeID3; endoffset = startoffset + 102400; - if(endoffset > filesize - _MMFILE_MP3_HEADER_LENGTH) + if (endoffset > filesize - _MMFILE_MP3_HEADER_LENGTH) endoffset = filesize - _MMFILE_MP3_HEADER_LENGTH; - + /* find sync bit */ i = startoffset; count = 0; - - buffer = mmfile_malloc (_MMFILE_MP3_BUFFER_LENGTH * sizeof(char)); - - if (NULL == buffer) { - debug_error("Error in allocating memory for MP3 buffer\n"); - goto exit; - } while (i < endoffset) { - mmfile_seek (fp, i, MMFILE_SEEK_SET); - readed = mmfile_read (fp, buffer, _MMFILE_MP3_BUFFER_LENGTH); + mmfile_seek(fp, i, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_MP3_BUFFER_LENGTH); if (readed < _MMFILE_MP3_HEADER_LENGTH) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; break; } offset = 1; for (j = 0; (j <= readed - _MMFILE_MP3_HEADER_LENGTH); j = j + offset) { - frameSize = _MMFileIsMP3Header (buffer+j); + frameSize = _MMFileIsMP3Header(buffer + j); offset = 1; - + if (frameSize) { - - if((j+frameSize) >= (endoffset-(i+_MMFILE_MP3_HEADER_LENGTH))) { + + if ((j + frameSize) >= (endoffset - (i + _MMFILE_MP3_HEADER_LENGTH))) { goto failMP3; } - if((j+frameSize) >= (readed - _MMFILE_MP3_HEADER_LENGTH)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "MP3 coner hit %d %d\n", j, frameSize); - #endif + if ((j + frameSize) >= (readed - _MMFILE_MP3_HEADER_LENGTH)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MP3 coner hit %d %d\n", j, frameSize); +#endif break; } - frameSize = _MMFileIsMP3Header (buffer+j+frameSize); + frameSize = _MMFileIsMP3Header(buffer + j + frameSize); - if(frameSize) { + if (frameSize) { offset = frameSize; count++; - if(count == frameCnt) { + if (count == frameCnt) { ret = 1; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected at %d\n", i+j); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected at %d\n", i + j); +#endif goto exit; } } else { @@ -157,24 +157,18 @@ int MMFileFormatIsValidMP3 (const char *mmfileuri, int frameCnt) } /*If j is zero, this loop is infinite */ - if (j ==0) j++; + if (j == 0) j++; i = i + j; } failMP3: - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Not Detected at: %d\n",i+j); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Not Detected at: %d\n", i + j); +#endif exit: - - if(buffer) { - mmfile_free (buffer); - } - - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -185,49 +179,48 @@ exit: /* AAC Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidAAC (const char *mmfileuri) +int MMFileFormatIsValidAAC(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_AAC_HEADER_LENGTH 4 #define _MMFILE_AAC_BUFFER_LENGTH 8200 - MMFileIOHandle *fp = NULL; - unsigned char *buffer=NULL; - unsigned int sizeID3 = 0; - long long filesize = 0; - int readed = 0; - unsigned int startoffset = 0; - unsigned int endoffset = 0; - unsigned int i = 0, j = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_AAC_BUFFER_LENGTH] = {0, }; + unsigned int sizeID3 = 0; + long long filesize = 0; + int readed = 0, i = 0, j = 0; + int startoffset = 0; + int endoffset = 0; int ret = 0; - unsigned int sync,frameSize; + unsigned int sync = 0; + int frameSize = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); + mmfile_seek(fp, 0, MMFILE_SEEK_END); filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); + mmfile_seek(fp, 0, MMFILE_SEEK_SET); if (filesize < _MMFILE_AAC_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); + debug_error("header is too small.\n"); ret = 0; goto exit; } /* Search the existance of ID3 tag */ - ret = _MMFileSearchID3Tag (fp, &sizeID3); + ret = _MMFileSearchID3Tag(fp, &sizeID3); if (ret == 0) { debug_error("Error in searching the ID3 tag\n"); -// goto exit; + /* goto exit; */ } ret = 0; @@ -235,90 +228,78 @@ int MMFileFormatIsValidAAC (const char *mmfileuri) /* set begin and end point at the file */ startoffset += sizeID3; endoffset = startoffset + 10240; - if(endoffset > filesize - _MMFILE_AAC_HEADER_LENGTH) + if (endoffset > filesize - _MMFILE_AAC_HEADER_LENGTH) endoffset = filesize - _MMFILE_AAC_HEADER_LENGTH; - - buffer = mmfile_malloc (_MMFILE_AAC_BUFFER_LENGTH * sizeof(char)); - if (NULL == buffer) { - debug_error("Error in allocating memory for AAC buffer\n"); - goto exit; - } - i = startoffset; while (i < endoffset) { - mmfile_seek (fp, i, MMFILE_SEEK_SET); + mmfile_seek(fp, i, MMFILE_SEEK_SET); + + readed = mmfile_read(fp, buffer, _MMFILE_AAC_BUFFER_LENGTH); - readed = mmfile_read (fp, buffer, _MMFILE_AAC_BUFFER_LENGTH); - if (readed < _MMFILE_AAC_HEADER_LENGTH) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; break; } - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "read error. size = %d. i = %d\n", readed,i); - #endif - for(j=0; (j < readed - _MMFILE_AAC_HEADER_LENGTH); j++) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("read error. size = %d. i = %d\n", readed, i); +#endif + for (j = 0; (j < readed - _MMFILE_AAC_HEADER_LENGTH); j++) { - sync = ((buffer[j]<<8)|(buffer[j+1])); + sync = ((buffer[j] << 8) | (buffer[j + 1])); - if ( (sync & 0xFFF6) == 0xFFF0) { - frameSize = (((buffer[j+3]&0x03)<<11) | (buffer[j+4]<<3) | ((buffer[j+5]&0xE0)>>5)); + if ((sync & 0xFFF6) == 0xFFF0) { + frameSize = (((buffer[j + 3] & 0x03) << 11) | (buffer[j + 4] << 3) | ((buffer[j + 5] & 0xE0) >> 5)); - if(frameSize == 0 ) { - continue; + if (frameSize == 0) { + continue; } - if((j+frameSize) >= (endoffset-(i+2))) { + if ((j + frameSize) >= (endoffset - (i + 2))) { goto fail; } - if((j+frameSize) >= (readed - 2)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "AAC coner hit %d %d\n", j, frameSize); - #endif + if ((j + frameSize) >= (readed - 2)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("AAC coner hit %d %d\n", j, frameSize); +#endif break; } - sync = ( (buffer[j+frameSize]<<8) | (buffer[j+frameSize+1])); + sync = ((buffer[j + frameSize] << 8) | (buffer[j + frameSize + 1])); if ((sync & 0xFFF6) == 0xFFF0) { ret = 1; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "AAC ADTS Header Detected at %d\n", i+j); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("AAC ADTS Header Detected at %d\n", i + j); +#endif goto exit; } - } else if (!memcmp((buffer+j),"ADIF",4)) { + } else if (!memcmp((buffer + j), "ADIF", 4)) { ret = 1; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "AAC ADIF Header Detected at %d\n", i+j); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("AAC ADIF Header Detected at %d\n", i + j); +#endif goto exit; } } /*If j is zero, this loop is infinite */ - if (j ==0) j++; + if (j == 0) j++; i = i + j; } fail: - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected Failed\n"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected Failed\n"); +#endif exit: - if (buffer) { - mmfile_free (buffer); - } - - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -329,52 +310,49 @@ exit: /* OGG Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidOGG (const char *mmfileuri) +int MMFileFormatIsValidOGG(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_OGG_HEADER_LENGTH 4 #define _MMFILE_OGG_BUFFER_LENGTH 512 #define _MMFILE_OGG_CHECK_LIMIT (_MMFILE_OGG_HEADER_LENGTH * 1000) - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_OGG_BUFFER_LENGTH] = {0,}; - unsigned int sizeID3 = 0; - long long filesize = 0; - int readed = 0; - unsigned int startoffset = 0; - unsigned int endoffset = 0; - unsigned int i = 0, j = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_OGG_BUFFER_LENGTH] = {0, }; + unsigned int sizeID3 = 0; + long long filesize = 0; + int readed = 0, i = 0, j = 0; + int startoffset = 0; + int endoffset = 0; int ret = 0; - unsigned int check_limit = 0; + int check_limit = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - ret = 0; - return ret; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + ret = 0; + goto exit; + } } - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - ret = 0; - goto exit; - } + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); + mmfile_seek(fp, 0, MMFILE_SEEK_END); filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); + mmfile_seek(fp, 0, MMFILE_SEEK_SET); if (filesize < _MMFILE_OGG_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); + debug_error("header is too small.\n"); ret = 0; goto exit; } /* Search the existance of ID3 tag */ - ret = _MMFileSearchID3Tag (fp, &sizeID3); - if(ret == 0) { + ret = _MMFileSearchID3Tag(fp, &sizeID3); + if (ret == 0) { debug_error("Error in searching the ID3 tag\n"); -// goto exit; + /* goto exit; */ } ret = 0; @@ -387,33 +365,32 @@ int MMFileFormatIsValidOGG (const char *mmfileuri) i = startoffset; while (i <= check_limit) { - mmfile_seek (fp, i, MMFILE_SEEK_SET); - readed = mmfile_read (fp, buffer, _MMFILE_OGG_BUFFER_LENGTH); + mmfile_seek(fp, i, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_OGG_BUFFER_LENGTH); if (readed < _MMFILE_OGG_HEADER_LENGTH) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; break; } for (j = 0; (j <= readed - _MMFILE_OGG_HEADER_LENGTH); j++) { - if (1 == _MMFileIsOGGHeader (buffer+j)) { + if (1 == _MMFileIsOGGHeader(buffer + j)) { ret = 1; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected at %d\n", i+j); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected at %d\n", i + j); +#endif goto exit; } } - memset (buffer, 0x00, _MMFILE_OGG_BUFFER_LENGTH); + memset(buffer, 0x00, _MMFILE_OGG_BUFFER_LENGTH); i = i + j; } exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -424,40 +401,38 @@ exit: /* MIDI Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidMID (const char *mmfileuri) +int MMFileFormatIsValidMID(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_MIDI_HEADER_LENGTH 4 #define _MMFILE_MIDI_BUFFER_LENGTH 512 #define _MMFILE_MIDI_CHECK_LIMIT (_MMFILE_MIDI_HEADER_LENGTH * 1024) - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_MIDI_BUFFER_LENGTH] = {0,}; - long long filesize = 0; - int readed = 0; - unsigned int startoffset = 0; - unsigned int endoffset = 0; - unsigned int i = 0, j = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_MIDI_BUFFER_LENGTH] = {0, }; + long long filesize = 0; + int readed = 0, i = 0, j = 0; + int startoffset = 0; + int endoffset = 0; int ret = 0; - unsigned int check_limit = 0; + int check_limit = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); + mmfile_seek(fp, 0, MMFILE_SEEK_END); filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); + mmfile_seek(fp, 0, MMFILE_SEEK_SET); if (filesize < _MMFILE_MIDI_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); + debug_error("header is too small.\n"); ret = 0; goto exit; } @@ -472,33 +447,32 @@ int MMFileFormatIsValidMID (const char *mmfileuri) i = startoffset; while (i <= check_limit) { - mmfile_seek (fp, i, MMFILE_SEEK_SET); - readed = mmfile_read (fp, buffer, _MMFILE_MIDI_BUFFER_LENGTH); + mmfile_seek(fp, i, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_MIDI_BUFFER_LENGTH); if (readed < _MMFILE_MIDI_HEADER_LENGTH) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; break; } for (j = 0; (j <= readed - _MMFILE_MIDI_HEADER_LENGTH); j++) { - if (1 == _MMFileIsMIDHeader (buffer+j)) { + if (1 == _MMFileIsMIDHeader(buffer + j)) { ret = 1; - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected at %d\n", i+j); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected at %d\n", i + j); +#endif goto exit; } } - memset (buffer, 0x00, _MMFILE_MIDI_BUFFER_LENGTH); + memset(buffer, 0x00, _MMFILE_MIDI_BUFFER_LENGTH); i = i + j; } exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -508,66 +482,44 @@ exit: /* WAV Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidWAV (const char *mmfileuri) +int MMFileFormatIsValidWAV(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_WAV_HEADER_LENGTH 15 - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_WAV_HEADER_LENGTH] = {0,}; - long long filesize = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_WAV_HEADER_LENGTH] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; - } - - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - if (filesize < _MMFILE_WAV_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); - ret = 0; - goto exit; - } + readed = mmfile_read(fp, buffer, _MMFILE_WAV_HEADER_LENGTH); - ret = 0; - - /* set begin and end point at the file */ - startoffset = 0; - - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); - - readed = mmfile_read (fp, buffer, _MMFILE_WAV_HEADER_LENGTH); if (_MMFILE_WAV_HEADER_LENGTH != readed) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - if (1 == _MMFileIsWAVHeader (buffer)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected\n"); - #endif + if (1 == _MMFileIsWAVHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif ret = 1; goto exit; } - exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -578,36 +530,35 @@ exit: /* MP4 Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidMP4 (const char *mmfileuri) +int MMFileFormatIsValidMP4(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_MP4_HEADER_LENGTH 4 #define _MMFILE_MP4_CHECK_LIMIT (1024*10) /*10Kbyte*/ - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_MP4_HEADER_LENGTH] = {0,}; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_MP4_HEADER_LENGTH] = {0, }; long long filesize = 0; int readed = 0; unsigned int startoffset = 0; int ret = 0; unsigned int check_limit = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); + mmfile_seek(fp, 0, MMFILE_SEEK_END); filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); + mmfile_seek(fp, 0, MMFILE_SEEK_SET); if (filesize < _MMFILE_MP4_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); + debug_error("header is too small.\n"); ret = 0; goto exit; } @@ -615,31 +566,30 @@ int MMFileFormatIsValidMP4 (const char *mmfileuri) ret = 0; /**@note weak check*/ - check_limit = (filesize > _MMFILE_MP4_CHECK_LIMIT) ? _MMFILE_MP4_CHECK_LIMIT: filesize; + check_limit = (filesize > _MMFILE_MP4_CHECK_LIMIT) ? _MMFILE_MP4_CHECK_LIMIT : filesize; for (startoffset = 0; check_limit - (startoffset + _MMFILE_MP4_HEADER_LENGTH) > 0; startoffset++) { - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); + mmfile_seek(fp, startoffset, MMFILE_SEEK_SET); - readed = mmfile_read (fp, buffer, _MMFILE_MP4_HEADER_LENGTH); + readed = mmfile_read(fp, buffer, _MMFILE_MP4_HEADER_LENGTH); if (readed != _MMFILE_MP4_HEADER_LENGTH) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } /*input is 4byte*/ - if (1 == _MMFileIsMP4Header (buffer)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("MP4 Header Detected\n"); - #endif + if (1 == _MMFileIsMP4Header(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("MP4 Header Detected\n"); +#endif ret = 1; goto exit; } } exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -649,63 +599,44 @@ exit: /* AVI Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidAVI (const char *mmfileuri) +int MMFileFormatIsValidAVI(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_AVI_HEADER_LENGTH 12 - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_AVI_HEADER_LENGTH] = {0,}; - long long filesize = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_AVI_HEADER_LENGTH] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; - } - - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } - - /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); - - if (filesize < _MMFILE_AVI_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); - ret = 0; - goto exit; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = 0; - startoffset = 0; + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_AVI_HEADER_LENGTH); - readed = mmfile_read (fp, buffer, _MMFILE_AVI_HEADER_LENGTH); if (_MMFILE_AVI_HEADER_LENGTH != readed) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - if (1 == _MMFileIsAVIHeader (buffer)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected \n"); - #endif + if (1 == _MMFileIsAVIHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected \n"); +#endif ret = 1; goto exit; } exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -716,62 +647,43 @@ exit: /* ASF Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidASF (const char *mmfileuri) +int MMFileFormatIsValidASF(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_ASF_HEADER_LENGTH 16 - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_ASF_HEADER_LENGTH] = {0,}; - long long filesize = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_ASF_HEADER_LENGTH] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; - } - - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } - - /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); - - if (filesize < _MMFILE_ASF_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); - ret = 0; - goto exit; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = 0; - startoffset = 0; + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_ASF_HEADER_LENGTH); - readed = mmfile_read (fp, buffer, _MMFILE_ASF_HEADER_LENGTH); if (_MMFILE_ASF_HEADER_LENGTH != readed) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - if (1 == _MMFileIsASFHeader (buffer)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected\n"); - #endif + if (1 == _MMFileIsASFHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif ret = 1; goto exit; } exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -780,62 +692,43 @@ exit: /* WMA Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidWMA (const char *mmfileuri) +int MMFileFormatIsValidWMA(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_ASF_HEADER_LENGTH 16 - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_ASF_HEADER_LENGTH] = {0,}; - long long filesize = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_ASF_HEADER_LENGTH] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; - } - - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } - - /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); - - if (filesize < _MMFILE_ASF_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); - ret = 0; - goto exit; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = 0; - startoffset = 0; + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_ASF_HEADER_LENGTH); - readed = mmfile_read (fp, buffer, _MMFILE_ASF_HEADER_LENGTH); if (_MMFILE_ASF_HEADER_LENGTH != readed) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - if (1 == _MMFileIsASFHeader (buffer)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected\n"); - #endif + if (1 == _MMFileIsASFHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif ret = 1; goto exit; } exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -846,62 +739,43 @@ exit: /* WMV Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidWMV (const char *mmfileuri) +int MMFileFormatIsValidWMV(MMFileIOHandle *pFileIO, const char *mmfileuri) { - #define _MMFILE_ASF_HEADER_LENGTH 16 - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_ASF_HEADER_LENGTH] = {0,}; - long long filesize = 0; +#define _MMFILE_ASF_HEADER_LENGTH 16 + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_ASF_HEADER_LENGTH] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; - } - - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } - - /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); - - if (filesize < _MMFILE_ASF_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); - ret = 0; - goto exit; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = 0; - startoffset = 0; + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_ASF_HEADER_LENGTH); - readed = mmfile_read (fp, buffer, _MMFILE_ASF_HEADER_LENGTH); if (_MMFILE_ASF_HEADER_LENGTH != readed) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - if (1 == _MMFileIsASFHeader (buffer)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected\n"); - #endif + if (1 == _MMFileIsASFHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif ret = 1; goto exit; } exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -911,63 +785,44 @@ exit: /* MMF Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidMMF (const char *mmfileuri) +int MMFileFormatIsValidMMF(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_MMF_HEADER_LENGTH 18 - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_MMF_HEADER_LENGTH] = {0,}; - long long filesize = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_MMF_HEADER_LENGTH] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; - } - - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } - - /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); - - if (filesize < _MMFILE_MMF_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); - ret = 0; - goto exit; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = 0; - startoffset = 0; + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_MMF_HEADER_LENGTH); - readed = mmfile_read (fp, buffer, _MMFILE_MMF_HEADER_LENGTH); if (_MMFILE_MMF_HEADER_LENGTH != readed) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - if (1 == _MMFileIsMMFHeader (buffer)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected\n"); - #endif + if (1 == _MMFileIsMMFHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif ret = 1; goto exit; } exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -978,63 +833,44 @@ exit: /* MMF Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidIMY (const char *mmfileuri) +int MMFileFormatIsValidIMY(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_IMY_HEADER_LENGTH 13 - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_IMY_HEADER_LENGTH] = {0,}; - long long filesize = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_IMY_HEADER_LENGTH] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; - } - - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } - - /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); - - if (filesize < _MMFILE_IMY_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); - ret = 0; - goto exit; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = 0; - startoffset = 0; + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_IMY_HEADER_LENGTH); - readed = mmfile_read (fp, buffer, _MMFILE_IMY_HEADER_LENGTH); if (_MMFILE_IMY_HEADER_LENGTH != readed) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - if (1 == _MMFileIsIMYHeader (buffer)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected\n"); - #endif + if (1 == _MMFileIsIMYHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif ret = 1; goto exit; } exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -1045,64 +881,45 @@ exit: /* AMR Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidAMR (const char *mmfileuri) +int MMFileFormatIsValidAMR(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_AMR_MAX_HEADER_SIZE 15 #define _MMFILE_AMR_MIN_HEADER_SIZE 6 - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_AMR_MAX_HEADER_SIZE] = {0,}; - long long filesize = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_AMR_MAX_HEADER_SIZE] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; - } - - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } - - /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); - - if (filesize < _MMFILE_AMR_MAX_HEADER_SIZE) { - debug_error ("header is too small.\n"); - ret = 0; - goto exit; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = 0; - startoffset = 0; + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); + readed = mmfile_read(fp, buffer, _MMFILE_AMR_MAX_HEADER_SIZE); - readed = mmfile_read (fp, buffer, _MMFILE_AMR_MAX_HEADER_SIZE); if (_MMFILE_AMR_MAX_HEADER_SIZE != readed) { - debug_error ("read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - if (1 == _MMFileIsAMRHeader (buffer)) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected\n"); - #endif + if (1 == _MMFileIsAMRHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif ret = 1; goto exit; } exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -1111,40 +928,33 @@ exit: /* Matroska Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidMatroska (const char *mmfileuri) +int MMFileFormatIsValidMatroska(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_EBML_MARKER_LENGTH 4 #define _MMFILE_MKV_READ_BUFFER_LENGTH 2048 - MMFileIOHandle *fp = NULL; - unsigned char* buffer = NULL; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_MKV_READ_BUFFER_LENGTH] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - int len_mask = 0x80, size = 1, n = 1, total = 0; + int len_mask = 0x80; + unsigned int size = 1, n = 1, total = 0; char probe_data[] = { 'm', 'a', 't', 'r', 'o', 's', 'k', 'a' }; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); - goto exit; - } + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - buffer = mmfile_malloc (_MMFILE_MKV_READ_BUFFER_LENGTH * sizeof(char)); - if (buffer == NULL) { - debug_error ( "buffer is null\n", readed); - ret = 0; - goto exit; - } + readed = mmfile_read(fp, buffer, _MMFILE_MKV_READ_BUFFER_LENGTH); - readed = mmfile_read (fp, buffer, _MMFILE_MKV_READ_BUFFER_LENGTH); if (_MMFILE_MKV_READ_BUFFER_LENGTH != readed) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } @@ -1152,7 +962,7 @@ int MMFileFormatIsValidMatroska (const char *mmfileuri) /* ebml header? */ if (buffer[0] != 0x1A || buffer[1] != 0x45 || buffer[2] != 0xDF || buffer[3] != 0xA3) { #ifdef __MMFILE_TEST_MODE__ - debug_msg ("This is not a EBML format\n"); + debug_msg("This is not a EBML format\n"); #endif ret = 0; goto exit; @@ -1161,21 +971,21 @@ int MMFileFormatIsValidMatroska (const char *mmfileuri) /* length of header */ total = buffer[4]; #ifdef __MMFILE_TEST_MODE__ - debug_msg ("Initial total header size = [0x%x]\n", total); + debug_msg("Initial total header size = [0x%x]\n", total); #endif while (size <= 8 && !(total & len_mask)) { - debug_error ("This case can not be handled yet...."); + debug_error("This case can not be handled yet...."); size++; len_mask >>= 1; } #ifdef __MMFILE_TEST_MODE__ - debug_msg ("Final total header size = [%d]\n", total); + debug_msg("Final total header size = [%d]\n", total); #endif if (size > 8) { - debug_error ("This case can not be handled yet...."); + debug_error("This case can not be handled yet...."); ret = 0; goto exit; } @@ -1184,17 +994,17 @@ int MMFileFormatIsValidMatroska (const char *mmfileuri) while (n < size) { total = (total << 8) | buffer[4 + n++]; - debug_error ("This case can not be handled yet...."); + debug_error("This case can not be handled yet...."); } /* Does the probe data contain the whole header? */ if (_MMFILE_MKV_READ_BUFFER_LENGTH < 4 + size + total) return 0; - for (n = 4+size ; n <= 4+size+total - sizeof (probe_data); n++) { - if (!memcmp (&buffer[n], probe_data, sizeof (probe_data))) { + for (n = 4 + size ; n <= 4 + size + total - sizeof(probe_data); n++) { + if (!memcmp(&buffer[n], probe_data, sizeof(probe_data))) { #ifdef __MMFILE_TEST_MODE__ - debug_msg ("String matroska found!!!\n"); + debug_msg("String matroska found!!!\n"); #endif ret = 1; goto exit; @@ -1202,13 +1012,8 @@ int MMFileFormatIsValidMatroska (const char *mmfileuri) } exit: - if (buffer) { - mmfile_free (buffer); - } - - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); return ret; } @@ -1217,7 +1022,7 @@ exit: /* QT Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidQT (const char *mmfileuri) +int MMFileFormatIsValidQT(MMFileIOHandle *pFileIO, const char *mmfileuri) { return 1; } @@ -1226,162 +1031,360 @@ int MMFileFormatIsValidQT (const char *mmfileuri) /* Flac Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidFLAC (const char *mmfileuri) +int MMFileFormatIsValidFLAC(MMFileIOHandle *pFileIO, const char *mmfileuri) { #define _MMFILE_FLAC_HEADER_LENGTH 5 /*fLaC*/ - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_FLAC_HEADER_LENGTH] = {0,}; - long long filesize = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_FLAC_HEADER_LENGTH] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } + } + + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); + + readed = mmfile_read(fp, buffer, _MMFILE_FLAC_HEADER_LENGTH); + + if (_MMFILE_FLAC_HEADER_LENGTH != readed) { + debug_error("read error. size = %d. Maybe end of file.\n", readed); + ret = 0; + goto exit; } - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); + if (1 == _MMFileIsFLACHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif + ret = 1; goto exit; } - /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); +exit: + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); + + return ret; +} + +/***********************************************************************/ +/* FLV(flash video) Header Check API */ +/***********************************************************************/ +EXPORT_API +int MMFileFormatIsValidFLV(MMFileIOHandle *pFileIO, const char *mmfileuri) +{ +#define _MMFILE_FLV_HEADER_LENGTH 4 /*FLV*/ + + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_FLV_HEADER_LENGTH] = {0, }; + int readed = 0; + int ret = 0; - if (filesize < _MMFILE_FLAC_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } + } + + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); + + readed = mmfile_read(fp, buffer, _MMFILE_FLV_HEADER_LENGTH); + + if (_MMFILE_FLV_HEADER_LENGTH != readed) { + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - ret = 0; + if (1 == _MMFileIsFLVHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif + ret = 1; + goto exit; + } - /* set begin and end point at the file */ - startoffset = 0; +exit: + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); + return ret; +} - readed = mmfile_read (fp, buffer, _MMFILE_FLAC_HEADER_LENGTH); - if (_MMFILE_FLAC_HEADER_LENGTH != readed) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); + +/***********************************************************************/ +/* REAL Header Check API */ +/***********************************************************************/ +EXPORT_API +int MMFileFormatIsValidREAL(MMFileIOHandle *pFileIO, const char *mmfileuri) +{ +#define _MMFILE_RMVB_HEADER_LENGTH 4 /*RMF*/ + + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_RMVB_HEADER_LENGTH] = {0, }; + int readed = 0; + int ret = 0; + + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } + } + + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); + + readed = mmfile_read(fp, buffer, _MMFILE_RMVB_HEADER_LENGTH); + + if (_MMFILE_RMVB_HEADER_LENGTH != readed) { + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - if (1 == _MMFileIsFLACHeader (buffer)) { + if (1 == _MMFileIsREALHeader(buffer)) { #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected\n"); + debug_msg("Header Detected\n"); #endif ret = 1; goto exit; } - exit: - if (fp) { - mmfile_close (fp); + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); + + return ret; +} + +/***********************************************************************/ +/* MPEGTS Header Check API */ +/***********************************************************************/ +#define MPEGTS_NONE 0x00 +#define MPEGTS_FECE 0x10 +#define MPEGTS_DVHS 0x20 +#define MPEGTS_PACKET 0x40 + +#define TS_PACKET_SIZE 188 +#define TS_DVHS_PACKET_SIZE 192 +#define TS_FEC_PACKET_SIZE 204 +#define TS_MAX_PACKET_SIZE 204 + +EXPORT_API +int MMFileFormatIsValidMPEGTS(MMFileIOHandle *pFileIO, const char *mmfileuri) +{ + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[TS_MAX_PACKET_SIZE] = {0, }; + int readed = 0; + int ret = 0; + + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } -return ret; + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); + + readed = mmfile_read(fp, buffer, TS_MAX_PACKET_SIZE); + + if (TS_MAX_PACKET_SIZE != readed) { + debug_error("read error. size = %d. Maybe end of file.\n", readed); + ret = 0; + goto exit; + } + + if (_MMFileIsMPEGTSHeader(fp) != MPEGTS_NONE) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif + ret = 1; + goto exit; + } + +exit: + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); + + return ret; } /***********************************************************************/ -/* FLV(flash video) Header Check API */ +/* MPEG-PS Header Check API */ /***********************************************************************/ EXPORT_API -int MMFileFormatIsValidFLV (const char *mmfileuri) +int MMFileFormatIsValidMPEGPS(MMFileIOHandle *pFileIO, const char *mmfileuri) { -#define _MMFILE_FLV_HEADER_LENGTH 4 /*FLV*/ +#define _MMFILE_MPEGPS_HEADER_LENGTH 4 - MMFileIOHandle *fp = NULL; - unsigned char buffer[_MMFILE_FLV_HEADER_LENGTH] = {0,}; - long long filesize = 0; + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_MPEGPS_HEADER_LENGTH] = {0, }; int readed = 0; - unsigned int startoffset = 0; int ret = 0; - if (NULL == mmfileuri) { - debug_error ("file source is NULL\n"); - return ret; + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } } - ret = mmfile_open (&fp, mmfileuri, MMFILE_RDONLY); - if (ret == MMFILE_UTIL_FAIL) { - debug_error ("error: mmfile_open\n"); + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); + + readed = mmfile_read(fp, buffer, _MMFILE_MPEGPS_HEADER_LENGTH); + + if (_MMFILE_MPEGPS_HEADER_LENGTH != readed) { + debug_error("read error. size = %d. Maybe end of file.\n", readed); + ret = 0; goto exit; } - /* Initialize the members of handle */ - mmfile_seek (fp, 0, MMFILE_SEEK_END); - filesize = mmfile_tell(fp); - mmfile_seek (fp, 0, MMFILE_SEEK_SET); + if (1 == _MMFileIsMPEGPSHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif + ret = 1; + goto exit; + } + +exit: + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); + + return ret; +} + +/***********************************************************************/ +/* MPEG AUDIO Header Check API */ +/***********************************************************************/ +EXPORT_API +int MMFileFormatIsValidMPEGAUDIO(MMFileIOHandle *pFileIO, const char *mmfileuri) +{ +#define _MMFILE_MPEGAUDIO_HEADER_LENGTH 4 + + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_MPEGAUDIO_HEADER_LENGTH] = {0, }; + int readed = 0; + int ret = 0; + + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } + } + + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); - if (filesize < _MMFILE_FLV_HEADER_LENGTH) { - debug_error ( "header is too small.\n"); + readed = mmfile_read(fp, buffer, _MMFILE_MPEGAUDIO_HEADER_LENGTH); + + if (_MMFILE_MPEGAUDIO_HEADER_LENGTH != readed) { + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - ret = 0; + if (1 == _MMFileIsMPEGAUDIOHeader(buffer)) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("Header Detected\n"); +#endif + ret = 1; + goto exit; + } - /* set begin and end point at the file */ - startoffset = 0; +exit: + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); - mmfile_seek (fp, startoffset, MMFILE_SEEK_SET); + return ret; +} - readed = mmfile_read (fp, buffer, _MMFILE_FLV_HEADER_LENGTH); - if (_MMFILE_FLV_HEADER_LENGTH != readed) { - debug_error ( "read error. size = %d. Maybe end of file.\n", readed); +/***********************************************************************/ +/* MPEG VIDEO Header Check API */ +/***********************************************************************/ +EXPORT_API +int MMFileFormatIsValidMPEGVIDEO(MMFileIOHandle *pFileIO, const char *mmfileuri) +{ +#define _MMFILE_MPEGVIDEO_HEADER_LENGTH 4 + + MMFileIOHandle *fp = pFileIO; + unsigned char buffer[_MMFILE_MPEGVIDEO_HEADER_LENGTH] = {0, }; + int readed = 0; + int ret = 0; + + if (fp == NULL) { + ret = mmfile_open(&fp, mmfileuri, MMFILE_RDONLY); + if (ret == MMFILE_IO_FAILED) { + debug_error("error: mmfile_open\n"); + goto exit; + } + } + + mmfile_seek(fp, 0L, MMFILE_SEEK_SET); + + readed = mmfile_read(fp, buffer, _MMFILE_MPEGVIDEO_HEADER_LENGTH); + + if (_MMFILE_MPEGVIDEO_HEADER_LENGTH != readed) { + debug_error("read error. size = %d. Maybe end of file.\n", readed); ret = 0; goto exit; } - if (1 == _MMFileIsFLVHeader (buffer)) { + if (1 == _MMFileIsMPEGVIDEOHeader(buffer)) { #ifdef __MMFILE_TEST_MODE__ - debug_msg ( "Header Detected\n"); + debug_msg("Header Detected\n"); #endif ret = 1; goto exit; } - exit: - if (fp) { - mmfile_close (fp); - } + if (pFileIO == NULL && fp != NULL) + mmfile_close(fp); -return ret; + return ret; } + + + /***********************************************************************/ /* Implementation of Internal Functions */ /***********************************************************************/ -static int _MMFileIsASFHeader (void *header) +static int _MMFileIsASFHeader(void *header) { - /* ID: 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C */ + /* ID: 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C */ unsigned char *s = header; - if ( (*(s + 0) == 0x30) && - (*(s + 1) == 0x26) && - (*(s + 2) == 0xB2) && - (*(s + 3) == 0x75) && - (*(s + 4) == 0x8E) && - (*(s + 5) == 0x66) && - (*(s + 6) == 0xCF) && - (*(s + 7) == 0x11) && - (*(s + 8) == 0xA6) && - (*(s + 9) == 0xD9) && - (*(s + 10) == 0x00) && - (*(s + 11) == 0xAA) && - (*(s + 12) == 0x00) && - (*(s + 13) == 0x62) && - (*(s + 14) == 0xCE) && - (*(s + 15) == 0x6C) ) { + if ((*(s + 0) == 0x30) && + (*(s + 1) == 0x26) && + (*(s + 2) == 0xB2) && + (*(s + 3) == 0x75) && + (*(s + 4) == 0x8E) && + (*(s + 5) == 0x66) && + (*(s + 6) == 0xCF) && + (*(s + 7) == 0x11) && + (*(s + 8) == 0xA6) && + (*(s + 9) == 0xD9) && + (*(s + 10) == 0x00) && + (*(s + 11) == 0xAA) && + (*(s + 12) == 0x00) && + (*(s + 13) == 0x62) && + (*(s + 14) == 0xCE) && + (*(s + 15) == 0x6C)) { return 1; } @@ -1389,7 +1392,7 @@ static int _MMFileIsASFHeader (void *header) return 0; } -static int _MMFileIsAMRHeader (void *header) +static int _MMFileIsAMRHeader(void *header) { #define _MMFILE_AMR_SINGLE_CH_HEADER_SIZE 6 #define _MMFILE_AMR_SINGLE_CH_HEADER "#!AMR\n" @@ -1405,10 +1408,10 @@ static int _MMFileIsAMRHeader (void *header) unsigned char *s = header; - if (!memcmp (s, _MMFILE_AMR_SINGLE_CH_HEADER, _MMFILE_AMR_SINGLE_CH_HEADER_SIZE) || - !memcmp (s, _MMFILE_AMR_WB_SINGLE_CH_HEADER, _MMFILE_AMR_WB_SINGLE_CH_HEADER_SIZE) || - !memcmp (s, _MMFILE_AMR_MULTI_CH_HEADER, _MMFILE_AMR_MULTI_CH_HEADER_SIZE) || - !memcmp (s, _MMFILE_AMR_WB_MULTI_CH_HEADER, _MMFILE_AMR_WB_MULTI_CH_HEADER_SIZE)) { + if (!memcmp(s, _MMFILE_AMR_SINGLE_CH_HEADER, _MMFILE_AMR_SINGLE_CH_HEADER_SIZE) || + !memcmp(s, _MMFILE_AMR_WB_SINGLE_CH_HEADER, _MMFILE_AMR_WB_SINGLE_CH_HEADER_SIZE) || + !memcmp(s, _MMFILE_AMR_MULTI_CH_HEADER, _MMFILE_AMR_MULTI_CH_HEADER_SIZE) || + !memcmp(s, _MMFILE_AMR_WB_MULTI_CH_HEADER, _MMFILE_AMR_WB_MULTI_CH_HEADER_SIZE)) { return 1; } @@ -1416,7 +1419,7 @@ static int _MMFileIsAMRHeader (void *header) return 0; } -static int _MMFileIsIMYHeader (void *header) +static int _MMFileIsIMYHeader(void *header) { unsigned char *s = header; @@ -1427,13 +1430,13 @@ static int _MMFileIsIMYHeader (void *header) return 0; } -static int _MMFileIsMIDHeader (void *header) +static int _MMFileIsMIDHeader(void *header) { unsigned char *s = header; if (!memcmp(s, "MThd", 4)) { /*general MIDI*/ return 1; - } else if (!memcmp (s, "XMF_", 4)) { /*XMF*/ + } else if (!memcmp(s, "XMF_", 4)) { /*XMF*/ return 1; } else if (!memcmp(s, "IREZ", 4)) { return 1; /*RMF format*/ @@ -1442,19 +1445,19 @@ static int _MMFileIsMIDHeader (void *header) return 0; } -static int _MMFileIsMMFHeader (void *header) +static int _MMFileIsMMFHeader(void *header) { #define _MMFILE_MMF_TYPE_POSITION ((char)0x11) unsigned char *s = header; - if(!memcmp (s, "MMMD", 4)) { + if (!memcmp(s, "MMMD", 4)) { /* warning: comparison is always true due to limited range of data type */ - if( *(s + _MMFILE_MMF_TYPE_POSITION) <= 0x2F ) { + if (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x2F) { return 1; - } else if (((*(s + _MMFILE_MMF_TYPE_POSITION) >= 0x30) && (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x38)) // MA3, MA5 type - || ((*(s + _MMFILE_MMF_TYPE_POSITION) >= 0x40) && (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x48)) - || ((*(s + _MMFILE_MMF_TYPE_POSITION) >= 0x50) && (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x58)) - || ((*(s + _MMFILE_MMF_TYPE_POSITION) == 0xF0))) { + } else if (((*(s + _MMFILE_MMF_TYPE_POSITION) >= 0x30) && (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x38)) /* MA3, MA5 type */ + || ((*(s + _MMFILE_MMF_TYPE_POSITION) >= 0x40) && (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x48)) + || ((*(s + _MMFILE_MMF_TYPE_POSITION) >= 0x50) && (*(s + _MMFILE_MMF_TYPE_POSITION) <= 0x58)) + || ((*(s + _MMFILE_MMF_TYPE_POSITION) == 0xF0))) { return 1; } @@ -1464,11 +1467,11 @@ static int _MMFileIsMMFHeader (void *header) } -static int _MMFileIsAVIHeader (void *header) +static int _MMFileIsAVIHeader(void *header) { unsigned char *s = header; - if (!memcmp(s, "RIFF", 4) && !memcmp(s+8, "AVI", 3)) { + if (!memcmp(s, "RIFF", 4) && !memcmp(s + 8, "AVI", 3)) { return 1; } @@ -1476,11 +1479,11 @@ static int _MMFileIsAVIHeader (void *header) } -static int _MMFileIsWAVHeader (void *header) +static int _MMFileIsWAVHeader(void *header) { unsigned char *s = header; - if (!memcmp(s, "RIFF", 4) && !memcmp(s+8, "WAVE", 4)) { + if (!memcmp(s, "RIFF", 4) && !memcmp(s + 8, "WAVE", 4)) { return 1; } @@ -1489,27 +1492,27 @@ static int _MMFileIsWAVHeader (void *header) -static int _MMFileIsMP4Header (void *header) +static int _MMFileIsMP4Header(void *header) { unsigned char *s = header; - if (!memcmp (s, "moov", 4) || - !memcmp (s, "mdat", 4) || - !memcmp (s, "ftyp", 4) || - !memcmp (s, "free", 4) || - !memcmp (s, "uuid", 4) || - !memcmp (s, "skip", 4) || - - !memcmp (s, "PICT", 4) || - !memcmp (s, "wide", 4) || - !memcmp (s, "prfl", 4)) { + if (!memcmp(s, "moov", 4) || + !memcmp(s, "mdat", 4) || + !memcmp(s, "ftyp", 4) || + !memcmp(s, "free", 4) || + !memcmp(s, "uuid", 4) || + !memcmp(s, "skip", 4) || + + !memcmp(s, "PICT", 4) || + !memcmp(s, "wide", 4) || + !memcmp(s, "prfl", 4)) { return 1; } return 0; } -static int _MMFileIsOGGHeader (void *header) +static int _MMFileIsOGGHeader(void *header) { unsigned char *s = header; @@ -1520,19 +1523,115 @@ static int _MMFileIsOGGHeader (void *header) return 0; } -static int _MMFileIsMP3Header (void *header) +static int _MMFileIsREALHeader(void *header) +{ + unsigned char *s = header; + + if (!memcmp(s, ".RMF", 4)) { + return 1; + } + + return 0; +} + +static int _MMFileIsMPEGTSHeader(MMFileIOHandle *fp) +{ + unsigned char header[TS_MAX_PACKET_SIZE] = {0, }; + unsigned char *s = NULL; + + mmfile_seek(fp, 0, MMFILE_SEEK_SET); + mmfile_read(fp, header, sizeof(header)); + + s = (unsigned char *)memchr(header, 0x47, sizeof(header)); + + if (s) { + unsigned char buffer[TS_PACKET_SIZE] = {0, }; + unsigned int startoffset = s - header + 1; + + mmfile_seek(fp, startoffset, MMFILE_SEEK_SET); + mmfile_read(fp, buffer, sizeof(buffer)); + + if (buffer[sizeof(buffer) - 1] & 0x47) { + return MPEGTS_PACKET; + } else { + unsigned char dvhs_buf[TS_DVHS_PACKET_SIZE] = {0, }; + + mmfile_seek(fp, startoffset, MMFILE_SEEK_SET); + mmfile_read(fp, dvhs_buf, sizeof(dvhs_buf)); + + if (dvhs_buf[sizeof(dvhs_buf) - 1] & 0x47) { + return MPEGTS_DVHS; + } else { + unsigned char fec_buf[TS_FEC_PACKET_SIZE] = {0, }; + + mmfile_seek(fp, startoffset, MMFILE_SEEK_SET); + mmfile_read(fp, fec_buf, sizeof(fec_buf)); + + if (fec_buf[sizeof(fec_buf) - 1] & 0x47) { + return MPEGTS_FECE; + } + } + } + } + + return MPEGTS_NONE; +} + +static int _MMFileIsMPEGPSHeader(void *header) +{ + unsigned char *s = header; + + if ((*(s + 0) == 0x00) && + (*(s + 1) == 0x00) && + (*(s + 2) == 0x01) && + (*(s + 3) == 0xba)) { /* mpeg-ps header */ + return 1; + } + + return 0; +} + +static int _MMFileIsMPEGAUDIOHeader(void *header) +{ + unsigned char *s = header; + + if ((*(s + 0) == 0xFF) && + (*(s + 1) == 0xFE)) { /* mpeg audio layer 1 header */ + return 1; + } + + return 0; +} + +static int _MMFileIsMPEGVIDEOHeader(void *header) +{ + unsigned char *s = header; + + if ((*(s + 0) == 0x00) && + (*(s + 1) == 0x00) && + (*(s + 2) == 0x01) && + (*(s + 3) == 0xb3)) { /* mpeg1 video header */ + return 1; + } + + return 0; +} + +static int _MMFileIsMP3Header(void *header) { unsigned long head = 0; unsigned char *headc = header; - unsigned int bitrate, layer, length, mode; - unsigned int coef,samplerate, version, channels; + unsigned int bitrate, layer, length/*, mode*/; + unsigned int coef, samplerate, version/*, channels*/; static const unsigned int mp3types_bitrates[2][3][16] = { { {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448,}, {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384,}, - {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,}}, + {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,} + }, { {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256,}, {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,}, - {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,}}, + {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,} + }, }; static const unsigned int mp3types_freqs[3][3] = { @@ -1541,13 +1640,18 @@ static int _MMFileIsMP3Header (void *header) {44100, 48000, 32000} }; - static const unsigned int mp3FrameCoef[4][4] = {{-1,48,144,72},{-1,-1,-1,-1},{-1,48,144,72},{-1,48,144,144}}; + static const unsigned int mp3FrameCoef[4][4] = { + { -1, 48, 144, 72}, + { -1, -1, -1, -1}, + { -1, 48, 144, 72}, + { -1, 48, 144, 144} + }; /* header */ - head = (*(headc+0)<<24 | *(headc+1)<<16 | *(headc+2)<<8 | *(headc+3)); + head = (*(headc + 0) << 24 | *(headc + 1) << 16 | *(headc + 2) << 8 | *(headc + 3)); if ((head & 0xffe00000) != 0xffe00000) { - return 0; + return 0; } /* we don't need extension, copyright, original or @@ -1555,7 +1659,7 @@ static int _MMFileIsMP3Header (void *header) head >>= 6; /* mode */ - mode = head & 0x3; + /*mode = head & 0x3;*/ head >>= 3; /* padding */ @@ -1571,7 +1675,7 @@ static int _MMFileIsMP3Header (void *header) /* bitrate index */ bitrate = head & 0xF; - + if (bitrate == 15) { return 0; } @@ -1593,27 +1697,27 @@ static int _MMFileIsMP3Header (void *header) } /* lookup */ - channels = (mode == 3) ? 1 : 2; + /*channels = (mode == 3) ? 1 : 2;*/ samplerate = mp3types_freqs[version > 0 ? version - 1 : 0][samplerate]; { /* calculating */ bitrate = mp3types_bitrates[version == 3 ? 0 : 1][layer - 1][bitrate]; coef = mp3FrameCoef[version][layer]; - if(layer == 1) - length = length*4; + if (layer == 1) + length = length * 4; - length = length + ((coef*bitrate*1000)/samplerate); + length = length + ((coef * bitrate * 1000) / samplerate); } return length; } -static int _MMFileSearchID3Tag (MMFileIOHandle *fp, unsigned int *offset) +static int _MMFileSearchID3Tag(MMFileIOHandle *fp, unsigned int *offset) { #define _MMFILE_MP3_TAGV2_HEADER_LEN 10 -#define _MMFILE_GET_INT_NUMBER(buff) (int)( (((int)(buff)[0]) << 24) | (((int)(buff)[1]) << 16) | (((int)(buff)[2]) << 8) | (((int)(buff)[3]))) +#define _MMFILE_GET_INT_NUMBER(buff) (int)((((int)(buff)[0]) << 24) | (((int)(buff)[1]) << 16) | (((int)(buff)[2]) << 8) | (((int)(buff)[3]))) - unsigned char tagHeader[_MMFILE_MP3_TAGV2_HEADER_LEN] = {0,}; + unsigned char tagHeader[_MMFILE_MP3_TAGV2_HEADER_LEN] = {0, }; unsigned int tagInfoSize = 0; unsigned int acc_tagsize = 0; int tagVersion = 0; @@ -1625,44 +1729,44 @@ static int _MMFileSearchID3Tag (MMFileIOHandle *fp, unsigned int *offset) *offset = 0; mmfile_seek(fp, 0, MMFILE_SEEK_SET); - + _START_TAG_SEARCH: - readed = mmfile_read (fp, tagHeader, _MMFILE_MP3_TAGV2_HEADER_LEN); + readed = mmfile_read(fp, tagHeader, _MMFILE_MP3_TAGV2_HEADER_LEN); if (readed != _MMFILE_MP3_TAGV2_HEADER_LEN) { - debug_error ("read error occured.\n"); + debug_error("read error occured.\n"); return 0; } - if (memcmp (tagHeader, "ID3", 3) == 0) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("'ID3' found.\n"); - #endif + if (memcmp(tagHeader, "ID3", 3) == 0) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("'ID3' found.\n"); +#endif } else { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("'ID3' not found.\n"); - #endif +#ifdef __MMFILE_TEST_MODE__ + debug_msg("'ID3' not found.\n"); +#endif goto search_end; } /**@note weak id3v2 tag checking*/ if (tagHeader[3] != 0xFF && tagHeader[4] != 0xFF && - (tagHeader[6] & 0x80) == 0 && (tagHeader[7] & 0x80) == 0 && - (tagHeader[8] & 0x80) == 0 && (tagHeader[9] & 0x80) == 0) { - #ifdef __MMFILE_TEST_MODE__ - debug_msg ("good ID3V2 tag.\n"); - #endif + (tagHeader[6] & 0x80) == 0 && (tagHeader[7] & 0x80) == 0 && + (tagHeader[8] & 0x80) == 0 && (tagHeader[9] & 0x80) == 0) { +#ifdef __MMFILE_TEST_MODE__ + debug_msg("good ID3V2 tag.\n"); +#endif } else { - debug_warning ("It's bad ID3V2 tag.\n"); + debug_warning("It's bad ID3V2 tag.\n"); goto search_end; } tagVersion = tagHeader[3]; if (tagVersion > 4) { - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("Tag version not supported\n"); - #endif +#endif goto search_end; } @@ -1672,9 +1776,9 @@ _START_TAG_SEARCH: /**@note unfortunately, some contents has many id3 tag.*/ acc_tagsize += tagInfoSize; - #ifdef __MMFILE_TEST_MODE__ +#ifdef __MMFILE_TEST_MODE__ debug_msg("tag size: %u, offset: %u\n", tagInfoSize, acc_tagsize); - #endif +#endif mmfile_seek(fp, acc_tagsize, MMFILE_SEEK_SET); *offset = acc_tagsize; @@ -1687,7 +1791,7 @@ search_end: return ret; } -static int _MMFileIsFLACHeader (void *header) +static int _MMFileIsFLACHeader(void *header) { unsigned char *s = header; @@ -1698,7 +1802,7 @@ static int _MMFileIsFLACHeader (void *header) return 0; } -static int _MMFileIsFLVHeader (void *header) +static int _MMFileIsFLVHeader(void *header) { unsigned char *s = header; |