From: Bram R. <bra...@nx...> - 2007-12-19 22:29:28
|
Dear all, New releases are available: MTK version 5.3.2 CPFSPD version 1.10.2 The releases are installed at their regular location within NXP in eindhoven: /home/nlv21431/utils/... \\wbi.nxp.com\htchome\nlv21431\utils\... They are available for download from http://sourceforge.net/projects/pf= spd =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D CPFSPD release notes =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Done in release 1.10.2 (dd. Dec. 18, 2007) ------------------------------------------ Highlights - Some bugfixes, - When writing a file header, the whole file is now allocated on disk in a very efficient way. Therefore, we recommend application to open the file with the correct number of frames.= This results in 1) less file fragmentation on NTFS and 2) performance improvement on network disks and win32/cygwin local disks. - Performance improvement of >8 bit files. Bug fixes - Application segmentation fault on Linux. Following calling sequence failed at the p_read_header() routine: p_create_header(&out_header, P_COLOR_444_PL, P_50HZ); p_write_header("test.yuv", &out_header); p_close_file("test.yuv"); p_read_header("test.yuv", &out_header); More general: the program may crash when accessing a closed file in a different mode than it was previously used. Underlaying cause: when accessing a file in a different mode, it is first closed, then opened in the appropriate mode. This test was incomplete: erreonously, a closed file is closed again, effectively calling fclose(NULL). This is implementation specific; some platforms ignore fclose(NULL). - Bug #1506617: Growing network file with large chunk on win fails. Situation: application executing on win32/cygwin, writing a file on a network share; a frame is written a couple of Gbytes beyond the higest written location in the file. The operation failes with a timeout error. A workaround is implemented, catching the timeout error and reissuing the failed operation. The workaround is transparant to the application. - In the previous release, only writing files in big-endian mode was supported. So, executing p_rewrite_header() on a little-endian file was not supported. Unfortunately cpfspd failed to signal this condition as an error. Instead, the operation was carried out, silently modifying the endian bit in the header to big-endian. This resulted in incorrect data interpretation of files containing components > 8 bits. This problem is resolved by supporting the creation and modification of both big- and little-endian files. Functionality - The display aspect ratio setting can now have value P_AS_WH, indicating that the intended aspect ratio of the diplay is equal to the width/height ratio in pixels. This value is an indication of square pixels as long as the width/height ratio remains the same. - Function p_create_ext_header() can now be called with value P_UNKNOWN_ASPECT_RATIO in the ratio parameter. This causes an automatic 16:9/4:3 selection. See cpfspd.h for details on the selection algorithm. Miscellaneous - Module cpfspd_fio.c uses assembly code for cpu type checks and speed optimization that is now also activated on cygwin (formerly, this was only possible on win32). - Files written on the windows (win32 or cygwin) platforms contained unused space at the end due to the unbuffered file I/O. As a consequence, the file length depended on the platform. This is no longer the case. On win32/cygwin, the file is truncated to the proper length. - Due to best-fit allocation strategy of NTFS, pfspd files could become= severely fragmented, which interferes with playback performance. This is fixed in p_write_hdr() by seeking to the required file size, then writing a few bytes. NTFS now allocates a large extent, so fragmentation is not a problem (unless the disk is almost full). As a side benefit, performance on network disks is also improved. Further, write performance on win32/cygwin takes full advantage of asynchronous file I/O if the file is allocated in advance. - Cpfspd will write 10-16 bit files according to the system endianness.= Prevously, all files were written with bit-endian data organization. This allows optimization of the 16-bit read/write functions. - The performance to access >8 bit files is improved. In the cpfspd_low module, a copy operation to an intermediate buffer is avoided if both: + memory format is equal to the file format + system endianness is equal to the file endianness (for 8 bit files, this optimization was already available). - Any output parameter of p_get_comp_2() may be NULL. In case you need only a subset of the values (so you do not need to allocate an output variable). - New errors are introduced to catch header values that cannot be represented in the pfspd file format: P_TOO_MANY_IMAGES, P_ILLEGAL_INTERLACE, P_ILLEGAL_COMP_SIZE, P_ILLEGAL_LIN_SBSMPL, P_ILLEGAL_PIX_SBSMPL, P_ILLEGAL_PHSHFT. In order to support the new errors, all defines related to header formatting are moved from cpfspd_low.c to cpfspd.h: P_SNR_IMAGES, P_SNR_COMPON, P_SNR_FD_RECS, P_SNR_AUXDAT_RECS, P_SBYTES_REC, P_SENDIAN_CODE, P_SAUX_HDR_RECS, P_LEN_GLOB_STR, P_SIMA_FREQ, P_SLIN_FREQ, P_SPIX_FREQ, P_SACT_LINES, P_SACT_PIXEL, P_SINTERLACE, P_SH_PP_SIZE, P_SV_PP_SIZE, P_LEN_GLOB_ATT, P_NUM_GLOB_RECS, P_SLIN_IMAGE, P_SPIX_LINE, P_LEN_COMP_STR, P_STEM_SBSMPL, P_SLIN_SBSMPL, P_SPIX_SBSMPL, P_LEN_COMP_ATT, P_STEM_PHSHFT, P_SLIN_PHSHFT, P_SPIX_PHSHFT. - Always use large file I/O when compiling with Visual C++. It appears that many users compile the cpfspd library by simply inclu= ding the source code in their VC++ project, without defining FIO_WIN32_FIL= E in the project properties. Hence, no large file support was compiled. The FIO_WIN32_FILE define is now checked when __MSVC__ is defined. - Speed test program uses HD image size (not SD anymore) as default. - The speed test program puts the proper number of frames in the header before writing the header to disk. This triggers the new feature of fast disk allocation. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D MTK release notes =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Done in release 5.3.2 (dd. Dec. 18, 2007) ----------------------------------------- Highlights MTK: Support of compiler specific flags. MTK: Support for MS Visual Studio version 8. MTK: Simplification to avoid use of recursive make for dependen= cy build. MTK: New TM cores tm3271 and tm3182. Setup: new site nxpehv Misc: Modules magic and parse_options under LGPL licence. Bug fixes - The perl script to modify the tmsim/ttisim stat file for use by proview did not work on cygwin, due to line-end and '\n' issues. This has been resolved. Functionality - Microsoft Visual Studio version 8 is supported. The makefile system automatically determines which version is installed. Currently version 7 (.NET) and version 8 are recognized= . Depending on the version, proper debug and optimization options are set. - New settings in Makefile: DFLAGS_UNIX and DFLAGS_WINDOWS Environment specific DFLAGS used to overrule both the generic DFLAGS value and the MTK default flags. DFLAGS_WINDOWS is used when building on cygwin DFLAGS_UNIX is used when building on other platforms - New settings in Makefile: CFLAGS_<COMP>, CXXFLAGS_<COMP>, LFLAGS_<COMP> and CLFLAGS_<COMP> Compiler specific values used to overrule both the generic values CFLAGS, CXXFLAGS, LFLAGS, CLFLAGS, and the MTK default flags. <COMP> is GCC, ICC, MSVC, SGI or TM. Use of these compiler specific variables is preferred over the use of the generic variables in view of the differences of available options and syntax. - New settings in Makefile: CFLAGS2_<COMP>, CXXFLAGS2_<COMP> LFLAGS2_<COMP> and CLFLAGS2_<COMP>. Compiler specific flags appended to the MTK defaults. <COMP> is GCC, ICC, MSVC, SGI or TM. Use of these compiler specific variables is preferred over the use of the generic variables in view of the differences of available options and syntax. - Added LINK_CPP setting. Use LINK_CPP=3D1 in the Makefile to allow applications only using C sources with libraries that contains C++ sources. This flag forces the choice of the link command. - When using the Trimedia compiler, C++ sources are now compiled with the tmc++ command, in a similar fashion as the gcc/g++ distinction. Similarly, the linker command is adaptive when C++ sources are part of the application. Up till now, mtk did not support C++ compilation with the TriMedia compiler. - The top level make dependency of "all" is changed. Now $(TARGET) is mentioned explicitely as file depencency, not just the phony target "all". This allows an application Makefile to use $(TARGET) in further depencencies to e.g. execute a program automatically to generate an output file. - New Makefile variable is available: EXTRA_CLEAN. This specifies a lis= t of base directories that are added to the cleanall and mrproper comma= nds. For cleanall, only platform specific subdirectories are removed; for mrproper, the entire base directory is removed. - Trimedia cores tm3271 and tm3182 are now supported. - The TCS_DIR setting in Make.env may direct to the full path of the trimedia comiler installation - similar to the commonly known TCS setting. This is convenient in case trimedia builds are only performed on the windows platform. - The name of the readme file generated when building a release distribution kit is changed from <name>.readme to <name>.txt to simplify use of th= e file on windows systems and websites. Miscellaneous - The licence conditions of the parse_options module changed from GPL t= o LGPL. - The licence conditions of the magic module changed from GPL to LGPL. - Default TCS release at natlab updated to version 5.1. - The TMSIMFLAGS variable in the sample Makefile is set to "-v -memorydelay 30 -clockfrequency 300000000 -clockratio 2 1 1 -memorysize 134217728" to override the "-v" default of Make.mtk. This serves as an applicati= on example. - For TriMedia compiler, the *.i files are moved from the src dir to the object dir, similar to the *.t and *.s files. - Output of "gmake dump" is restructured to distingush environment settings, makefile settings and mtk internal variables. - The perl code in the invoke script prog.sh is adapted to comply to "good coding habits" by applying "use strict" and "use warnings". - On cygwin, the file name of the executable in the $(TARGET) variable has the .exe extension. This way, the $(TARGET) value is consistent with the actual generated filename. Background: on cygwin/windows, the gcc compiler generates a xyz.exe file even if the .exe extension is not passed to the linker. - In all mtk releases up till now, the main make invokation took care of depencency generation, then a sub make process was spawned to perform the actual build. This mechanism is changed such that the sub make is not required anymore. User impact should be minimal. One consequence is that the definition of "INCDEPFILE=3D" is not required anymore to invoke a sub-make from the main Makefile. This mechanism is commonly used, but it was never well documented. Now, mtk integration in large projects and makefile behavior is more straightforward. - The msvc commands now contain the full pathname, to avoid that their use depends on the order of the command search path in $PATH. Especially there may be conflicts with the "link" command. A similar approach is followed for the commands of the trimedia compiler. Regards, Bram. -- Bram Riemens, Senior Principal NXP Semiconductors / Corporate I&T / Research Email: bra...@nx... <--- New address and phone since June 2007 --> Phone: +31 40 27 25910; Fax: +31 40 27 44639 High Tech Campus 32 (floor 1, office 140) 5656 AE Eindhoven, The Netherlands The information contained in this message is confidential and may be legally privileged. The message is intended solely for the addressee(s)= . If you are not the intended recipient, you are hereby notified that any us= e, dissemination, or reproduction is strictly prohibited and may be unlawf= ul. If you are not the intended recipient, please contact the sender by ret= urn e-mail and destroy all copies of the original message.= |