dirac-1.0.2/0000777000204200017500000000000011144427345007601 500000000000000dirac-1.0.2/ChangeLog0000664000204200017500000220252411144406476011302 000000000000002009-02-10 14:12 asuraparaju * win32/VisualStudio/Makefile.am: Include YUV420ItoYUV422I.vcproj and YUV422ItoYUV420I.vcproj in list of distribution files. Author: Anuradha Suraparaju 2009-02-10 14:04 asuraparaju * win32/: VS2003/libdirac_common/libdirac_common.vcproj, VisualStudio/libdirac_common/libdirac_common.vcproj: Include band_codec_template.h in list of headers. Author: Anuradha Suraparaju 2009-02-10 12:46 asuraparaju * libdirac_common/: Makefile.am, band_codec.cpp, band_codec_template.cpp, band_codec_template.h, band_vlc.cpp: Renamed band_codec_template.cpp to band_codec_template.h Author: Anuradha Suraparaju 2009-02-10 11:32 asuraparaju * ChangeLog: Update ChangeLog Author: Anuradha Suraparaju 2009-02-10 11:17 asuraparaju * NEWS: Include Dirac 1.0.2 release notes. Author: Anuradha Suraparaju 2009-02-10 11:17 asuraparaju * README: Updated notes to reflect API changes. Some cosmetic changes as well. Author: Anuradha Suraparaju 2009-02-10 11:16 asuraparaju * configure.ac: Update release id to 1.0.2. Author: Anuradha Suraparaju 2009-02-10 11:16 asuraparaju * AUTHORS: Update contributors list. Author: Anuradha Suraparaju 2009-02-10 11:04 asuraparaju * doc/documentation/code/programmers_guide/encoder_data_structs.htm: The default wavelet filters used have changed to DD13_7 for both intra and inter pictures. 2009-02-10 10:57 asuraparaju * doc/documentation/code/programmers_guide/encoder_data_structs.htm: Fix instrumentation structure documentation. The field names have changed in the API to be super blocks and not macro blocks. 2009-02-09 20:45 asuraparaju * tests/samples.at: Remove test for full_search option. Add test for modified block sizes. Author: asuraparaju@diracvideo.org 2009-02-09 20:44 asuraparaju * libdirac_common/band_vlc.h: Fix GCC 4.1.2 warning. Author: asuraparaju@diracvideo.org 2009-01-21 16:23 asuraparaju * decoder/decmain.cpp: Actually fix the issue addressed in (082d7a2) (ignored result from fwrite) Ubuntu forcibly enables FORTIFY_SOURCE, which warns on unused return values on fwrite. This may either be fixed by: #undef _FORTIFY_SOURCE #define _FORTIFY_SOURCE 0 Or, by causing the application to exit on a short write. NB, it could also be solved by doing a series of fwrites(), and checking ferror() at the end of them. FORTIFY_SOURCE would still fail in this case. Author: David Flynn 2009-01-21 16:22 asuraparaju * decoder/decmain.cpp: fix build error with -Werror and igored return value from fwrite(3c) It should be noted that the return value from fwrite is mostly useless: if the arguments to fwrite do not set size=1, then there is little hope of discovering howmuch data had been written before the error. C99 states: If an error occurs, the resulting value of the file position indicator for the stream is indeterminate. Error squashed by discarding result. Author: David Flynn 2009-01-21 16:22 asuraparaju * libdirac_encoder/quant_chooser.cpp: encoder: remove limit on DC quantizer. Previous fixes should remove the requirement to limit qf on DC blocks to 4. Author: David Flynn 2009-01-21 16:21 asuraparaju * libdirac_common/common.cpp: encoder: Ensure that there is atleast 1 codeblock per subband Author: David Flynn 2009-01-21 16:20 asuraparaju * libdirac_encoder/picture_compress.cpp: encoder: remove dc quantizer=0 hacks Fixes in bitstream handling and quant selection should've negated the need for these hacks. Author: David Flynn Committer: David Flynn 2009-01-21 16:20 asuraparaju * libdirac_encoder/picture_compress.cpp: encoder: dont quantize the first dc codeblock - Attempt to reduce DC errors by effectively not quantizing the first value (predicted from zero). Author: David Flynn 2009-01-21 16:19 asuraparaju * libdirac_common/common.cpp: encoder: Fix (and increase number of ) default codeblocks - Fix previously incorrect codeblock calculation - Create 4x4 codeblocks for DC subband and 12x12 for all others Author: David Flynn 2009-01-21 16:18 asuraparaju * libdirac_encoder/quant_chooser.cpp: encoder: fix calculation of max value in a subband for quant selection Author: David Flynn 2009-01-21 16:18 asuraparaju * libdirac_byteio/byteio.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/band_codec_template.cpp, libdirac_common/band_vlc.cpp, libdirac_common/band_vlc.h, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: bandcodec: IntraDCBandVLC needs to derive from GenericIntraDCBandCodec - modified the band codec files to add a GenericIntraDCBandCodec class that inherits from the GenericBandCodecClass. It defines the common DC specific functions like GetPrediction, ClearBlock, DecodeCoeffBlock etc. - The IntraDCBand classes inherit from the GenericBandCodecClass now. - modifed the ArithmeticCodecToVLCAdapter class to include the Compress/Decompress functions and to have pure virtual WorkCode/WorkDecode functions like the ArithCodec class. Author: Anuradha Suraparaju Committer: David Flynn 2009-01-21 16:17 asuraparaju * libdirac_byteio/byteio.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/band_codec_template.cpp, libdirac_common/band_vlc.cpp, libdirac_common/band_vlc.h: bandcodec: Remove code duplication in band_vlc.cpp BandVLC + friends is mostly a copy and paste of BandCodec + friends. - Rename BandCodec to GenericBandCodec - Template GenericBandCodec to take some EntropyCoder - typedef BandCodec to be GenericBandCodec with ArithCodec - implement a translator for ArithCodec style calls -> VLC ByteIO calls. - derive BandVLC from GenericBandCodec and above translator. Author: David Flynn 2009-01-21 16:16 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: bandcodec: fix DC prediction when decoding Author: Anuradha Suraparaju Committer: David Flynn 2009-01-21 16:16 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: bandcodec: fix handling intra dc skipped codeblocks - The error(residue) term for a skipped codeblock is zero This must be recorded to correctly set nhood_zero for subsequent blocks - The values in the skipped codeblock must be predicted with no (ie zero) error term being added. Author: David Flynn Committer: David Flynn 2009-01-21 16:15 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: bandcodec: fix IntraDC bitstream incompatability with codeblocks - Fixes bitstream incompatability with codeblocks - IntraDCBandCodec duplicated too much copy+paste code from BandCodec. - Implements a per pixel function call to provide specialization. This could be templated if performance really is an issue. Author: David Flynn Committer: David Flynn 2009-01-21 16:15 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: bandcodec: eliminate sepcialized lfbandcodec - Fixes bitstream incompatability with codeblocks - Specialization has been moved into bandcodec. due to too much copy and paste code duplication. Author: David Flynn 2009-01-21 16:14 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: bandcodec: remove unused variables Author: David Flynn Committer: David Flynn 2008-12-16 12:21 asuraparaju * libdirac_encoder/rate_control.cpp: Added a condition to stop bit-rate overruns. Author: Thomas Davies 2008-12-16 12:19 asuraparaju * dirac.pc.in: Include Maths library in link line if required on the platform of choice. Author: asuraparaju@diracvideo.org 2008-12-16 12:19 asuraparaju * libdirac_byteio/mvdataelement_byteio.h: Fix doxygen warnings. Author: asuraparaju@diracvideo.org 2008-12-16 12:18 asuraparaju * libdirac_common/band_codec.cpp: Fix problem building with -Werror and dumb compilers Author: David Flynn 2008-11-20 12:05 asuraparaju * doc/documentation/code/programmers_guide/: common_data_structs.htm, encoder_api_functions.htm, encoder_api_overview.htm, encoder_api_reference.htm, encoder_data_structs.htm, index.htm, intro.htm: Update the programmer's guide for version 1.0.2 of the release. 2008-11-19 15:02 asuraparaju * win32/VisualStudio/dirac.sln: Add new projects to the solution file. Author: Anuradha Suraparaju 2008-11-19 10:28 asuraparaju * libdirac_byteio/: seqparams_byteio.cpp, seqparams_byteio.h: Manually delete seqparams_byteio.cpp{h} to keep in sync with GIT repository. 2008-11-19 10:25 asuraparaju * libdirac_common/dirac_types.h, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h: api: Add dirac_encoder_pts_offset support, bump version to 1.0.2 Author: David Flynn 2008-11-19 10:25 asuraparaju * util/conversion/: Makefile.am, YUV420ItoYUV422I.cpp, YUV422ItoYUV420I.cpp: conversion: Add 422 <-> 420 converters for interlaced video Author: David Flynn 2008-11-19 10:19 asuraparaju * libdirac_encoder/: picture_compress.cpp, quant_chooser.cpp: Fixed bug with DC value being quantised to nothing for plain pictures. Author: Thomas Davies 2008-11-06 15:54 asuraparaju * tests/samples.at: Add tests for fullsearch and combined_me options. Author: Anuradha Suraparaju 2008-11-06 15:53 asuraparaju * libdirac_common/: common_types.h, dirac_types.h: Move macros to test for the api version to dirac_types.h from common_types.h as it is the more appropriate location. Author: Anuradha Suraparaju 2008-11-06 15:51 asuraparaju * win32/VisualStudio/ConversionUtils/YUV420Down2x2/YUV420Down2x2.vcproj: Fix include path to prevent compilation errors. Author: Anuradha Suraparaju 2008-10-29 13:46 asuraparaju * libdirac_motionest/block_match.cpp: Cosmetics - removing trailing blanks. 2008-10-29 13:42 asuraparaju * encoder/encmain.cpp, libdirac_encoder/prefilter.cpp, libdirac_encoder/rate_control.cpp, libdirac_encoder/seq_compress.cpp: Ensure that debug info is printed to standard out only in verbose mode. Cosmetics - changed tabs to spaces, corrected indentation. Author: asuraparaju@diracvideo.org 2008-10-29 13:41 asuraparaju * libdirac_common/common_types.h: Add macros to test for the api version. Author: asuraparaju@diracvideo.org 2008-10-21 15:55 asuraparaju * libdirac_motionest/me_utils.cpp: Fixed bug that caused a divide by zero error. Author: asuraparaju@diracvideo.org 2008-10-21 11:04 asuraparaju * libdirac_byteio/parseparams_byteio.cpp: Print a warning to standard error if the bitstream version does not match the supported version and continue decoding instead of bailing out. Author: asuraparaju@diracvideo.org 2008-10-21 11:02 asuraparaju * configure.ac: Fix test for checking availabliity of libcppunit. Author: asuraparaju@diracvideo.org 2008-10-20 15:22 asuraparaju * libdirac_encoder/picture_compress.cpp: Modify perceptual weighting based on the proportion of intra blocks. Author: Thomas Davies 2008-10-20 15:21 asuraparaju * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/video_format_defaults.cpp: Made 13_7 the default wavelet filter for all video. Author: Thomas Davies 2008-10-20 15:21 asuraparaju * libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_encoder/picture_compress.cpp: Allow for adjustable CPD scaling. Author: Thomas Davies 2008-10-20 15:20 asuraparaju * libdirac_encoder/seq_compress.h: Added method for keeping track of timestamp offset. Author: Thomas Davies 2008-10-20 15:19 asuraparaju * libdirac_common/common.cpp, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_utils.cpp: Improvements to coding at low bit rate and resolution. Filter DC blocks field to reduce dc level transitions. Use better bigger block parameters. Author: Thomas Davies 2008-10-01 15:33 asuraparaju * Makefile.am: Set DOC_DIR only if doxygen is installed. Author: asuraparaju@diracvideo.org 2008-10-01 11:26 asuraparaju * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/mot_comp.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/picture_decompress.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/enc_picture.cpp, libdirac_encoder/enc_picture.h, libdirac_encoder/picture_compress.cpp, libdirac_encoder/seq_compress.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp, unit_tests/motion_comp_test.cpp, util/instrumentation/process_sequence.cpp, util/instrumentation/libdirac_instrument/overlay.cpp: Manual sync with dirac-research.git repository. Changed way data for use in ME is accessed. Changed terminology from macroblock to superblock. Now (more) consistent with spec. Changes to incorporate some chroma information into ME. Enabled combined ME across Y, U and V Author: Thomas Davies 2008-10-01 10:50 asuraparaju * Makefile.am, configure.ac, util/conversion/Makefile.am, util/conversion/YUV420Down2x2.cpp: Improved 2x2 downconversion filtering. Author: Thomas Davies 2008-10-01 10:26 asuraparaju * encoder/encmain.cpp, libdirac_common/video_format_defaults.cpp: 100% overlaps help PSNR but reduce detail too much at low rates. Author: Thomas Davies 2008-10-01 10:26 asuraparaju * encoder/encmain.cpp, libdirac_common/video_format_defaults.cpp, libdirac_common/video_format_defaults.h, libdirac_encoder/dirac_encoder.cpp: Use longer wavelet filters at low resolution. Author: Thomas Davies 2008-10-01 10:25 asuraparaju * encoder/encmain.cpp, libdirac_common/band_codec.cpp, libdirac_common/common.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/picture_compress.cpp, libdirac_encoder/quant_chooser.cpp: Modifications to improve performance for small picture sizes. Author: Thomas Davies 2008-10-01 10:12 asuraparaju * encoder/encmain.cpp: 1/4 pel is now the default on small pictures. Author: Thomas Davies 2008-09-16 16:49 asuraparaju * ChangeLog: Updated ChangeLog. Author: asuraparaju@diracvideo.org 2008-09-16 14:33 asuraparaju * NEWS: Include Dirac 1.0.0 release notes. Author: asuraparaju@diracvideo.org 2008-09-16 14:31 asuraparaju * configure.ac: Update release id to 1.0.0 Author: asuraparaju@diracvideo.org 2008-09-16 14:27 asuraparaju * README, README.release: Update the README files. Author: asuraparaju@diracvideo.org 2008-09-16 14:23 asuraparaju * Makefile.am: Add bootstrap to distribution. Author: asuraparaju@diracvideo.org 2008-09-16 14:02 asuraparaju * doc/Makefile.am: Change directory name where doxygen generated documentations is installed. Author: asuraparaju@diracvideo.org 2008-09-16 14:02 asuraparaju * win32/VisualStudio/Makefile.am: Add YUV420Down2x2.vcproj and YUV420pt75filter.vcproj to distribution list. Author: asuraparaju@diracvideo.org 2008-09-16 14:02 asuraparaju * libdirac_encoder/picture_compress.cpp: motion_estimate.h is no longer in use. Author: asuraparaju@diracvideo.org 2008-09-15 16:34 asuraparaju * win32/VS2003/DecodeDirac/DecodeDirac.vcproj: Fix target directory name. Author: asuraparaju@diracvideo.org 2008-09-12 12:51 asuraparaju * doc/documentation/code/programmers_guide/: decoder_api.htm, decoder_api_overview.htm, encoder_api_overview.htm, encoder_data_structs.htm, index.htm, intro.htm, overview.htm, software.htm, toc.htm: Update documentation for 1.0 release. 2008-09-10 22:32 asuraparaju * doc/: dirac_api.doxygen, dirac_api.doxygen.in, dirac_api_foot.html, dirac_api_head.html: Sync with git repository doc directory structure. 2008-09-10 22:28 asuraparaju * libdirac_byteio/mvdata_byteio.h, libdirac_common/motion.h: Fix doxygen warnings. Author: asuraparaju@diracvideo.org 2008-09-10 16:37 asuraparaju * win32/VisualStudio/: dirac.sln, ConversionUtils/YUV420Down2x2/YUV420Down2x2.vcproj, ConversionUtils/YUV420pt75filter/YUV420pt75filter.vcproj: Add conversion utiliies YUV420Down2x2 and YUV420pt75filter to build targets list. Author: asuraparaju@diracvideo.org 2008-09-10 12:10 asuraparaju * configure.ac, doc/Makefile.am: Sync with git repository changes. 2008-09-09 21:42 asuraparaju * win32/: VS2003/libdirac_motionest/libdirac_motionest.vcproj, VisualStudio/libdirac_motionest/libdirac_motionest.vcproj: Remove motion_estimat.cpp and motion_estimate.h from the sources list as they are no longer used. Author: asuraparaju@diracvideo.org 2008-09-03 10:33 asuraparaju * libdirac_encoder/rate_control.cpp: Revert "Typo fix." This reverts commit a5161a15d0e4f4b0dd9506dc00e52ffe368e6b81. Author: Thomas Davies 2008-09-02 10:51 asuraparaju * libdirac_encoder/rate_control.cpp: Typo fix. Author: Thomas Davies 2008-08-28 09:59 asuraparaju * libdirac_encoder/picture_compress.cpp: Use the picture's prediction parameters and not the global prediction parameters when writing motion vector data header info to the bitstream. Author: asuraparaju@diracvideo.org 2008-08-27 11:06 asuraparaju * unit_tests/motion_comp_test.cpp: Changes related to the commit where picture parameters were separated into a different class from the Codec Parameters class. Author: asuraparaju@diracvideo.org 2008-08-27 10:22 asuraparaju * libdirac_encoder/rate_control.cpp: Modified so as to adapt faster at the beginning. Author: Thomas Davies 2008-08-27 10:20 asuraparaju * libdirac_common/motion.h, libdirac_encoder/picture_compress.cpp, libdirac_encoder/seq_compress.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/pixel_match.cpp, libdirac_motionest/pixel_match.h: Re-enabled adaptive block sizes, now a subgroup or so in arrears. Author: Thomas Davies 2008-08-27 10:18 asuraparaju * libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_decoder/picture_decompress.cpp, libdirac_encoder/enc_picture.cpp, libdirac_encoder/enc_picture.h, libdirac_encoder/seq_compress.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/pixel_match.cpp, util/instrumentation/libdirac_instrument/overlay.cpp, util/instrumentation/process_sequence.cpp: Placed a local copy of picture pred params in MvData class. This will allow motion parameters to be changed picture by picture. Author: Thomas Davies 2008-08-27 10:17 asuraparaju * libdirac_byteio/mvdata_byteio.cpp, libdirac_byteio/mvdata_byteio.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/video_format_defaults.cpp, libdirac_decoder/picture_decompress.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/picture_compress.cpp, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/Makefile.am, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/pixel_match.cpp, libdirac_motionest/pixel_match.h: Separated off picture prediction parameters. Author: Thomas Davies 2008-08-25 13:15 asuraparaju * libdirac_common/video_format_defaults.cpp, libdirac_encoder/seq_compress.cpp: Set default MV precision back to 1/2. Also turned off 100% overlap. Author: Thomas Davies 2008-08-20 22:03 asuraparaju * libdirac_byteio/byteio.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/band_vlc.cpp, libdirac_common/band_vlc.h: Fix bug in handling skipped code blocks in DC bands when decoding. Also fix bug in calculating the quantiser index in multiple quantiser mode for DC sub-bands in Intra pictures. Author: asuraparaju@diracvideo.org 2008-08-14 12:35 asuraparaju * util/conversion/: Makefile.am, YUV420pt75filter.cpp: Added filter for horizontal 3/4 filtering Author: Thomas Davies 2008-08-14 12:31 asuraparaju * encoder/encmain.cpp: Removed error message. Author: Thomas Davies 2008-08-14 12:30 asuraparaju * libdirac_common/mot_comp.h, libdirac_common/mv_codec.h, libdirac_encoder/enc_queue.h, libdirac_encoder/picture_compress.h, libdirac_encoder/quality_monitor.h: Fix doxygen warnings Author: asuraparaju@diracvideo.org 2008-08-14 12:29 asuraparaju * libdirac_encoder/seq_compress.cpp: MC now done with 100% overlap to improve blockiness at low rates. Author: Thomas Davies 2008-08-14 12:28 asuraparaju * libdirac_encoder/: picture_compress.cpp, prefilter.cpp: Refined diagonal prefiltering for 1080 coding. Author: Thomas Davies 2008-08-14 12:27 asuraparaju * encoder/encmain.cpp: Frame skipping now works on pipes, if a bit inefficient. Author: Thomas Davies 2008-08-14 12:25 asuraparaju * libdirac_encoder/: picture_compress.cpp, prefilter.cpp: Temp fix of diagonal bandwidth to 50%. Author: Thomas Davies 2008-08-14 12:23 asuraparaju * libdirac_common/mot_comp.cpp, libdirac_encoder/seq_compress.cpp: Fixed bug with reference being retired too early. A P/L1 picture was being retired too early when a BBBBBP subgroup followed a PPPPPP subgroup. Author: Thomas Davies 2008-08-14 12:22 asuraparaju * util/conversion/YUV420Down2x2.cpp: Added clipping to prevent overshoots. Author: Thomas Davies 2008-08-14 12:21 asuraparaju * libdirac_encoder/seq_compress.cpp: Fix bug which causes the encoder to crash when encoding Intra-only sequences. For intra sequences we need to insert a sequence header every pre-determined number of frames (we use 10). Also all pictures in an Intra-only sequence should be Non-ref Intra pictures. Author: asuraparaju@diracvideo.org 2008-08-14 12:18 asuraparaju * libdirac_encoder/seq_compress.cpp: Fixed bug with GOP being incorrectly restarted. Author: Thomas Davies 2008-08-14 12:18 asuraparaju * libdirac_decoder/Makefile.am: Export symbols to a file. Author: asuraparaju@diracvideo.org 2008-08-14 12:17 asuraparaju * util/conversion/: Makefile.am, YUV420Down2x2.cpp: Added 2x2 downconversion routine. Author: Thomas Davies 2008-08-14 12:15 asuraparaju * encoder/encmain.cpp, libdirac_common/video_format_defaults.cpp: Whitespace fix. Author: Thomas Davies 2008-08-14 12:14 asuraparaju * libdirac_encoder/prefilter.cpp: Adjusted diagonal prefiltering to be more benign. Author: Thomas Davies 2008-08-14 12:14 asuraparaju * libdirac_encoder/rate_control.cpp: Rate of adaption of qf made dependent on buffer state. Author: Thomas Davies 2008-08-14 12:13 asuraparaju * libdirac_encoder/dirac_encoder.cpp: Clean dimensions set to be the full picture. Author: Thomas Davies 2008-08-14 12:11 asuraparaju * libdirac_encoder/seq_compress.cpp: Adaptive GOP coding now works for field coding. This is a bit hacky. It would be better to remove the need to code fields together and just double the L1 picture separation. Author: Thomas Davies 2008-08-14 12:08 asuraparaju * libdirac_encoder/seq_compress.cpp: Fixed long-dependency chain bug. Author: Thomas Davies 2008-08-14 12:06 asuraparaju * libdirac_encoder/: seq_compress.cpp, seq_compress.h: Fixed bug with sequence headers being written in the wrong place. Author: Thomas Davies 2008-08-14 12:03 asuraparaju * libdirac_encoder/rate_control.cpp: Reduced rate of change of qf to improve worst areas. Author: Thomas Davies 2008-08-14 12:00 asuraparaju * libdirac_encoder/: rate_control.cpp, seq_compress.cpp: Rate control now works better with adaptive GOP. GOP restarts were not being handled correctly. Author: Thomas Davies 2008-08-14 11:59 asuraparaju * libdirac_encoder/picture_compress.cpp: Increase quality of pictures with more intra blocks. Author: Thomas Davies 2008-08-14 11:58 asuraparaju * libdirac_byteio/picture_byteio.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/enc_queue.cpp, libdirac_encoder/picture_compress.cpp, libdirac_encoder/picture_compress.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h: Fixed bug with instrumentation. Intra insertion added back in. GOP will restart if a scheduled P picture is Intra. Author: Thomas Davies 2008-08-14 11:56 asuraparaju * encoder/encmain.cpp: Fixed so that the encoder can now skip large numbers of frames. Author: Thomas Davies 2008-08-14 11:55 asuraparaju * libdirac_encoder/: dirac_encoder.cpp, seq_compress.cpp: Temporarily disabled instrumentation as it's now buggy. Author: Thomas Davies 2008-08-14 11:49 asuraparaju * libdirac_byteio/picture_byteio.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/picture_decompress.cpp, libdirac_encoder/enc_picture.h, libdirac_encoder/enc_queue.cpp, libdirac_encoder/picture_compress.cpp, libdirac_encoder/picture_compress.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h: Subgroups will now switch to PPP coding for difficult sequences. The ratio of intra blocks is used to determine whether a P picture contains large or poorly matched motions. If so the subgroup terminated by that P is switched to all pictures. This mod is still buggy. Author: Thomas Davies 2008-08-14 11:47 asuraparaju * libdirac_encoder/seq_compress.cpp: Fixed bug in CanEncode member function for LongGOP sequences which caused frames to be encoded twice or skipped. Author: asuraparaju@diracvideo.org 2008-08-14 11:45 asuraparaju * libdirac_encoder/: seq_compress.cpp, seq_compress.h: Restart GOP whenever a P picture becomes an I picture. Author: Thomas Davies 2008-08-14 11:44 asuraparaju * libdirac_encoder/picture_compress.cpp: Increased quality of inserted intra pictures. Author: Thomas Davies 2008-08-14 11:44 asuraparaju * libdirac_encoder/rate_control.cpp: More aggressive rate correction if overshooting. Author: Thomas Davies 2008-08-14 11:43 asuraparaju * libdirac_encoder/prefilter.cpp: Set BW range for diagonal prefiltering. Author: Thomas Davies 2008-08-14 11:41 asuraparaju * libdirac_common/motion.cpp, libdirac_encoder/enc_picture.cpp, libdirac_encoder/picture_compress.cpp, libdirac_encoder/seq_compress.cpp: Fixed bug with dropping references not being properly recorded. Author: Thomas Davies 2008-08-14 11:39 asuraparaju * libdirac_encoder/seq_compress.cpp: Temporarily disabled reference dropping as it causes decoder crashes. Author: Thomas Davies 2008-08-14 11:38 asuraparaju * libdirac_encoder/prefilter.cpp: Diagonal prefilter now has variable bandwidth. Author: Thomas Davies 2008-08-14 11:04 asuraparaju * libdirac_common/common.cpp, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h: Now calculating PSNR properly. Author: Thomas Davies 2008-08-14 11:03 asuraparaju * libdirac_encoder/: picture_compress.cpp, seq_compress.cpp: Fixed bug with changing lambda value. Reference pruning extended to all inter pics. Author: Thomas Davies 2008-08-14 11:02 asuraparaju * libdirac_encoder/seq_compress.cpp: Fixed bug where encoder queue was not being pruned. Also now retire I pictures after 2 L1 pictures, due to changed GOP structure. Author: Thomas Davies 2008-08-14 11:01 asuraparaju * libdirac_encoder/picture_compress.cpp: Report intra block proportions correctly. Author: Thomas Davies 2008-08-14 11:00 asuraparaju * libdirac_encoder/: picture_compress.cpp, seq_compress.cpp: Encoder will now drop a reference if not useful. Author: Thomas Davies 2008-08-14 10:58 asuraparaju * libdirac_motionest/: me_mode_decn.cpp, me_utils.cpp, me_utils.h: Modified intra selection to use a Haar transform. A Haar transform is applied to the difference array after subtracting the DC value. This penalises blocks where there is a lot of structure, but not blocks which are close to the DC value. Author: Thomas Davies 2008-08-14 10:56 asuraparaju * libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_encoder/enc_picture.cpp, libdirac_encoder/enc_picture.h: Added support for being able to drop a reference from an inter picture. If it's determined that a reference is unlike the current picture, any matches might be accidental and could reduce quality. So being able to drop references could be useful. Author: Thomas Davies 2008-08-14 10:51 asuraparaju * libdirac_byteio/accessunit_byteio.cpp, libdirac_byteio/accessunit_byteio.h, libdirac_byteio/dirac_byte_stream.cpp, libdirac_byteio/dirac_byte_stream.h, libdirac_common/common.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/picture.cpp, libdirac_common/picture.h, libdirac_common/video_format_defaults.cpp, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_common/wavelet_utils_mmx.cpp, libdirac_decoder/picture_decompress.cpp, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/enc_picture.cpp, libdirac_encoder/enc_picture.h, libdirac_encoder/enc_queue.h, libdirac_encoder/picture_compress.cpp, libdirac_encoder/picture_compress.h, libdirac_encoder/rate_control.cpp, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/block_match.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, libdirac_motionest/pixel_match.cpp, libdirac_motionest/pixel_match.h: New encoder stucture to model rate-control approaches. Fixed bug with P-only coding. Added support for switching block sizes for pics with lots of intra blocks. Added another complexity metric based on variance of prediction residue. Added intra block ratio to MEData class. Defined a complexity measure based on pel ME SAD values. Pixel accurate motion estimation done using look ahead. Encoder now preloads a queue of frames. Split up motion estimation into tasks within the sequence compressor engine. Separated out prefiltering. Incorporated wavelet coefficient data into Picture class. Moved subband metadata into CoeffArray class. Further splitting of picture coding into subtasks. Reorganised picture coding into subtasks called by sequence compressor. Fixed bug on updating CBR model for field coding. Changed AccessUnitByteIO to SequenceHeaderByteIO for spec consistency. Fixed bug with motion data being incorrectly coded. Added ME data to the EncPicture class. Fixed unit test for motion compensation. Renamed EncBuffer class as EncQueue class to make Andrea happy. Fixed buffers to be mere wrappers around vectors of pointers. Partially fixed unit tests. Change frame to picture names. Fixed for compatibility with buffer interfaces. Simplified buffer memory management. Simplified buffer operation for decoder. Changed default qf to 5.5 Synched with cvs for libdirac_decoder Updated against current cvs in libdirac_{byteio,common} Changed GOP L1 refs to reduce "breakthrough" Refactored to use encoder picture and encoder buffer classes. Added classes for encoder pictures and specialist buffer. Simplified picture class. Refactor to make subclassing easier. Fixed interlace IO errors. Refactored so as to remove encoder-specific methods from picture buffer. Modified picbuffer so that decoder solely manages picture params and GOP. Modified makefile for encoder picture class. Author: Thomas Davies 2008-06-26 20:30 tjdwave * doc/latex_spec/: bs-spec.tex, idwt.tex, layout-fullsize.tex, quant-matrix.tex, spec-structure.tex: Fixed typos in wavelet lifting spec and changed Debuc to Dubuc. Also incremented version ready for release. 2008-06-23 20:48 asuraparaju * win32/: VS2003/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, VisualStudio/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj: Add enc_picture.cpp{.h} and enc_queue.cpp{.h} to the sources list. 2008-06-20 20:03 asuraparaju * libdirac_encoder/seq_compress.cpp: Check that future pictures exist in the picture buffer before using them as references for the current picture. 2008-06-19 20:39 tjdwave * util/instrumentation/libdirac_instrument/: draw_overlay.cpp, gm_inliers.cpp, motion_arrows.cpp, motion_colour.cpp, motion_colour_arrows.cpp, overlay.cpp, pred_mode.cpp, sad.cpp, split_mode.cpp: Fixed instrumentation to comply with new class methods. 2008-06-19 20:36 tjdwave * unit_tests/: frames_test.cpp, motion_comp_test.cpp: Fixed test to conform to class changes. 2008-06-19 20:35 tjdwave * libdirac_motionest/: me_mode_decn.cpp, me_mode_decn.h, me_subpel.cpp, me_subpel.h, motion_estimate.cpp, motion_estimate.h, pixel_match.cpp, pixel_match.h: Fixes due to use of EncQueue/EncPicture class. Changed "frame" to "picture" terminology. 2008-06-19 20:33 tjdwave * libdirac_decoder/: comp_decompress.h, dirac_parser.cpp, picture_decompress.cpp, seq_decompress.cpp: Fixes due to changes in PictureBuffer and Picture classes. 2008-06-19 20:28 tjdwave * libdirac_encoder/: prefilter.cpp, quality_monitor.cpp, quality_monitor.h: Mods due to EncQueue/EncPicture class changes. 2008-06-19 20:25 tjdwave * libdirac_encoder/: picture_compress.cpp, picture_compress.h: Modified for change to EncQueue/EncPicture classes. 2008-06-19 20:22 tjdwave * libdirac_encoder/: seq_compress.cpp, seq_compress.h: Moved GOP structure determination into this class. Also, changed the class so that it used the EncQueue/EncPicture classes. 2008-06-19 20:17 tjdwave * libdirac_common/: pic_io.cpp, pic_io.h: Refactored to comply with changes to Picture class. 2008-06-19 20:14 tjdwave * libdirac_common/: common.h, common.cpp: Removed unnecessary constructor. 2008-06-19 20:12 tjdwave * libdirac_common/: mot_comp.cpp, mot_comp.h: Changed interface. Interface changes because EncQueue class is not a subclass of PictureBuffer. 2008-06-19 20:10 tjdwave * libdirac_common/: picture.cpp, picture.h: Minor refactor to remove "redo" metadata. The picture buffer deletes and reallocates data now, so we don't need to reconfigure/reinitialise a picture. So we can lose the tracking metadata. 2008-06-19 20:07 tjdwave * libdirac_common/: picture_buffer.cpp, picture_buffer.h: Refactored so that the class is a simple wrapper around a vector of pointers. Removed all the GOP functionality so that it is done in the sequence compressor class. 2008-06-19 20:05 tjdwave * libdirac_encoder/Makefile.am: Added new files. 2008-06-19 20:02 tjdwave * libdirac_encoder/: enc_picture.cpp, enc_picture.h, enc_queue.cpp, enc_queue.h: Added classes for encoder picture and encoder picture queue. The encoder picture subclasses a basic picture and adds original data as well as coded data. An encoder queue is a queue of encoder pictures, so separate queues/buffers for original and motion estimation data are not needed. 2008-06-18 16:00 asuraparaju * extras/dirac_dshow/src/diracsplitter/: DiracSplitter.cpp, DiracSplitterFile.cpp, DiracSplitterFile.h: Modified the code so that the Dirac decoder module of the the filter can connect to splitters (e.g. AVI splitter) other than the Dirac splitter. We can now play back AVI files containing Dirac muxed with audio. 2008-06-18 11:16 asuraparaju * encoder/encmain.cpp: Add command line argument -h or -help to display usage info. 2008-06-04 15:39 asuraparaju * ChangeLog: [no log message] 2008-06-04 15:33 asuraparaju * NEWS: Updated 0.10.0 release notes 2008-06-04 15:32 asuraparaju * README.release: Update pre-release checks 2008-06-04 14:48 asuraparaju * extras/dirac_dshow/INSTALL: Modify install notes to use the supported MS VC++ environment. 2008-06-04 14:46 asuraparaju * extras/patches/: README_mplayersvn_trunk_revision_26980_dirac-0.10.x_patch, mplayersvn_trunk_revision_26980-dirac-0.10.x.patch: Patch to enable Dirac decoding support in MPlayer svn revision 26980. 2008-06-03 19:57 tjdwave * libdirac_encoder/: rate_control.cpp, seq_compress.cpp, seq_compress.h: Fix for low bit rate operation. Adaptive block sizes used for high QF values. 2008-06-03 15:10 asuraparaju * README, libdirac_common/video_format_defaults.cpp, tests/samples.at: Default quality factor that produces medium quality output modified to 5.5 from 7.0. 2008-05-30 16:33 asuraparaju * ChangeLog: [no log message] 2008-05-30 13:36 asuraparaju * NEWS: Included Dirac 0.10.0 release notes 2008-05-30 13:33 asuraparaju * extras/patches/: MPlayer-1.0rc2_dirac-0.10.x.patch, README_MPlayer-1.0rc2_dirac-0.10.x_patch, README_mplayersvn_trunk_revision_26925_dirac-0.10.x_patch, mplayersvn_trunk_revision_26925-dirac-0.10.x.patch: New patches to enable Dirac 0.10.0 playback using MPlayer. 2008-05-29 16:04 asuraparaju * libdirac_common/picture_buffer.cpp: Fix bug in setting the expiry time for L1 frames which caused them to be retired before they were used as reference frames in the decoder causing the decoder to skip frames. 2008-05-29 16:01 asuraparaju * tests/samples.at: Add tests for encoding with pre-filtering enabled. 2008-05-29 00:25 tjdwave * libdirac_common/picture_buffer.cpp: Changed references so that L1 references are the previous 2 L1 pictures to reduce detail "breakthrough". 2008-05-28 12:16 asuraparaju * doc/latex_spec/SpecChangeLog: [no log message] 2008-05-28 11:36 asuraparaju * tests/samples.at: Add a test for a non-defaut GOP structure. 2008-05-27 13:06 asuraparaju * doc/latex_spec/ref-default-videoparams.tex: Fix for bug# 1876987. Correct the name of the video format name to CIF. 2008-05-27 12:13 asuraparaju * README: Include description of new arguments added to the encoder command line. 2008-05-27 11:29 asuraparaju * decoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/common_types.h, libdirac_common/video_format_defaults.cpp, libdirac_common/wavelet_utils.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/picture_decompress.cpp, libdirac_encoder/picture_compress.cpp, libdirac_encoder/prefilter.cpp, libdirac_encoder/quant_chooser.cpp, libdirac_encoder/quant_chooser.h, libdirac_motionest/me_utils_mmx.h, libdirac_motionest/pixel_match.cpp, unit_tests/arrays_test.cpp, unit_tests/arrays_test.h, unit_tests/utmain.cpp, util/conversion/RGBtoUYVY.cpp, util/conversion/YUV420toYUV422.cpp, util/conversion/YUV422toUYVY.cpp, util/instrumentation/libdirac_instrument/overlay_symbols.cpp: Cosmetic changes. Replace tabs with spaces, replace DOS-style line endings with UNIX-style line endings, etc. 2008-05-27 11:28 asuraparaju * libdirac_encoder/dirac_encoder.cpp: Set pnum in the encoder parameters in the encoder handle to -1 when returning the end of sequence packet since it is not a picture packet. 2008-05-27 11:10 asuraparaju * AUTHORS: Update the email id of the Dirac team of developers. 2008-05-27 11:09 asuraparaju * doc/: Makefile.am, dirac_bitstream.txt: dirac_bitstream.txt is outdated and no longer required. 2008-05-21 14:00 asuraparaju * doc/contact.html: Sync with Dirac Sourceforge website changes. 2008-05-21 14:00 asuraparaju * tests/samples.at: Include tests for lossless and constant bit-rate bytestreams. 2008-05-21 13:57 asuraparaju * doc/documentation/code/programmers_guide/encoder_api_example.htm, libdirac_encoder/dirac_encoder.h: Correct the name of the preset used to SD576I50 in the encoder API example. 2008-05-21 13:56 asuraparaju * libdirac_encoder/: dirac_encoder.cpp, seq_compress.cpp, seq_compress.h: Return the Sequence header as a separate packet and not preprended to an encoded frame. 2008-05-12 20:49 asuraparaju * configure.ac, doc/documentation/Makefile.am: Include conditional variables for Support and Publications documentation. These are available only when installing from CVS source are not in a release. 2008-05-12 16:40 asuraparaju * configure.ac, doc/documentation/Makefile.am, doc/documentation/publications/Makefile.am, doc/documentation/support/Makefile.am: Include support and publications directories in install targets. 2008-05-12 15:29 asuraparaju * doc/: contact.html, documentation.html, faq.html, getting_involved.html, index.html, licences.html, overview.html, specification.html: Sync with Sourceforge website changes. Include link to licences info. Change Schroedinger link from Sourceforge to www.diracvideo.org. 2008-05-09 18:14 asuraparaju * doc/documentation/algorithm/algorithm/: block_data.htm, dirac_software_alg0.2.pdf, index.htm, intro.htm, mot_est.htm, mv_coding_arch.htm, mv_data_pred.htm, mv_entropy_code.htm, olb_mc.xht, overall_arch.htm, quantisation.xht, temporal_prediction_structures.htm, transform_coding_arch.htm, var_size.htm, wlt_coeff_coding.xht, wlt_transform.xht: Sync with Source website changes. 2008-05-09 15:04 asuraparaju * doc/documentation/code/programmers_guide/: common_data_structs.htm, decoder_api_example.htm, decoder_api_functions.htm, decoder_api_overview.htm, decoder_api_reference.htm, decoder_data_structs.htm, encoder_api_example.htm, encoder_api_functions.htm, encoder_api_overview.htm, encoder_api_reference.htm, encoder_data_structs.htm, index.htm, intro.htm, software.htm, toc.htm: Update programmer's guide to reflect changes to Dirac Library API. 2008-05-09 15:00 asuraparaju * libdirac_encoder/: dirac_encoder.cpp, dirac_encoder.h: Rename field encoded_frame_avail to encoded_picture_avail since the encoder API returns frames or fields depending on the the picture_coding_mode field in the encoder parameters. 2008-05-08 01:45 tjdwave * encoder/encmain.cpp: Removed duplicate option. 2008-05-07 15:47 asuraparaju * libdirac_byteio/parseparams_byteio.h, libdirac_common/pic_io.h, libdirac_common/picture_buffer.h, libdirac_common/video_format_defaults.h, libdirac_decoder/comp_decompress.h, libdirac_encoder/comp_compress.h: Fix doxygen warnings. 2008-05-06 21:17 asuraparaju * win32/VisualStudio/libdirac_common/libdirac_common.vcproj: Include dirac_inttypes.h in headers list. 2008-05-06 21:07 asuraparaju * win32/VS2003/libdirac_common/libdirac_common.vcproj: Include dirac_inttypes.h is headers list. 2008-05-06 21:06 asuraparaju * win32/VS2003/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj: Include prefilter.cpp and prefilter.h to build targets. 2008-05-06 19:51 asuraparaju * configure.ac: Visual Studio 2003 environment is no longer part of release. 2008-05-06 19:39 asuraparaju * README: Modify MSVC++ build environment description to reflect the change in the build directory structure. 2008-05-06 19:37 asuraparaju * acinclude.m4: Moved this file to m4 directory. 2008-05-06 19:35 asuraparaju * Makefile.am, bootstrap, configure.ac, encoder/Makefile.am, libdirac_byteio/Makefile.am, libdirac_byteio/dirac_byte_stats.h, libdirac_common/Makefile.am, libdirac_common/dirac_inttypes.h, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_encoder/dirac_encoder.h, m4/acinclude.m4, m4/ax_create_stdint_h.m4: Use autoconf macro AX_CREATE_STDINT_H to create a local stdint file because different versions of gcc have the "ISO C9X: 7.18 Integer types" in different header files. MS VC++ does not define these types so manually typedef the ones used in Dirac (int64_t and uint64_t) to MSVC++ types. 2008-05-06 16:35 asuraparaju * win32/VisualStudio/: Makefile.am, dirac.sln, ConversionUtils/BMPtoRGB/BMPtoRGB.vcproj, ConversionUtils/RGBtoBMP/RGBtoBMP.vcproj, ConversionUtils/RGBtoUYVY/RGBtoUYVY.vcproj, ConversionUtils/RGBtoYUV411/RGBtoYUV411.vcproj, ConversionUtils/RGBtoYUV420/RGBtoYUV420.vcproj, ConversionUtils/RGBtoYUV422/RGBtoYUV422.vcproj, ConversionUtils/RGBtoYUV444/RGBtoYUV444.vcproj, ConversionUtils/UYVYtoRGB/UYVYtoRGB.vcproj, ConversionUtils/UYVYtoYUV422/UYVYtoYUV422.vcproj, ConversionUtils/YUV411toRGB/YUV411toRGB.vcproj, ConversionUtils/YUV420toRGB/YUV420toRGB.vcproj, ConversionUtils/YUV420toYUV422/YUV420toYUV422.vcproj, ConversionUtils/YUV422toRGB/YUV422toRGB.vcproj, ConversionUtils/YUV422toUYVY/YUV422toUYVY.vcproj, ConversionUtils/YUV422toYUV420/YUV422toYUV420.vcproj, ConversionUtils/YUV444toRGB/YUV444toRGB.vcproj, ConversionUtils/libconv_common/libconv_common.vcproj, DecodeDirac/DecodeDirac.vcproj, DiracDecoder/DiracDecoder.vcproj, DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, DiracEncoder/DiracEncoder.vcproj, DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, EncodeDirac/EncodeDirac.vcproj, InstrumentDirac/InstrumentDirac.vcproj, InstrumentDirac/libdirac_instrument/libdirac_instrument.vcproj, libdirac_byteio/libdirac_byteio.vcproj, libdirac_common/libdirac_common.vcproj, libdirac_motionest/libdirac_motionest.vcproj: Restructure the build envirorment. All files (final executables, libraries and intermediate files) are built under a directory build. Added project files for new conversion utilities. 2008-05-05 12:14 asuraparaju * dirac.pc.in: Include libstdc++ is link dependencies. 2008-05-05 11:55 asuraparaju * libdirac_common/picture_buffer.cpp: Fix typo in setting expiry time for bi-directional L2 reference frames. The correct value is 2 and not 22. 2008-05-02 16:05 asuraparaju * libdirac_decoder/: dirac_cppparser.cpp, dirac_cppparser.h, dirac_parser.cpp, seq_decompress.cpp, seq_decompress.h: Fix the bug where the decoder went into a permanent loop when some frames are missing, possibly due to incomplete frames being received. The decoder now carries on decoding the frames it can and returns the next frame. 2008-05-02 15:57 asuraparaju * libdirac_byteio/: dirac_byte_stream.cpp, dirac_byte_stream.h, parseunit_byteio.cpp, parseunit_byteio.h: Fix for bug# 1944681. 2008-05-02 15:49 asuraparaju * util/instrumentation/process_sequence.cpp: Fix memory leak reported by valgrind when running diagnostics on interlace coded Long-GOP sequences. 2008-05-01 19:51 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common_types.h, libdirac_common/video_format_defaults.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/seq_compress.cpp: Added UHDTV formats. 2008-05-01 19:51 tjdwave * libdirac_common/picture_buffer.cpp: Fixed bug with decoder looping forever. 2008-04-30 00:09 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/common_types.h, libdirac_encoder/Makefile.am, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/picture_compress.cpp, libdirac_encoder/prefilter.cpp, libdirac_encoder/prefilter.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h: Added support for various forms of prefiltering. Prefiltering using rectangular, diagonal or centre-weighted median filtering is now available as a command-line option. Rectangular and diagonal low-pass filtering are both adaptive, with strength determined by the QF and also a strength parameter added on the command line. Centre-weighted median filtering is non-adaptive, but adjusts the centre weight according to the strength parameter. Usage is : dirac_encoder ... -prefilter FILTER_NAME n .... where FILTER_NAME is one of NO_PF, CWM, RECTLP, DIAGLP and n is from 0 to 10. NO_PF means no prefilter. 2008-04-29 22:27 asuraparaju * libdirac_byteio/: dirac_byte_stats.cpp, dirac_byte_stats.h: Fix discrepancies between member function declarations in the header file and the implementation in the source file. 2008-04-29 22:26 asuraparaju * unit_tests/: frames_test.cpp, motion_comp_test.cpp: Reflect changes made to PictureParams and PictureBuffer classes. 2008-04-29 18:51 tjdwave * encoder/encmain.cpp, libdirac_byteio/codingparams_byteio.cpp, libdirac_byteio/component_byteio.cpp, libdirac_byteio/component_byteio.h, libdirac_byteio/dirac_byte_stats.cpp, libdirac_byteio/dirac_byte_stats.h, libdirac_byteio/subband_byteio.cpp, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/band_vlc.cpp, libdirac_common/band_vlc.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/mot_comp.cpp, libdirac_common/picture.cpp, libdirac_common/picture.h, libdirac_common/picture_buffer.cpp, libdirac_common/picture_buffer.h, libdirac_common/video_format_defaults.cpp, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/picture_decompress.cpp, libdirac_decoder/picture_decompress.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/picture_compress.cpp, libdirac_encoder/picture_compress.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_encoder/quant_chooser.cpp, libdirac_encoder/seq_compress.cpp: Various refactorings and bug-fixes. 1. Changed how padding is implemented so that padding is only added to the coefficient array before the wavelet transform, and is removed from the coefficient array immediately after the wavelet transform. No metadata for "OrigXl" etc is needed now. 2. Various places "frame" is changed to "picture" and "fparams" to "pparams" etc. 3. Fixed bug with misreporting bit rate for long sequences by recording data with int64_t not int. 4. Fixed a bug with perceptual weighting where additional weight was being given to the DC band even though it is coded losslessly. This threw out weights for the other bands when the weights were normalised, especially for intra pictures. In turn this required that the relative lambdas used for different picture types had to be changed. 5. Fixed a minor bug with rate control where the intra lambda was not being applied correctly. 6. Changed "field coding" metadata to "picture coding mode" metadata throughout, as per spec. 7. Changed "QIndex" throughout to "QuantIndex" etc for clarity. 8. Refactored picture coding and decoding to simplify things a little. 2008-04-15 19:56 asuraparaju * libdirac_encoder/seq_compress.cpp: Roll back previous commit. The hack to extract the last locally decoded field does not work. 2008-04-15 16:56 asuraparaju * libdirac_common/common.h: Fix typos in ParseParams class which cause profile and level member fields to be set incorrectly. 2008-04-15 16:54 asuraparaju * util/instrumentation/process_sequence.cpp: Include more debugging info in verbose mode. Fixed bug where last few fields in an interlaced coded file were not being processed resulting in memory leaks being reported by valgrind. 2008-04-15 16:52 asuraparaju * libdirac_encoder/seq_compress.cpp: Hack to extract last field locally decoded when coding in interlaced mode. Needs a proper fix. 2008-04-15 16:50 asuraparaju * libdirac_byteio/accessunit_byteio.cpp, libdirac_byteio/accessunit_byteio.h, libdirac_byteio/parseparams_byteio.cpp, libdirac_byteio/parseparams_byteio.h, libdirac_common/common.cpp: Upgrade version supported to 2.2. Add checks for profile and level as per specification version 2.2. 2008-04-03 21:10 tjdwave * doc/latex_spec/: arith.tex, idwt.tex, layout-fullsize.tex, picture-dec.tex, profilelevel.tex, sequence-dec.tex, wlt-unpacking.tex: Various types and updates. 2008-04-03 18:21 tjdwave * doc/latex_spec/bs-spec.tex: Typo. 2008-04-02 02:05 tjdwave * doc/latex_spec/bs-spec.tex: More changes a la vc-2 2008-04-02 01:00 tjdwave * doc/latex_spec/: bs-spec.tex, dataenc.tex, intro.tex, motion-dec.tex, picture-dec.tex, profilelevel.tex, sequence-dec.tex, spec-structure.tex, terms.tex, video-interface.tex, wlt-unpacking.tex: Further reorganisations a la VC-2 spec 2008-04-01 22:47 tjdwave * doc/latex_spec/: bs-spec.tex, profilelevel.tex, terms.tex: Typos. 2008-03-14 19:17 asuraparaju * encoder/encmain.cpp, libdirac_byteio/byteio.cpp, libdirac_byteio/byteio.h, libdirac_byteio/dirac_byte_stats.h, libdirac_common/arrays.h, libdirac_common/cmd_line.cpp, libdirac_common/motion.h, libdirac_common/wavelet_utils_mmx.cpp, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, util/instrumentation/process_sequence.cpp, util/instrumentation/libdirac_instrument/draw_overlay.h, util/instrumentation/libdirac_instrument/overlay.h: Fix errors and warnings reported by gcc 4.3.0 2008-03-06 19:58 asuraparaju * tests/samples.at: Added test for QCIF. Modified instrumentation test to ignore standard out. 2008-03-06 19:10 asuraparaju * util/instrumentation/process_sequence.cpp: Fix unitialised memory read warnings reported by valgrind when processing files coded as fields. 2008-03-06 19:04 asuraparaju * encoder/encmain.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h: Fixed Bug #1874587 where not all frames loaded into the encoder were not being processed in Long GOP mode. The encoder now processes all frames loaded. The encoder API has also been modified ensure that all encoded frames can bre retrieved. 2008-03-05 22:07 asuraparaju * libdirac_encoder/picture_compress.cpp: Fix uninitialised memory read error reported by valgrind when encoding data losslessly. 2008-03-04 02:08 tjdwave * doc/latex_spec/profilelevel.tex: Changed level and profile numbers to allow for future vc2 expansion better. 2008-03-04 01:33 tjdwave * doc/latex_spec/: bs-spec.tex, conformance.tex, intro.tex, layout-fullsize.tex, picture-dec.tex, profilelevel.tex, ref-default-videoparams.tex, sequence-dec.tex, state-macros.tex: Updates for compatibility with latest version of VC-2. Basic profiles and levels added. Added UHDTV formats, VC-2 profiles and a Long-GOP profile. Also added three levels: unconstrained (0), default for VC-2 (1) and default for long-GOP (2). 2008-03-03 21:42 asuraparaju * libdirac_byteio/parseunit_byteio.cpp, libdirac_decoder/dirac_cppparser.cpp, libdirac_decoder/dirac_parser.cpp: Fix bug in handling End of Sequence parse code where EOS packets other than the last one in the stream were not being processed correctly. Schro encoded bitstreams can now be decoded fully. Also fixed bug where end of sequence parse status was not being returned to the end user application. 2008-02-28 23:41 tjdwave * doc/latex_spec/: bs-spec.tex, layout-fullsize.tex: Fixed typos. Added PDF hyperlinks. 2008-02-28 22:58 tjdwave * libdirac_common/common.cpp, libdirac_encoder/rate_control.cpp: Introduced small codeblocks and removed cap on qf when coding intra-only with CBR 2008-02-27 21:47 asuraparaju * libdirac_common/mot_comp.cpp: Fix bug in handling edge blocks. 2008-02-20 00:34 tjdwave * encoder/encmain.cpp, libdirac_common/video_format_defaults.cpp: Modified default wavelet depth to 4 to prevent overshoots. 2008-02-15 12:47 asuraparaju * libdirac_encoder/seq_compress.cpp: Fix bug in initialiasing entropy factors. Now using transform depth instead of a hardcoded value of 4. 2008-02-14 15:59 asuraparaju * extras/dirac_dshow/include/moreuuids.h: Replace fourcc identifying Dirac video from vcrd to drac to be in line with the fourcc used in the ffmpeg patch. 2008-02-14 15:57 asuraparaju * extras/dirac_dshow/src/diracsplitter/DiracSplitter.cpp: Changes to reflect modified Encoder and Decoder API. 2008-02-14 15:56 asuraparaju * extras/dirac_dshow/src/diracsplitter/DiracSplitterFile.cpp: Fix bug in handling next and previous offsets in parse unit header. 2008-02-14 12:41 asuraparaju * libdirac_byteio/parseparams_byteio.cpp: Modify version checking logic so that all minor versions less than the supported minor version can be decoder provided the major version is an exact match. 2008-02-13 14:36 asuraparaju * decoder/decmain.cpp, libdirac_decoder/decoder_types.h, libdirac_decoder/dirac_cppparser.cpp, libdirac_decoder/dirac_cppparser.h, libdirac_decoder/dirac_parser.cpp, libdirac_decoder/dirac_parser.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h: Modifications to Decoder API. Remove un-implemented functionality (e.g. skip decoding frame). The Decoder API now returns the frame number of the frame decoded and no other information (e.g. frame type). 2008-02-12 22:03 asuraparaju * README: Update notes for building Dirac on MS Windows 2000 and XP platforms. 2008-02-12 22:02 asuraparaju * win32/: Makefile.am, VS2003/Makefile.am: Build environment for Visual C++ 2003 no longer part of the release. 2008-02-12 16:24 asuraparaju * win32/VisualStudio/: dirac.sln, ConversionUtils/ConversionUtils.vcproj, ConversionUtils/BMPtoRGB/BMPtoRGB.vcproj, ConversionUtils/RGBtoBMP/RGBtoBMP.vcproj, ConversionUtils/RGBtoUYVY/RGBtoUYVY.vcproj, ConversionUtils/RGBtoYUV411/RGBtoYUV411.vcproj, ConversionUtils/RGBtoYUV420/RGBtoYUV420.vcproj, ConversionUtils/RGBtoYUV422/RGBtoYUV422.vcproj, ConversionUtils/RGBtoYUV444/RGBtoYUV444.vcproj, ConversionUtils/UYVYtoRGB/UYVYtoRGB.vcproj, ConversionUtils/YUV411toRGB/YUV411toRGB.vcproj, ConversionUtils/YUV420toRGB/YUV420toRGB.vcproj, ConversionUtils/YUV422toRGB/YUV422toRGB.vcproj, ConversionUtils/YUV444toRGB/YUV444toRGB.vcproj, ConversionUtils/libconv_common/libconv_common.vcproj, DecodeDirac/DecodeDirac.vcproj, DiracDecoder/DiracDecoder.vcproj, DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, DiracEncoder/DiracEncoder.vcproj, DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, EncodeDirac/EncodeDirac.vcproj, Everything/Everything.vcproj, InstrumentDirac/InstrumentDirac.vcproj, InstrumentDirac/libdirac_instrument/libdirac_instrument.vcproj, libdirac_byteio/libdirac_byteio.vcproj, libdirac_common/libdirac_common.vcproj, libdirac_motionest/libdirac_motionest.vcproj: Updated project and solution files for Visual Studio 2008 environment. Visual Studio 2005 build environment is no longer supported. 2008-02-12 03:39 tjdwave * doc/latex_spec/SpecChangeLog: Specification ChangeLog added. 2008-02-09 00:57 davidf_ * libdirac_encoder/dirac_encoder.cpp: Fix change from *frame -> *picture with --enable-debug 2008-02-06 10:52 asuraparaju * extras/dirac_dshow/src/diracsplitter/DiracSplitter.cpp: Modification resulting from changed decoder API stuctures. 2008-02-05 17:32 asuraparaju * win32/: VS2003/DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, VS2003/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, VS2003/libdirac_byteio/libdirac_byteio.vcproj, VS2003/libdirac_common/libdirac_common.vcproj, VisualStudio/DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, VisualStudio/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, VisualStudio/libdirac_byteio/libdirac_byteio.vcproj, VisualStudio/libdirac_common/libdirac_common.vcproj: Fix project files to get rid of compiler warning that resulted from the code refactor. 2008-02-05 14:14 asuraparaju * unit_tests/: frames_test.cpp, frames_test.h, motion_comp_test.cpp, motion_comp_test.h: Fix compiler warning resulting from earlier refactoring of code relating to frames and fields. 2008-02-05 00:43 tjdwave * util/conversion/: Makefile.am, UYVYtoYUV422.cpp, YUV420toYUV422.cpp, YUV422toUYVY.cpp, YUV422toYUV420.cpp: Adding extra filters to avoid going through RGB for YUV format conversions. 2008-02-02 06:52 tjdwave * libdirac_common/motion.cpp, libdirac_common/mv_codec.cpp, libdirac_encoder/dirac_encoder.cpp: Fixed bug with DC value prediction in motion data coding. 2008-02-01 02:20 tjdwave * libdirac_encoder/quality_monitor.cpp: Typo. 2008-01-31 22:25 tjdwave * decoder/decmain.cpp, encoder/encmain.cpp, libdirac_byteio/Makefile.am, libdirac_byteio/component_byteio.h, libdirac_byteio/dirac_byte_stream.cpp, libdirac_byteio/dirac_byte_stream.h, libdirac_byteio/displayparams_byteio.cpp, libdirac_byteio/endofsequence_byteio.h, libdirac_byteio/frame_byteio.cpp, libdirac_byteio/frame_byteio.h, libdirac_byteio/mvdata_byteio.cpp, libdirac_byteio/mvdata_byteio.h, libdirac_byteio/parseparams_byteio.cpp, libdirac_byteio/parseunit_byteio.cpp, libdirac_byteio/parseunit_byteio.h, libdirac_byteio/picture_byteio.cpp, libdirac_byteio/picture_byteio.h, libdirac_byteio/transform_byteio.cpp, libdirac_byteio/transform_byteio.h, libdirac_common/Makefile.am, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/band_vlc.cpp, libdirac_common/band_vlc.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/common_types.h, libdirac_common/dirac_exception.h, libdirac_common/dirac_types.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/picture.cpp, libdirac_common/picture.h, libdirac_common/picture_buffer.cpp, libdirac_common/picture_buffer.h, libdirac_common/video_format_defaults.cpp, libdirac_common/video_format_defaults.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/Makefile.am, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/dirac_cppparser.cpp, libdirac_decoder/dirac_cppparser.h, libdirac_decoder/dirac_parser.cpp, libdirac_decoder/dirac_parser.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/picture_decompress.cpp, libdirac_decoder/picture_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/picture_compress.cpp, libdirac_encoder/picture_compress.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_encoder/rate_control.cpp, libdirac_encoder/rate_control.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, libdirac_motionest/pixel_match.cpp, libdirac_motionest/pixel_match.h, util/instrumentation/process_sequence.cpp, util/instrumentation/process_sequence.h, util/instrumentation/libdirac_instrument/draw_overlay.cpp, util/instrumentation/libdirac_instrument/draw_overlay.h, util/instrumentation/libdirac_instrument/gm_inliers.cpp, util/instrumentation/libdirac_instrument/gm_inliers.h, util/instrumentation/libdirac_instrument/motion_arrows.cpp, util/instrumentation/libdirac_instrument/motion_arrows.h, util/instrumentation/libdirac_instrument/motion_colour.cpp, util/instrumentation/libdirac_instrument/motion_colour.h, util/instrumentation/libdirac_instrument/motion_colour_arrows.cpp, util/instrumentation/libdirac_instrument/motion_colour_arrows.h, util/instrumentation/libdirac_instrument/overlay.cpp, util/instrumentation/libdirac_instrument/overlay.h, util/instrumentation/libdirac_instrument/pred_mode.cpp, util/instrumentation/libdirac_instrument/pred_mode.h, util/instrumentation/libdirac_instrument/sad.cpp, util/instrumentation/libdirac_instrument/sad.h, util/instrumentation/libdirac_instrument/split_mode.cpp, util/instrumentation/libdirac_instrument/split_mode.h: Major refactor to make clear the distinction between pictures (frames OR fields) and frames or fields specifically. Frame classes have been renamed to be Picture classes, along with associated metadata. No coding parameters have been changed. 2008-01-31 02:53 tjdwave * doc/latex_spec/terms.tex: [no log message] 2008-01-26 23:11 asuraparaju * ChangeLog: [no log message] 2008-01-26 23:02 asuraparaju * NEWS: Include 0.9.1 release notes. 2008-01-26 22:58 asuraparaju * extras/dirac_dshow/src/diracsplitter/stdafx.h: Fix bug where not all frame parse codes (e.g. no arith coding intra frames, auxiliary data, padding data, etc) were being processes by the parsing function. 2008-01-26 22:54 asuraparaju * extras/patches/: README_ffmpegsvn_trunk_revision_11612-dirac-0.9.x_patch, ffmpegsvn_trunk_revision_11612-dirac-0.9.x.patch: Dirac patch for FFmpeg svn revision 11612. Fixed bug# 1877990. Applied patch supplied with the bug report. Fixed bug where not all frame type (.e.g. no-Arith coding intra frames) were being handled by the parser function. 2008-01-26 22:50 asuraparaju * extras/patches/: MPlayer-1.0rc2_dirac-0.9.x.patch, README_MPlayer-1.0rc2_dirac-0.9.x_patch: Fix bug# 1878017. Modified dirac detection technique to auto-detection based on extension. Fixed bug where not all frame types (.e.g no-Arith-coding intra frames) were being recognised. 2008-01-26 22:44 asuraparaju * libdirac_encoder/rate_control.cpp: Fix bug that caused encoder to crash when encoding i-frame only streams in constant bitrate mode. 2008-01-26 22:43 asuraparaju * libdirac_common/common.cpp: Update supported version to 2.1 2008-01-26 22:42 asuraparaju * configure.ac: Update release id to 0.9.1 2008-01-26 22:42 asuraparaju * doc/specification.html: Update Dirac Spec link to point to the spec release 2.1.0 2008-01-24 22:47 tjdwave * README: Fixed incorrect instructions for IP coding. 2008-01-24 21:10 tjdwave * doc/latex_spec/abstract.tex, doc/latex_spec/bs-spec.tex, doc/latex_spec/intro.tex, doc/latex_spec/layout-fullsize.tex, doc/latex_spec/mc.tex, doc/latex_spec/ref-default-videoparams.tex, doc/latex_spec/state-macros.tex, libdirac_common/mot_comp.cpp: Incorrect motion compensation block weighting matrix specified. Version moved up to 2.1 for correction. Code updated also. 2008-01-23 12:17 asuraparaju * ChangeLog: [no log message] 2008-01-23 12:13 asuraparaju * NEWS: Include Dirac 0.9.0 release notes. 2008-01-23 11:42 asuraparaju * doc/specification.html: Updated with new information and links to released spec docs. 2008-01-23 11:40 asuraparaju * doc/todo.html: Update list. 2008-01-23 11:39 asuraparaju * doc/licences.html: Fix GNU licences URL. 2008-01-22 22:39 asuraparaju * doc/documentation/code/programmers_guide/: decoder_api_functions.htm, encoder_api_example.htm, encoder_data_structs.htm, index.htm, intro.htm, overview.htm, software.htm: Updated for Dirac 0.9.0 api changes. 2008-01-22 18:38 asuraparaju * libdirac_byteio/byteio.h, libdirac_encoder/comp_compress.h: Fix doxygen warnings 2008-01-22 18:15 asuraparaju * configure.ac: Updated Dirac release version to 0.9.0 2008-01-22 18:10 asuraparaju * extras/patches/: MPlayer-1.0rc2_dirac-0.9.x.patch, README_MPlayer-1.0rc2_dirac-0.9.x_patch, README_ffmpegsvn_trunk_revision_11592-dirac-0.9.x_patch, ffmpegsvn_trunk_revision_11592-dirac-0.9.x.patch: MPlayer and FFmpeg patches for Dirac release 0.9.0 2008-01-22 11:17 asuraparaju * libdirac_common/common.cpp: Updated version to 2.0 (major 2 minor 0) to match version of spec the s/w is compliant with. 2008-01-22 00:32 tjdwave * doc/latex_spec/: abstract.tex, intro.tex, layout-fullsize.tex, profilelevel.tex: Moved version to 2.0. 1.0=Dirac Pro=Intra only. Removed stuff on levels and profiles: now there are just values for "undefined". 2008-01-17 23:19 tjdwave * doc/latex_spec/wlt-unpacking.tex: Better normative language. 2008-01-17 03:11 tjdwave * libdirac_encoder/: quant_chooser.cpp, quant_chooser.h: Improved and cleaned up quantiser selection. 2008-01-17 03:09 tjdwave * libdirac_common/video_format_defaults.cpp: Set default wavelet depth to 5 for better performance. 2008-01-16 21:05 tjdwave * doc/latex_spec/mc.tex: Changed spatial weighting matrix to give better weights for offset=1. 2008-01-16 21:01 tjdwave * libdirac_common/mot_comp.cpp: Changed spatial weighting matrix so that weights for offset=1 will be (3,5) rather than (1,7). This will reduce blockiness for chroma components. 2008-01-16 13:42 asuraparaju * libdirac_byteio/parseunit_byteio.h: Fix bug in test for auxiliary data parse unit. 2008-01-15 15:36 asuraparaju * doc/documentation/code/programmers_guide/common_data_structs.htm, libdirac_byteio/displayparams_byteio.cpp, libdirac_byteio/displayparams_byteio.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/common_types.h, libdirac_common/dirac_exception.h, libdirac_common/dirac_types.h, libdirac_common/video_format_defaults.cpp, libdirac_decoder/dirac_parser.cpp, libdirac_encoder/dirac_encoder.cpp, util/instrumentation/instrmain.cpp: Spec Compliance - nomenclature changes. Rename aspect_ratio to pixel_aspect_ratio, sampling_format to chroma_sampling_format. 2008-01-15 11:19 asuraparaju * libdirac_byteio/dirac_byte_stream.cpp: Fix bug in handling concatenated dirac streams. 2008-01-14 12:22 asuraparaju * extras/dirac_dshow/src/diracsplitter/DiracSplitter.vcproj: Fix include path and linker flags, and libraries for static-release target. 2008-01-11 03:11 tjdwave * doc/latex_spec/: motion-dec.tex, spec-structure.tex, state-macros.tex, wlt-unpacking.tex: Re-working of motion data decoding to use more spec-like language and to conform to the style used in VC-2. 2008-01-10 02:42 tjdwave * doc/latex_spec/: bs-spec.tex, layout-fullsize.tex, mc.tex, motion-dec.tex, spec-conventions.tex, state-macros.tex: Modified motion decoding to clarify mode meanings and adopt consistent terminology for modes, vectors and global motion parameters. 2008-01-09 23:37 tjdwave * doc/latex_spec/arith.tex: Conformed to VC-2 spec. 2008-01-09 22:36 tjdwave * doc/latex_spec/mc.tex: Clarified informative note to fix Bug 10. 2008-01-09 22:31 tjdwave * doc/latex_spec/: bs-spec.tex, motion-dec.tex: Fixed typos in Bug #11 2008-01-09 21:50 asuraparaju * libdirac_common/: common.h, mot_comp.cpp, mot_comp.h, mot_comp_mmx.cpp, mot_comp_mmx.h: Spec compliance. Modify motion compensations functions to comply with latest specification. 2008-01-09 21:48 asuraparaju * libdirac_common/video_format_defaults.cpp, libdirac_encoder/frame_compress.cpp: Fix bug in setting default picture weights and precision. They are now set only in one place. 2008-01-09 21:45 asuraparaju * libdirac_byteio/: frame_byteio.cpp, mvdata_byteio.cpp: Minor corrections to comments. 2008-01-09 21:44 asuraparaju * libdirac_byteio/displayparams_byteio.cpp: Fix bug where the colour specification defaults were not being set for custom specification index 0. 2008-01-09 21:43 asuraparaju * extras/dirac_dshow/src/diracsplitter/DiracSplitterFile.cpp: Correct interlace field name to source_sampling in the source params. 2008-01-09 21:41 asuraparaju * win32/: VS2003/libdirac_common/libdirac_common.vcproj, VisualStudio/libdirac_common/libdirac_common.vcproj: Include band_vlc.h and band_vlc.cpp in sources list to build the target. 2008-01-09 01:50 tjdwave * doc/latex_spec/: abstract.tex, arith.tex, bs-spec.tex, dataenc.tex, idwt.tex, layout-fullsize.tex, lifting.tex, motion-dec.tex, picture-dec.tex, quant-matrix.tex, sequence-dec.tex, spec-conventions.tex, spec-structure.tex, state-macros.tex, video-interface.tex, vidsys-aspect.tex, vidsys-colour.tex, vidsys-colourmatrix.tex, vidsys-colourprimaries.tex, vidsys-framerate.tex, vidsys-sigrange.tex, vidsys-transfer.tex, wlt-dec.tex, wlt-unpacking.tex: Fixed Annex A (Data Encodings) to agree with VC-2 spec, including clarification of contexts. Fixed arithmetic coding initialisation in motion data decoding.Various tidyings. 2008-01-08 22:46 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, dataenc.tex, mc.tex, motion-dec.tex, sequence-dec.tex, spec-conventions.tex, wlt-unpacking.tex: Cross-reference chasing. Some arithmetic coding incompatibilities with VC-2 spec fixed. 2008-01-08 03:12 tjdwave * doc/latex_spec/: bs-spec.tex, dataenc.tex, layout-fullsize.tex, picture-dec.tex, terms.tex, wlt-unpacking.tex: Fixed some cross-reference bugs. 2008-01-07 23:18 tjdwave * doc/latex_spec/mc.tex: Fixed bug with sub-pel motion compensation. 8th pel should now be correctly spec'd. 2008-01-07 23:17 tjdwave * doc/latex_spec/bs-spec.tex: Fixed minor discrepancy over parse code with VC-2. 2008-01-03 14:42 asuraparaju * libdirac_common/common.cpp, libdirac_common/common_types.h, doc/documentation/code/programmers_guide/common_data_structs.htm: Minor nomenclature change - rename colour primary enums to match spec. 2008-01-03 14:40 asuraparaju * libdirac_byteio/parseunit_byteio.h: Spec compliance - Modify Auxiliary Data parse code test function as per spec. 2008-01-03 14:39 asuraparaju * libdirac_byteio/frame_byteio.cpp: Spec compliance - VLC not supported for Inter frames. Modified the error message accordingly. 2008-01-03 14:36 asuraparaju * README, libdirac_byteio/displayparams_byteio.cpp, libdirac_common/dirac_types.h, libdirac_encoder/dirac_encoder.cpp, encoder/encmain.cpp: Spec Compliance - Field dominance flag (top_field_first) can no longer be overridden in the source parameters. 2008-01-02 22:59 tjdwave * doc/latex_spec/mc.tex: Minor typo. 2007-12-21 02:04 tjdwave * doc/latex_spec/: bs-spec.tex, quant-matrix.tex: Bug fixes. 2007-12-21 01:54 tjdwave * doc/latex_spec/: bs-spec.tex, quant-matrix.tex, state-macros.tex: Modified quant matrix so that it's calculated from the synthesis filters and properly normalised. Changed the scan format part so that the top field first flag can't be overridden in the source parameters. This is consistent with vc2. VC2 now submitted: these should be the last changes to the non-motion data except for bug fixes. This part is frozen. 2007-12-14 03:36 tjdwave * doc/latex_spec/vidsys.tex: [no log message] 2007-12-14 03:35 tjdwave * doc/latex_spec/vidsys.tex: Conformed against VC-2 specification version. 2007-12-14 02:15 tjdwave * doc/latex_spec/video-interface.tex: Ported text from VC-2 spec. 2007-12-14 01:49 tjdwave * libdirac_common/band_vlc.h, libdirac_encoder/rate_control.cpp: Fixed g++ 4.1.3 compiler errors. 2007-12-13 21:12 tjdwave * doc/latex_spec/mc.tex: Fixed bug in block_mc function for bi-directional mode. 2007-12-13 12:56 asuraparaju * libdirac_common/common.h: Fix error in PicArray constructor when MMX opts are not being used. 2007-12-13 02:27 tjdwave * libdirac_encoder/rate_control.cpp: Fixed bug with emergency re-allocation: this was throwing out the subgroup frame count. 2007-12-13 01:01 tjdwave * libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/quant_chooser.cpp, libdirac_encoder/quant_chooser.h, libdirac_encoder/rate_control.cpp, libdirac_encoder/rate_control.h, libdirac_encoder/seq_compress.cpp: Modified rate control. The rate control no longer crashes when it inserts intra pictures: the picture bits in this case are allocated to the _scheduled_ picture type. A tentative buffer model has been re-introduced whereby the GOP allocation is adapted slowly to reduce overshoots, and quickly to reduce undershoots. The buffer target occupancy is set to 90%, and once every GOP this is corrected for bit rate overshoots, and once every subgroup (i.e. much faster) it is corrected, by a larger amount, for bit rate undershoots. In addition, if the bit rate for a particular frame is <50% of the target bit rate, an emergency reallocation is applied. The frame compressor and sequence compressor classes have been re-arranged so that the frame compressor manages quantisation selection. This will allow the rate controller to be modified with look-ahead, changing QF values ahead of time based on estimated bit rate for residuals, as well as on the results of motion estimation. At the moment it's still pure feedback however. Performance on difficult pictures has also been improved by increasing the quality of inserted I frames, and increasing the premium given to pictures with a large number of intra blocks. Quantiser selection has also been tidied a little. 2007-12-12 22:48 tjdwave * doc/latex_spec/: bs-spec.tex, layout-fullsize.tex, spec-conventions.tex, state-macros.tex, terms.tex: Minor wording changes, consistent with VC-2. 2007-12-12 22:17 tjdwave * doc/latex_spec/motion-dec.tex: Fixed bug with dc value prediction in motion decoding. (Also fixed in code now). 2007-12-12 22:10 tjdwave * libdirac_common/mv_codec.cpp: Default DC prediction value should be 0. Specification needs updating too. 2007-12-12 03:17 tjdwave * libdirac_encoder/dirac_encoder.cpp: Fixed bug with calculating bit rates for individual GOPs: these were being over-estimated by about 10%. 2007-12-11 13:27 asuraparaju * README, decoder/decmain.cpp, doc/documentation/code/programmers_guide/common_data_structs.htm, doc/documentation/code/programmers_guide/encoder_api_example.htm, encoder/encmain.cpp, libdirac_byteio/codingparams_byteio.cpp, libdirac_byteio/displayparams_byteio.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/dirac_types.h, libdirac_common/video_format_defaults.cpp, libdirac_decoder/dirac_parser.cpp, libdirac_encoder/dirac_encoder.cpp, util/instrumentation/instrmain.cpp: Spec conformance - Made the source scanning format into a uint parameter rather than a boolean flag. 2007-12-10 20:24 tjdwave * doc/latex_spec/: bs-spec.tex, motion-dec.tex, profilelevel.tex, state-macros.tex, vidsys.tex, wlt-unpacking.tex: Made the source scanning format into a uint parameter rather than a boolean flag, so that we can support other formats than progressive and interlaced in future. Fixed Schleef bugs #2 and #3. 2007-12-05 12:42 asuraparaju * README, doc/documentation/code/programmers_guide/encoder_data_structs.htm, encoder/encmain.cpp, libdirac_byteio/codingparams_byteio.cpp, libdirac_byteio/codingparams_byteio.h, libdirac_common/common.h, libdirac_common/dirac_exception.h, libdirac_common/video_format_defaults.cpp, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/dirac_parser.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/rate_control.cpp, libdirac_encoder/seq_compress.cpp, tests/samples.at, util/instrumentation/instrmain.cpp: Field coding flag in sequence header changed to picture coding flag to comply with spec version 1.0.0_pre10. The external encoder API has also been modified to reflect this change. Note that internally the field coding flag is still used until we support picture coding modes other than 0 (frames) or 1 (fields). Both encoder and decoder libraries will return an error if a picture coding mode other than 0 or 1 is used. 2007-12-05 12:23 asuraparaju * libdirac_common/: band_codec.cpp, band_vlc.cpp: Modify calculation of mean of three numbers as per spec. 2007-12-04 02:22 tjdwave * doc/latex_spec/: bs-spec.tex, layout-fullsize.tex, mc.tex, motion-dec.tex, picture-dec.tex, spec-conventions.tex: More VC-2 compatability updates. Also, modifed motion compensation to fit into 16 bits. Upconverted reference no longer necessary for pixel- accurate motion compensation: upconverted ref has size 2W-1 x 2H-1 so that (even) edge pixels are all derived from original data. 2007-11-23 02:19 tjdwave * libdirac_common/: upconvert.cpp, upconvert.h, upconvert_mmx.cpp: Changed filter to 8 taps with 6 signed bits per tap by approximating the original 10 tap, 9 bit filter. The intermediate calculations will now fit into 16 bits even for 10 bit input data. The new filter causes compression to be up to 0.1dB worse, in return for much speedier performance when optimised. The MMX version has been removed, but may be reinstated at a later date. 2007-11-16 15:54 asuraparaju * libdirac_byteio/: accessunit_byteio.h, dirac_byte_stream.cpp: Terminology change to match spec - Renamed PU_ACCESS_UNIT to PU_SEQ_HEADER. 2007-11-16 15:52 asuraparaju * libdirac_common/: band_vlc.cpp, band_vlc.h: New class BandVLC to enable entropy coding of entropy data using VLC only. 2007-11-16 15:51 asuraparaju * README, encoder/encmain.cpp: New command line argument -use_vlc to enable use of VLC for entropy coding of coefficients. VLC of coefficients is enabled for i-frame only sequences at the moment. 2007-11-16 15:50 asuraparaju * libdirac_byteio/: frame_byteio.cpp, frame_byteio.h: Added support for using VLC codes for entropy coding of coefficient data. Renamed i/o functions to match spec. 2007-11-16 15:50 asuraparaju * libdirac_common/Makefile.am, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/video_format_defaults.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/dirac_cppparser.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/seq_compress.cpp, doc/documentation/code/programmers_guide/encoder_data_structs.htm, tests/samples.at, unit_tests/motion_comp_test.cpp: Added support for using VLC codes for entropy coding of coefficient data. 2007-11-16 15:48 asuraparaju * libdirac_byteio/accessunit_byteio.cpp, libdirac_byteio/byteio.cpp, libdirac_byteio/byteio.h, libdirac_byteio/codingparams_byteio.cpp, libdirac_byteio/displayparams_byteio.cpp, libdirac_byteio/mvdata_byteio.cpp, libdirac_byteio/mvdataelement_byteio.cpp, libdirac_byteio/parseparams_byteio.cpp, libdirac_byteio/parseunit_byteio.cpp, libdirac_byteio/parseunit_byteio.h, libdirac_byteio/subband_byteio.cpp, libdirac_byteio/transform_byteio.cpp, libdirac_common/arith_codec.cpp, libdirac_common/arith_codec.h: Added functions to support bounded i/o. Renamed i/o functions to match spec. 2007-11-12 13:27 asuraparaju * libdirac_byteio/frame_byteio.cpp, libdirac_byteio/frame_byteio.h, libdirac_common/common.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/seq_compress.cpp: Implement retired picture buffer management modifications as per latest spec. - Only one picture is modified at a time. - Retire only when decoding a reference picture. - Do all retirements at the beginning of a picture rather than at the end. 2007-11-12 13:24 asuraparaju * libdirac_common/: common.cpp, common_types.h, video_format_defaults.cpp: Include (15000, 1001) and (25, 2) frame rate presets in the standard frame rates table. 2007-11-12 13:20 asuraparaju * decoder/decmain.cpp, libdirac_decoder/dirac_cppparser.cpp: Cosmetic changes - all debug info in verbose mode is output to standard out and not standard error to keep it consistent with rest of code. 2007-11-09 03:46 tjdwave * doc/latex_spec/: bs-spec.tex, dataenc.tex, idwt.tex, layout-fullsize.tex, lifting.tex, mc.tex, picture-dec.tex, ref-default-videoparams.tex, spec-conventions.tex, spec-structure.tex, state-macros.tex, terms.tex, vidsys.tex, wlt-unpacking.tex: Further compliance modifications with VC-2. Reorganisation to simplify motion compensation sections (ongoing). 2007-11-07 17:58 asuraparaju * encoder/encmain.cpp, util/instrumentation/instrmain.cpp: Terminology changes - Renamed video format names as per spec. Renamed interlace coding flag to interlaced coding flag as per spec. Modified acceptable input values for cformat arg to make it clearer as to what the sampling formats supported are. Note that the command line arguments have changed as a result of this. Fixed bug in writing the instrumentation data header. Interlaced coding flag is now written to the instrumentation output so that the dirac_instrumentation utility works correctly. 2007-11-07 17:52 asuraparaju * libdirac_encoder/: dirac_encoder.cpp, dirac_encoder.h: Terminology change - renamed interlace coding flag to interlaced coding flag as per spec. The signal range for all input data is set to 8BIT_VIDEO as Dirac currently supports 8 bit data only. 2007-11-07 17:49 asuraparaju * README, doc/documentation/code/programmers_guide/encoder_data_structs.htm, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/common_types.h, libdirac_common/video_format_defaults.cpp, tests/colourbars.at, tests/samples.at: Terminology changes - renamed Video format names to match spec. Renamed interlace coding flag to interlaced coding flag as per spec. Note that command line interface of encoder app has changed as a result of these changes. 2007-11-07 17:46 asuraparaju * libdirac_byteio/codingparams_byteio.cpp, libdirac_byteio/codingparams_byteio.h, libdirac_decoder/dirac_parser.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/rate_control.cpp, libdirac_encoder/seq_compress.cpp: Terminology change - renamed interlace coding flag to interlaced coding flag as per spec. 2007-11-07 17:39 asuraparaju * libdirac_byteio/mvdata_byteio.cpp: Simplified picture prediction header as per spec. 2007-11-07 17:37 asuraparaju * libdirac_byteio/: frame_byteio.h, parseunit_byteio.h: Modified Parse code function definitions as per spec. 2007-11-07 17:35 asuraparaju * libdirac_byteio/: accessunit_byteio.h, displayparams_byteio.h: Renamed DisplayParamsByteIO class as SourceParamsByteIO. 2007-11-07 17:34 asuraparaju * libdirac_byteio/: accessunit_byteio.cpp, displayparams_byteio.cpp: Renamed DisplayParamsByteIO class to SourceParamsByteIO. Simplified Scan Format i/o changes as per spec. 2007-11-06 03:33 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, conformance.tex, core-wlt-dec.tex, dataenc.tex, layout-fullsize.tex, low-delay.tex, mc.tex, motion-dec.tex, picture-dec.tex, profilelevel.tex, ref-default-videoparams.tex, sequence-dec.tex, sourcepresets.tex, spec-conventions.tex, spec-structure.tex, state-macros.tex, terms.tex, unpack-common.tex, video-interface.tex, vidsys.tex, wlt-unpacking.tex: Further restructuring and conformance to VC-2 spec. Split off sequence decoding from picture decoding. Changed how reference pictures are removed from the buffer. 2007-10-11 02:04 tjdwave * doc/latex_spec/: bs-spec.tex, idwt.tex, low-delay.tex, quant-matrix.tex, ref-default-videoparams.tex, state-macros.tex: Fixed wavelet_depth/transform_depth ambiguity. 2007-10-10 22:28 tjdwave * doc/latex_spec/bs-spec.tex: Updated interlace spec. 2007-10-10 22:26 tjdwave * encoder/encmain.cpp, libdirac_byteio/codingparams_byteio.cpp, libdirac_common/common.h, libdirac_common/video_format_defaults.cpp, libdirac_decoder/dirac_parser.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/rate_control.cpp, libdirac_encoder/seq_compress.cpp: Simplified interlace coding parameters as per the spec. Also changed the terminology to distinguish between interlace coding and interlaced format. 2007-10-10 18:56 tjdwave * libdirac_byteio/transform_byteio.cpp: Changed transform coding so that wavelet depth and transform type are always signalled, to conform with spec. 2007-10-10 18:30 tjdwave * libdirac_byteio/transform_byteio.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/video_format_defaults.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/frame_compress.cpp: Changed coding of spatial partition, so that if codeblocks are used then the number of codeblocks is always coded for each level. This means that the "default spatial partition" flag is removed from the code and the spec. 2007-10-10 17:51 tjdwave * doc/latex_spec/: bs-spec.tex, core-wlt-dec.tex, low-delay.tex, mc.tex, motion-dec.tex, picture-dec.tex, ref-default-videoparams.tex, sourcepresets.tex, spec-conventions.tex, spec-structure.tex, state-macros.tex, terms.tex, vidsys.tex: Major changes to get compliance with VC-2 spec. Work in ongoing. 2007-10-02 20:52 asuraparaju * README: Correct the names of the Wavelet filters. 2007-10-02 20:48 asuraparaju * doc/documentation.html: Include IBC 2007 documents in list of publications. 2007-10-02 20:33 asuraparaju * doc/documentation/publications/: dirac-bbc-brochure_Layout-1.pdf, dirac-numediabrochure.pdf: IBC 2007 docs 2007-10-02 19:28 asuraparaju * extras/patches/: README_ffmpegsvn_trunk_revision_10636-dirac-0.8.x_patch, ffmpegsvn_trunk_revision_10636-dirac-0.8.x.patch: Patch FFMpeg trunk revsion 10636 to enable encoding, decoding and playback of Dirac files. 2007-10-01 20:57 asuraparaju * ChangeLog: [no log message] 2007-10-01 11:51 asuraparaju * configure.ac: Update release version to 0.8.0 2007-10-01 11:48 asuraparaju * NEWS: Include 0.8.0 release notes 2007-10-01 11:47 asuraparaju * extras/patches/: MPlayer-1.0rc1_dirac-0.8.x.patch, README_MPlayer-1.0rc1_dirac-0.8.x_patch, README_ffmpegsvn_trunk_revision_10630-dirac-0.8.x_patch, ffmpegsvn_trunk_revision_10630-dirac-0.8.x.patch: Mplayer patch to play back dirac bytestreams. FFMpeg patch to encode and decoder dirac bytestreams. 2007-09-28 16:46 asuraparaju * doc/documentation/code/programmers_guide/common_data_structs.htm, doc/documentation/code/programmers_guide/encoder_data_structs.htm, doc/documentation/code/programmers_guide/index.htm, encoder/encmain.cpp, libdirac_byteio/codingparams_byteio.cpp, libdirac_byteio/parseparams_byteio.cpp, libdirac_byteio/parseunit_byteio.h, libdirac_byteio/transform_byteio.cpp, libdirac_common/common.cpp, libdirac_common/common_types.h, libdirac_common/video_format_defaults.cpp, libdirac_common/video_format_defaults.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_common/wavelet_utils_mmx.cpp, libdirac_encoder/dirac_encoder.cpp: Minor mods to conform to spec version 1.0.0.pre9_02 2007-09-26 13:23 asuraparaju * libdirac_common/pic_io.h: Fix doxygen warnings 2007-09-26 13:18 asuraparaju * encoder/encmain.cpp, libdirac_byteio/codingparams_byteio.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/mot_comp.cpp, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/dirac_parser.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/rate_control.cpp, libdirac_encoder/rate_control.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, util/instrumentation/instrmain.cpp, util/instrumentation/process_sequence.cpp: Added support for interlaced coding. Changes include refactoring of PicIO classes, SequenceCompressor class to handle interlaced coding. Modified GOP structure for interlaced coding to code interlaced material more efficiently. 2007-09-21 10:00 asuraparaju * README: Changes to encoder command line interface and preset values. 2007-09-19 12:20 tjdwave * doc/latex_spec/arith.tex: Changed initial range to be 0xFFFF instead of 0x10000 as per the software. 2007-09-19 12:19 tjdwave * libdirac_common/: arith_codec.cpp, arith_codec.h: Changed intial range to be 0xFFFF instead of 0x10000 on suggestion of Dave Schleef. This way the range always stays in 16 bits. 2007-09-06 14:02 asuraparaju * win32/: VS2003/DecodeDirac/DecodeDirac.vcproj, VS2003/DiracDecoder/DiracDecoder.vcproj, VS2003/DiracEncoder/DiracEncoder.vcproj, VS2003/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, VS2003/EncodeDirac/EncodeDirac.vcproj, VS2003/InstrumentDirac/InstrumentDirac.vcproj, VS2003/InstrumentDirac/libdirac_instrument/libdirac_instrument.vcproj, VS2003/libdirac_byteio/libdirac_byteio.vcproj, VisualStudio/DecodeDirac/DecodeDirac.vcproj, VisualStudio/DiracDecoder/DiracDecoder.vcproj, VisualStudio/DiracEncoder/DiracEncoder.vcproj, VisualStudio/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, VisualStudio/EncodeDirac/EncodeDirac.vcproj, VisualStudio/InstrumentDirac/InstrumentDirac.vcproj, VisualStudio/InstrumentDirac/libdirac_instrument/libdirac_instrument.vcproj: Included HAVE_MMX in preprocessor macros for all mmx targets. This fixed the bug where encoding using mmx builds was crashing. 2007-09-05 14:51 asuraparaju * win32/VS2003/DiracEncoder/DiracEncoder.vcproj: Fix typo in specifying outour directory for dynamically linked Debug-mmx target. 2007-09-05 14:20 asuraparaju * doc/documentation/code/programmers_guide/: common_data_structs.htm, decoder_api_example.htm, decoder_api_functions.htm, decoder_api_overview.htm, decoder_api_reference.htm, decoder_data_structs.htm, encoder_api_example.htm, encoder_api_functions.htm, encoder_api_overview.htm, encoder_api_reference.htm, encoder_data_structs.htm, index.htm, intro.htm: Updated the programmers guide as per the latest specification. 2007-09-03 15:52 asuraparaju * libdirac_common/upconvert.h, libdirac_common/wavelet_utils.h, libdirac_encoder/frame_compress.h, libdirac_motionest/block_match.h: Fix doxygen warnings 2007-09-03 12:31 asuraparaju * decoder/decmain.cpp, doc/documentation/code/programmers_guide/common_data_structs.htm, doc/documentation/code/programmers_guide/encoder_data_structs.htm, encoder/encmain.cpp, extras/dirac_dshow/src/diracsplitter/DiracSplitter.cpp, extras/dirac_dshow/src/diracsplitter/DiracSplitterFile.cpp, libdirac_byteio/Makefile.am, libdirac_byteio/accessunit_byteio.cpp, libdirac_byteio/accessunit_byteio.h, libdirac_byteio/codingparams_byteio.cpp, libdirac_byteio/codingparams_byteio.h, libdirac_byteio/displayparams_byteio.cpp, libdirac_byteio/displayparams_byteio.h, libdirac_byteio/frame_byteio.cpp, libdirac_byteio/frame_byteio.h, libdirac_byteio/mvdata_byteio.cpp, libdirac_byteio/parseunit_byteio.cpp, libdirac_byteio/parseunit_byteio.h, libdirac_decoder/dirac_cppparser.cpp, libdirac_decoder/dirac_cppparser.h, libdirac_decoder/dirac_parser.cpp, libdirac_decoder/dirac_parser.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, tests/colourbars.at, tests/samples.at, unit_tests/frames_test.cpp, unit_tests/motion_comp_test.cpp, util/instrumentation/instrmain.cpp, util/instrumentation/process_sequence.cpp, util/instrumentation/process_sequence.h, win32/VS2003/libdirac_byteio/libdirac_byteio.vcproj, win32/VisualStudio/libdirac_byteio/libdirac_byteio.vcproj: Changes to conform with latest Spec. - Changes to Access Unit Header 2007-09-03 12:30 asuraparaju * libdirac_common/: arrays.h, common.cpp, common.h, common_types.h, dirac_types.h, frame.cpp, frame.h, frame_buffer.cpp, frame_buffer.h, pic_io.cpp, pic_io.h, video_format_defaults.cpp, video_format_defaults.h, wavelet_utils.cpp: Changes to conform to latest spec - Access Unit Header Changes - New video formats supported - Wavelet filter changes. - Video format default values 2007-08-31 14:10 asuraparaju * util/instrumentation/libdirac_instrument/: draw_overlay.cpp, motion_arrows.cpp, motion_colour.cpp, motion_colour_arrows.cpp, overlay.cpp, pred_mode.cpp, sad.cpp, split_mode.cpp: Treat all input and intermediate data as bipolar. It is converted to unsigned byte when written to the output file. 2007-08-24 17:13 asuraparaju * libdirac_common/frame.cpp, libdirac_common/pic_io.cpp, libdirac_decoder/dirac_parser.cpp, libdirac_motionest/me_utils_mmx.cpp: All the encoded components now represent signed integer signals i.e. bipolar signals. 2007-08-23 16:05 tjdwave * doc/latex_spec/mc.tex: Changed clipping for motion compensation to take account of bipolar signals 2007-08-23 16:02 tjdwave * doc/latex_spec/: bs-spec.tex, picture-dec.tex, ref-default-videoparams.tex, vidsys.tex: Initial mod to show that video signals in Dirac should now be considered bipolar. Clipping therefore applies to the range [-2^{N-1}, 2^{N-1}-1] 2007-08-21 13:46 asuraparaju * libdirac_common/frame_buffer.cpp, libdirac_encoder/seq_compress.cpp: Fix errors reported by valgrind where unitialiased data was being read from upconverted arrays. The upconverter uses the actual frame dimensions and not the padded dimensions whereas the ME engine uses the padded dimensions which is resulting in unitialised data reads. The motion estimation frame buffer now holds the actual frames rather than the padded frames to overcome this problem. 2007-08-21 13:42 asuraparaju * libdirac_common/: arrays.h, frame.cpp, frame.h: New functions to copy contents of one frame to another without altering the dimensions of the destination frame. The destination frame is padded with the last true value in the source frame if it is bigger than the source frame. 2007-08-13 11:41 tjdwave * libdirac_encoder/seq_compress.cpp: Typo. 2007-08-13 11:30 tjdwave * libdirac_encoder/seq_compress.cpp: Minor tidy. 2007-08-13 11:30 tjdwave * libdirac_encoder/frame_compress.cpp: Removed superfluous SAD test in cut detection. 2007-08-13 11:29 tjdwave * libdirac_motionest/me_mode_decn.cpp: Changed anti-intra bias to 10%: i.e. intra only needs to be 10% better in SAD terms to be chosen, rather than 20%. This (slightly) improves ME mismatches. 2007-08-07 14:19 tjdwave * doc/latex_spec/idwt.tex: Clarified IDWT filtering definition. 2007-08-02 15:22 tjdwave * libdirac_motionest/: block_match.cpp, block_match.h, pixel_match.cpp, pixel_match.h: Minor simplification of pixel matching code. 2007-08-02 15:04 tjdwave * doc/latex_spec/bs-spec.tex: Fixed comment over reference picture removal. Also fixed typo in pseudocode. 2007-07-31 16:21 tjdwave * libdirac_encoder/rate_control.cpp: [no log message] 2007-07-31 16:13 tjdwave * libdirac_encoder/: rate_control.cpp, rate_control.h: Bug fixes. Fixed problem with int32 overflow with very high bit rates. Fixed problem with non-integral frame rates being incorrectly set. 2007-07-30 19:40 asuraparaju * libdirac_common/motion.cpp: Initialise intra costs and dc arrays to prevent uninitialised read error and memory hogging in intrumentation utilities. 2007-07-26 13:56 tjdwave * libdirac_motionest/me_mode_decn.cpp: Improve Intra mode selection routine. Incorrect RDO modelling of mode selection has been removed, and intra is only selected if a) motion compensated error is not very small, and b) intra gives a substantial SAD improvement. 2007-07-26 13:53 tjdwave * unit_tests/wavelet_utils_test.cpp: Adapted unit test to support a coefficient array being passed to the transform. 2007-07-26 13:49 tjdwave * libdirac_encoder/dirac_encoder.cpp: Added class to cope with array types being different. 2007-07-26 13:47 tjdwave * encoder/encmain.cpp: Supports higher wavelet depth when MMX is not used. 2007-07-26 13:46 tjdwave * libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_common/wavelet_utils_mmx.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/quant_chooser.cpp, libdirac_encoder/quant_chooser.h: Added CoeffType and CoeffArray types for wavelet coefficients and arrays of coefficients. For MMX optimisation, CoeffType will be short, but otherwise it will be int. In this way large wavelet depths can be supported. 2007-07-26 13:39 tjdwave * libdirac_encoder/rate_control.cpp: Fixed correct initialisation of QF when CBR is used. 2007-07-25 14:26 asuraparaju * libdirac_common/common.h: Remove all references to oicturen number in access unit. 2007-07-24 16:55 tjdwave * doc/latex_spec/: core-wlt-dec.tex, idwt.tex, picture-dec.tex, unpack-common.tex: Fixed bugs notified on forum. 2007-07-24 09:32 tjdwave * doc/latex_spec/: bs-spec.tex, layout-fullsize.tex: Updated parse codes and version number. _pre8 will now be released. 2007-07-18 09:14 tjdwave * libdirac_common/: band_codec.cpp, wavelet_utils.cpp: Clarified parent-child relationship and context selection. No parent is now assigned to the lowest 4 subbands and the context selection just depends on the parent value, which is set to zero when there is no defined parent band. 2007-07-17 09:46 tjdwave * libdirac_common/common.cpp: Fixed bug with 60 fps video. 2007-07-17 09:27 tjdwave * doc/latex_spec/: bs-spec.tex, parsediagrams.tex: Bug-fixes. 2007-07-16 16:11 asuraparaju * libdirac_byteio/accessunit_byteio.cpp, libdirac_byteio/accessunit_byteio.h, libdirac_byteio/frame_byteio.cpp, libdirac_byteio/frame_byteio.h, libdirac_byteio/parseparams_byteio.cpp, libdirac_byteio/parseparams_byteio.h, libdirac_byteio/parseunit_byteio.cpp, libdirac_byteio/parseunit_byteio.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/dirac_types.h, libdirac_decoder/dirac_parser.cpp, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h: Modify Access Unit Header as per latest specification. The Parse Parameters in the AU header no longer incluse the Picture Number of the 1st frame that follows the Access Unit Header. 2007-07-05 15:13 tjdwave * doc/latex_spec/: bs-spec.tex, core-wlt-dec.tex, lifting.tex, quant-matrix.tex, spec-structure.tex: Removed the AU Picture Number, which now serves no purpose. Also added parse code and operation for doing intra coding without arithmetic coding. This latter is still to be agreed. 2007-06-21 14:16 tjdwave * doc/latex_spec/: lifting.tex, quant-matrix.tex, spec-conventions.tex, spec-structure.tex: Added quantisation matrices for low delay syntax and informative text on quantisation strategies - also an informative annex on Lifting. 2007-06-21 14:13 tjdwave * libdirac_encoder/rate_control.cpp: [no log message] 2007-06-21 12:01 tjdwave * libdirac_encoder/rate_control.cpp: Experimental rate control for intra-only coding. This uses a recursive filter to adjust the quality factor. The rate of convergence is adaptive, depending on the difference between the actual and target quality, which overcomes the usual lag of recursive filtering. When the difference is large, convergence is steady. When it is relatively small, convergence is very rapid. 2007-06-20 15:42 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_motionest/block_match.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/pixel_match.cpp, libdirac_motionest/pixel_match.h: Added support for full-search block matching. This is controlled by using the flag -full_search [xr] [yr] to do an initial pixel-accurate search in the range [-xr,xr]x[-yr,yr]. Sub-pixel refinement is unaffected. Mode decision and the standard hierachical block match have been slightly changed to improve performance. 2007-06-18 17:05 asuraparaju * libdirac_common/wavelet_utils_mmx.cpp: Corrected name of DD9_3 filter to DD9_5 to be in sync with non-mmx version of this file. 2007-06-18 16:24 tjdwave * doc/specification.html, encoder/encmain.cpp, libdirac_common/common_types.h, libdirac_common/video_format_defaults.cpp, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/frame_decompress.cpp: Corrected name of DD9_3 filter to DD9_5. Changed weights for (13,5) to correspond to analysis rather than synthesis filter. This seems to give slightly better results even with perceptual weighting. 2007-06-18 16:22 tjdwave * doc/latex_spec/: bs-spec.tex, idwt.tex, low-delay.tex, quant-matrix.tex, ref-default-videoparams.tex, spec-structure.tex, state-macros.tex: Added default quantisation matrices. Also changed name of DD (9,3) filter to (9,5) filter as these are the correct filter lengths. 2007-06-10 17:19 asuraparaju * libdirac_decoder/comp_decompress.cpp: Fix unintialised value bug reported by valgrind. 2007-06-10 15:00 asuraparaju * libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame.cpp, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/upconvert_mmx.cpp, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_encoder/seq_compress.cpp, unit_tests/frames_test.cpp, unit_tests/motion_comp_test.cpp: Modified FrameParams class to include the original frame dimensions in addition to the padded (for dwt) dimensions. All operations in the decoder other than the inverse wavelet transform are now performed using the original frame dimensions. 2007-06-10 14:47 asuraparaju * libdirac_byteio/dirac_byte_stream.cpp: Fix memory leak reported by valgrind. Minor indentatiion changes. 2007-06-05 11:01 tjdwave * doc/latex_spec/: bs-spec.tex, mc.tex: Fixed bug with chroma MV scaling so that it now agrees with Dirac and Schro codebase. Fixed bug with motion compensation weight factors so that these are now correct. 2007-06-05 10:38 davidf_ * libdirac_common/mot_comp.cpp: Backing out commit 1.34. (chroma mv rounding, due to spec change) 2007-06-05 10:08 tjdwave * doc/latex_spec/: bs-spec.tex, layout-fullsize.tex, mc.tex: Fixed bugs and added clarification for chroma motion vectors. 2007-06-05 09:58 tjdwave * doc/specification.html: [no log message] 2007-06-05 09:55 davidf_ * libdirac_common/mot_comp.cpp: Spec compliance, chroma motionvectors should be scaled using round_divide as per 8.5.2.1 (spec1.0pre7) 2007-06-04 10:58 tjdwave * doc/latex_spec/mc.tex: Fixed bug with scaling motion vectors for chroma. 2007-06-04 10:56 tjdwave * doc/latex_spec/: state-macros.tex, unpack-common.tex: [no log message] 2007-06-04 10:55 tjdwave * doc/latex_spec/dataenc.tex: Added brace for clarification. 2007-06-04 10:54 tjdwave * doc/latex_spec/bs-spec.tex: Fixed minor spec low-delay bug. 2007-05-15 16:32 tjdwave * libdirac_encoder/rate_control.cpp: Removed buffer model because of performance issues. 2007-05-15 15:54 tjdwave * libdirac_encoder/: frame_compress.cpp, frame_compress.h, rate_control.cpp, rate_control.h, seq_compress.cpp: Modified constant bit-rate operation, so that when a cut is detected the long-term qf is used, instead of the current one in the rate model. This has the effect of reducing quality crashes and rate explosions. 2007-05-15 13:40 asuraparaju * Makefile.am: In addition to the regular targets (all, check, valgrind-check), added the following new targets make codec - builds the libraries and encoder and decoder utilities make codec-check - builds the libraries and encoder, decoder and instrumentation and unit_tests and runs the tests make encoder - builds the libs encoder depends on and the encoder make decoder - builds the libs decoder depends on and the decoder make instrumentation - builds the libraries instrumentation util depends on the the instrumentation tool. make conversion - builds conversion tool make unit_tests- builds libraries and the unit_test tool make doc - builds the doc 2007-05-15 13:00 tjdwave * libdirac_common/wavelet_utils.cpp: Fixed bug with DC weight being set incorrectly. 2007-05-15 10:19 tjdwave * libdirac_common/mot_comp.cpp: Added error message if reference pictures are not labeled as references. 2007-05-14 13:33 tjdwave * doc/latex_spec/: bs-spec.tex, layout-fullsize.tex, parsediagrams.tex, unpack-common.tex: Modified parse diagrams to give integrated structure. Minor changes to stream parsing to agree with the parse diagrams. 2007-05-09 15:35 tjdwave * doc/latex_spec/: abstract.tex, bs-spec.tex, conformance.tex, core-wlt-dec.tex, dataenc.tex, decoding-ops.tex, dirac-concepts.tex, idwt.tex, intro.tex, layout-fullsize.tex, low-delay.tex, mc.tex, motion-dec.tex, parsing.tex, picture-dec.tex, spec-conventions.tex, spec-structure.tex, state-macros.tex, stream-access.tex, terms.tex, unpack-common.tex, vidsys.tex, wlt-dec.tex, wlt-unpacking.tex: Restructuring to integrate the core and low-delay syntaxes properly. Added text from SMPTE VC-2 draft spec. 2007-05-09 15:06 asuraparaju * ChangeLog: [no log message] 2007-05-09 14:47 asuraparaju * extras/patches/: MPlayer-1.0rc1_dirac-0.7.x.patch, README_MPlayer-1.0rc1_dirac-0.7.x_patch, README_ffmpegsvn_trunk_revision_8950-dirac-0.7.x_patch, ffmpegsvn_trunk_revision_8950-dirac-0.7.x.patch: MPlayer and FFmpeg patches for Dirac 0.7.0 2007-05-08 17:17 asuraparaju * NEWS, doc/documentation/algorithm/algorithm/index.htm: Included note that Algorithm document is out of date. 2007-05-08 13:48 asuraparaju * doc/documentation/code/programmers_guide/: decoder_api_functions.htm, intro.htm, overview.htm: Changed software version to 0.7.0 2007-05-07 13:38 asuraparaju * libdirac_common/arith_codec.cpp: Convert DOS-style line breaks to Unix-style line breaks. 2007-05-04 14:59 asuraparaju * NEWS: Included notes on Release 0.7.0. 2007-05-04 14:12 asuraparaju * doc/documentation/code/programmers_guide/: encoder_api_functions.htm, encoder_data_structs.htm: Specify the link to the Dirac Bytestream Specification and the section that defines video format defaults for each preset. 2007-05-04 12:14 asuraparaju * doc/specification.html: Updated the specification document link to point to the latest spec release. 2007-05-04 11:53 asuraparaju * AUTHORS, README, configure.ac: Updated for release 0.7.0 2007-05-03 16:24 tjdwave * doc/latex_spec/: dataenc.tex, low-delay.tex: Minor bug-fixes. 2007-05-03 15:42 asuraparaju * libdirac_encoder/dirac_encoder.cpp: Replace tabs with spaces. Print GOP bit-rate statistics to standard output only in verbose mode. 2007-05-03 15:39 asuraparaju * doc/documentation/code/programmers_guide/: common_data_structs.htm, encoder_data_structs.htm, software.htm: Document changes to the Encoder API data structures and building under the MS Windows Platform. 2007-05-02 17:30 asuraparaju * win32/: VS2003/libdirac_byteio/libdirac_byteio.vcproj, VisualStudio/libdirac_byteio/libdirac_byteio.vcproj: Include mydataelement_byteip.cpp{.h} to source list. 2007-05-02 17:29 asuraparaju * libdirac_common/common.cpp: Include inttypes.h to fix g++ 3.3.x and icc warnings regrading uint64_t. 2007-05-02 14:10 asuraparaju * libdirac_byteio/parseunit_byteio.cpp, libdirac_byteio/parseunit_byteio.h, libdirac_decoder/dirac_cppparser.cpp: Handle auxiliary/paddaing data parse units and low-delay frames. Auxiliary/ padding data parse units are ignored by the decoder. When the decoder encounters a low-delay frame it exits with an error message. 2007-05-02 09:52 tjdwave * libdirac_encoder/comp_compress.cpp: Fixed bug with using -multi_quants -lossless : multiquants were being signalled, but quantisers for each code block weren't being coded. 2007-05-01 15:51 asuraparaju * libdirac_common/band_codec.h, libdirac_encoder/comp_compress.h: Fix warnings reported by doxygen when not all parameters to a function are documented. 2007-05-01 10:56 tjdwave * libdirac_common/wavelet_utils.cpp: Fixed bug in calculating subband weighting coefficients: values for compensating filter gains were incorrect. 2007-04-30 14:13 tjdwave * doc/latex_spec/dataenc.tex: Fixed table warning 2007-04-26 14:56 asuraparaju * libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/seq_decompress.cpp: Added new function to FrameBuffer to check if frame is available before using it. This is to prevent from trying to dereference a non-existent first frame from the buffer. This function is a temporary fix. FrameBuffer might need to be re-written to return pointer to a frame in the buffer rather than a reference so that the return value can be checked for NULL before using it. 2007-04-25 11:49 tjdwave * doc/latex_spec/profilelevel.tex: Revised text on levels and profiles. 2007-04-24 16:42 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, dataenc.tex, layout-fullsize.tex, low-delay.tex, sourcepresets.tex, spec-conventions.tex, wlt-dec.tex: Removed superfluous parse codes and added a parse code for padding data. Removed reference to using_ac and using_mc flags/functions: low-delay syntax is now vlc-only, and without motion compensation; core syntax supports both motion compensation and arithmetic coding. 2007-04-24 10:35 tjdwave * doc/latex_spec/: sourcepresets.tex, state-macros.tex, vidsys.tex: Refactored the source parameter appendix to get rid of remaining conversion artefacts. 2007-04-23 15:52 tjdwave * doc/latex_spec/: bs-spec.tex, dataenc.tex, low-delay.tex, sourcepresets.tex, state-macros.tex, vidsys.tex: Fixed reference bugs and some typos. 2007-04-23 15:21 tjdwave * doc/latex_spec/parsediagrams.tex: Added low delay parse diagrams. 2007-04-23 13:55 tjdwave * doc/latex_spec/arith.tex: Fixed bug with flushing arithmetic encoder. 2007-04-23 12:52 tjdwave * doc/latex_spec/parsediagrams.tex: Corrected motion vector coding parse diagrams. 2007-04-19 16:02 asuraparaju * configure.ac: Fix bug in setting additional flags in CXXFLAGS to flag extra warnings. 2007-04-18 13:28 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, dataenc.tex, idwt.tex, layout-fullsize.tex, low-delay.tex, motion-dec.tex, picture-dec.tex, spec-conventions.tex, vidsys.tex, wlt-dec.tex: Incorporated Dave Schleef's comments and bugfixes. 2007-04-17 16:50 tjdwave * doc/latex_spec/: layout-fullsize.tex, vidsys.tex: Further update to video systems model, covering YCoCg coding and colour matrixing etc. YCoCg has been changed to give an additional bit to Y so that luma and chroma have the same resolution, to avoid confusion. 2007-04-16 17:17 tjdwave * doc/latex_spec/: vidsys-colourmatrix.tex, vidsys.tex: Initial mods to video systems model to bring it up to date: mostly done colour. 2007-04-16 16:42 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, dataenc.tex, idwt.tex, intro.tex, layout-fullsize.tex, low-delay.tex, motion-dec.tex, picture-dec.tex, spec-conventions.tex, state-macros.tex, wlt-dec.tex: Removed mention of Y,U and V - instead use Y, C1 and C2. Fixed bug with biased rounding in IDWT, and fixed bug with ref2 motion vector decoding. 2007-04-16 12:17 tjdwave * doc/latex_spec/arith.tex: Finalised informative text on arithmetic encoding. Minor bug fixes. 2007-04-11 17:26 asuraparaju * libdirac_encoder/comp_compress.cpp: Initialise the multi-quants flag and estimated bits for DC band to fix bug where decoder output was not matching locally decoded output. 2007-04-11 17:23 asuraparaju * libdirac_common/video_format_defaults.cpp, libdirac_encoder/seq_compress.cpp: Fix initialisation errors reported by valgrind. 2007-04-11 16:28 tjdwave * doc/latex_spec/: arith-encoder.tex, arith.tex, bs-spec.tex, dataenc.tex, idwt.tex, layout-fullsize.tex, low-delay.tex, mc.tex, motion-dec.tex, parsediagrams.tex, ref-default-videoparams.tex, sourcepresets.tex, spec-structure.tex, state-macros.tex, stream-access.tex, wlt-dec.tex: Modified arithmetic coding sections to place the arithmetic coding engine in an annex. The AC system now agrees with the code, using the LUT update implementation. Various compile warnings also fixed. 2007-04-11 15:36 tjdwave * libdirac_common/arith_codec.h: Minor cosmetic change to simplify symbol decoding and agree with AC theory. 2007-04-11 15:18 tjdwave * libdirac_encoder/frame_compress.cpp, libdirac_common/mv_codec.cpp: Fixed bug with motion vector coding on long sequences. 2007-04-11 09:08 tjdwave * decoder/decmain.cpp, encoder/encmain.cpp, libdirac_byteio/Makefile.am, libdirac_byteio/mvdata_byteio.cpp, libdirac_byteio/mvdata_byteio.h, libdirac_byteio/mvdataelement_byteio.cpp, libdirac_byteio/mvdataelement_byteio.h, libdirac_common/common.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/quality_monitor.cpp: Motion vector data is now split into a number of different parts which are coded as separate units: - Superblock/macroblock splitting mode - Block prediction mode - Motion vectors, reference 1, horizontal component - Motion vectors, reference 1, vertical component - Motion vectors, reference 2, horizontal component - Motion vectors, reference 2, vertical component - DC values, Y - DC values, U - DC values, V Each is a separate, byte-aligned element with a prefixing length code. This allows parallel encoding and decoding of these elements, especially beneficial in hardware. Still TO DO: gather statistics on each of these elements separately. 2007-04-11 08:52 tjdwave * libdirac_encoder/: comp_compress.cpp, quant_chooser.cpp: Fix to stop drift on sequences of still frames: at high rate, DC bands were being erroneously skipped, causing a build-up of dc error. This fix means that DC bands are always coded losslessly and never skipped. Further experiments may be required to see if this condition can be relaxed. 2007-04-04 17:00 tjdwave * doc/latex_spec/: arith.tex, mc.tex, motion-dec.tex, spec-conventions.tex, state-macros.tex: Changed motion data coding specification to allow for parallel decoding of motion data elements. Fixed bugs in arithmetic coding spec - this will be refactored to reflect recent code changes soon. 2007-04-04 09:11 tjdwave * doc/latex_spec/bs-spec.tex: Fixed the next parse offset and previous parse offset to be 4 bytes instead of 3. This is now in line with the code. 2007-04-04 09:08 tjdwave * doc/latex_spec/wlt-dec.tex: Updated quantisation factors so that they represent an integer approximation of 2^{(q/4)+2)} up to q=128. Now agrees with code. 2007-04-03 16:29 tjdwave * doc/latex_spec/: arith.tex, motion-dec.tex, state-macros.tex, wlt-dec.tex: Minor bug-fixes. 2007-04-03 14:06 asuraparaju * extras/dirac_dshow/src/diracsplitter/DiracSplitterFile.cpp: Size of the parse unit header has increased to 13. 2007-04-03 14:04 asuraparaju * tests/samples.at: Define a variable mv_prec to set the motion vector precision on the encoder command line. Values is currently hardcoded to quarter pixel. Change the value of variable mv_prec to run the tests with a different value. 2007-04-03 14:02 asuraparaju * libdirac_motionest/motion_estimate.cpp, libdirac_common/common.h: Hack to support pixel accurate motion estimation. The pixel accurate motion vectors are multipled by 2 and then half-pel accurate motion estimation is performed. After ME, he motion vectors are divided by 2 to convert them back to pixel accurate motion vectors. 2007-04-02 08:58 asuraparaju * libdirac_common/arith_codec.cpp: Fix g++ warnings regarding order of initialisation of member variables in ArithCodecBase constructor. 2007-03-30 18:22 timborer * libdirac_common/: arith_codec.cpp, arith_codec.h: Simplified probability estimation for arithmetic coding to speed up encoding and decoding. Now the total symbol count is ASSUMED to be a function of the current probability. The update is implemented in a lookup table for speed. The total symbol count is assumed to be 16 when probabilit of 0 is 0.5, and assumed to be 256 when prob 0 is 1. 2007-03-29 17:43 asuraparaju * libdirac_byteio/: dirac_byte_stream.cpp, endofsequence_byteio.cpp, endofsequence_byteio.h: Fix the bug which reported "total bits for sequence" in verbose mode to be less than the actual the size (in bits) of the bitstream file written to disk. This was because the number of bytes in the end of sequence header was not being included in the total bits for the sequence. 2007-03-29 17:07 asuraparaju * configure.ac: Include VisualStudio in list of directories to generate Makefile in. 2007-03-29 15:08 asuraparaju * decoder/Makefile.am, encoder/Makefile.am: Fix for bug# 588191. Include libdirac_byteio.a in the libraries to be linked with for encoder and decoder utilities. 2007-03-28 15:33 asuraparaju * win32/Makefile.am: Added VisualStudion to lis of sub directories 2007-03-28 15:31 asuraparaju * win32/VisualStudio/: Makefile.am, dirac.sln, ConversionUtils/ConversionUtils.vcproj, ConversionUtils/BMPtoRGB/BMPtoRGB.vcproj, ConversionUtils/RGBtoBMP/RGBtoBMP.vcproj, ConversionUtils/RGBtoUYVY/RGBtoUYVY.vcproj, ConversionUtils/RGBtoYUV411/RGBtoYUV411.vcproj, ConversionUtils/RGBtoYUV420/RGBtoYUV420.vcproj, ConversionUtils/RGBtoYUV422/RGBtoYUV422.vcproj, ConversionUtils/RGBtoYUV444/RGBtoYUV444.vcproj, ConversionUtils/UYVYtoRGB/UYVYtoRGB.vcproj, ConversionUtils/YUV411toRGB/YUV411toRGB.vcproj, ConversionUtils/YUV420toRGB/YUV420toRGB.vcproj, ConversionUtils/YUV422toRGB/YUV422toRGB.vcproj, ConversionUtils/YUV444toRGB/YUV444toRGB.vcproj, ConversionUtils/libconv_common/libconv_common.vcproj, DecodeDirac/DecodeDirac.vcproj, DiracDecoder/DiracDecoder.vcproj, DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, DiracEncoder/DiracEncoder.vcproj, DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, EncodeDirac/EncodeDirac.vcproj, Everything/Everything.vcproj, InstrumentDirac/InstrumentDirac.vcproj, InstrumentDirac/libdirac_instrument/libdirac_instrument.vcproj, MakeHeader/MakeHeader.vcproj, libdirac_byteio/libdirac_byteio.vcproj, libdirac_common/libdirac_common.vcproj, libdirac_motionest/libdirac_motionest.vcproj: New directory for supporting latest MS Visual Studio Env. 2007-03-28 12:05 tjdwave * libdirac_encoder/rate_control.cpp: Temporarily disabled buffer model conformance. 2007-03-27 17:31 asuraparaju * win32/VS2003/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj: Included rate_control.cpp and rate_control.h in sources list. 2007-03-27 17:29 asuraparaju * libdirac_common/: band_codec.cpp, common.cpp, common.h: Fix compile warnings and errors in MS Windows build. The max numbe of quantisers supported is now 120. Modified code to calculate quantisation factor to be compliant with latest version of spec. 2007-03-27 17:26 asuraparaju * libdirac_byteio/parseunit_byteio.cpp: [Spec Compliance] The next and previous parse unit offsets in the bytestream are now 4 bytes each. 2007-03-27 16:20 tjdwave * libdirac_common/common.h, libdirac_encoder/rate_control.cpp, libdirac_encoder/rate_control.h, libdirac_encoder/seq_compress.cpp: Major refactor of rate control algorithm. The original algorithm aimed for constant bit rate over a single GOP. This tended to be unstable when content changed and could cause quality to degrade significantly at the end of GOPs in order to attempt to correct for high bit rate at the beginning. The algorithm has been revised so that a target buffer occupancy is aimed for, with the target bit rate set as equal to the mean bit rate plus an adjustment factor to steer back to target. Bit rate is computed for a subgroup (PBB or IBB) in a very similar way, but on a rolling basis rather than a target for a single GOP. For the moment, a buffer size of 4xbit rate has been selected. Fixed buffer sizes may be implemented when levels are specified. Buffer overflows (too little bit rate - this is a _decoder_ buffer model) or underflows (too much bit rate) are indicated by warnings in verbose mode. The buffer occupancy is then limited, so that these events are not corrected for at present. 2007-03-26 16:28 tjdwave * libdirac_encoder/dirac_encoder.cpp: Fixed computation of GOP statistics to maintain coded order. GOP is counted as up to just before the next scheduled access point (intra frame). 2007-03-26 12:20 asuraparaju * libdirac_common/mot_comp.cpp: Weights are now being correctly set for edge blocks. Fixed bug where data outside the picture in the block in the bottom right corner was not being ignored. 2007-03-26 11:24 davidf_ * libdirac_encoder/quant_chooser.cpp: Stop quantizing DC subband at all, otherwise chroma error is appearing. Also includes fix from thomasd to look at the whole of the DC subband instead of ignoring the first (most important value) 2007-03-23 15:32 asuraparaju * libdirac_common/pic_io.cpp, tests/Makefile.am, tests/colourbars.at, tests/samples.at, util/instrumentation/instrmain.cpp: Changes to keep test scripts and instrumentation utility in sync with the altered command lines for the encoder, decoder. 2007-03-22 18:27 davidf_ * ChangeLog, README, decoder/decmain.cpp, encoder/encmain.cpp: Altered command line file handling. a) now support taking input from stdin (input specified as '-' or '/dev/stdin'). b) removed strange filename extension stripping/appending for primary input and output files (locally decoded video and instrumentation are outputfilename.{local-dec.yuv,imt}. 2007-03-22 14:48 davidf_ * libdirac_common/common.h: Temporary fix to stop RateControll setting silly QF 2007-03-22 14:45 davidf_ * libdirac_encoder/frame_compress.cpp: Add some basic diagnostics 2007-03-22 13:12 tjdwave * libdirac_encoder/rate_control.cpp: Fixed typo in previous bug fix. 2007-03-22 13:04 davidf_ * libdirac_encoder/rate_control.cpp: Fix overlyeager typecasting. 2007-03-21 11:32 tjdwave * libdirac_encoder/: rate_control.cpp, rate_control.h: Adding rate control classes. 2007-03-21 11:12 tjdwave * README: Added instructions on using CBR encoding. 2007-03-21 11:05 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_encoder/Makefile.am, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h: Added support for CBR encoding. This equalises bitrate over a GOP (I frame to I frame). It does not enforce bit rate, nor does it operate according to a buffer model. To apply CBR coding, add -targetrate N, where N is the target bit rate in Kb/s. Precedence: 1) if a quality factor is also set with -qf Q, then the value of Q is used as the initial value for the system, but CBR is still applied. 2) if -lossless is also set, then lossless coding is applied and CBR constraints are ignored. 2007-03-19 16:18 asuraparaju * decoder/decmain.cpp, libdirac_byteio/byteio.h, libdirac_common/arith_codec.cpp, libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/dirac_exception.cpp, libdirac_common/dirac_exception.h, libdirac_common/frame_buffer.cpp, libdirac_common/mot_comp_mmx.cpp, libdirac_common/pic_io.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/dirac_cppparser.cpp, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/downconvert_mmx.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_utils_mmx.cpp, libdirac_motionest/pixel_match.cpp, libdirac_motionest/pixel_match.h, util/instrumentation/libdirac_instrument/draw_overlay.cpp: Fix warnings reported by gcc 4.1.2 2007-03-19 16:18 asuraparaju * configure.ac: When compiling using g++, enable warnings in debug mode and in optimised mode. All warnings are flagged as errors in both modes of compiling. 2007-03-19 16:16 asuraparaju * libdirac_common/: frame.cpp, upconvert_mmx.cpp: Fixed upconvert (MMX version) to clip after each filtering operation as per spec 0.10.4 and to be in sync with the non-MMX version 2007-03-19 15:39 asuraparaju * libdirac_decoder/seq_decompress.cpp: Print info to standard output only in Verbose mode. 2007-03-19 15:22 davidf_ * libdirac_common/upconvert_mmx.cpp: Looks like i forgot to commit this ages ago. Correctly round upconverted pixel values 2007-03-19 15:21 davidf_ * libdirac_common/mot_comp.cpp: Fix old naming of superblocks+family in comments 2007-03-19 15:19 davidf_ * libdirac_common/wavelet_utils.cpp: Useful comment thats been sitting in my local copy for ages 2007-03-01 15:32 tjdwave * libdirac_decoder/comp_decompress.cpp: Removed reference to InitContexts. 2007-03-01 10:38 tjdwave * doc/latex_spec/: arith.tex, motion-dec.tex, state-macros.tex, wlt-dec.tex: Incorporated changes to arithmetic coding. This is a quick hack that may not compile yet. TBC. 2007-03-01 09:24 tjdwave * libdirac_common/: arith_codec.h, band_codec.cpp, band_codec.h, mv_codec.cpp, mv_codec.h: Changed arithmetic coding again slighly. Restored count initialisation to (1,1) and reordered probability/count rescaling parts to get a little more compact code and greater speed. Tidied band codec and mv codec stuff. 2007-02-28 16:22 tjdwave * libdirac_common/: arith_codec.cpp, arith_codec.h, band_codec.cpp, band_codec.h, mv_codec.cpp: Modified arithmetic coding for speed, incorporating periodic calculation of probabilities. Also removed periodic context rescaling, which wasn't really helping compression performance, and added to complexity. 2007-02-20 14:06 tjdwave * libdirac_common/: arith_codec.cpp, arith_codec.h: Code tidy, removing a preponderence of inline functions. Also improved renormalisation. 2007-02-20 09:55 tjdwave * libdirac_common/: arith_codec.cpp, arith_codec.h: Modified renormalisation condition and simplified renormalisation process. Renormalisation is now only invoked if the interval is <=1/4 of the range. This means that either the most significant bits of low and high are the same, or we have low=0x01... and high = 0x10.. i.e. a classic straddle. This reduces the 3-way branch condition to a 2-way one. It also means that we can eliminate use of the high variable altogether and just use low and range. 2007-02-20 09:39 tjdwave * libdirac_common/: arith_codec.cpp, arith_codec.h: Changed structure of renormalisation loop to enable optimisation. 2007-02-20 09:24 tjdwave * libdirac_common/: arith_codec.h, arith_codec.cpp: Now updating range variable on the fly rather than calculating from low and high. 2007-02-20 09:21 tjdwave * libdirac_common/: arith_codec.cpp, arith_codec.h: Refacactored arithmetic coding so that renormalisation is only performed if the interval size is <=1/2 (represented by 0x8000 in 16 bits). This condition may be further restricted in future, and other changes and optimisations will follow. This change makes coding/decoding faster and allows for the high code to be eliminated. Watch this space. 2007-02-15 16:44 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, layout-fullsize.tex, mc.tex, picture-dec.tex, ref-default-videoparams.tex, spec-conventions.tex, state-macros.tex: Various bug-fixes and readabilty improvements. 2007-02-15 16:41 tjdwave * doc/latex_spec/low-delay.tex: Fixed quantiser and length sizes in slice header. 2007-02-07 12:03 davidf_ * libdirac_common/: frame.cpp, upconvert.cpp, upconvert.h: Fixed upconvert (non MMX) to: - perform unbiased rounding as per spec 0.10.4 - clip after each filtering operation as per spec 0.10.4 2007-02-01 15:28 tjdwave * libdirac_common/common.cpp: D'oh! Correct commit. 2007-02-01 15:15 tjdwave * libdirac_common/common.cpp: Fixed calculation of quantisation factors so that intermediate values don't run out of precision. 2007-01-23 14:18 davidf_ * libdirac_common/band_codec.cpp: Fixed nhood_zero selection as per spec-0.10.4 2007-01-22 15:53 tjdwave * doc/latex_spec/mc.tex: Reorganised the text concerning chroma scaling for clarity. Chroma scaling for global motion vectors is now achieved by scaling the generated luma field rather than scaling the generating matrix and vectors. This will change the bitstream. 2007-01-22 14:58 tjdwave * doc/latex_spec/: bs-spec.tex, mc.tex, ref-default-videoparams.tex, state-macros.tex, wlt-dec.tex: Some more of Johannes Reinhardt's corrections 2007-01-22 14:20 tjdwave * libdirac_common/band_codec.cpp: Changed zero neighbourhood context selection so as to comply with specification. 2007-01-22 12:33 tjdwave * doc/latex_spec/wlt-dec.tex, libdirac_common/wavelet_utils.cpp: Correction to spec so that subband order is raster order for each level. 2007-01-22 12:22 tjdwave * libdirac_common/wavelet_utils.cpp: Fixed subband order so that it is as in the specification. 2007-01-16 12:03 tjdwave * doc/latex_spec/wlt-dec.tex: Oops. Undoing last commit. 2007-01-16 11:12 tjdwave * doc/latex_spec/wlt-dec.tex: Changed subband decoding order to agree with the Dirac software. 2007-01-11 09:42 tjdwave * doc/latex_spec/: bs-spec.tex, picture-dec.tex, state-macros.tex: Changed spec so that the size of the reference picture buffer is determined from the level and profile information rather than fixed as 5 pictures. 2007-01-09 14:21 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, dataenc.tex, idwt.tex, layout-fullsize.tex, mc.tex, spec-conventions.tex, wlt-dec.tex: Minor edits and typos. sign() function added amongst other mods. 2007-01-04 13:20 tjdwave * doc/latex_spec/: layout-fullsize.tex, motion-dec.tex, ref-default-videoparams.tex, state-macros.tex, wlt-dec.tex: Fixed JR bugs. 2007-01-03 16:03 tjdwave * libdirac_common/wavelet_utils.cpp: Fixed bug with rounding offset in non-mmx code. 2007-01-03 10:18 tjdwave * doc/latex_spec/mc.tex: Fixed typos. 2007-01-03 08:32 tjdwave * doc/latex_spec/idwt.tex: Changed the specification of how wavelet filters are adapted at the array edges to match what the Dirac code does, which is to use edge extension of the even and odd coefficients separately. 2006-12-13 09:10 tjdwave * libdirac_encoder/frame_compress.cpp: Fixed bug with unitialised cut flag. Changed intra insertion criterion so that a frame is made intra if just a third of blocks are intra - this is a better bit rate trade-off. 2006-12-05 14:36 tjdwave * libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/seq_compress.cpp: Fixed memory leak bug, which resulted from the encoder not signalling the discarded reference frames correctly. The reference management and FrameBuffer class code still need some work to rationalise. The decoder still does not support the spec requirement for discarding old reference frames if the reference frame buffer gets too big. This would prevent memory leaks (at the risk of incorrect decoding) if the encoder were to signal reference discarding incorrectly in this manner. 2006-12-04 12:00 davidf_ * doc/faq.html: Fixed markup faults spotted by Peter Shelswell: - Fixed errant tag - Added identifier 2006-11-23 16:22 tjdwave * encoder/encmain.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, util/instrumentation/process_sequence.cpp: Fix for broken intrumentation data: obsolete "common" MB mode removed. Verbose commentary switched to cout. 2006-11-23 11:00 tjdwave * libdirac_decoder/comp_decompress.cpp: Fixed bug with codeblock numbers being incorrectly calculated in the decoder. 2006-11-22 14:06 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, dataenc.tex, idwt.tex, layout-fullsize.tex, low-delay.tex, mc.tex, motion-dec.tex, picture-dec.tex, profilelevel.tex, ref-default-videoparams.tex, state-macros.tex, stream-access.tex, wlt-dec.tex: Nearly complete version of low-delay syntax, at least for intra frames. Data encoding section revised to incorporate "bounded" inputs for vlcs as well as for arithmetic encoding, unifying the description. More detail on buffering and profiles/levels. 2006-11-22 11:00 tjdwave * README, libdirac_common/band_codec.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/mv_codec.cpp, libdirac_common/video_format_defaults.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/seq_compress.cpp: Inserted intra frames are now given lower quality than other intra frames so as to match P and B frames more closely. Various other minor bug-fixes to remove -pedantic compile errors and valgrind error. 2006-11-14 10:59 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h: Added in option for encoder to denoise input. Note that PSNR values reported will be for denoised values. Denoiser uses a centre-weighted median filter. Also applied Johannes Reinhardt's cosmetic patch to the encoder to tidy it up. 2006-11-13 14:20 tjdwave * doc/latex_spec/wlt-dec.tex: Changed inverse quantisation offset so that a value of 0.5*quantisation is used. 2006-11-13 12:28 tjdwave * ChangeLog: [no log message] 2006-11-13 09:41 tjdwave * libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/quant_chooser.cpp: Changed quantiser offsets to be different for Intra and Inter frames, as per the latest draft of the spec. Having an offset of 0.5*quantiser for intra frames improves performance at high rate, especially iterated coding with Dirac Pro apps. 2006-11-09 12:11 tjdwave * doc/latex_spec/: arith-encoder.tex, arith.tex, layout-fullsize.tex, low-delay.tex, mc.tex, motion-dec.tex, profilelevel.tex, spec-conventions.tex, spec-structure.tex, wlt-dec.tex: Added more text on the low-delay syntax and decoded picture buffer model. Clarified arithmetic decoding process and conventions. 2006-11-09 11:30 tjdwave * libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame_buffer.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_encoder/quant_chooser.cpp, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp: Overall improvements to encoding framework to improve quality for difficult pictures and at low bit rates. Changes to the RDO parameters are experimental and they may change again. - Added test for whether a frame is a B frame or not - Identified Layer 1 frames with P frames and Layer 2 with B frames, rather than with Inter Ref and Inter Non-ref respectively. This is more efficient with the new GOP structure - Modified RDO framework to provide correction where there has been ME failure i.e. lots of Intra blocks - Slightly increased ME search areas - Corrected the frame type parameter for the final B frame in a sequence - Changed confusing terminology for costs/errors in quantisation factor selection - Added overall PSNR stats for a sequence for performance comparisons 2006-10-30 15:17 tjdwave * doc/latex_spec/: arith.tex, dataenc.tex, motion-dec.tex, wlt-dec.tex: Fixed bug in specification of inverse quantisation. Changed default arithmetic decoding padding value to 1 from 0, so after reading in LENGTH bytes, a value of 1 is used from that point. This should support early termination i.e. encode only the first few values in a subband and then the decoder will correctly decode the remainder as 0, but this is as yet untested. 2006-10-30 14:57 tjdwave * libdirac_common/arith_codec.cpp: Fixed bug so that the decoder can now append any data to the end of the arithmetically encoded block and still decode correctly. Default padding data is all 1s - this should make a null or terminated subband decode with zeroes. 2006-10-30 13:42 tjdwave * libdirac_common/band_codec.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_decoder/comp_decompress.cpp: Fixed definitions of mean/median so that unbiased mean values are used. Likewise changed the prediction for DC values to take account of the fact that they may be negative. These changes change the bitstream. 2006-10-30 13:38 tjdwave * doc/latex_spec/: motion-dec.tex, spec-conventions.tex, wlt-dec.tex: Changed specification of division so that it agrees with C/C++ standards. Traced through these changes to specification of split mode, block dc value and intra dc band prediction. 2006-10-26 16:22 tjdwave * libdirac_encoder/dirac_encoder.cpp: Moved to using cout instead of cerr for reporting. 2006-10-26 16:07 tjdwave * libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_encoder/seq_compress.cpp: Made operation of retired picture list comply with specification: only reference pictures are signalled to be retired and non-reference pictures are retired by the decoder once they are displayed. Clarified frame type parameters so as to be sure they always agree. This will need further refactoring. Reference frames are now cleaned from the buffer _after_ being the current frame has been decoded, as per the spec. This allows slightly more flexible GOP structures. 2006-10-25 14:01 tjdwave * libdirac_common/common.cpp: Fixed bug with wrong quantiser offset being used: now complies with spec again. 2006-10-24 09:09 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, dataenc.tex, dirac-overview.tex, layout-fullsize.tex, picture-dec.tex, profilelevel.tex, spec-conventions.tex, spec-structure.tex, state-macros.tex, vidsys-sigrange.tex, vidsys.tex: First stab at including the low-delay syntax used for Dirac Pro profiles, together with profile and level text. Work in progress! 2006-10-19 16:01 tjdwave * doc/latex_spec/picture-dec.tex: Changed order of reference buffer management so that a reference picture is not removed until after the current picture has been decoded, 2006-10-19 14:53 tjdwave * libdirac_common/band_codec.cpp: Put in Dave Schleef's patch for making the computation of parent coefficient coordinates correct and spec compliant. 2006-10-10 15:04 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/dirac_types.h, libdirac_encoder/dirac_encoder.cpp: Fixed bug with aspect ratio being set to 0/0. Now it should be set to the correct value from the video format defaults. 2006-10-09 16:24 tjdwave * libdirac_common/wavelet_utils_mmx.cpp: Renamed functions with consistent filter names. 2006-10-05 16:22 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common_types.h, libdirac_common/video_format_defaults.cpp, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h: Given wavelet filters correct names and numbers as per spec. Added support for HAAR1 and HAAR2 filters. FIDELITY filter will be forthcoming. 2006-09-28 18:20 davidf_ * doc/: browser_compatibility.html, licences.html, licenses.html, template.html, template2.html, todo.html: fix license spelling mistake correction typos/misses/references 2006-09-28 18:13 davidf_ * doc/: contact.html, documentation.html, faq.html, getting_involved.html, index.html, overview.html, soc2006.html, soc2006_ideas.html, specification.html, styles.css, todo.html, documentation/publications/diracoverview-ibc2006.pdf: merge shas' website fixes added ibc2006 publication 2006-09-28 14:59 tjdwave * libdirac_common/: common.cpp, mot_comp.cpp: Fixed the block parameter testing so as to be compliant with the specification. Non-overlapped blocks are now allowed and supported. The raised cosine macro has now been removed and only linear weights are supported. 2006-09-28 10:17 tjdwave * doc/latex_spec/low-delay.tex: Added file to cover low delay syntax. 2006-09-28 10:08 tjdwave * doc/latex_spec/: abstract.tex, arith-contexts.tex, arith-datainput.tex, arith-decoder-ba.tex, arith-decoder-impl.tex, arith-decoder-sint.tex, arith-decoder-sua.tex, arith-decoder-tua.tex, arith-decoder-uua.tex, arith-decoder.tex, arith-encoder.tex, arith-engine.tex, arith-init.tex, arith-intro.tex, arith-update.tex, arith.tex, begin-bs.tex, begin-compmethods.tex, begin-dwt-fwd.tex, begin-dwt-parentchild.tex, begin-dwt.tex, begin-ec-dwt.tex, begin-ec-mc.tex, begin-ec.tex, begin-mc-accuracy.tex, begin-mc-blocks.tex, begin-mc-global.tex, begin-mc-intra.tex, begin-mc.tex, begin-more.tex, begin-pictypes.tex, begin-videocoding.tex, bs-intro.tex, bs-semantics.tex, bs-spec.tex, bs-syntax.tex, conv-bs-bytealign.tex, conv-bs-defaults.tex, conv-bs-reading.tex, conv-intro.tex, conv-parse-diagnums.tex, conv-parse-diagrams.tex, conv-pseudocode-syntax.tex, conv-pseudocode.tex, dataenc-bool.tex, dataenc-input.tex, dataenc-intro.tex, dataenc-nbitlit.tex, dataenc-nbytelit.tex, dataenc-vlc-segol.tex, dataenc-vlc-su.tex, dataenc-vlc-uegol.tex, dataenc-vlc-ut.tex, dataenc-vlc-uu.tex, dataenc-vlc.tex, dirac-concepts.tex, dirac-overview.tex, gendec.tex, idwt-1dsynthesis.tex, idwt-filters.tex, idwt-interleaving.tex, idwt-intro.tex, idwt-lifting.tex, idwt-padremoval.tex, idwt-synthesis.tex, idwt-vhsynthesis.tex, idwt.tex, intro-docstruct.tex, intro-purpose.tex, intro-scope.tex, layout-fullsize.tex, logicalstruct-accessunit.tex, logicalstruct-arithcoding.tex, logicalstruct-blocks.tex, logicalstruct-coordinates.tex, logicalstruct-dwt.tex, logicalstruct-frameordering.tex, logicalstruct-frames.tex, logicalstruct-globalmc.tex, logicalstruct-intro.tex, logicalstruct-localmc.tex, logicalstruct-parseunit.tex, logicalstruct-sequence.tex, logicalstruct-subbands.tex, logicalstruct-superblocks.tex, logicalstructs.tex, mc-alg.tex, mc-blockcoverage.tex, mc-chomascaling.tex, mc-impl.tex, mc-intro.tex, mc-obmc-matrix.tex, mc-precision.tex, mc-pred.tex, mc-upconvert.tex, motion-dec.tex, parsediagrams.tex, prep-idwt-codeblk-dim.tex, prep-idwt-codeblk-process.tex, prep-idwt-coef-process.tex, prep-idwt-conventions.tex, prep-idwt-ctxt-init.tex, prep-idwt-ctxt-magnitude.tex, prep-idwt-ctxt-quantindex.tex, prep-idwt-ctxt-sign.tex, prep-idwt-ctxt-skip.tex, prep-idwt-pred-dc.tex, prep-idwt-process.tex, prep-idwt.tex, prep-mc-ctxt-init.tex, prep-mc-decode-blkmotion.tex, prep-mc-decode-dc.tex, prep-mc-decode-mv.tex, prep-mc-decode-predictionmode.tex, prep-mc-decoding.tex, prep-mc-mbdata.tex, prep-mc-predapeature.tex, prep-mc-predictionmodes.tex, prep-mc-predmbcommon.tex, prep-mc-predmbglobal.tex, prep-mc-predmbsplit.tex, ref-default-videoparams.tex, ref-quantization-lut.tex, semantics-auh.tex, semantics-dwt.tex, semantics-intro.tex, semantics-mv.tex, semantics.tex, spec-conventions.tex, spec-structure.tex, state-macros.tex, wlt-dec.tex: Removing a whole load of cruft files. Bug fixes. 2006-09-12 12:18 tjdwave * doc/latex_spec/state-macros.tex: [no log message] 2006-09-12 10:00 tjdwave * doc/latex_spec/ref-default-videoparams.tex: Completed tables - added various decoding presets too. 2006-09-12 09:59 tjdwave * doc/latex_spec/sourcepresets.tex: This contains the presets for the source parameters. This needs to be merged with the video systems model section. 2006-09-12 09:58 tjdwave * doc/latex_spec/vidsys.tex: Slightly revised - to be merged with source parameters presets. 2006-09-12 09:56 tjdwave * doc/latex_spec/: idwt.tex, mc.tex, picture-dec.tex: Finished first draft of overall picture decoding process. Added stuff on global motion compensation (_probably_ works now). 2006-09-12 09:54 tjdwave * doc/latex_spec/: bs-spec.tex, motion-dec.tex, wlt-dec.tex: Created unified chapter files for parsing elements. Completed overall stream syntax chapter. 2006-09-12 09:52 tjdwave * doc/latex_spec/: arith.tex, dataenc.tex: Unified data access files into chapter files. 2006-09-12 09:51 tjdwave * doc/latex_spec/: dirac-concepts.tex, parsing.tex: Restructured part structure files. 2006-09-12 09:48 tjdwave * doc/latex_spec/spec-conventions.tex: Updated/added material on the way the pseudocode works and the mathematical notation. This section still needs work and reordering. 2006-09-12 09:45 tjdwave * doc/latex_spec/intro.tex: Revised and unified the general introduction. 2006-09-12 09:44 tjdwave * doc/latex_spec/spec-structure.tex: Revised overall document structure. 2006-09-12 09:42 tjdwave * doc/latex_spec/parsediagrams.tex: Added parse diagrams as an appendix. 2006-08-24 10:32 tjdwave * doc/latex_spec/: decoding-ops.tex, idwt.tex, state-macros.tex: Updated inverse wavelet transform section. Introduced Haar variants and added a fidelity filter. 2006-08-21 13:33 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, dataenc.tex, decoding-ops.tex, layout-fullsize.tex, mc.tex, motion-dec.tex, parsing.tex, spec-structure.tex, state-macros.tex, wlt-dec.tex: Done motion data decoding and motion compensation. Amalgamated file contents to simplify structure. 2006-08-11 15:51 tjdwave * libdirac_common/: golomb.cpp, golomb.h: Functionality is now provided in the Byte IO library. ---------------------------------------------------------------------- 2006-07-28 14:33 tjdwave * libdirac_common/common.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_encoder/dirac_encoder.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h: Removed the Macroblock "Common" mode. This means that each prediction unit within a macroblock will have to code a mode. Motion data coding has also been changed so that instead of coding all the prediction modes first and then all the motion data, prediction modes are included in the motion data as per the spec. An updated version of the latex spec in which the Common mode is omitted is in preparation and will be committed in the next couple of weeks. 2006-07-19 12:29 tjdwave * doc/latex_spec/prep-idwt-process.tex: Added initialisation of the coefficient_reset variable. 2006-07-19 12:19 tjdwave * doc/latex_spec/: arith-contexts.tex, arith-decoder-sint.tex, dataenc-vlc-segol.tex, decoding-ops.tex, intro-docstruct.tex, parsing.tex, prep-idwt-coef-process.tex, state-macros.tex, figs/block-coverage.eps, figs/obmc-profile.eps: Mods to interface with arithmetic coding changes. 2006-07-19 11:48 tjdwave * doc/latex_spec/: arith-contexts.tex, arith-datainput.tex, arith-decoder-sint.tex, arith-decoder.tex, arith-engine.tex, arith-init.tex, arith-intro.tex, arith-update.tex, arith.tex: Refactored to take account of exp-Golomb binarisation and the use of global context indices being passed to arithmetic decoding operations. 2006-07-18 11:36 tjdwave * libdirac_common/: band_codec.cpp, band_codec.h: Changed nhood sum calculation so that it only takes account of whether the neighbour is zero or not. 2006-07-07 15:07 tjdwave * encoder/encmain.cpp: Fixed bug with framerate denominator being incorrectly set if omitted. 2006-07-07 12:14 tjdwave * doc/latex_spec/: intro-docstruct.tex, mc-intro.tex, mc-upconvert.tex, mc.tex: Debugging commit. 2006-07-07 12:07 tjdwave * doc/latex_spec/: arith-contexts.tex, arith.tex, bs-spec.tex, bs-syntax.tex, decoding-ops.tex, idwt.tex, prep-idwt-coef-process.tex, prep-idwt-conventions.tex, prep-idwt-ctxt-quantindex.tex, prep-idwt-process.tex, prep-idwt.tex, spec-structure.tex, state-macros.tex, wlt-dec.tex, figs/block-coverage.eps, figs/block-offset.eps, figs/block.eps, figs/dwt.eps, figs/frame-ordering.eps, figs/obmc-profile.eps, figs/sequence.eps, figs/superblock-16pu.eps, figs/superblock-1pu.eps, figs/superblock-4pu.eps: Updated and refactored data access and coefficient decoding sections. Spec should be up to date and accurate for coefficient decoding, but fine-tuning and checking is required. Diagrams also needed. Major change is in the way arithmetic decoding operations are called. Just specify sets of contexts to be used for follow bits, data bits and the sign by passing indices into the state variable, which maintains the contexts. This simplifies the code in the stream syntax, avoiding local copies etc. Explanation will be required for the context indices. The arithmetic decoding section needs updating to reflect this change and use of interleaved exp- Golomb coding. 2006-07-07 08:56 tjdwave * doc/latex_spec/layout-fullsize.tex: Added temporary environment pseudo* for documenting _part_ of a function's pseudocode (no function header). Fixed bug where \bsRET reduces indent by 1 - this broke indentation when there were a number of returns in a function. 2006-07-06 12:29 tjdwave * libdirac_common/: band_codec.cpp, band_codec.h: Changed coding of codeblock quantiser indices to be differential codeblock to codeblock, as per Tim's stream syntax, rather than differential with respect to the subband quantiser index. N.B. this now does not agree with version 0.9. 2006-07-03 14:57 tjdwave * doc/latex_spec/: arith-contexts.tex, arith-datainput.tex, arith-decoder-ba.tex, arith-decoder-sint.tex, arith-intro.tex: Initial update to take account of exp-Golomb binarisation. 2006-07-03 14:00 tjdwave * doc/latex_spec/arith-decoder-sint.tex: Adding to update to exp-Golomb binarisation. 2006-07-03 13:15 tjdwave * doc/latex_spec/: dataenc-bool.tex, dataenc-input.tex, dataenc-intro.tex, dataenc-nbitlit.tex, dataenc-nbytelit.tex, dataenc-vlc-segol.tex, dataenc-vlc-su.tex, dataenc-vlc-uegol.tex, dataenc-vlc-ut.tex, dataenc-vlc.tex, dataenc.tex: Brought up-to-date to do interleaved exp-Golomb coding. Included a section on bit-packing and reading conventions. To Do: Need to align with arithmetic decoding section. 2006-07-03 10:08 tjdwave * doc/latex_spec/: layout-fullsize.tex, state-macros.tex: Adding shortcuts for decoder state values/variables. This means we can change format, or introduce new paramater classes by (mostly) modding modding only state-macros.tex. 2006-06-29 15:11 asuraparaju * libdirac_common/: wavelet_utils.cpp, wavelet_utils.h, common.cpp: Defined new Wavelet Filter class VHFilterHaar to include HAAR filter support in Dirac. 2006-06-27 18:26 asuraparaju * README: Include explanation for new encoder command line variables iwlt_filter and rwlt_filter. 2006-06-27 18:17 asuraparaju * doc/documentation/code/programmers_guide/encoder_data_structs.htm: Reflect changes to dirac_encparams_t struct to which two fields have been added. These fields specify the wavelet filters to use for intra frames and inter frames. 2006-06-26 17:44 asuraparaju * encoder/encmain.cpp: [Spec Compliance] Include command line arguments to process non-default transform filters for intra and inter frames. 2006-06-26 17:43 asuraparaju * unit_tests/motion_comp_test.cpp: Ensure that the number of reference frames is specified when creating a CodecParams object. 2006-06-26 17:43 asuraparaju * libdirac_encoder/: dirac_encoder.cpp, dirac_encoder.h, frame_compress.cpp: [Spec Compliance] Use transform filters supplied in the command line arguments to encoder utility to set the transform filter in CodecParams while encoding based on frame type. Set up the default frame weight and precision parameters correctly based on frame type and number of references. 2006-06-26 17:40 asuraparaju * libdirac_common/: video_format_defaults.cpp, video_format_defaults.h: [Spec Compliance] Added functions to return the default transform filter based on frame type. The default frame weight and frame precision parametes are correctly set based on the frame type and number of references. 2006-06-26 17:39 asuraparaju * libdirac_common/: common.cpp, common.h: [Spec Compliance] Handle non-default frame weights. Include member variables in EncoderParams to store the transform filters for inter frame and intra frames supplied so that they can be used while encoding. 2006-06-26 17:38 asuraparaju * libdirac_byteio/mvdata_byteio.cpp, libdirac_byteio/transform_byteio.cpp, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h: [Spec Compliance] Handle non-default frame weights. 2006-06-23 15:17 tjdwave * doc/latex_spec/layout-fullsize.tex: Created unified style for syntax and semantics called pseudo. No longer uses typewriter font - Roman instead. 2006-06-23 10:41 tjdwave * doc/latex_spec/: arith-intro.tex, arith.tex, bs-spec.tex, dataenc-intro.tex, dataenc.tex, decoding-ops.tex, dirac-concepts.tex, dirac-overview.tex, idwt-intro.tex, idwt.tex, logicalstructs.tex, mc-intro.tex, mc.tex, motion-dec.tex, parsing.tex, picture-dec.tex, semantics.tex, spec-conventions.tex, spec-structure.tex, stream-access.tex, wlt-dec.tex: Reorganised so that file input is hierarchical, to make simultaneous working easier. 2006-06-23 08:48 tjdwave * doc/latex_spec/: bs-syntax.tex, layout-fullsize.tex: Moved streamsyntax environment definition into layout-fullsize.tex so that it's available to all input files. 2006-06-22 12:42 asuraparaju * doc/specification.html: Included links to latest Stream Syntax Document and Specification Document. 2006-06-22 10:13 tjdwave * doc/latex_spec/: intro-docstruct.tex, spec-structure.tex: Tentative revision of the specification structure. A rationale is contained in intro-docstruct.tex. 2006-06-22 09:02 tjdwave * doc/latex_spec/figs/: block-coverage.eps, block-coverage.fig, block.eps, block.fig, Makefile, block-offset.eps, block-offset.fig, dwt.eps, dwt.fig, frame-ordering.eps, frame-ordering.fig, obmc-profile.eps, obmc-profile.fig, sequence.eps, sequence.fig, stream.fig, superblock-16pu.eps, superblock-16pu.fig, superblock-1pu.eps, superblock-1pu.fig, superblock-4pu.eps, superblock-4pu.fig, wavelet-transform-process.fig: Adding in diagrams. 2006-06-22 08:57 tjdwave * doc/latex_spec/tools/: framed.sty, listings.zip, mkdep.pl: Additional latex spec commits. 2006-06-22 08:54 tjdwave * doc/latex_spec/: Makefile, abstract.tex, arith-contexts.tex, arith-datainput.tex, arith-decoder-ba.tex, arith-decoder-impl.tex, arith-decoder-sua.tex, arith-decoder-tua.tex, arith-decoder-uua.tex, arith-decoder.tex, arith-encoder.tex, arith-engine.tex, arith-init.tex, arith.tex, begin-bs.tex, begin-compmethods.tex, begin-dwt-fwd.tex, begin-dwt-parentchild.tex, begin-dwt.tex, begin-ec-dwt.tex, begin-ec-mc.tex, begin-ec.tex, begin-mc-accuracy.tex, begin-mc-blocks.tex, begin-mc-global.tex, begin-mc-intra.tex, begin-mc.tex, begin-more.tex, begin-pictypes.tex, begin-videocoding.tex, bs-intro.tex, bs-semantics.tex, bs-syntax.tex, coder-intro.tex, conv-bs-bytealign.tex, conv-bs-defaults.tex, conv-bs-reading.tex, conv-intro.tex, conv-parse-diagnums.tex, conv-parse-diagrams.tex, conv-pseudocode-syntax.tex, conv-pseudocode.tex, dataenc-bool.tex, dataenc-nbitlit.tex, dataenc-nbytelit.tex, dataenc-vlc-segol.tex, dataenc-vlc-su.tex, dataenc-vlc-uegol.tex, dataenc-vlc-ut.tex, dataenc-vlc-uu.tex, dataenc-vlc.tex, dataenc.tex, gendec.tex, idwt-1dsynthesis.tex, idwt-filters.tex, idwt-interleaving.tex, idwt-lifting.tex, idwt-padremoval.tex, idwt-synthesis.tex, idwt-vhsynthesis.tex, idwt.tex, intro-docstruct.tex, intro-purpose.tex, intro-scope.tex, layout-fullsize.tex, logicalstruct-accessunit.tex, logicalstruct-arithcoding.tex, logicalstruct-blocks.tex, logicalstruct-coordinates.tex, logicalstruct-dwt.tex, logicalstruct-frameordering.tex, logicalstruct-frames.tex, logicalstruct-globalmc.tex, logicalstruct-intro.tex, logicalstruct-localmc.tex, logicalstruct-parseunit.tex, logicalstruct-sequence.tex, logicalstruct-subbands.tex, logicalstruct-superblocks.tex, mc-alg.tex, mc-blockcoverage.tex, mc-chomascaling.tex, mc-impl.tex, mc-obmc-matrix.tex, mc-precision.tex, mc-pred.tex, mc-upconvert.tex, mc.tex, prep-idwt-codeblk-dim.tex, prep-idwt-codeblk-process.tex, prep-idwt-coef-process.tex, prep-idwt-conventions.tex, prep-idwt-ctxt-init.tex, prep-idwt-ctxt-magnitude.tex, prep-idwt-ctxt-quantindex.tex, prep-idwt-ctxt-sign.tex, prep-idwt-ctxt-skip.tex, prep-idwt-pred-dc.tex, prep-idwt-process.tex, prep-idwt.tex, prep-mc-ctxt-init.tex, prep-mc-decode-blkmotion.tex, prep-mc-decode-dc.tex, prep-mc-decode-mv.tex, prep-mc-decode-predictionmode.tex, prep-mc-decoding.tex, prep-mc-mbdata.tex, prep-mc-predapeature.tex, prep-mc-predictionmodes.tex, prep-mc-predmbcommon.tex, prep-mc-predmbglobal.tex, prep-mc-predmbsplit.tex, ref-default-videoparams.tex, ref-quantization-lut.tex, semantics-auh.tex, semantics-dwt.tex, semantics-intro.tex, semantics-mv.tex, spec-structure.tex, vidsys-aspect.tex, vidsys-colour.tex, vidsys-colourmatrix.tex, vidsys-colourprimaries.tex, vidsys-framerate.tex, vidsys-sigrange.tex, vidsys-transfer.tex, vidsys.tex: Initial commit of Latex port of draft specification. 2006-06-19 18:35 asuraparaju * libdirac_common/: common.cpp, mot_comp.cpp, mot_comp.h, mot_comp_mmx.cpp, mot_comp_mmx.h: [Spec Compliance] Ensure that block overlaps in x and y direction are integral powers of 2. Make the OBMC weights calculation truly linear. 2006-06-19 18:34 asuraparaju * libdirac_decoder/frame_decompress.cpp, libdirac_encoder/seq_compress.cpp: Replace std::pow operation with left bit-shift operator 2006-06-19 12:27 asuraparaju * libdirac_byteio/: byteio.h, mvdata_byteio.cpp: Fix for bug#1508532. Ensure that m_current_byte is re-initialised to 0 in the ouput byte alignment function ByteIO::OutputCurrentByte. 2006-06-16 12:07 asuraparaju * doc/: contact.html, documentation.html, faq.html, getting_involved.html, index.html, licenses.html, overview.html, soc2006.html, soc2006_ideas.html, specification.html, template2.html, todo.html, documentation/algorithm/algorithm/intro.htm: Ensure that links to Browse CVS on Sourceforge work correctly. 2006-06-16 11:38 asuraparaju * doc/documentation.html: Ensuring that named anchors work properly. 2006-06-16 11:37 asuraparaju * doc/documentation/code/programmers_guide/: common_data_structs.htm, decoder_api_example.htm, decoder_api_functions.htm, decoder_api_overview.htm, decoder_api_reference.htm, decoder_data_structs.htm, encoder_api_example.htm, encoder_api_functions.htm, encoder_api_overview.htm, encoder_api_reference.htm, encoder_data_structs.htm, encoding.htm, index.htm, input_formats.htm, intro.htm, overview.htm, software.htm: Updated data structs and functionality description for Dirac Codec V0.6.0 2006-06-13 12:58 asuraparaju * ChangeLog: [no log message] 2006-06-13 12:56 asuraparaju * NEWS: Updated with 0.6.0 release notes. 2006-06-13 12:35 asuraparaju * extras/patches/: README_ffmpegsvn_trunk_revision_5470-dirac-0.6.x_patch, ffmpegsvn_trunk_revision_5470-dirac-0.6.x.patch: Dirac 0.6.0 patch and install notes for ffmpeg svn revision 5470. 2006-06-13 12:34 asuraparaju * extras/patches/: MPlayer-1.0pre7try2_dirac-0.6.x.patch, README_MPlayer-1.0pre7try2_dirac-0.6.x_patch: Dirac 0.6.0 patch and install notes for MPlayer release MPlayer-1.0pre7try2. 2006-06-13 10:07 timborer * libdirac_common/: arith_codec.h, mv_codec.cpp, mv_codec.h: Added En/DecodeUInt and En/DecodeSInt functions to the arithmetic codec class. These functions read and write signed and unsigned integers in a unified way. They are used to replace the acres of duplicated code in mv_codec.cpp. This change also had the happy side effect of removing the need for a whole slew of chooseXXX functions used for selecting the arithmetic coding context. 2006-06-12 16:24 stuart_hc * libdirac_decoder/frame_decompress.cpp: whitespace cleanup (corrected stray CRLF line-ending to LF) 2006-06-12 13:11 asuraparaju * libdirac_common/common.h, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/frame_compress.cpp: Use enumerated values for number of motion vector contexts and coefficient contexts instead of hardcoded constants. This helps in not having to change multiple files when the number of contexts changes. 2006-06-12 13:11 asuraparaju * libdirac_common/mv_codec.cpp: [Spec Compliance] Super block Split residual is no longer coded bit-wise but is now coded using truncated unary arithmetic coding. 2006-06-12 13:10 asuraparaju * libdirac_common/common.cpp, libdirac_common/video_format_defaults.cpp, libdirac_decoder/dirac_parser.cpp: [Spec Compliance] Ensure that Video format defaults are set as per spec 2006-06-12 10:06 tjdwave * libdirac_common/wavelet_utils.cpp: Fixed bug with setting weights for bands by depth - removed duplicate correction factor. 2006-06-08 17:55 asuraparaju * libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/common.h, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: [Spec compliance] Number of contexts in Bin 1 for a Non-zero parent reduced to two from three. 2006-06-08 16:19 asuraparaju * README, encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common_types.h, libdirac_common/video_format_defaults.cpp: Renamed SD_PAL and SD_NTSC video format names to 4CIF and 4SIF to avoid confusing them with the SD Digital video format names. 2006-06-08 16:14 asuraparaju * extras/dirac_dshow/src/: basesplitter/basesplitter.vcproj, diracsplitter/DiracSplitter.vcproj, diracsplitter/DiracSplitterFile.cpp: Fix path to header and libraries in project files. Modify code to handle chages to Dirac decoder logic. 2006-06-06 17:11 asuraparaju * win32/VS2003/: DiracDecoder/DiracDecoder.vcproj, DiracEncoder/DiracEncoder.vcproj, libdirac_byteio/libdirac_byteio.vcproj: Fix link errors. 2006-06-06 17:11 asuraparaju * util/instrumentation/libdirac_instrument/: draw_overlay.cpp, motion_arrows.cpp, sad.cpp: Fix for bug #1501636. Ensuring that we are not going past array boundaries. 2006-06-06 17:08 asuraparaju * unit_tests/motion_comp_test.cpp: Remove tests for frame equality after motion estimation because rounding errors can mean that the frames are not equal. However the frame equality is still tested after zero motion compensation. 2006-06-06 17:08 asuraparaju * libdirac_byteio/mvdata_byteio.cpp, libdirac_common/common.h: [Spec Compliance] Reference frame weights are now unsigned. 2006-06-06 17:08 asuraparaju * README: Updated the encoder command line argument list 2006-06-05 16:00 asuraparaju * configure.ac: Update release id to 0.6.0 2006-06-05 15:57 asuraparaju * util/instrumentation/libdirac_instrument/: draw_overlay.cpp, motion_arrows.cpp, motion_colour.cpp, motion_colour_arrows.cpp, overlay.cpp, pred_mode.cpp, sad.cpp, split_mode.cpp: [Spec compliance] Ensure that the instrumentation utility works for true 8 bit data. Note that there is no support at present for non-8bit data. 2006-06-05 15:56 asuraparaju * util/instrumentation/instrmain.cpp: Read video depth from diagnostics input file. 2006-06-05 15:55 asuraparaju * libdirac_encoder/quality_monitor.cpp: [Spec compliance] Adjust lambda values to make them bit-depth agnostic. Tested only on 8 bit input data. Need to test and maybe adjust for other bit-depths. 2006-06-05 15:55 asuraparaju * libdirac_encoder/dirac_encoder.cpp: [Spec compliance] Default Video depth is 8 bits. 2006-06-05 15:55 asuraparaju * libdirac_decoder/: frame_decompress.cpp, frame_decompress.h, seq_decompress.cpp: [Spec compliance] Include Variable bit-depth support in FrameDecompressor class. 2006-06-05 15:54 asuraparaju * libdirac_common/: wavelet_utils.cpp, wavelet_utils.h, wavelet_utils_mmx.cpp: [Spec compliance] Accuracy bits are required in the wavelet analysis stage. The number of bits required depends on the transform depth. Shift the input data up 1 bit to the right to increase accuracy in the Analyis stage. Round the input data down by 1 bit in the Synthesis stage to counter the shift in the analysis stage. All rounding is unbiased irrespective of the number of bit it is rounded to. The perceptual weights are adjusted for each subband depending on the level of the subband. 2006-06-05 15:54 asuraparaju * libdirac_common/mot_comp.cpp, libdirac_common/pic_io.cpp, libdirac_decoder/dirac_parser.cpp, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils_mmx.cpp: [Spec Compliance] The input/output is always true bit depth specified by video-depth and not converted to 10 bit data internally. So no need to shift 8 bit data by two to convert it to 10 bits. 2006-06-05 15:53 asuraparaju * libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_encoder/seq_compress.cpp, unit_tests/frames_test.cpp, unit_tests/motion_comp_test.cpp: [Spec Compliance] Set Variable bit-depth in FrameBuffer classe to set up FrameParams class with variable bit-depth. 2006-06-05 15:53 asuraparaju * libdirac_common/: frame.cpp, frame.h: [Spec Compliance] Support for multiple video depths. Included functionality to clip upconverted data. 2006-06-05 15:53 asuraparaju * libdirac_common/: common_types.h, video_format_defaults.cpp: [Spec Compliance] Ensure that default parameters are correctly set for all video formats. Add enumerated types for D-Cinema video formats' parameters. Default motion vector precision has reverted to quarter pixel from half pixel. 2006-06-05 15:52 asuraparaju * libdirac_common/: common.cpp, common.h: [Spec Compliance] Add support for D-Cinema video formats. Include Variable bit-depth support in Frame Params. Used for clipping. Fix bug in calculating number of code blocks for different transform depths. 2006-06-05 15:52 asuraparaju * libdirac_common/arrays.h: [Spec Compliance] PIXEL_VALUE_MIN and PIXEL_VALUE_MAX no longer required as the min and max values are calculated based on the bit-depth of the input video. Fix indentation by replacing tabs with white space. 2006-06-05 15:51 asuraparaju * libdirac_byteio/transform_byteio.cpp: Fixed bug where the non-default wavelet filter flag was not being written to the bitstream when a non-default filter is used. 2006-06-05 15:51 asuraparaju * libdirac_byteio/seqparams_byteio.cpp: [Spec compliance] Throw an error if a video depth other than the default value of 8 is specified. 2006-06-05 15:51 asuraparaju * libdirac_byteio/frame_byteio.cpp: [Spec compliance] Actual picture number is stored in the picture header and not the offset from the Access unit picture number. Reference frame offsets and retired frame offsets are calculated from current picture number and not access unit header picture number. 2006-06-05 15:50 asuraparaju * libdirac_byteio/byteio.h: Fix warnings in doxygen documentation. 2006-06-05 15:50 asuraparaju * encoder/encmain.cpp: Write video depth to diagnostics output file. 2006-05-23 14:09 tjdwave * libdirac_encoder/quant_chooser.cpp: Changed initial index to 0 from 4, so that 8 bit video will be properly coded. 2006-05-22 10:56 tjdwave * libdirac_encoder/quality_monitor.cpp: Modified PSNR log to output a table for greater clarity. 2006-05-17 18:33 asuraparaju * unit_tests/: motion_comp_test.cpp, motion_comp_test.h: Change precision type in test prototype from int to MVPrecisionType. 2006-05-16 14:53 asuraparaju * libdirac_common/wavelet_utils_mmx.cpp: Changed the wavelet transform so that unbiased rounding is not used with a shift of 1 in the lifting stage to keep in line with the non-MMX optimised code. 2006-05-16 12:25 asuraparaju * libdirac_encoder/seq_compress.cpp: Fix g++ warnings 2006-05-16 12:24 asuraparaju * libdirac_encoder/quant_chooser.cpp: Minor mods to speed up error calculation. Overall improvement in encoding speed is about 4-5% for long gop Changed quantisation as per draft spec so that extra 2 bits accuracy apply to the quantisation offset. This helps at low quantisation factors particularly. 2006-05-16 12:24 asuraparaju * libdirac_encoder/: quality_monitor.cpp, quality_monitor.h: - Removed superfluous filtering function. - Computes PSNR instead of weighted 4th power metric; chroma PSNRs are also computed. 2006-05-16 12:24 asuraparaju * libdirac_encoder/frame_compress.cpp: Spec Compliance: - Setup default code blocks depending on whether frame type is intra or inter. 2006-05-16 12:23 asuraparaju * libdirac_encoder/dirac_encoder.h: Change type of mv_precision in dirac_encparams_t function to MVPrecisionType 2006-05-16 12:23 asuraparaju * libdirac_encoder/dirac_encoder.cpp: Spec Compliance: - Handle CodeBlockMode which replaces the multi-quantisers flag. - Set default spatial partition flag to false if wavelet depth is not set to the default value. 2006-05-16 12:23 asuraparaju * libdirac_decoder/frame_decompress.cpp: Spec Compliance - Throw error if Zero transform flag is set for Intra frames. - Handle Zero transform condition for inter frames. 2006-05-16 12:22 asuraparaju * libdirac_decoder/dirac_parser.h: The parser no longer returns STATE_PICTURE_START state. Modify the example in the doxygen documentation to reflect this. 2006-05-16 12:22 asuraparaju * libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h: Spec Compliance - multiple quantisers are used when code block mode is set to QUANT_MULTIPLE - All values are set to 0 if a block is skipped irrespective of whether is is a DC block or not. - Modified SetupCodeBlocks functions to use the default code blocks if default partitioning is enabled or values of from the bitstream for custom paritioning (only for decoder) 2006-05-16 12:21 asuraparaju * libdirac_common/: wavelet_utils.h, wavelet_utils_mmx.cpp: Implement unbiased rounding for the lifting stages in all wavelet filters. 2006-05-16 12:21 asuraparaju * libdirac_common/video_format_defaults.cpp: Spec compliance - Set up default Codec parameters to comply with spec. - Default motion vector precision is now Half Pixel. 2006-05-16 12:20 asuraparaju * libdirac_common/mv_codec.cpp: Spec compliance - Common Mode prediction function returns false for top left corner of block. - Block mode prediction function return INTRA instead of REF1_ONLY for the top left corner of a block - The sign flag is encoded/decoded as true if the value is negative. 2006-05-16 12:20 asuraparaju * libdirac_common/: mot_comp.cpp, mot_comp_mmx.cpp: Define MMX optimised version of Half Pixel block compensation function MotionCompensator_HalfPixel::CompensateBlock 2006-05-16 12:19 asuraparaju * libdirac_common/band_codec.cpp: Spec Compliance: - Code block skip flag encoded/decoded only if there is more than one code block in a subband - The sign flag is encoded/decoded as true if the value is negative. - Max number of quantisers increased to 97 (0..96). Throw an error if quantisation index exceeds this value while decoding. - Changed quantisation as per draft spec so that extra 2 bits accuracy apply to the quantisation offset. This helps at low quantisation factors particularly. 2006-05-16 12:19 asuraparaju * encoder/encmain.cpp: Print extra-information regarding encoder params used to encoding. E.g. motion vector precision, transform depth etc. 2006-05-16 12:18 asuraparaju * libdirac_byteio/transform_byteio.cpp: Spec compliance: - Zero transform flag applies only to Intra frames. - Read/write code blocks from/to bitstream if Default spatial partitioning is disabled. Throw error when non-default transform depth is specified but default spatial partitioning is set. - Replace Multiple quantisers flag with Code block mode enumerated type. 2006-05-16 12:18 asuraparaju * libdirac_common/common_types.h: New enumerated type to handle CodeBlockMode which replaces the binary Multiple quantisers flag. 2006-05-16 12:17 asuraparaju * libdirac_common/: common.cpp, common.h: Spec Compliance: New class CodeBlocks for handling code blocks. In CodecParams class - change type of m_mv_precision to MVPrecisionType - change type of m_wlt_depth to unsigned - replace m_multi_quants flag with CodeBlockMode enumerated type. - New member variable and member functions to handle CodeBlocks In QuantisersLists class - Add a new member variable m_max_qindex to set the max val of quantiser index that can be handled by the decoder. 2006-05-15 12:45 asuraparaju * libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: Fix bug in specifying number of contexts. The number should be 23 and not 22 as previously specified. 2006-05-15 12:43 asuraparaju * libdirac_common/: mv_codec.cpp, mv_codec.h: [Thomas's changes] Changed coding of MB split so that it's bitwise, with bitwise prediction. This is more efficient and is consistent with coding prediction modes. 2006-05-15 12:43 asuraparaju * libdirac_common/common.h: [Thomas's changes] Changed coding of MB split so that it's bitwise, with bitwise prediction. This is more efficient and is consistent with coding prediction modes. Changed quantisation to give 2 bits of accuracy to quantisation factors. This improves performance in high-quality applications, and reduces large steps in quality. 2006-05-15 12:42 asuraparaju * libdirac_common/common.cpp, libdirac_encoder/quant_chooser.cpp: [Thomas's changes] Changed quantisation to give 2 bits of accuracy to quantisation factors. This improves performance in high-quality applications, and reduces large steps in quality. 2006-05-15 12:42 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: [Thomas's changes] Changed quantisation to give 2 bits of accuracy to quantisation factors. This improves performance in high-quality applications, and reduces large steps in quality. Fixed bug with multiple code blocks changing m_cutoff_point repeatedly. 2006-05-04 09:45 tjdwave * libdirac_common/band_codec.cpp, libdirac_common/common.h, libdirac_common/mv_codec.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: Rationalised arithmetic coding contexts and tidied code. Coefficient coding now covers bins 1-4 individually for "follow/continue bits". There are also separate info contexts for the case where the parent is zero/non-zero. 2006-05-03 17:05 asuraparaju * doc/: browser_compatibility.html, contact.html, documentation.html, faq.html, getting_involved.html, index.html, licenses.html, overview.html, soc2006.html, soc2006_ideas.html, specification.html, todo.html: Include links and details of Dirac participation in Google's Summer of Code 2006 program. 2006-04-26 16:06 asuraparaju * doc/faq.html: Fixed a typo. 2006-04-26 15:59 asuraparaju * tests/samples.at: Set luma block size values depending on the preset value. 2006-04-21 14:59 dirac_dev * encoder/encmain.cpp: Prevents user from specifying more than 5 wavlet transforms 2006-04-21 14:20 dirac_dev * encoder/encmain.cpp, libdirac_byteio/mvdata_byteio.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/common_types.h, libdirac_common/dirac_exception.h, libdirac_common/mot_comp.cpp, libdirac_common/video_format_defaults.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/frame_compress.cpp, libdirac_motionest/me_mode_decn.cpp: Added in variable motion-vector precision. Can now be controlled from the command-line. Default is quarter pixel. 2006-04-21 10:23 asuraparaju * libdirac_common/band_codec.cpp, libdirac_common/common.h, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: Differential quantiser index is now coded using arithmetic signed multiplexed exp Golomb binarisation to conform with spec. Added contexts to list of contexts to support this in common.h. 2006-04-20 16:39 asuraparaju * libdirac_byteio/: byteio.cpp, byteio.h, displayparams_byteio.cpp, frame_byteio.cpp, mvdata_byteio.cpp, parseparams_byteio.cpp, parseunit_byteio.cpp, seqparams_byteio.cpp, subband_byteio.cpp, transform_byteio.cpp: Replaced exp-Golomb coding with interleaved exp-Golomb coding to conform with spec. Fixed-length values (like access unit picture number, parser offset) are now written out in Big-Endian order to conform with spec. Renamed coding functions to reflect whether they are coding fixed length values or variable length values. 2006-04-20 11:45 asuraparaju * libdirac_byteio/Makefile.am: Missed this file in the previous commit. It is part of the major restructure to Dirac bytestream I/O. 2006-04-20 11:41 asuraparaju * Makefile.am, README, configure.ac, decoder/decmain.cpp, doc/documentation/code/api/dirac_api.doxygen, encoder/encmain.cpp, extras/dirac_dshow/src/diracsplitter/DiracSplitter.cpp, extras/dirac_dshow/src/diracsplitter/DiracSplitter.vcproj, extras/dirac_dshow/src/diracsplitter/DiracSplitterFile.cpp, extras/dirac_dshow/src/diracsplitter/stdafx.h, libdirac_byteio/accessunit_byteio.cpp, libdirac_byteio/accessunit_byteio.h, libdirac_byteio/byteio.cpp, libdirac_byteio/byteio.h, libdirac_byteio/component_byteio.cpp, libdirac_byteio/component_byteio.h, libdirac_byteio/dirac_byte_stats.cpp, libdirac_byteio/dirac_byte_stats.h, libdirac_byteio/dirac_byte_stream.cpp, libdirac_byteio/dirac_byte_stream.h, libdirac_byteio/displayparams_byteio.cpp, libdirac_byteio/displayparams_byteio.h, libdirac_byteio/endofsequence_byteio.cpp, libdirac_byteio/endofsequence_byteio.h, libdirac_byteio/frame_byteio.cpp, libdirac_byteio/frame_byteio.h, libdirac_byteio/mvdata_byteio.cpp, libdirac_byteio/mvdata_byteio.h, libdirac_byteio/parseparams_byteio.cpp, libdirac_byteio/parseparams_byteio.h, libdirac_byteio/parseunit_byteio.cpp, libdirac_byteio/parseunit_byteio.h, libdirac_byteio/seqparams_byteio.cpp, libdirac_byteio/seqparams_byteio.h, libdirac_byteio/subband_byteio.cpp, libdirac_byteio/subband_byteio.h, libdirac_byteio/transform_byteio.cpp, libdirac_byteio/transform_byteio.h, libdirac_common/Makefile.am, libdirac_common/arith_codec.cpp, libdirac_common/arith_codec.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/common_types.h, libdirac_common/dirac_exception.cpp, libdirac_common/dirac_exception.h, libdirac_common/dirac_types.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/mot_comp.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/video_format_defaults.cpp, libdirac_common/video_format_defaults.h, libdirac_common/wavelet_utils.cpp, libdirac_decoder/Makefile.am, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/dirac_cppparser.cpp, libdirac_decoder/dirac_cppparser.h, libdirac_decoder/dirac_parser.cpp, libdirac_decoder/dirac_parser.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quant_chooser.cpp, libdirac_encoder/quant_chooser.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp, tests/samples.at, unit_tests/frames_test.cpp, unit_tests/motion_comp_test.cpp, util/instrumentation/instrmain.cpp, util/instrumentation/process_sequence.cpp, util/instrumentation/libdirac_instrument/overlay.cpp, win32/VS2003/Makefile.am, win32/VS2003/dirac.sln, win32/VS2003/ConversionUtils/libconv_common/libconv_common.vcproj, win32/VS2003/DiracDecoder/DiracDecoder.vcproj, win32/VS2003/DiracEncoder/DiracEncoder.vcproj, win32/VS2003/EncodeDirac/EncodeDirac.vcproj, win32/VS2003/libdirac_byteio/libdirac_byteio.vcproj, win32/VS2003/libdirac_common/libdirac_common.vcproj: Major restructure of Input/Output classes in Dirac internals. New directory, libdirac_byteio contains classes to input from/output to a Dirac bistream. Dirac external API (both encoder and decoder) has changed. So the patches for MPlayer, FFmpeg, and the Dirac Directshow filter will no longer work with the CVS source. The external API is likely to change over the next few weeks. Updated versions of the patches and Direcshow filter will be available with the next release of Dirac. NOTE: the bytestream has changed to largely conform to the latest Dirac spec. More work needs to be done to conform fully to the Dirac definition document. So expect the CVS source and resulting bitstream to change frequently over the next few weeks. 2006-04-18 11:18 tjdwave * libdirac_common/arith_codec.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/common.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/frame_compress.cpp: Changing binarisation for arithmetic coding, and associated contexts. The specification will be modified accordingly. Binarisation for the magnitude values of wavelet coefficients, motion vector prediction residues and DC values has been changed from unary to interleaved exp-Golomb so that the number of symbols to be decoded in order to reconstruct a coefficient is reduced. Exp-Golomb binarisation takes a number N>=0 and codes it via the binary representation of N+1, 1bbbbbb. If there are K bits following the leading 1, the representation is K zeroes followed by the binary representation: 00...01bbbbb Interleaved exp-Golomb is the same, except that the K lsbs are interleaved with the zeroes: 0b0b 0b1 so that a single decoding loop can be used. The zeroes here act as "follow bits" indicating that another bit is to be sent, with 1 as the terminator. Contexts for coding these symbols are selected for the follow bits and other bits ("information bits") separately. Compression performance is hardly affected, nor is speed performance in software, but hardware performance is greatly facilitated. 2006-04-12 16:06 tjdwave * libdirac_common/arith_codec.h: Changed while loops for decoding and encoding into fixed-size for-loops with break conditions. Although ugly, this provides safer code as loops will terminate if there's an error. 2006-04-11 12:23 asuraparaju * unit_tests/motion_comp_test.cpp: Set number of references in MvData constructor to fix compilation errors. 2006-04-10 11:13 tjdwave * libdirac_common/band_codec.cpp: Changed lookup table-based division to a straight division. This is slightly slower, but will scale to higher levels of wavelet decomposition. Also eliminates bug with occasional wrap-around for lossless coding on some pictures. Making abs_val 64 bits would also work but could be equally slow on 32 bit architectures. 2006-03-20 12:54 asuraparaju * encoder/encmain.cpp, libdirac_encoder/dirac_encoder.cpp: Fixed bug in writing instrumentation data to output which always assumed that data for two references were available. 2006-03-17 18:04 timborer * libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/pixel_match.cpp, util/instrumentation/process_sequence.cpp: Changed block mode coding so that residues for reference 2 are not generated when we are only using one reference. THIS CHANGES THE BYTESTREAM This reduces the bit rate by a few bits, but the reason for doing it is becuase it makes the codec more logical. Also modified BlockModePrediction so that it doesn't do a prediction for reference 2 when we are only using one reference. Removed some unnecessary memory allocation in MvData constructor. Removed a few warning messages and tidied up a bit. 2006-03-01 18:19 asuraparaju * libdirac_common/: arith_codec.cpp, arith_codec.h: Rationalised types used i.e. replaced all code_t, calc_t etc with unsigned int. Simplified the code by removing one addition and shift from DecodeSymbol. 2006-02-28 15:53 asuraparaju * libdirac_common/arith_codec.cpp: Fixed g++ warning when compiled in debug mode 2006-02-28 15:29 asuraparaju * libdirac_common/Makefile.am, win32/VS2003/libdirac_common/libdirac_common.vcproj: Added arith_codec.cpp to list of .cpp files 2006-02-28 15:25 asuraparaju * libdirac_common/: arith_codec.cpp, arith_codec.h: Refactored code to make implementation easier to understand. The code restructure modified the bitstream but older version of arith_codec can decode this new version and vice-versa. 2006-02-21 13:32 tjdwave * libdirac_common/arith_codec.h: Modified arithmetic coding engine for speed and spec conformance. 1. Changed context statistics so that maximum weight is 256 2. Changed look-up table so that inverse of weight is calculated to 16 instead of 31 bits. 3. Changed scaled count of zero m_prob0 so that it's 16 bits instead of 10 Changes 1-3 mean that m_prob0 can be worked out using only 16 bit multiplies and no bitshift. This is more hardware friendly. 4. Modified do .. while loop for encoding and decoding so that a more efficient test for MSB equality can be used, resulting in a speed-up 5. Changed the order of decoding so that bits are shifted in first and then the symbol is determined. This reduces unnecessary bit inputs and moves to a 'lazy' input mode 6. Changed the statistics update function so that m_prob0 is calculated for every update rather than every other. This speeds up the code and gives better compression performance. 2006-02-15 14:27 asuraparaju * tests/samples.at: Included block variables so that tests can be run for different block sizes. Note that the block sizes must be changed manually before running the tests. 2006-02-15 14:26 asuraparaju * libdirac_motionest/: me_utils.cpp, me_utils_mmx.cpp, pixel_match.cpp: Padding related changes. Since there may no longer be an integer number of whole macroblocks and blocks in a paddied picture, made changes to ensure that we do not fall off the boundaries of the padded pictured during motion estimation. WARNING : This changes the bitstream 2006-02-15 14:24 asuraparaju * libdirac_common/: mot_comp.cpp, mot_comp.h, mot_comp_mmx.cpp, mot_comp_mmx.h: A linear function is used to calculate the OBMC weights instead of a raised cosine function to make it compliant with spec. Also motion compensation is performed only on true picture dimensions and not padded picture dimensions, WARNING : This changes the bitstream 2006-02-15 14:23 asuraparaju * libdirac_common/common.cpp: Modified CodecParams.SetBlockSizes function to be compliant with spec. WARNING : This changes the bitstream 2006-02-15 14:21 asuraparaju * libdirac_common/common.h, libdirac_common/frame.cpp, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/seq_compress.cpp, unit_tests/frames_test.cpp, unit_tests/motion_comp_test.cpp: Currently a frame is padded so that it has an integer number of whole macro blocks and is also a multiple of 2^(wavelet transform depth). This has changed in the Dirac specification where a frame is padded so that its dimensions are a multiple of 2^(wavelet transform depth) only. Also the luma and the chroma components can be padded differently. E.g. the luma dimensions may be a perfect multiple of 2^(wavelet transform depth) so the luma component is not padded but the chroma component may need to be padded depending on the chroma format of the input. To take care of this, FrameParams class has been modified to accept both padded chroma and padded luma dimensions. WARNING! This modifies the bitstream. 2006-02-14 12:48 tjdwave * libdirac_common/arith_codec.h: Changed count rescaling so that it occurs every time a bit is encoded/decoded. This is to make compliant with spec, and also because doing it every other bit was giving no speed advantage. WARNING! This changes the bitstream. 2006-02-10 09:49 tjdwave * libdirac_common/common.cpp: Modified calculation of quantisation, inverse quantisation and offset values so as to conform to specification. WARNING: this modifies the bitstream. 2006-02-09 13:58 tjdwave * libdirac_common/: motion.h, mv_codec.cpp: Removed the function for computing a mean of a vector of ints. Instead all means are of unsigned int values, and are calculated using unbiased arithmetic ie with an offset of N/2 for N values to ensure even rounding. This changes the mean used for predicting DC values in motion vector coding. As a result, the bitstream is also changed. 2006-01-06 15:56 tjdwave * libdirac_common/mv_codec.cpp: Changed refresh so that statistics are refreshed after m_reset_num macroblocks as intended, rather than m_reset_num+1. WARNING! This changes the bitstream. 2006-01-06 15:22 asuraparaju * libdirac_motionest/me_utils.cpp: Fixed bug#1383890. Applied patch supplied in bug report. 2005-12-07 12:50 asuraparaju * doc/specification.html: Link to Dirac specification document 2005-12-07 11:34 asuraparaju * doc/: contact.html, documentation.html, faq.html, getting_involved.html, index.html, licenses.html, overview.html, template2.html, todo.html: Included a link to the Dirac Specification document. 2005-12-07 11:33 asuraparaju * doc/documentation/algorithm/algorithm/wlt_transform.xht: Fixed filter coefficients for 13,5 filter. 2005-12-05 12:44 asuraparaju * ChangeLog: [no log message] 2005-12-05 12:38 asuraparaju * NEWS: Updated with 0.5.4 release notes 2005-12-05 12:33 asuraparaju * extras/patches/: FFMpeg-20051205-dirac-0.5.x.patch, README_FFMpeg-20051205-dirac-0.5.x_patch: FFMpeg patch for cvs version dated 05-Dec-2005. 2005-12-05 12:32 asuraparaju * extras/patches/: README_FFMpeg-20050806-dirac-0.5.x_patch, README_ffmpeg-0.4.9-pre1-dirac-0.5.x_patch: Updated instruction for latest Dirac release 2005-12-05 12:26 asuraparaju * extras/patches/README_MPlayer-1.0pre7_dirac-0.5.x_patch: Updated instructions to use latest release of Dirac and MPlayer 2005-12-02 16:25 asuraparaju * libdirac_common/mot_comp_mmx.cpp: Fix bug with uninitialised memory reads when compiling in msys-g++ environment. 2005-12-02 10:16 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: Added Steve Bearcroft to list of contributors. 2005-12-01 14:34 asuraparaju * README: Changes to reflect the new/modified options of the command line encoder dirac_encoder. 2005-12-01 14:30 asuraparaju * AUTHORS: Updated contributor list. 2005-12-01 14:30 asuraparaju * configure.ac: Updated release id to 0.5.4 2005-12-01 14:29 asuraparaju * tests/: colourbars.at, samples.at: Changes due to modified dirac_encoder command line. Include the -local option to generate diagnostics and locally decoded data to use in comparison and instrumentation tests. 2005-12-01 14:27 asuraparaju * encoder/encmain.cpp: Generation of Diagnostics data and locally decoded output is now disabled by default. To enable this use the commandline option -local. 2005-12-01 14:26 asuraparaju * libdirac_common/upconvert_mmx.cpp: Mods to make Upconverter::DoUpconverter function more efficient 2005-12-01 14:25 asuraparaju * libdirac_common/wavelet_utils.h: New function VHFilter5_3::HorizSynth which is used only when MMX opts are enabled. This function is used to interleave horizontal synthesis with vertical synthesis to make the wavelet syntheis function slightly more efficient. 2005-12-01 14:22 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: New function ClearBlock to set all values in block to 0 more efficiently. Applied BandCodec optimisation part of patch 1303281 which make DecodeVal function more efficient. 2005-12-01 14:12 asuraparaju * libdirac_common/wavelet_utils_mmx.cpp: Minor mods to optimise VHFilter5_3::Split further. 2005-12-01 14:10 asuraparaju * libdirac_common/mot_comp_mmx.cpp: Minor changes to ensure that uninitialised memory reads do not cause crashes when compiled using MS VC++. Note that the data read from unitialised memory is not being used but still causes problems on some platforms. 2005-12-01 14:06 asuraparaju * libdirac_common/mot_comp.cpp: Using calculated values of blocks per macro block row and blocks per sub-block row instead of hardcoded values. 2005-12-01 14:02 asuraparaju * util/encoder_gui/: README, diracdata.h, diracgui.cpp, diracgui.h, encodebox.cpp, encoder_gui.pro, filesbox.cpp, repthread.cpp, tables.h: Included option in GUI to disable the creation of diagnostics data file and locally decoded output. dirac_encoder need no longer be in the current working directory but in any directory in the PATH variable. 2005-11-15 15:35 asuraparaju * libdirac_common/arith_codec.h: Minor cosmetic difference as to how CODE_MSB and CODE_2ND_MSB are initialised to make their usage more obvious. 2005-11-15 15:33 asuraparaju * doc/Makefile.am: Fix problem with install target 2005-11-08 11:45 asuraparaju * libdirac_common/band_codec.cpp: Minor changes in DoWorkCode, DoWorkDecode and DecodeCoeffBlock functions in the way 2-D arrays are accessed which resulted in a slight decoding speed improvement. 2005-11-08 11:43 asuraparaju * libdirac_common/upconvert_mmx.cpp: Minor changes to DoUpConverter routine to give slight improvement in uoconversion speed. 2005-11-08 11:41 asuraparaju * libdirac_common/arrays.h: In Resize function in OneDArray class, dealloc and realloc data only if the new and old array sizes are different. 2005-11-08 11:40 asuraparaju * libdirac_common/: wavelet_utils.cpp, wavelet_utils_mmx.cpp: Optimised WaveletTransform::VHFilter5_3::Split using MMX instructions. Minor mods to WaveletTransform::VHFilter5_3::Synth function improve speed slightly. 2005-11-08 11:37 asuraparaju * libdirac_motionest/Makefile.am, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert_mmx.cpp, win32/VS2003/libdirac_motionest/libdirac_motionest.vcproj: Optimised DoDownConverter routine using MMX instructions 2005-11-08 11:34 asuraparaju * libdirac_common/: mot_comp.cpp, mot_comp.h, mot_comp_mmx.cpp: Modified motion compensation so that it take Macro-Block splitting mode into consideration when compensating a row of blocks. Depending on the macroblock split mode, 1,2 or 4 blocks of reference data are used to calculate the motion compensated data. This sped up the default quarter pixel block motion compensation routine by an average of 20-23% for a 2Mbps Dirac bitstream. 2005-11-08 11:26 asuraparaju * libdirac_common/: frame.cpp, frame.h, frame_buffer.cpp, frame_buffer.h: Changes to FrameBuffer handling. Deleting old frames and allocating new frames is quite expensive. So instead of deleting frames no longer required in the frame buffer, they are flagged "not in use". So the next time a new reference frame has to be inserted in the Frame buffer, the first frame "not in use" is used to store the new frame. An overall improvement of 6-7 percent in decoding speed for a 2Mbps bitstream resulted. 2005-10-17 12:06 asuraparaju * libdirac_encoder/dirac_encoder.cpp: Fixed bug #1328565. Now ensuring that all locally decoded frames are available for output. 2005-10-11 14:02 tjdwave * libdirac_common/arith_codec.h: Incorporated Steve Bearcroft's speed-up patch, with some minor typographical changes for clarity. 2005-10-11 10:00 tjdwave * libdirac_motionest/block_match.cpp: Added patch 1309571 which fixes the quality degradation introduced in the motion estimation speed-ups. 2005-10-07 11:17 asuraparaju * libdirac_motionest/: me_utils.cpp, me_utils_mmx.cpp, me_utils_mmx.h: Applied MMX optimisations to modified ME routines. This is an initial version that improves Motion Estimation speed by 30% resulting in a 20% improvement in encoding speed overall. This is work in progress. 2005-09-27 14:44 dirac_dev * libdirac_encoder/dirac_encoder.h: Replaced boolean with int. C-compilers (eg. ffmpeg) complain about C++ constructs. 2005-09-27 14:08 tjdwave * libdirac_encoder/quality_monitor.cpp: Set the motion estimation factor to compensate for the default search precision being at 1/4 pel (as this is the default precision) rather than 1/8th pel. 2005-09-27 14:07 tjdwave * libdirac_motionest/: motion_estimate.cpp, motion_estimate.h: Removed cut detection, which is now in the FrameCompressor class. Removed the kludge which scaled the motion vector precisions. All motion estimation is now at the selected precision. 2005-09-27 14:01 tjdwave * libdirac_motionest/: me_mode_decn.cpp, me_mode_decn.h: Use specific matching classes for different pixel accuracies. Reduced search ranges for increased speed. 2005-09-27 13:59 tjdwave * libdirac_motionest/me_subpel.cpp: Removed calculation of lambda map. Simplified class by using the specific subpixel refinement matching function. 2005-09-27 13:55 tjdwave * libdirac_motionest/: pixel_match.cpp, pixel_match.h: Search ranges restricted to improve motion estimation speed. 2005-09-27 13:52 tjdwave * libdirac_motionest/: block_match.cpp, block_match.h: Refactored the BlockMatcher class. There are now three functions for finding a best match - finding the pixel-accurate best match, refining this to sub-pixel accuracy, and also finding a best match from a list at sub-pixel level. These matching functions contain shortcuts to speed up matching as follows. FindBestMatchPel: - The predictors are each searched first, and if their SAD values are small then the search ends. - bailout functions are used for calculating matching costs for the remaining candidates RefineMatchSubpel: - The predictor from neighbouring (previously refined) vectors is tested first. If there's a small SAD, then the search ends - Pixel-accurate vectors are refined to half-pel vectors by searching the 4 closest half-pel positions (shown as X) first: X XOX X If one of these is better than the pixel-accurate value, then the two nearest values in the immediate neighbourhood of the pixel-accurate value are also searched, eg the Y values below: YXY XOX X This two-stage procedure is followed again in refining to quarter- and eighth-pel. - At each stage of refinement, if we're 10% worse than the value derived for the predictor, we end the search. FindBestMatchSubpel: - bailout functions are used 2005-09-27 13:40 tjdwave * libdirac_motionest/: me_utils.cpp, me_utils.h: Reorganised classes for doing SAD calculations at pixel and sub-pixel accuracy. Distinct classes for half-, quarter- and eighth-pixel matching have been created. These are present also in 'bailout' form so that you can leave the calculation as soon as you know that you're not going to beat the best match so far. These mods support speeding up motion estimation, and hence the encoder generally. 2005-09-27 12:25 asuraparaju * libdirac_encoder/dirac_encoder.cpp: Fixed bug# 1291478. Now ensuring that dirac_encoder_output returns ENC_STATE_BUFFER when data is not loaded into the encoder. 2005-09-27 12:21 asuraparaju * doc/documentation/code/programmers_guide/decoder_api_functions.htm: Bug fix: 1291481. Corrected return value in dirac_parse function prototype. 2005-09-27 10:21 tjdwave * libdirac_encoder/seq_compress.cpp: The quality measurement model can only be calculated correctly if reconstructed compressed video is available, which isn't the case if we're not doing local decoding. In this case, calculating and outputting these values is disabled. 2005-09-27 10:16 tjdwave * libdirac_encoder/: frame_compress.cpp, frame_compress.h: Moved the analysis of whether or not we have a cut into FrameCompressor class and out of motion estimation classes. Also, only do motion compensation on L2 frames if local decoding is required. This is because, by definition, L2 frames can't be references and so can be left in a partially reconstructed state if local decoding isn't required, which improves encoding speed. 2005-09-27 10:12 tjdwave * libdirac_encoder/dirac_encoder.cpp: Added support for local decoding flag, so that local decoding can be avoided for speed. 2005-09-27 10:09 tjdwave * libdirac_encoder/comp_compress.cpp: Removed commented-out code. 2005-09-27 10:09 tjdwave * libdirac_encoder/comp_compress.cpp: Inverse wavelet transform is now only done for L2 frames if local decoding is required. This is because L2 frames are (by definition) not used for reference and can be left in a partially reconstructed state if local decoding isn't needed. 2005-09-27 09:54 tjdwave * libdirac_common/mot_comp.cpp: Introduced unbiased rounding into calculation of weighting matrices. This allows the subsequent rationalisation of the values to be avoided. Also, chroma scale factors applied to motion vectors have been replaced by shift factors, so that bitshifts can be used instead of divisions for greater efficiency. 2005-09-27 09:50 tjdwave * libdirac_common/: common.cpp, common.h: Added support for an encode params flag indicating whether we're doing local decoding. Local decoding can then be omitted for greater efficiency. 2005-09-27 09:44 tjdwave * decoder/decmain.cpp: Made timing info only output in verbose mode. 2005-09-27 09:43 tjdwave * encoder/encmain.cpp: Added timing data for encoding. 2005-09-27 09:40 tjdwave * libdirac_common/arith_codec.h: Simplified ArithCodec class so that probality intervals aren't used. 2005-09-07 15:29 tjdwave * util/encoder_gui/: COPYING, README, diracdata.h, diracgui.cpp, diracgui.h, encodebox.cpp, encoder_gui.pro, filesbox.cpp, main.cpp, presetbox.cpp, qualitybox.cpp, reportbox.cpp, repthread.cpp, repthread.h, tables.cpp, tables.h, videobox.cpp: Adding files for Dirac encoder GUI. 2005-09-07 10:41 tjdwave * doc/DiracSpecV0.1.doc: Version 0.1 superceded by version 0.9 now in CVS. 2005-09-07 10:39 tjdwave * doc/DiracSpec0.9.pdf: Added decoder semantics and revised bitstream structure. 2005-08-31 14:42 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/quality_monitor.cpp: Added support for lossless I-frame and long-GOP coding, with CLI option. 2005-08-23 11:52 asuraparaju * ChangeLog: [no log message] 2005-08-23 11:46 asuraparaju * NEWS: Added 0.5.3 release notes 2005-08-23 11:14 asuraparaju * doc/documentation.html: Having trouble creating a pdf document in which MathML is rendered correctly. Hence a pdf version of the Algorithm document cannot be generated at the moment. Removed broken link to Algorithm pdf until this problem can be fixed. 2005-08-22 13:51 asuraparaju * configure.ac: Update the help string for enable-mmx configure argument to make it clear that MMX opts are enabled by default. The user will have to explcitly specify --enable-mmmx=no or --disable-mmx to disable MMX opts. 2005-08-19 13:41 asuraparaju * extras/patches/: README_transcode-1.0.0_dirac-0.5.x_patch, transcode-1.0.0-dirac-0.5.x.patch: Dirac patch for transcode-1.0.0. This patch is not a standalone patch and will be effective only if the ffmpeg library it uses is built with the dirac patch applied. 2005-08-19 13:38 asuraparaju * extras/patches/README_MPlayer-1.0pre7_dirac-0.5.x_patch: Updated notes for dirac v0.5.3 2005-08-19 13:36 asuraparaju * extras/patches/: FFMpeg-20050806-dirac-0.5.x.patch, README_FFMpeg-20050806-dirac-0.5.x_patch: Dirac patch for ffmpeg cvs snapshot dated 06-Aug-2005. Note that this has been tested with CVS versions as late at 16-Aug-2006 but the CVS snapshots past 06-Aug-2005 are not available for download on the FFmpeg server. 2005-08-19 13:34 asuraparaju * extras/patches/README_transcode-0.6.14_dirac-0.5.x_patch: Updated for dirac v0.5.3 2005-08-19 13:33 asuraparaju * extras/patches/: README_ffmpeg-0.4.9-pre1-dirac-0.5.x_patch, ffmpeg-0.4.9-pre1-dirac-0.5.x.patch: Updated patch for dirac-0.5.3. Changed license to LGPL. Fixed bug in setting the quality factor where the quality factor lookup table was uint8_t instead of float which was causing the qf to be truncated to uint8_t. dirac_decode_frame now correctly returns the number of bytes it consumed. This is a fix for bug 1246767. 2005-08-18 09:30 tjdwave * encoder/encmain.cpp: Clarified CLI error message. 2005-08-18 09:27 tjdwave * README: Refactored the encoding instructions so that they're much clearer. 2005-08-16 15:37 asuraparaju * libdirac_common/arith_codec.h: Removed DOS line-breaks. 2005-08-16 10:37 asuraparaju * doc/Makefile.am: Fix problem with install targer in main doc directory 2005-08-15 18:21 asuraparaju * doc/Makefile.am: Fixed bug where make was failing when built in a distribtion 2005-08-15 17:48 asuraparaju * doc/: Makefile.am, documentation/code/programmers_guide/Makefile.am: Ensured that all required files are installed correctly when using the install target of make. 2005-08-15 17:18 asuraparaju * doc/documentation/: Makefile.am, tools/diagnostics/Makefile.am: Changes related to documents directory restructure 2005-08-15 17:11 asuraparaju * configure.ac, doc/Makefile.am, doc/documentation/algorithm/Makefile.am, doc/documentation/algorithm/enhancements/Makefile.am, doc/documentation/algorithm/global_motion/Makefile.am, doc/documentation/algorithm/upconversion/Makefile.am, doc/documentation/tools/Makefile.am: Changes related to documentation tree restructure 2005-08-15 16:09 asuraparaju * doc/: Makefile.am, documentation/algorithm/Makefile.am, documentation/algorithm/algorithm/Makefile.am, documentation/code/Makefile.am, documentation/code/api/Makefile.am, documentation/code/api/dirac_api.doxygen, documentation/code/api/dirac_api.doxygen.in, documentation/code/api/dirac_api_foot.html, documentation/code/api/dirac_api_head.html, documentation/code/programmers_guide/Makefile.am: Changes related to documentation tree restructure. 2005-08-15 16:03 asuraparaju * doc/api/: Makefile.am, dirac_api.doxygen, dirac_api.doxygen.in, dirac_api_foot.html, dirac_api_head.html, libdirac_encoder_api.doxygen, libdirac_encoder_api_foot.html, libdirac_encoder_api_head.html: Removing old files as part of Documentation directory restructure. API docs are now generated in doc/documentation/code/api/html 2005-08-15 15:56 asuraparaju * doc/algorithm/: Makefile.am, algorithm.htm, block_data.htm, const_qual.htm, intro.htm, mb_structs.htm, mot_est.htm, mot_est_and_comp.htm, mv_coding_arch.htm, mv_data_coding.htm, mv_entropy_code.htm, olb_mc.htm, overall_arch.htm, quantisation.htm, rdo.htm, rdo_mot_est.htm, subband_rdo.htm, temporal_prediction_structures.htm, transform_coding.htm, transform_coding_arch.htm, var_size.htm, wlt_transform.htm, figs/DC.jpg, figs/DCSAD.jpg, figs/braces.jpg, figs/d.jpg, figs/eqA.jpg, figs/eqB.jpg, figs/eqC.jpg, figs/eqD.jpg, figs/eqE.jpg, figs/eqF.jpg, figs/eqG.jpg, figs/eqH.jpg, figs/eqI.jpg, figs/eqJ.jpg, figs/fig1.jpg, figs/fig10.jpg, figs/fig12.jpg, figs/fig13.jpg, figs/fig14.jpg, figs/fig15.jpg, figs/fig16.jpg, figs/fig17.jpg, figs/fig18.jpg, figs/fig19.jpg, figs/fig2.jpg, figs/fig20.jpg, figs/fig21.jpg, figs/fig22.jpg, figs/fig23.jpg, figs/fig24.jpg, figs/fig26.jpg, figs/fig27.jpg, figs/fig3.jpg, figs/fig4.jpg, figs/fig5.jpg, figs/fig6.jpg, figs/fig7.bmp, figs/fig7.jpg, figs/fig8.jpg, figs/fig9.jpg, figs/fp.jpg, figs/m.jpg, figs/nhood.jpg, figs/nhoodresidue.jpg, figs/p.jpg, figs/p2.jpg, figs/t.jpg, figs/two.jpg, figs/var.jpg, figs/vtilda.jpg, figs/vw.jpg, mv_data_pred.htm, parent_child.htm, toc.htm, wlt_coeff_coding.htm: Removing old files as part of Documentation directory restructure. Algorithm documentation can now be found in doc/documentation/algorithm/algorithm 2005-08-15 15:52 asuraparaju * doc/programmers/: Makefile.am, programmers_guide.aux, programmers_guide.tex: Removed old files as part of document directory restructure 2005-08-15 12:26 asuraparaju * doc/documentation/algorithm/enhancements/: 050var_wlt.htm, 130alt_bin.htm: Checking in missed doc files missed out in earlier website docs check in. 2005-08-15 12:22 asuraparaju * doc/: browser_compatibility.html, contact.html, documentation.html, faq.html, getting_involved.html, index.html, licenses.html, overview.html, styles.css, template.html, template2.html, todo.html, documentation/algorithm/algorithm/block_data.htm, documentation/algorithm/algorithm/index.htm, documentation/algorithm/algorithm/intra_pred.htm, documentation/algorithm/algorithm/intro.htm, documentation/algorithm/algorithm/mb_structs.htm, documentation/algorithm/algorithm/mot_est.htm, documentation/algorithm/algorithm/mot_est_and_comp.htm, documentation/algorithm/algorithm/mv_coding_arch.htm, documentation/algorithm/algorithm/mv_data_coding.htm, documentation/algorithm/algorithm/mv_data_pred.htm, documentation/algorithm/algorithm/mv_entropy_code.htm, documentation/algorithm/algorithm/olb_mc.xht, documentation/algorithm/algorithm/overall_arch.htm, documentation/algorithm/algorithm/overall_arch_svg.htm, documentation/algorithm/algorithm/parent_child.htm, documentation/algorithm/algorithm/quantisation.xht, documentation/algorithm/algorithm/rdo.htm, documentation/algorithm/algorithm/rdo_mot_est.xht, documentation/algorithm/algorithm/subband_rdo.xht, documentation/algorithm/algorithm/temporal_prediction_structures.htm, documentation/algorithm/algorithm/toc.htm, documentation/algorithm/algorithm/transform_coding.htm, documentation/algorithm/algorithm/transform_coding_arch.htm, documentation/algorithm/algorithm/var_size.htm, documentation/algorithm/algorithm/wlt_coeff_coding.xht, documentation/algorithm/algorithm/wlt_transform.xht, documentation/algorithm/algorithm/figs/fig1.dia, documentation/algorithm/algorithm/figs/fig1.gif, documentation/algorithm/algorithm/figs/fig1.jpg, documentation/algorithm/algorithm/figs/fig1.png, documentation/algorithm/algorithm/figs/fig1.svg, documentation/algorithm/algorithm/figs/fig10.dia, documentation/algorithm/algorithm/figs/fig10.gif, documentation/algorithm/algorithm/figs/fig10.jpg, documentation/algorithm/algorithm/figs/fig10.png, documentation/algorithm/algorithm/figs/fig10.svg, documentation/algorithm/algorithm/figs/fig12.dia, documentation/algorithm/algorithm/figs/fig12.gif, documentation/algorithm/algorithm/figs/fig12.jpg, documentation/algorithm/algorithm/figs/fig12.png, documentation/algorithm/algorithm/figs/fig12.svg, documentation/algorithm/algorithm/figs/fig15.dia, documentation/algorithm/algorithm/figs/fig15.gif, documentation/algorithm/algorithm/figs/fig15.jpg, documentation/algorithm/algorithm/figs/fig15.png, documentation/algorithm/algorithm/figs/fig15.svg, documentation/algorithm/algorithm/figs/fig16.dia, documentation/algorithm/algorithm/figs/fig16.gif, documentation/algorithm/algorithm/figs/fig16.jpg, documentation/algorithm/algorithm/figs/fig16.png, documentation/algorithm/algorithm/figs/fig16.svg, documentation/algorithm/algorithm/figs/fig17.dia, documentation/algorithm/algorithm/figs/fig17.gif, documentation/algorithm/algorithm/figs/fig17.jpg, documentation/algorithm/algorithm/figs/fig17.png, documentation/algorithm/algorithm/figs/fig17.svg, documentation/algorithm/algorithm/figs/fig18.dia, documentation/algorithm/algorithm/figs/fig18.gif, documentation/algorithm/algorithm/figs/fig18.jpg, documentation/algorithm/algorithm/figs/fig18.png, documentation/algorithm/algorithm/figs/fig18.svg, documentation/algorithm/algorithm/figs/fig19.cgm, documentation/algorithm/algorithm/figs/fig19.dia, documentation/algorithm/algorithm/figs/fig19.gif, documentation/algorithm/algorithm/figs/fig19.jpg, documentation/algorithm/algorithm/figs/fig19.png, documentation/algorithm/algorithm/figs/fig19.svg, documentation/algorithm/algorithm/figs/fig19.wmf, documentation/algorithm/algorithm/figs/fig1_100.svg, documentation/algorithm/algorithm/figs/fig1_10000.dia, documentation/algorithm/algorithm/figs/fig1_10000.svg, documentation/algorithm/algorithm/figs/fig1_mod.svg, documentation/algorithm/algorithm/figs/fig1_px.svg, documentation/algorithm/algorithm/figs/fig2.dia, documentation/algorithm/algorithm/figs/fig2.gif, documentation/algorithm/algorithm/figs/fig2.jpg, documentation/algorithm/algorithm/figs/fig2.png, documentation/algorithm/algorithm/figs/fig2.svg, documentation/algorithm/algorithm/figs/fig20.dia, documentation/algorithm/algorithm/figs/fig20.gif, documentation/algorithm/algorithm/figs/fig20.jpg, documentation/algorithm/algorithm/figs/fig20.png, documentation/algorithm/algorithm/figs/fig20.svg, documentation/algorithm/algorithm/figs/fig21.dia, documentation/algorithm/algorithm/figs/fig21.gif, documentation/algorithm/algorithm/figs/fig21.jpg, documentation/algorithm/algorithm/figs/fig21.png, documentation/algorithm/algorithm/figs/fig21.svg, documentation/algorithm/algorithm/figs/fig22.dia, documentation/algorithm/algorithm/figs/fig22.gif, documentation/algorithm/algorithm/figs/fig22.jpg, documentation/algorithm/algorithm/figs/fig22.png, documentation/algorithm/algorithm/figs/fig22.svg, documentation/algorithm/algorithm/figs/fig23.dia, documentation/algorithm/algorithm/figs/fig23.gif, documentation/algorithm/algorithm/figs/fig23.jpg, documentation/algorithm/algorithm/figs/fig23.png, documentation/algorithm/algorithm/figs/fig23.svg, documentation/algorithm/algorithm/figs/fig2_webdraw.svg, documentation/algorithm/algorithm/figs/fig3.bmp, documentation/algorithm/algorithm/figs/fig3.dia, documentation/algorithm/algorithm/figs/fig3.gif, documentation/algorithm/algorithm/figs/fig3.jpg, documentation/algorithm/algorithm/figs/fig3.png, documentation/algorithm/algorithm/figs/fig3.svg, documentation/algorithm/algorithm/figs/fig3_a.svg, documentation/algorithm/algorithm/figs/fig4.dia, documentation/algorithm/algorithm/figs/fig4.gif, documentation/algorithm/algorithm/figs/fig4.jpg, documentation/algorithm/algorithm/figs/fig4.png, documentation/algorithm/algorithm/figs/fig4.svg, documentation/algorithm/algorithm/figs/fig4_dia.svg, documentation/algorithm/algorithm/figs/fig5.dia, documentation/algorithm/algorithm/figs/fig5.gif, documentation/algorithm/algorithm/figs/fig5.jpg, documentation/algorithm/algorithm/figs/fig5.png, documentation/algorithm/algorithm/figs/fig5.svg, documentation/algorithm/algorithm/figs/fig6.dia, documentation/algorithm/algorithm/figs/fig6.gif, documentation/algorithm/algorithm/figs/fig6.jpg, documentation/algorithm/algorithm/figs/fig6.png, documentation/algorithm/algorithm/figs/fig6.svg, documentation/algorithm/algorithm/figs/fig7.jpg, documentation/algorithm/algorithm/figs/fig8.dia, documentation/algorithm/algorithm/figs/fig8.gif, documentation/algorithm/algorithm/figs/fig8.jpg, documentation/algorithm/algorithm/figs/fig8.png, documentation/algorithm/algorithm/figs/fig8.svg, documentation/algorithm/algorithm/figs/fig9.dia, documentation/algorithm/algorithm/figs/fig9.gif, documentation/algorithm/algorithm/figs/fig9.jpg, documentation/algorithm/algorithm/figs/fig9.png, documentation/algorithm/algorithm/figs/fig9.svg, documentation/algorithm/enhancements/010version_num.htm, documentation/algorithm/enhancements/020precision.htm, documentation/algorithm/enhancements/030index_tables.htm, documentation/algorithm/enhancements/040bit_stream.htm, documentation/algorithm/enhancements/060var_blocks.htm, documentation/algorithm/enhancements/070var_mv_precn.htm, documentation/algorithm/enhancements/080multi_ref.htm, documentation/algorithm/enhancements/090nl_quant.htm, documentation/algorithm/enhancements/100multi_quant.htm, documentation/algorithm/enhancements/110spatially_var_quant.htm, documentation/algorithm/enhancements/120wt_ref.htm, documentation/algorithm/enhancements/140pred_ctx.htm, documentation/algorithm/enhancements/150ctx_update.htm, documentation/algorithm/enhancements/160intra_ctxs.htm, documentation/algorithm/enhancements/170global_motion.htm, documentation/algorithm/enhancements/180skipped.htm, documentation/algorithm/enhancements/190mv_trace.htm, documentation/algorithm/enhancements/200interlace.htm, documentation/algorithm/enhancements/index.htm, documentation/algorithm/enhancements/toc.htm, documentation/algorithm/global_motion/affine.htm, documentation/algorithm/global_motion/code.htm, documentation/algorithm/global_motion/index.htm, documentation/algorithm/global_motion/intro.htm, documentation/algorithm/global_motion/optimising.htm, documentation/algorithm/global_motion/projective.htm, documentation/algorithm/global_motion/projective_2.htm, documentation/algorithm/global_motion/toc.htm, documentation/algorithm/global_motion/images/abc.jpg, documentation/algorithm/global_motion/images/affine_1.jpg, documentation/algorithm/global_motion/images/affine_2.jpg, documentation/algorithm/global_motion/images/affine_3.jpg, documentation/algorithm/global_motion/images/affine_4.jpg, documentation/algorithm/global_motion/images/affine_5.jpg, documentation/algorithm/global_motion/images/affine_v_error.jpg, documentation/algorithm/global_motion/images/arrow_up.gif, documentation/algorithm/global_motion/images/code_1.jpg, documentation/algorithm/global_motion/images/code_2.jpg, documentation/algorithm/global_motion/images/code_3.jpg, documentation/algorithm/global_motion/images/code_4.jpg, documentation/algorithm/global_motion/images/next.gif, documentation/algorithm/global_motion/images/optimising_1.jpg, documentation/algorithm/global_motion/images/optimising_2.jpg, documentation/algorithm/global_motion/images/optimising_3.jpg, documentation/algorithm/global_motion/images/optimising_4.jpg, documentation/algorithm/global_motion/images/optimising_5.jpg, documentation/algorithm/global_motion/images/optimising_fi.jpg, documentation/algorithm/global_motion/images/prev.gif, documentation/algorithm/global_motion/images/projective_1.jpg, documentation/algorithm/global_motion/images/projective_10.jpg, documentation/algorithm/global_motion/images/projective_11.jpg, documentation/algorithm/global_motion/images/projective_2.jpg, documentation/algorithm/global_motion/images/projective_3.jpg, documentation/algorithm/global_motion/images/projective_4.jpg, documentation/algorithm/global_motion/images/projective_5.jpg, documentation/algorithm/global_motion/images/projective_6.jpg, documentation/algorithm/global_motion/images/projective_7.jpg, documentation/algorithm/global_motion/images/projective_8.jpg, documentation/algorithm/global_motion/images/projective_9.jpg, documentation/algorithm/global_motion/images/projective_e.jpg, documentation/algorithm/global_motion/images/projective_e_2.jpg, documentation/algorithm/global_motion/images/projective_ec.jpg, documentation/algorithm/global_motion/images/projective_m_1.jpg, documentation/algorithm/global_motion/images/projective_w.jpg, documentation/algorithm/global_motion/images/toc.gif, documentation/algorithm/upconversion/downconv.htm, documentation/algorithm/upconversion/downconv_code.htm, documentation/algorithm/upconversion/downconv_filt.htm, documentation/algorithm/upconversion/index.htm, documentation/algorithm/upconversion/intro.htm, documentation/algorithm/upconversion/results.htm, documentation/algorithm/upconversion/results_down.htm, documentation/algorithm/upconversion/results_up.htm, documentation/algorithm/upconversion/toc.htm, documentation/algorithm/upconversion/upconv.htm, documentation/algorithm/upconversion/upconv_basic.htm, documentation/algorithm/upconversion/upconv_filt.htm, documentation/algorithm/upconversion/upconv_opt.htm, documentation/algorithm/upconversion/upconv_opt_arith.htm, documentation/algorithm/upconversion/upconv_opt_io.htm, documentation/algorithm/upconversion/upconv_opt_other.htm, documentation/algorithm/upconversion/images/image1.jpg, documentation/algorithm/upconversion/images/image2.jpg, documentation/algorithm/upconversion/images/image3.jpg, documentation/algorithm/upconversion/images/image4.jpg, documentation/algorithm/upconversion/images/image5.jpg, documentation/algorithm/upconversion/images/image6.jpg, documentation/algorithm/upconversion/images/next.gif, documentation/algorithm/upconversion/images/prev.gif, documentation/algorithm/upconversion/images/toc.gif, documentation/code/programmers_guide/common_data_structs.htm, documentation/code/programmers_guide/decoder_api.htm, documentation/code/programmers_guide/decoder_api_example.htm, documentation/code/programmers_guide/decoder_api_functions.htm, documentation/code/programmers_guide/decoder_api_overview.htm, documentation/code/programmers_guide/decoder_api_reference.htm, documentation/code/programmers_guide/decoder_data_structs.htm, documentation/code/programmers_guide/decoding.htm, documentation/code/programmers_guide/encoder_api.htm, documentation/code/programmers_guide/encoder_api_example.htm, documentation/code/programmers_guide/encoder_api_functions.htm, documentation/code/programmers_guide/encoder_api_overview.htm, documentation/code/programmers_guide/encoder_api_reference.htm, documentation/code/programmers_guide/encoder_data_structs.htm, documentation/code/programmers_guide/encoding.htm, documentation/code/programmers_guide/index.htm, documentation/code/programmers_guide/input_formats.htm, documentation/code/programmers_guide/intro.htm, documentation/code/programmers_guide/key.htm, documentation/code/programmers_guide/overview.htm, documentation/code/programmers_guide/software.htm, documentation/code/programmers_guide/toc.htm, documentation/code/programmers_guide/images/arrow_right.gif, documentation/code/programmers_guide/images/arrow_up.gif, documentation/code/programmers_guide/images/image1.jpg, documentation/code/programmers_guide/images/image2.jpg, documentation/code/programmers_guide/images/image3.jpg, documentation/code/programmers_guide/images/next.gif, documentation/code/programmers_guide/images/prev.gif, documentation/code/programmers_guide/images/toc.gif, documentation/publications/dirac-handout-lude-04-2004.pdf, documentation/support/test.html, documentation/tools/diagnostics/index.htm, documentation/tools/diagnostics/intro.htm, documentation/tools/diagnostics/operation.htm, documentation/tools/diagnostics/operation_buffer.htm, documentation/tools/diagnostics/operation_code.htm, documentation/tools/diagnostics/operation_des.htm, documentation/tools/diagnostics/operation_trans.htm, documentation/tools/diagnostics/over.htm, documentation/tools/diagnostics/over_diag.htm, documentation/tools/diagnostics/over_intr.htm, documentation/tools/diagnostics/over_oper.htm, documentation/tools/diagnostics/overlay.htm, documentation/tools/diagnostics/overlay_gmv.htm, documentation/tools/diagnostics/overlay_mv.htm, documentation/tools/diagnostics/overlay_mv_arr.htm, documentation/tools/diagnostics/overlay_mv_clr.htm, documentation/tools/diagnostics/overlay_pred.htm, documentation/tools/diagnostics/overlay_sad.htm, documentation/tools/diagnostics/overlay_split.htm, documentation/tools/diagnostics/toc.htm, documentation/tools/diagnostics/images/image1.jpg, documentation/tools/diagnostics/images/image2.jpg, documentation/tools/diagnostics/images/image3.jpg, documentation/tools/diagnostics/images/image4.jpg, documentation/tools/diagnostics/images/image5.jpg, documentation/tools/diagnostics/images/image6.jpg, documentation/tools/diagnostics/images/image7.jpg, documentation/tools/diagnostics/images/image8.jpg, documentation/tools/diagnostics/images/next.gif, documentation/tools/diagnostics/images/prev.gif, documentation/tools/diagnostics/images/toc.gif, images/arrow_right.gif, images/arrow_right_indent.gif, images/arrow_up.gif, images/black_pixel.jpg, images/dirac_banner.jpg, images/icon_html.gif, images/icon_pdf.gif, images/icon_txt.gif, images/icon_zip.gif: Committing website documentation to CVS 2005-08-15 11:24 asuraparaju * doc/faq.htm: Removing unwanted files in doc restructure 2005-08-15 08:34 tjdwave * libdirac_common/arith_codec.h: Added comment explaining look-up table operation. 2005-08-12 11:58 asuraparaju * configure.ac: Include an extra flag to suppress warnings when compiling in debug mode using icc. 2005-08-12 11:57 asuraparaju * README, README.developers: MMX optimisations are enabled by default. Provided instructions as to how to disable it. 2005-08-12 10:26 tjdwave * libdirac_common/motion.cpp: Reinstated transition detection code. This means that mode decision is kinder when a transition in the motion vector field is detected, giving better quality in motion transition areas. 2005-08-11 11:44 tjdwave * libdirac_common/arith_codec.h: Added Pete Bleackley's code to use a look-up table for division. 2005-08-11 08:21 tjdwave * libdirac_common/common.cpp: Added a warning when impossible block parameters are being used, and the encoder changes them. 2005-08-10 17:50 asuraparaju * libdirac_common/: wavelet_utils.cpp, wavelet_utils_mmx.cpp: Optimised 5_3 wavelet synthesis function, VHFilter5_3::Synth, using MMX instructions resulting in 6 percent speed improvement in decoding SD. 2005-08-10 17:48 asuraparaju * libdirac_encoder/seq_compress.cpp: Fix g++ warning about unused variable recode. 2005-08-10 17:47 asuraparaju * encoder/encmain.cpp: Print error message and exit if input and output file names are the same. Changed back cif preset option to uppercase. Sequence and encoder params currently being used are displayed on standard out before actual coding starts. 2005-08-10 17:45 asuraparaju * configure.ac: MMX optimisations are enabled by default. Use --disable-mmx to explicitly disable them. 2005-08-10 09:13 tjdwave * README: Added modified instructions for -qf and advice about -width and -height. 2005-08-10 09:06 tjdwave * libdirac_motionest/block_match.cpp: Changed motion vector bitrate measure so that transitions from foreground to background and vice-versa are not penalised. 2005-08-10 09:04 tjdwave * libdirac_encoder/seq_compress.cpp: Removed recoding: superfluous now there is no CQ coding. 2005-08-10 09:02 tjdwave * libdirac_encoder/: quality_monitor.cpp, quality_monitor.h: Removed constant quality encoding control mechanism, because it worked too poorly for varied sequences. Instead, QualityMonitor just monitors quality and encoder control reverts to constant Lagrangian parameters. The magic numbers chosen may not work for all sequences or all video standards but will do for the moment. 2005-08-10 08:57 tjdwave * libdirac_decoder/comp_decompress.cpp, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/frame_compress.cpp: Changed default wavelet filters to fast filters APPROX97 and FIVETHREE. Wavelet filter type is now signalled in the frame header so that changing these filters just changes the encoder. (This is now consistent with the spec). 2005-08-10 08:50 tjdwave * libdirac_common/: motion.cpp, motion.h: Fixed bug with way median is calculated. Removed large inline functions from .h and placed in .cpp for clarity. 2005-08-10 08:48 tjdwave * libdirac_common/mot_comp.cpp: Minor tidy of the way that weighting matrices are computed. 2005-08-10 08:44 tjdwave * libdirac_common/: common.cpp, common.h: Removed recode parameter. Added a CodecParams parameter for the wavelet filter being used, to support signalling this in the bitstream, rather than selecting by frame type. (This is in the spec). 2005-08-10 08:42 tjdwave * libdirac_common/: bit_manager.cpp, bit_manager.h: Added support for finding out the current size of bit buffers. This will support future CBR implementations and calculations of bit rate on the fly. 2005-08-10 08:40 tjdwave * libdirac_encoder/: dirac_encoder.cpp, dirac_encoder.h: Removed recode option. Set block parameters for HD720 the same as for SD to get around bug 1245129. Need to fix padding and edge issues to fully resolve this bug. 2005-08-10 08:27 tjdwave * encoder/encmain.cpp: Added feature to print out help if there's an unrecognised/unparsed option. Removed recode feature. 2005-08-01 17:14 asuraparaju * libdirac_decoder/dirac_parser.cpp: Speed up set_component function using MMX optimisation. 2005-08-01 17:14 asuraparaju * libdirac_common/arrays.h: In TwoDArray::Resize, free and reallocate data only if the new dimensions differ from the old one. 2005-08-01 17:12 asuraparaju * win32/VS2003/: DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, libdirac_common/libdirac_common.vcproj: Define HAVE_MMX macro for mmx enabled targets. 2005-08-01 17:11 asuraparaju * util/instrumentation/process_sequence.cpp: Fix uninitialised memory read bug reported by Valgrind on reaching end of sequence. 2005-08-01 17:10 asuraparaju * unit_tests/: motion_comp_test.cpp, motion_comp_test.h: Test all MV precision values - from pixel to an eighth of a pixel. 2005-08-01 17:10 asuraparaju * libdirac_common/wavelet_utils_mmx.cpp: Reimplement VHFilterApprox9_7::Synth and VHFilter13_5::Synth using MMX optimisation. 2005-08-01 17:09 asuraparaju * libdirac_common/upconvert_mmx.cpp: Reimplemented UpConverter::DoUpConverter function using MMX optimisation. 2005-08-01 17:07 asuraparaju * libdirac_common/: mot_comp_mmx.cpp, mot_comp_mmx.h: Implementation of QuarterPixel::CompensateBlock function using MMX optimisation. 2005-08-01 17:06 asuraparaju * libdirac_common/wavelet_utils.cpp: MMX version of Wavelet sythesis functions are used if MMX is enabled. 2005-08-01 17:05 asuraparaju * libdirac_common/upconvert.cpp: MMX version of DoUpConverter is used if MMX is enabled. 2005-08-01 17:04 asuraparaju * libdirac_common/: mot_comp.cpp, mot_comp.h: Modified the block weights to be of type short to make efficient use of MMX instructions. Modified CompensateComponente to make more efficient use of data in cache. MMX versions of CompensateBlock are used if MMX is enabled. 2005-08-01 17:04 asuraparaju * libdirac_common/Makefile.am: Include new mmx optimisation source files and headers. 2005-07-26 10:39 tjdwave * libdirac_encoder/dirac_encoder.cpp: Reduced chroma weighting factors in order to increase chroma fidelity - chroma bit rates should increase from about 5% of total for 420 to 7.5% of total. Changed default block separation for HD720 preset to remove block edge overlaps at the top of the screen. This may be returned to the old settings when we know why they caused the problem. 2005-07-25 18:01 mservais * libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_motionest/global_motion.cpp, libdirac_motionest/global_motion.h, libdirac_motionest/me_motion_type_decn.cpp, libdirac_motionest/me_motion_type_decn.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp: Minor bug fixes and added some extra comments 2005-07-22 18:09 asuraparaju * configure.ac: updated revision to 0.5.3 2005-07-22 18:09 asuraparaju * libdirac_common/bit_manager.h: Updated bitstream version to 0.5 since the bitstream is no longer compatible with dirac-0.5.2 2005-07-22 12:59 asuraparaju * configure.ac: Include macro AC_SYS_LARGEFILE to overcome the 2GB i/o file limit. Fix for bug #1212581. 2005-07-21 09:11 tjdwave * encoder/encmain.cpp: Made presets non-case-sensitive. 2005-07-20 10:29 tjdwave * libdirac_encoder/dirac_encoder.cpp: Fixed bug where block parameters were being set incorrectly. 2005-07-20 09:43 tjdwave * README: Added text about recode CLI option. 2005-07-19 16:39 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/seq_compress.cpp: Added -recode parameter. If -recode [n] is present, then the encoder will recode up to n times (ie will encoder up to n+1 times). 2005-07-19 15:17 tjdwave * libdirac_common/mv_codec.cpp, libdirac_motionest/me_mode_decn.cpp: Fixed bug 1240709. Common mode is now used to reduce encoding of prediction modes. Common mode was also being set incorrectly in the motion estimation process, which caused divergence between the encoder and decoder values. Since common mode wasn't used, this bug was masked before. Both now fixed. 2005-07-08 10:26 tjdwave * libdirac_common/: upconvert.cpp, upconvert.h: Incorporated patch 1211899. This tidies up the code and makes it confirm to dirac coding conventions, and also uses a smaller filter. This commit differs from the patch in that the filter is not reduced to 6 taps but is reducted to 10 taps instead. In the future, variable filter coefficients may be supported via templated polymorphism. 2005-06-22 17:52 mservais * libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_motionest/filter_weighted_local.cpp, libdirac_motionest/global_motion.cpp, libdirac_motionest/global_motion.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_motion_type_decn.cpp, libdirac_motionest/me_motion_type_decn.h, libdirac_motionest/model_affine.cpp, libdirac_motionest/model_affine.h, libdirac_motionest/model_projective.cpp, libdirac_motionest/model_projective.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp: When using global motion (but not exclusively global motion), the global motion decisions can now be flagged either per Prediction Unit or per Macro-Block. Also, the use of a Common Mode for each Macro-Block is now possible. (This had not been fully implemented before.) 2005-06-10 15:15 tjdwave * libdirac_encoder/quality_monitor.cpp, libdirac_motionest/block_match.cpp: Fixed bug with computing MV costs. Incorporated patch 1216297 for quality measurement. 2005-06-10 11:52 tjdwave * libdirac_encoder/dirac_encoder.cpp: Changed default block height and width for motion compensation to 24 by 24 pixels from 20 by 20. Separation remains 16 by 16. The result is reduced blockiness in areas of poor motion prediction. Downside is slower encoder, but the block parameters are merely scaled-up versions of the SD parameters. 2005-05-26 19:48 asuraparaju * extras/patches/ffmpeg-0.4.9-pre1-dirac-0.5.x.patch: Fixed bug 1209053. Frame size parameters are now fetched from the AV context before setting frame size. Also fixed a bug where quality factor was not being set correctly. 2005-05-26 16:20 stuart_hc * tests/samples.at: Fix bug 1209017: use -width/-height instead of -x/-y 2005-05-26 16:01 stuart_hc * encoder/encmain.cpp: Fix bug 1209017: use -width/-height instead of -x/-y Also fix SEGV when incorrect -cformat parameter is passed. 2005-05-26 15:59 stuart_hc * README: Fix bug 1209017: use -width/-height instead of -x/-y 2005-05-25 14:30 asuraparaju * ChangeLog: [no log message] 2005-05-25 13:51 asuraparaju * README.release: Add ffmpeg patch to checklist 2005-05-25 13:43 asuraparaju * NEWS: Included dirac-0.5.2 release notes 2005-05-25 13:40 asuraparaju * AUTHORS: Updated contibutor list 2005-05-25 13:06 asuraparaju * extras/patches/: MPlayer-1.0pre7_dirac-0.5.x.patch, README_MPlayer-1.0pre7_dirac-0.5.x_patch, README_ffmpeg-0.4.9-pre1-dirac-0.5.x_patch, README_transcode-0.6.14_dirac-0.5.x_patch, ffmpeg-0.4.9-pre1-dirac-0.5.x.patch, transcode-0.6.14-dirac-0.5.x.patch: Patches to MPlayer, ffmped and transcode to add Dirac support to these tools. 2005-05-24 08:28 tjdwave * libdirac_encoder/seq_compress.cpp: Fixed bug with count increment so that fast adaption takes place on first recoding rather than second. 2005-05-20 15:30 asuraparaju * README: Modified this file to remove all references to image header files which are no longer required. 2005-05-20 15:25 asuraparaju * libdirac_encoder/seq_compress.cpp: Fix minor glitches in verbose output 2005-05-20 15:02 asuraparaju * win32/VS2003/dirac.sln: Remove MakeHeader from list of targets as contents of header files have been replaced with command line arguments. 2005-05-20 15:01 asuraparaju * encoder/encmain.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/seq_compress.cpp: Fix bugs in bit rate reporting 2005-05-20 14:05 asuraparaju * Makefile.am, configure.ac: make_header utility is no longer required. So removing picheader directory from list of targets. 2005-05-20 13:44 asuraparaju * tests/: colourbars.at, create_dirac_testfile.pl, samples.at: Remove all references to make_header. Sequence header information is now passed to encoder on the command line. 2005-05-20 13:43 asuraparaju * util/instrumentation/instrmain.cpp: The encoder now writes sequence header information to the instrumentation output file. So read sequence info from instrumentation file. 2005-05-20 13:42 asuraparaju * encoder/encmain.cpp: Fix g++ errors. Write the sequence header information to the instrumentation file. 2005-05-20 13:41 asuraparaju * libdirac_common/: pic_io.cpp, pic_io.h: Delete all code relating to header file creation/reading. All sequence parameters are now supplied to encoder via the command line. 2005-05-19 12:23 dirac_dev * decoder/decmain.cpp: Removed any references to header files. 2005-05-19 12:15 dirac_dev * encoder/encmain.cpp: Removed requirement of a header file. All parameters are handled through command-line options. Most options will still be set by the pre-set option, although they can be overriden. 2005-05-19 12:03 asuraparaju * unit_tests/motion_comp_test.cpp: Update motion compensation tests to use the helper function in MotionCompensator to instantiate the MotionCompensator sub-class for the mv precision value selected. 2005-05-19 11:56 asuraparaju * libdirac_decoder/: frame_decompress.cpp, frame_decompress.h: Now reads the MV precision in the frame header. 2005-05-19 11:35 asuraparaju * libdirac_encoder/frame_compress.cpp: Writing the motion vector precision value as part of frame header. Default mv precision is set to 2 i.e. quarter pixel. 2005-05-19 11:25 asuraparaju * libdirac_motionest/me_utils_mmx.cpp: Fixed C/C++ aliasing violations that caused a performance slow down when compiled with gcc 4.0.0 2005-05-19 11:24 asuraparaju * libdirac_motionest/me_utils.h: Fixed gcc 4.0.0 warnings 2005-05-19 11:23 asuraparaju * libdirac_common/bit_manager.h: Updated bitstream version to 0.4 2005-05-19 11:21 asuraparaju * libdirac_common/: common.cpp, common.h: Added a field to CodecParams class for motion vector precision. A value of 'n' implies a precision of (2**-n)i pixel. i.e. a value of 2 implies an mv precision of 1/4 i.e. quarter pixel. 2005-05-19 11:16 asuraparaju * libdirac_common/: mot_comp.cpp, mot_comp.h: Added support for multiple levels of motion vector precision - pixel, half pixel, quarter pixel and multiple pixel. The main MotionCompensator class is an abstract class. Each of its sub-classes define the CompensateBlock function to a particular level of motion precision. 2005-05-19 11:12 asuraparaju * libdirac_motionest/: me_mode_decn.cpp, me_subpel.cpp, motion_estimate.cpp: Motion estimation modified to support variable motion vector precision. The implementation is preliminary, and should be modified later: vectors are scaled by a factor 8 to give a maximum of eighth-pel accuracy. Generic block matching functions are used at this accuracy even though true accuracy will be less - the subpixel search is merely truncated. In the future, half-pixel and quarter-pixel block matching functions should be written, just as for motion compensation as these will be faster. 2005-05-13 09:40 mservais * libdirac_common/mot_comp.cpp, libdirac_common/motion.cpp, libdirac_common/mv_codec.cpp, libdirac_motionest/me_motion_type_decn.cpp, libdirac_motionest/me_motion_type_decn.h, libdirac_motionest/motion_estimate.cpp, win32/VS2003/ConversionUtils/BMPtoRGB/Debug/BuildLog.htm, win32/VS2003/ConversionUtils/BMPtoRGB/Debug/vc70.idb, win32/VS2003/ConversionUtils/BMPtoRGB/Debug/vc70.pdb: Prediction units can now use either global or block motion. (Decision based on similarity of global and block motion vectors.) 2005-05-11 10:13 tjdwave * libdirac_common/wavelet_utils.cpp: Fixed -pedantic errors on unused variables. Replaced dynamic built-in array (which violates ISO C++) with array class. 2005-05-05 15:10 tjdwave * unit_tests/wavelet_utils_test.cpp: Added support for testing all different wavelet transforms for invertibility. 2005-05-04 14:35 tjdwave * libdirac_common/common.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_common/band_codec.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: Modifications to support different wavelet filter types. wavelet_utils.{cpp,h} Added three new filter types with lifting implementations, all much faster than Daubechies (9,7). Refactored the code to support filter selection in constructor of WaveletTransform class. Added method to correctly output DC band expected values. Separated off coefficient interleaving and deinterleaving. Setting of subband weights is now a WaveletTransform function, as noise weighting factors depend on the filter choice. band_codec.cpp Removed literal constant and used 0 instead for top-left DC value prediction. comp_compress.cpp, comp_decompress.cpp Changed default filters from Daubechies (9,7) to faster filters which perform almost as well. This is a temporary mod. It is intended to be able to select fast filters via the CLI and for wavelet filter choices to be signalled in frame headers. This will be done in later refactoring to converge with the bitstream syntax in terms of frame types and header information. 2005-05-04 12:13 mservais * libdirac_motionest/: me_motion_type_decn.cpp, me_motion_type_decn.h: Introduces decision as to whether individual prediction units should use Global Motion or not. (Not complete yet!) 2005-05-04 12:06 mservais * libdirac_common/common.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_motionest/motion_estimate.cpp, win32/VS2003/libdirac_common/libdirac_common.vcproj, win32/VS2003/libdirac_motionest/libdirac_motionest.vcproj: Introduces decision as to whether individual prediction units should use Global Motion or not. (Not complete yet!) 2005-04-13 16:36 asuraparaju * libdirac_common/arrays.h: New constants PIXEL_VALUE_MIN and PIXEL_VALUE_MAX to define the upper and lower limits on pixel values. 2005-04-13 16:28 asuraparaju * libdirac_common/frame.cpp: Included an MMX implementation of Frame::ClipComponent to achieve a decoding speedup in conjuction with mot_comp.cpp changes. Also using pointer arithmetic insted of index operator when accessing TwoDArray objects. 2005-04-13 16:25 asuraparaju * libdirac_motionest/me_utils_mmx.cpp: Using pointer arithmetic instead of the index operator when using TwoDArray objects to get an overall slight improvement in encoding speed. 2005-04-13 16:16 asuraparaju * libdirac_common/mot_comp.cpp: Partially applied patch 1151976. Using pointer arithmetic instead of index operator to access TwoDArray objects. A few other tweaks to improve cache locality. 2005-04-13 16:09 asuraparaju * libdirac_encoder/quant_chooser.cpp: Fix errors reported by MIPSPro C++ compiler regarding not specifiying the namespace for math functions like floor and log. 2005-04-13 16:06 asuraparaju * libdirac_common/arith_codec.h: Fix g++ warning re unused variables. 2005-04-13 16:06 asuraparaju * configure.ac: Included icc compile time flag -wr964 to treat warning 964 as a remark when mmx is enabled. 2005-04-12 11:56 timborer * doc/DiracSpecV0.1.doc: Modifed default Motion Vector precision (now 1/4 pel), added note that max MV precision should be included in Level. Corrected typos. 2005-04-06 15:31 tjdwave * libdirac_common/: band_codec.cpp, band_codec.h, mv_codec.cpp, mv_codec.h: Oops. Correct files now uploaded. 2005-04-06 15:28 tjdwave * libdirac_common/: band_codec.cpp, band_codec.h, mv_codec.cpp, mv_codec.h: Changes to reflect mods to arith_codec.h: in particular, Update is removed as this is no longer a virtual function. Instead the base class function is called directly in the encoding/decoding engines. 2005-04-06 15:07 tjdwave * libdirac_common/arith_codec.h: Speed-up to arithmetic coding and decoding, using probability range renormalisation to avoid unnecessary divides. 2005-04-05 14:56 timborer * doc/DiracSpecV0.1.doc: Initial draft of Dirac spec. This is not a specification of what we have but a proposed spec for what we want. At the moment it focuses on syntax rather than semantics. It is inkorect and incomplet. 2005-03-17 11:21 mservais * libdirac_motionest/motion_estimate.cpp: Example with "Global Motion Only" set to 1. 2005-03-17 11:01 mservais * libdirac_motionest/: filter_weighted_local.cpp, global_motion.cpp, me_mode_decn.cpp, model_affine.cpp, model_affine.h, model_global_motion.h, model_projective.h, motion_estimate.cpp, reject_intensity.cpp, reject_sad.cpp: Initial implementation of Global Motion. Allows for Global Motion Only switch for each frame. If this is set, only the Global Motion Parameters are coded - i.e. no block motion vectors are coded. 2005-03-17 10:57 mservais * libdirac_common/common.h, libdirac_common/mot_comp.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h: Initial implementation of Global Motion. Allows for Global Motion Only switch for each frame. If this is set, only the Global Motion Parameters are coded - i.e. no block motion vectors are coded. 2005-03-17 10:43 mservais * libdirac_motionest/reject_local.cpp: Initial implementation of Global Motion. Allows for Global Motion Only switch for each frame. If this is set, only the Global Motion Parameters are coded - i.e. no block motion vectors are coded. 2005-03-17 10:34 mservais * libdirac_motionest/global_motion.h: Initial Implementation for Global Motion. Allows a Global Motion Only switch for each frame. If this is set, only the Global Motion Parameters are coded - i.e. no block motion vectors are coded. 2005-03-11 13:43 asuraparaju * libdirac_common/: common.cpp, common.h: Fixed bug 1159031. dirac_quantiser_lists is not an extern anymore and is limited to file scope. 2005-03-04 14:55 tjdwave * libdirac_common/arrays.h, AUTHORS: Added Mike Ferenduros' mods to arrays, so that memory allocation is always contiguous. Also added him to list of contributors. 2005-02-17 14:07 asuraparaju * ChangeLog: [no log message] 2005-02-17 13:05 asuraparaju * NEWS: Included Dirac 0.5.1 release notes 2005-02-17 13:05 asuraparaju * README.release: Included Dirac Directshow filter and Mplayer patch to checklist 2005-02-17 13:03 asuraparaju * README.developers: Modified MMX optimisation implementation guidelines to use Intrinsics. Included notes on conducting end-to-end test using 'make check' and create_dirac_testfile.pl 2005-02-17 13:02 asuraparaju * README: Included notes on how to enable MMX optimisations and how to use the data generation script create_dirac_testfile.pl 2005-02-17 12:23 asuraparaju * picheader/headmain.cpp: Not returning an exit code when usage info is displayed. 2005-02-17 12:22 asuraparaju * tests/create_dirac_testfile.pl: Fix compilation errors. 2005-02-17 12:21 asuraparaju * tests/Makefile.am: Include scrip create_dirac_testfile.pl in install list to bin directory 2005-02-16 17:52 asuraparaju * libdirac_common/bit_manager.h: the bitstream has changed. So updated bitstream version so that an error is reported if attempting to decode older versions of Dirac files. 2005-02-16 17:48 asuraparaju * extras/patches/: MPlayer-1.0pre6a_dirac-0.5.x.patch, README_MPlayer-1.0pre6a_dirac-0.5.x_patch: Mplayer 1.0pre6a patch to enable Dirac support in MPlayer 2005-02-16 17:42 asuraparaju * extras/dirac_dshow/src/diracsplitter/: DiracSplitter.cpp, DiracSplitter.def: Dirac direct show filter files 2005-02-16 17:40 asuraparaju * extras/dirac_dshow/src/basesplitter/: BaseSplitterFileEx.cpp, BaseSplitterFileEx.h: Direct show filter files 2005-02-16 17:19 asuraparaju * extras/dirac_dshow/: DiracSplitter.sln, INSTALL, README.developers, include/IChapterInfo.h, include/IKeyFrameInfo.h, include/moreuuids.h, include/matroska/matroska.h, include/winddk/devioctl.h, include/winddk/ntddcdrm.h, include/winddk/ntddstor.h, src/basesplitter/AsyncReader.cpp, src/basesplitter/AsyncReader.h, src/basesplitter/BaseSplitter.cpp, src/basesplitter/BaseSplitter.h, src/basesplitter/BaseSplitterFile.cpp, src/basesplitter/BaseSplitterFile.h, src/basesplitter/basesplitter.vcproj, src/basesplitter/stdafx.cpp, src/basesplitter/stdafx.h, src/diracsplitter/DiracSplitter.h, src/diracsplitter/DiracSplitter.rc, src/diracsplitter/DiracSplitter.vcproj, src/diracsplitter/DiracSplitterFile.cpp, src/diracsplitter/DiracSplitterFile.h, src/diracsplitter/resource.h, src/diracsplitter/stdafx.cpp, src/diracsplitter/stdafx.h, src/dsutil/DSUtil.cpp, src/dsutil/DSUtil.h, src/dsutil/MediaTypes.cpp, src/dsutil/MediaTypes.h, src/dsutil/NullRenderers.cpp, src/dsutil/NullRenderers.h, src/dsutil/a_yuv2rgb.asm, src/dsutil/a_yuvtable.asm, src/dsutil/convert_a.asm, src/dsutil/dsutil.vcproj, src/dsutil/stdafx.cpp, src/dsutil/stdafx.h, src/dsutil/text.cpp, src/dsutil/text.h, src/dsutil/vd.cpp, src/dsutil/vd.h, src/switcher/AudioSwitcher.h, src/switcher/StreamSwitcher.h: Patches and DirectShow filter related files 2005-02-15 11:39 asuraparaju * win32/VS2003/: dirac.sln, ConversionUtils/ConversionUtils.vcproj, ConversionUtils/BMPtoRGB/BMPtoRGB.vcproj, ConversionUtils/RGBtoBMP/RGBtoBMP.vcproj, ConversionUtils/RGBtoUYVY/RGBtoUYVY.vcproj, ConversionUtils/RGBtoYUV411/RGBtoYUV411.vcproj, ConversionUtils/RGBtoYUV420/RGBtoYUV420.vcproj, ConversionUtils/RGBtoYUV422/RGBtoYUV422.vcproj, ConversionUtils/RGBtoYUV444/RGBtoYUV444.vcproj, ConversionUtils/UYVYtoRGB/UYVYtoRGB.vcproj, ConversionUtils/YUV411toRGB/YUV411toRGB.vcproj, ConversionUtils/YUV420toRGB/YUV420toRGB.vcproj, ConversionUtils/YUV422toRGB/YUV422toRGB.vcproj, ConversionUtils/YUV444toRGB/YUV444toRGB.vcproj, ConversionUtils/libconv_common/libconv_common.vcproj, DecodeDirac/DecodeDirac.vcproj, DiracDecoder/DiracDecoder.vcproj, DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, DiracEncoder/DiracEncoder.vcproj, DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, EncodeDirac/EncodeDirac.vcproj, Everything/Everything.vcproj, InstrumentDirac/InstrumentDirac.vcproj, InstrumentDirac/libdirac_instrument/libdirac_instrument.vcproj, MakeHeader/MakeHeader.vcproj, libdirac_common/libdirac_common.vcproj, libdirac_motionest/libdirac_motionest.vcproj: Added new targets for building with MMX optimisation enabled. 2005-02-15 11:38 asuraparaju * configure.ac: Update release id to 0.5.1. Added flag to enable MMX optimisation and test for checking if MMX optimising is available. Default opt level changed to -O3 for g++ and icc. Added extra optimisation flags when compiling with g++. Fixed cppunit availability check to report linker errors so that shared library mismatches are trapped. 2005-02-15 11:33 asuraparaju * encoder/encmain.cpp: Modified error messages to output more information. 2005-02-15 11:31 asuraparaju * tests/: Makefile.am, create_dirac_testfile.pl, samples.at, testsuite.at: A new script to generate dirac test data of different chroma formats from source RGB format input data. A new testcase, samples.at, which looks for Dirac test data in the directory specified by the env variable DIRAC_INPUT_DATA_DIR. The script and testcase are useful to run end-to-end tests using all input formats supported by Dirac. 2005-02-15 11:21 asuraparaju * libdirac_motionest/: Makefile.am, me_utils.cpp, me_utils_mmx.cpp, me_utils_mmx.h: Using MMX to compute block differences. Applied a modified version of patch 1081743. 2005-02-15 11:15 asuraparaju * libdirac_common/: band_codec.h, wavelet_utils.h: Fixed doxygen warnings 2005-02-15 11:13 asuraparaju * acinclude.m4: File containing user defined autoconf macro functions specific to Dirac project 2005-02-08 14:02 tjdwave * libdirac_common/arith_codec.h: Replaced delete with delete[] in destructor. Added clean-up in data reading so that the class can be re-used without causing a memory leak. 2005-02-07 12:12 tjdwave * libdirac_encoder/comp_compress.cpp, libdirac_decoder/comp_decompress.cpp: Fixed bug where blocks of coefficients with zero dimensions were being generated. There's now a minimum size of 4x4 coefficients for a code block. 2005-02-02 15:29 asuraparaju * libdirac_common/arith_codec.h, libdirac_common/band_codec.cpp, libdirac_common/mv_codec.cpp, libdirac_decoder/comp_decompress.cpp: Fixed g++ warnings when compiled in debug mode (i.e. configure with flag --enable-debug) 2005-02-02 15:24 dirac_dev * win32/VS2003/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj: Added quant_chooser.cpp/h 2005-02-02 14:50 tjdwave * libdirac_decoder/: comp_decompress.cpp, comp_decompress.h: Added support for multiple code blocks/quantisers. Added separate function for reading header. 2005-02-02 14:49 tjdwave * libdirac_encoder/Makefile.am: Modded to add quant_chooser.{cpp,h} 2005-02-02 14:47 tjdwave * libdirac_encoder/: comp_compress.cpp, comp_compress.h, quality_monitor.cpp, quality_monitor.h: Removed quantiser selection from comp_compress to another class. 2005-02-02 14:46 tjdwave * libdirac_encoder/: quant_chooser.cpp, quant_chooser.h: Modified author details. 2005-02-02 14:44 tjdwave * libdirac_encoder/: quant_chooser.cpp, quant_chooser.h: Added classes to handle selecting quantisers. These allow a single quantiser per subband to be chosen, or alternatively one for each code block. 2005-02-02 14:42 tjdwave * libdirac_common/: band_codec.cpp, common.cpp, mv_codec.cpp, wavelet_utils.cpp, arith_codec.h, band_codec.h, common.h, mv_codec.h, wavelet_utils.h: Modified wavelet coeff coding to code blocks of coefficients. with skip flags if all coefficients are zero. Wavelet coefficient coding has reduced use of class member variables for clarity. The arithmetic coding and decoding engines have been modified to improve speed and code organisation. The decoder now reads in all the data before beginning decoding. Coding of motion vector data has been tidied, and modified to accommodate changes in the arithmetic coding engine. Block prediction modes are now coded slightly differently, which improves compression performance. 2005-01-24 16:58 tjdwave * libdirac_common/common.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_motionest/me_mode_decn.cpp: Changed prediction of block modes to be bitwise - bit 0 indicates the presence of a Ref1 MV, and bit 1 indicated the presence of a Ref2 MV. This is also reflected in selecting modes in motion estimation. 2005-01-24 16:06 tjdwave * libdirac_motionest/me_mode_decn.cpp: Re-instituted bi-directional prediction, inadvertently commented out. 2005-01-24 14:43 tjdwave * libdirac_motionest/: block_match.cpp, block_match.h, me_subpel.cpp: Made local motion vector variance a member function of the block matcher, and made the cut-off limits depend on the picture size. This improves performance at HD by 4% or so. 2005-01-18 19:13 mservais * libdirac_motionest/global_motion.h: Testing CVS (Marc) 2005-01-18 18:20 mservais * libdirac_motionest/global_motion.h: Testing CVS (Marc) 2005-01-18 17:42 mservais * libdirac_motionest/global_motion.cpp: Marc: Testing that CVS works OK 2005-01-12 17:50 asuraparaju * libdirac_motionest/global_motion.h: Forgot to add this file with the earlier lot of global motion files 2005-01-12 16:18 asuraparaju * win32/VS2003/libdirac_motionest/libdirac_motionest.vcproj: Added global motion related files to the project 2005-01-12 15:30 asuraparaju * libdirac_motionest/: Makefile.am, filter_weighted_local.cpp, filter_weighted_local.h, global_motion.cpp, model_affine.cpp, model_affine.h, model_global_motion.cpp, model_global_motion.h, model_projective.cpp, model_projective.h, motion_estimate.cpp, refine_motion_vector_field.cpp, refine_motion_vector_field.h, reject_edge.cpp, reject_edge.h, reject_intensity.cpp, reject_intensity.h, reject_local.cpp, reject_local.h, reject_motion_vector_outliers.cpp, reject_motion_vector_outliers.h, reject_outlier.cpp, reject_outlier.h, reject_sad.cpp, reject_sad.h, reject_value.cpp, reject_value.h, test_global_motion_model.cpp, test_global_motion_model.h, test_mv_sad.cpp, test_mv_sad.h: Global motion estimation related new files and mods to existing files 2004-12-22 11:59 tjdwave * libdirac_motionest/block_match.cpp: Fixed bug with assigning costs to lists of vectors, reported by Eric Rannaud. 2004-12-10 15:28 asuraparaju * libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, util/instrumentation/libdirac_instrument/Makefile.am: Fixed bug 1081435. 2004-12-10 15:21 asuraparaju * decoder/Makefile.am, encoder/Makefile.am, picheader/Makefile.am, util/instrumentation/Makefile.am: Link in math library, libm, if required. 2004-12-10 15:20 asuraparaju * tests/colourbars.at: Not ignoring standard error so that errors are trapped when running the test suite. 2004-12-10 15:18 asuraparaju * encoder/encmain.cpp: Print the bitrate to standard output even when not in verbose mode. 2004-12-10 15:16 asuraparaju * libdirac_encoder/comp_compress.cpp: Included Peter Meerwald in list of contributors 2004-12-10 15:13 asuraparaju * libdirac_encoder/comp_compress.cpp: Fixed errors reported by MIPSpro 7.4 C++ compiler. Applied patch 1081664 which improves encoding speed by 10-15%. 2004-12-10 15:04 asuraparaju * configure.ac: Added check to see if math library, libm, needs to be linked. Added test to check for C++ header files that are not included in old versions of C++ compilers. Applied patch 1081730. 2004-12-10 14:59 asuraparaju * bootstrap: Exit with a failure message if automake fails. 2004-12-01 16:21 asuraparaju * win32/VS2003/MakeHeader/MakeHeader.vcproj: MakeHeader.exe now is correctly being created in win32/VS2003/bin/ directory. 2004-12-01 14:45 asuraparaju * ChangeLog: [no log message] 2004-12-01 14:40 asuraparaju * NEWS: Included 0.5.0 release notes 2004-12-01 14:39 asuraparaju * README: Updated Section 3 (Building and installing) to reflect changes to building the codec under UNIX-like envoroments and MS Windows. Added sub-section on how to build Dirac coder on MS Windows platform using MS VC++ .NET 2003. Updated make_header usage in the File Formats suc-section. Update encoder app usage information. 2004-12-01 14:35 asuraparaju * README.developers: New sub-section on namespaces to be used in Dirac. Added note on new test target 'valgrind-check' 2004-12-01 14:32 asuraparaju * TODO: Replaced contents with link to the TODO list on Dirac homepage 2004-12-01 14:13 timborer * util/conversion/YUV420toRGB.cpp: Fixed bug 1050816. 2004-11-29 12:54 asuraparaju * libdirac_common/arith_codec.h, libdirac_common/arrays.h, libdirac_common/band_codec.h, libdirac_common/bit_manager.h, libdirac_common/common.h, libdirac_common/mot_comp.h, libdirac_common/mv_codec.h, libdirac_common/pic_io.h, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.h, libdirac_decoder/seq_decompress.h, libdirac_encoder/seq_compress.h, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.h: Fix warnings reported by doxygen 2004-11-26 13:47 asuraparaju * misc/xparam-1.22-gcc-3.4.0.patch: xparam package not used hence removed this file from repository 2004-11-26 13:43 asuraparaju * windows/dirac/: dirac.dsw, libdirac_common/libdirac_common.dsp, libdirac_decoder/libdirac_decoder.dsp, libdirac_encoder/libdirac_encoder.dsp, libdirac_motionest/libdirac_motionest.dsp: Removing older VS files that are no longer supported 2004-11-26 13:36 asuraparaju * unit_tests/: frames_test.cpp, frames_test.h, motion_comp_test.cpp, motion_comp_test.h: Unit test for Motion Compensation 2004-11-26 13:36 asuraparaju * unit_tests/Makefile.am: Added Motion compensation unit test related files to list of targets 2004-11-26 13:28 asuraparaju * configure.ac: Modified check for cppunit test framework to ensure that it can run without errors. This was required because unit tests fail when built with icc. This is a temporary measure until it is determined why unit tests fail when built with icc on linux. 2004-11-26 13:23 asuraparaju * AUTHORS: Updated list of contributors 2004-11-26 13:22 asuraparaju * Makefile.am: Removed win directory from distribution list as build with nmake is no longer supported. Added win32 to list of target subdirectories 2004-11-26 13:13 asuraparaju * win32/: Makefile.am, VS2003/Makefile.am, VS2003/dirac.sln, VS2003/ConversionUtils/ConversionUtils.vcproj, VS2003/ConversionUtils/BMPtoRGB/BMPtoRGB.vcproj, VS2003/ConversionUtils/RGBtoBMP/RGBtoBMP.vcproj, VS2003/ConversionUtils/RGBtoUYVY/RGBtoUYVY.vcproj, VS2003/ConversionUtils/RGBtoYUV411/RGBtoYUV411.vcproj, VS2003/ConversionUtils/RGBtoYUV420/RGBtoYUV420.vcproj, VS2003/ConversionUtils/RGBtoYUV422/RGBtoYUV422.vcproj, VS2003/ConversionUtils/RGBtoYUV444/RGBtoYUV444.vcproj, VS2003/ConversionUtils/UYVYtoRGB/UYVYtoRGB.vcproj, VS2003/ConversionUtils/YUV411toRGB/YUV411toRGB.vcproj, VS2003/ConversionUtils/YUV420toRGB/YUV420toRGB.vcproj, VS2003/ConversionUtils/YUV422toRGB/YUV422toRGB.vcproj, VS2003/ConversionUtils/YUV444toRGB/YUV444toRGB.vcproj, VS2003/ConversionUtils/libconv_common/libconv_common.vcproj, VS2003/DecodeDirac/DecodeDirac.vcproj, VS2003/DiracDecoder/DiracDecoder.vcproj, VS2003/DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, VS2003/DiracEncoder/DiracEncoder.vcproj, VS2003/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, VS2003/EncodeDirac/EncodeDirac.vcproj, VS2003/Everything/Everything.vcproj, VS2003/InstrumentDirac/InstrumentDirac.vcproj, VS2003/InstrumentDirac/libdirac_instrument/libdirac_instrument.vcproj, VS2003/MakeHeader/MakeHeader.vcproj, VS2003/libdirac_common/libdirac_common.vcproj, VS2003/libdirac_motionest/libdirac_motionest.vcproj: Solution and Project files for building Dirac using MS Visual Studio 2003 2004-11-25 13:42 asuraparaju * decoder/decmain.cpp, encoder/encmain.cpp: Modified to use only public API and none of the C++ classes 2004-11-25 13:41 asuraparaju * libdirac_common/dirac_types.h: Turn off _declspec for non-windows builds and windows static builds 2004-11-24 11:41 tjdwave * doc/algorithm/rdo_mot_est.htm: Remaining mods to algorithmic docs. 2004-11-24 11:27 tjdwave * doc/algorithm/: algorithm.htm, const_qual.htm, intra_pred.htm, intro.htm, quantisation.htm, subband_rdo.htm: Mods to algorithm docs; intra_pred.htm removed. 2004-11-22 14:23 asuraparaju * ChangeLog: [no log message] 2004-11-22 14:15 asuraparaju * AUTHORS: Updated list of contributors. 2004-11-22 14:05 asuraparaju * libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/cmd_line.cpp, libdirac_common/cmd_line.h, libdirac_common/common_types.h, libdirac_common/dirac_assertions.h, libdirac_common/frame.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/wavelet_utils.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/dirac_cppparser.cpp, libdirac_decoder/dirac_cppparser.h, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.h, libdirac_encoder/comp_compress.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, libdirac_motionest/pixel_match.cpp, libdirac_motionest/pixel_match.h: Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:58 asuraparaju * bootstrap: Added libtool support 2004-11-22 13:57 asuraparaju * dirac.pc.in: After the library restructuring, only two libraries are required - the encoder and decoder libraries. 2004-11-22 13:57 asuraparaju * configure.ac: Added libtool support to build libraries. 2004-11-22 13:56 asuraparaju * INSTALL: Minor changes related to the main configure file and the flags to use 2004-11-22 13:56 asuraparaju * README: Added descrition of additional flags available at configure time 2004-11-22 13:54 asuraparaju * decoder/Makefile.am, encoder/Makefile.am, libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, util/conversion/common/Makefile.am, util/instrumentation/Makefile.am, util/instrumentation/libdirac_instrument/Makefile.am: Instead of 4 libraries only two libraries are now built and installed - libdirac_encoder and libdirac_decoder. Only the public "C" API headers and libraries are copied to the installation directories when 'make install' is used. Now using libtool to build libraries. On GNU/Linux and UNIX-like platforms, shared and static versions of the exported libraries are built. On MS Windows platforms, only shared libraries or static libraries can be built but not both. 2004-11-22 13:51 asuraparaju * tests/: Makefile.am, colourbars.at, unittests.at: Added valgrind support while running tests. The 'make valgrind-check' command now runs valgrind memory checks on all the tests. Note that the tests take a very long time to run in this mode 2004-11-22 13:50 asuraparaju * util/: Makefile.am, conversion/Makefile.am: Include Id tag to track revisions. 2004-11-22 13:48 asuraparaju * doc/: Makefile.am, algorithm/Makefile.am, api/Makefile.am, programmers/Makefile.am: Included the Id tag to track revisions. 2004-11-22 13:46 asuraparaju * Makefile.am: Added support for 'valgrind-check' argument to make. 2004-11-22 13:42 asuraparaju * util/instrumentation/libdirac_instrument/: draw_overlay.cpp, draw_overlay.h, gm_inliers.cpp, gm_inliers.h, motion_arrows.cpp, motion_arrows.h, motion_colour.cpp, motion_colour.h, motion_colour_arrows.cpp, motion_colour_arrows.h, overlay.cpp, overlay.h, overlay_symbols.cpp, overlay_symbols.h, pred_mode.cpp, pred_mode.h, sad.cpp, sad.h, split_mode.cpp, split_mode.h: Fixed "invalid read" and "memory leak" errors reported by valgrind. Added namespace support. All instrumentation library functionality is in the namespace dirac_instr. 2004-11-22 13:39 asuraparaju * util/instrumentation/: process_sequence.cpp, process_sequence.h: Replace all refrences to PicInput and PicOutput classes with FileStreamInput and FileStreamOutput classes. m_zl (number of frames in sequence) is no longer part of the Sequence header. Changed function ProcessSequence::DoSequence to work around this. 2004-11-22 13:39 asuraparaju * util/instrumentation/instrmain.cpp: Replaces all references to PicInput and PicOutput classes with FileStreamInput and FileStreamOutput classes. 2004-11-22 13:37 asuraparaju * picheader/: Makefile.am, headmain.cpp: Number of frames in a sequence is no longer required in encode/decode operations. 2004-11-22 13:36 asuraparaju * libdirac_encoder/: seq_compress.cpp, seq_compress.h: Restructured SequenceCompressor class to separate frame loading and frame compression functionality into two different functions. This was necessary to implement the "C" interface to the encoder. Added new access functions, GetFrameEncoded and GetMEData(), to return the latest frame encoded and the motion estimation data associated with it. Added function EndSequence that writes end of sequence information the the output bitstream. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:35 asuraparaju * libdirac_encoder/: frame_compress.cpp, frame_compress.h: Motion Estimation data is no longer written to a file. Instead, added new functions, IsMEDataAvail and GetMEdata, to enable class user to access the Motion Estimation data. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:34 asuraparaju * libdirac_encoder/comp_compress.cpp: Allowed a full range of quantisers, so that lossless coding is possible. Replaced tabs with spaces. Fixed MSVC++ compiler warnings. Added namespace support. 2004-11-22 13:33 asuraparaju * libdirac_decoder/seq_decompress.cpp: Removed all depedency on the m_zl (number of frames in sequence) parameter in the sequence parameters which no longer exists. 2004-11-22 13:32 asuraparaju * decoder/decmain.cpp, libdirac_decoder/dirac_parser.cpp, libdirac_decoder/dirac_parser.h: Moved structures common to the encoder and decoder "C" interfaces into librac_common/dirac_types.h 2004-11-22 13:30 asuraparaju * libdirac_common/bit_manager.h: Updated the bit stream version since the the bitstream in release 0.5.0 differs from the bitstream in version 0.4.x. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:29 asuraparaju * libdirac_common/: frame_buffer.cpp, frame_buffer.h: FrameBuffer functions now support all io classes derived from the abstract pic io classes StreamPicInput and StreamPicOutput Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:29 asuraparaju * libdirac_common/: pic_io.cpp, pic_io.h: Restructured the PicIO classes so that in addition to file io streams, memory based io streams are also supported. Replaced PicInput and PicOutput classes with FileStreamInput and FileStreamOutput classes. 2004-11-22 13:28 asuraparaju * libdirac_common/dirac_assertions.cpp: Modified dirac_assert function always dump core irrespetive of whether the code was built in debug mode or release mode. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:26 asuraparaju * unit_tests/: core_suite.h, cppunit_testsuite.cpp, utmain.cpp: Added licence declaration. 2004-11-22 13:25 asuraparaju * unit_tests/Makefile.am: Added wavelet transform test. 2004-11-22 13:24 asuraparaju * unit_tests/: arrays_test.cpp, arrays_test.h: Added unit test for TwoDArray value constructor. 2004-11-22 13:22 asuraparaju * README.developers: Added text on bootstrapping to create the configure script from the CVS repository. Also added text on how to profile the code. 2004-11-22 13:21 asuraparaju * libdirac_common/frame.cpp: Modified clipping so that overshoots are allowed wrt Rec 601 ranges. This is because the original data may have overshoots too. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:20 asuraparaju * libdirac_motionest/: me_mode_decn.cpp, me_utils.cpp: Minor code tidy. Assignment = changed to copy construction for a number of declarations. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:19 asuraparaju * libdirac_decoder/frame_decompress.cpp: Changes related to MotionCompensator constructor changes. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:16 asuraparaju * libdirac_common/: arith_codec.h, arrays.h, bit_manager.cpp, mot_comp.cpp, mot_comp.h, motion.cpp, motion.h, wavelet_utils.h: Added constant-value constructor to arrays.h. Removed motion compensation-specific functions from motion.h. Refactored mot_comp.h for speed and to remove rounding errors, incorporating patch supplied by Stephen Bearcroft. Also changed function for computing overlapped block weights to remove potential rounding errors here. Changed constructor to configure motion compensation for addition or subtraction. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:13 asuraparaju * encoder/encmain.cpp: Modified the encoder to use the new Encoder Public API. 2004-11-22 13:11 asuraparaju * libdirac_common/: common.cpp, common.h: Enforced a maximum of 100% overlap in setting block sizes. Removed m_zl (number of frames) parameter from SeqParams class. The user need no longer to specify the number of frames in the input sequence. Added new functions ChromaWidth and ChromaHeight to SeqParams class which return the width and height of the chroma component. Changed m_output_path in EncParams to var type std::string to prevent buffer overflow errors. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:09 asuraparaju * libdirac_common/: upconvert.cpp, upconvert.h: Fixed bug in interpolating at the edge of the picture. Also clarified variable names. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:07 asuraparaju * unit_tests/: wavelet_utils_test.cpp, wavelet_utils_test.h: Unit test to test the Wavelet utilities 2004-11-22 13:06 asuraparaju * tests/at_wrap.in: Wrapper script around tests to use valgrind for memory checks 2004-11-22 13:05 asuraparaju * libdirac_encoder/: dirac_encoder.cpp, dirac_encoder.h: Encoder "C" Public API implementation files 2004-11-22 13:04 asuraparaju * libdirac_common/dirac_types.h: New header file to hold structures common to the Dirac Encoder and Decoder public "C" API 2004-11-04 12:54 asuraparaju * encoder/encmain.cpp: Setting original frame dimensions to codec_params for global motion 2004-11-04 12:54 asuraparaju * libdirac_common/arrays.h: Applied patch 1055707 and extended it to use memcpy for assigment = and copy constructor in both One-D and Two-D arrays. 2004-11-04 12:53 asuraparaju * libdirac_common/common.h: Including original frame dimensions in codec_params for use in global motion 2004-11-04 12:53 asuraparaju * libdirac_common/: motion.cpp, motion.h: Including arrays to hold global motion data in MvData and MEData 2004-11-04 12:52 asuraparaju * libdirac_common/: wavelet_utils.cpp, wavelet_utils.h: Refactored wavelet transform (again). Code now does re-ordering separately so that all the wavelet lifting stages can be done with in-place calculation. All loops traverse contiguous data in memory to facilitate future vectorisation. 2004-11-04 12:52 asuraparaju * libdirac_encoder/comp_compress.cpp: Fixed bug 1055692 which was caused by integer overflow when calculating the quality based on 4th powers of error. The integer overflow resulted in attempting to determine the square root of a negative number which caused the encoder to go into a permanent loop when using gcc 3.4.2. Modified the Mean Square Error calculation to use double instead of int type to fix this bug. 2004-11-04 12:52 asuraparaju * libdirac_motionest/me_utils.cpp: Applied patch 1055714. Now the Difference calculator uses a CalcValueType accumulator rather than float. 2004-11-04 12:50 asuraparaju * util/instrumentation/: instrmain.cpp, libdirac_instrument/Makefile.am, libdirac_instrument/gm_inliers.cpp, libdirac_instrument/gm_inliers.h, libdirac_instrument/overlay.cpp, libdirac_instrument/overlay.h: Update instrumentation with changes related to handling global motion 2004-10-21 15:27 asuraparaju * libdirac_common/motion.cpp: Fix "invalid write error" reported by valgrind in function MEData::FindTransitions. This was causing the encoder to seg fault when using video of size 352x576. (Bug# 1050757) 2004-10-21 15:26 asuraparaju * libdirac_motionest/motion_estimate.cpp: Fix the error reported by valgrind in SetChromaDC where an unitialised variable was being used to initialise dcarray. 2004-10-20 18:27 asuraparaju * libdirac_motionest/block_match.cpp: Code tidy 2004-10-20 18:26 asuraparaju * libdirac_encoder/quality_monitor.h: Broke up extremely long function prototype into multiple lines 2004-10-20 18:24 asuraparaju * libdirac_encoder/quality_monitor.cpp: Introduced clipping of the feedback control signal to reduce overshoots due to inaccuracies in the model. 2004-10-20 18:23 asuraparaju * libdirac_decoder/: frame_decompress.cpp, frame_decompress.h: Fixed memory leak (Bug# 1044503) 2004-10-20 18:21 asuraparaju * libdirac_decoder/dirac_parser.cpp: Fixed memory leak (Bug# 1044501) 2004-10-20 18:20 asuraparaju * libdirac_common/mot_comp.cpp: Fixed memory leak (Bug #1044499) 2004-10-20 18:18 asuraparaju * libdirac_common/band_codec.cpp: Added max value for the number of symbols to be accumulated between resets. Prevents overflow in the arithmetic coder. 2004-10-20 18:17 asuraparaju * encoder/encmain.cpp: Changed GOP structure for 720p to be 24,3 not 24,6 2004-10-20 18:16 asuraparaju * decoder/decmain.cpp: Fixed memory leak caused by not freeing up frame buffer that was dynamically allocated 2004-09-21 14:02 asuraparaju * ChangeLog: Included details of checkins for 0.4.3 release 2004-09-21 13:58 asuraparaju * NEWS: Included 0.4.3 release notes 2004-09-21 13:45 asuraparaju * configure.ac: Updated release id to 0.4.3 2004-09-21 11:56 asuraparaju * encoder/encmain.cpp: Removed ambiguity between -HD720 and HD720p options. 2004-09-21 11:16 asuraparaju * util/instrumentation/libdirac_instrument/overlay.cpp: Fixed bug in setting x chroma factor for 4:1:1 input which caused the diagnostics tool to crash. 2004-09-21 11:15 asuraparaju * libdirac_motionest/: downconvert.cpp, downconvert.h: Fixed bug where downconverting a picture with odd valued dimensions. 2004-09-21 11:14 asuraparaju * libdirac_encoder/: quality_monitor.cpp, quality_monitor.h: Tidied and changed terminology to refer to quality rather than PSNR. 2004-09-21 11:14 asuraparaju * libdirac_common/: common.cpp, common.h: Fixed bug with block sizes for 411 coding. 2004-09-21 11:14 asuraparaju * doc/algorithm/: algorithm.htm, const_qual.htm, subband_rdo.htm: Added detail of the constant quality coding revisions. Updated version number. 2004-09-17 16:46 asuraparaju * libdirac_motionest/: block_match.cpp, me_mode_decn.cpp, me_subpel.cpp, me_subpel.h, motion_estimate.cpp: Changed structure to use a map for the different lambdas, which is encpasulated in the MEData structure. Limited size of motion vector costs to allow us to cope with motion transitions better. 2004-09-17 16:44 asuraparaju * libdirac_encoder/: comp_compress.cpp, frame_compress.cpp, quality_monitor.cpp, quality_monitor.h: Changed quality metric from PSNR to one based on 4th powers of errors, to give bigger weighting to large errors. 2004-09-17 16:43 asuraparaju * libdirac_common/: common.h, frame.cpp, frame_buffer.cpp, mot_comp.cpp, mot_comp.h, motion.cpp, motion.h, wavelet_utils.cpp: Fixed bug with scaling motion vectors for non-444 formats. Rationalised frame buffer functions. Added comments to common.h. General tidying up of code. 2004-09-10 14:13 asuraparaju * ChangeLog: Included details of recent checkins 2004-09-10 14:05 asuraparaju * NEWS: Included 0.4.2 release notes 2004-09-10 14:04 asuraparaju * configure.ac: Updated release id to 0.4.2 2004-09-10 12:34 asuraparaju * libdirac_common/pic_io.h, encoder/encmain.cpp: Ensure that the number of frame in the output pic header is set to the number of frames written to the file. 2004-09-10 11:06 asuraparaju * Makefile.am: Only Makefile and README from win directory are now included in distribution 2004-09-09 15:48 asuraparaju * util/instrumentation/: process_sequence.cpp, libdirac_instrument/draw_overlay.cpp, libdirac_instrument/draw_overlay.h, libdirac_instrument/overlay.cpp, libdirac_instrument/overlay.h: Fixed bug with handling reference 2 when only one reference frame is available 2004-09-09 15:43 asuraparaju * util/instrumentation/libdirac_instrument/split_mode.cpp: Fix writng beyond end of array bug which caused the diagnostics tool to crash when using split_mode. 2004-09-09 15:42 asuraparaju * util/instrumentation/README: Correct pathname to diagnostic tool 2004-09-09 15:41 asuraparaju * libdirac_encoder/seq_compress.cpp: Fixed bug with bit-rate being miscalculated when only a section of the sequence is encoded. 2004-09-09 15:40 asuraparaju * libdirac_encoder/frame_compress.cpp: Restored mod which outputs array dimensions for instrumentation output. 2004-09-09 15:39 asuraparaju * libdirac_common/wavelet_utils.cpp: Fixed bug with setting DC band perceptual weight. 2004-09-09 15:39 asuraparaju * encoder/encmain.cpp: Fixed bug with setting length of output sequence when coding a section of picture. 2004-09-09 15:38 asuraparaju * decoder/decmain.cpp: Print average frame decode time to stdout instead of stderr so that stderr can be monitored for errors in tests 2004-09-09 15:37 asuraparaju * configure.ac: Add diagnostic tool to test path 2004-09-09 15:36 asuraparaju * README.release: Add testing diagnostic tool to release checklist 2004-08-26 12:08 asuraparaju * ChangeLog: Updated with details of recent checkins 2004-08-26 12:05 asuraparaju * NEWS: Included 0.4.1 release notes 2004-08-26 12:02 asuraparaju * configure.ac: Updated release id to 0.4.1 2004-08-25 18:09 asuraparaju * ChangeLog: Updated this doc with details of recent checkins 2004-08-25 17:58 asuraparaju * decoder/Makefile.am, encoder/Makefile.am, libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, picheader/Makefile.am, unit_tests/Makefile.am, util/conversion/Makefile.am, util/conversion/common/Makefile.am, util/instrumentation/Makefile.am, util/instrumentation/libdirac_instrument/Makefile.am: Build under windows using gnu autotools, MSys as a shell and the no-cost MS VC++ 2003 compiler now supported. 2004-08-25 17:56 asuraparaju * configure.ac: Fixed bug in configure where configure passed but make unit_tests failed when a version of cppunit older that 1.10.2 is installed. Build under windows using gnu autotools, MSys as a shell and MS C++ compiler 7.1 (free version) now supported. 2004-08-25 17:55 asuraparaju * tests/Makefile.am: Set up CLEANFILES to the files created by encoder and decoder so that they are deleted during 'make clean' instead of manually deleting them. 2004-08-25 17:54 asuraparaju * README.release: Added compile and test under windows using MSYS and cl to checklist Included updating project page on www.freshmeat.net in check list. Corrected line numbering and added note to send email to dirac-announce mailing list. 2004-08-25 17:52 asuraparaju * README: Added a section on compiling using MSYS shell and VC++ 2003 compiler under windows. Replaced all tabas with spaces. Reformatted text to not exceed 80 chars per line. 2004-08-25 17:51 asuraparaju * doc/dirac_bitstream.txt: Fixed error concerning prefix codes. 2004-08-25 17:51 asuraparaju * encoder/encmain.cpp: Removed duplicate text output. Fixed char buffer overflow bug which causes encoder to fail when file name paths exceed 80 chars. 2004-08-25 17:50 asuraparaju * libdirac_common/common.h: Fixed bug where SeqParams.Interlace() was returning the chroma format instead of interlace. 2004-08-25 17:48 asuraparaju * libdirac_common/pic_io.cpp: Removed text output if we've run out of input. 2004-08-25 17:47 asuraparaju * libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/motion.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/block_match.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp: Modified motion estimation so that it's done on the uncompressed data. Changed the ME utilities so that they compute SAD only. Modified mode decisions to restore weights applied to different levels of decomposition. Changed QualityMonitor class so that the internal model of rate versus distortion is effectively reset if we have to recode a frame. Fixed bug with measurement of PSNR. 2004-08-20 16:05 asuraparaju * tests/colourbars.at: Fix paths for out-of-tree builds 2004-08-19 15:27 asuraparaju * doc/api/dirac_api.doxygen: Include utilities in documentation 2004-08-19 14:55 asuraparaju * configure.ac: Update release id to 0.4.0 2004-08-19 13:32 asuraparaju * ChangeLog: Updated with details of recent checkins 2004-08-19 13:23 asuraparaju * decoder/Makefile.am, encoder/Makefile.am, libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, picheader/Makefile.am, tests/Makefile.am, unit_tests/Makefile.am, util/conversion/Makefile.am, util/conversion/common/Makefile.am, util/instrumentation/Makefile.am, util/instrumentation/libdirac_instrument/Makefile.am: Fixed build errors when compiling out of source tree. Out-of-source-tree builds are now successful. 2004-08-19 13:21 asuraparaju * NEWS: Included Alpha 0.4.0 release notes 2004-08-19 13:20 asuraparaju * decoder/decmain.cpp: Handling STATE_INVALID returned by parser. 2004-08-19 13:20 asuraparaju * encoder/encmain.cpp: Fixed bug with setting block sizes. 2004-08-19 13:19 asuraparaju * picheader/headmain.cpp: Replace tabs with spaces. Fixed a character array overrun error. 2004-08-19 13:17 asuraparaju * util/instrumentation/README: Updated this document 2004-08-19 13:16 asuraparaju * win/Makefile: Updated Makefile to build correctly 2004-08-19 13:14 asuraparaju * TODO: Update todo list 2004-08-19 13:13 asuraparaju * README.release: Include tagging of files with release id in the checklist 2004-08-19 13:13 asuraparaju * README: Updated for 0.4.0 release 2004-08-19 13:12 asuraparaju * AUTHORS: Updated list of contributors 2004-08-19 13:11 asuraparaju * dirac.pc.in: Setting include and libs vars to correct values so that pkg-config shows the correct dependencies for Dirac. 2004-08-19 13:10 asuraparaju * configure.ac: Included additional condtional vars to check if documentation can be built successfully. Included -Wno-long-double flag on platforms where it is supported to prevent compile time warnings. 2004-08-19 13:08 asuraparaju * doc/: Makefile.am, api/Makefile.am, api/dirac_api.doxygen, api/dirac_api_foot.html, programmers/Makefile.am: Included additional condtional vars to check if documentation can be built successfully. Included dirac_bitstream.txt in distribution. 2004-08-19 13:06 asuraparaju * doc/algorithm/: algorithm.htm, rdo.htm, toc.htm, transform_coding.htm: Added links to constant quality encoding pages. 2004-08-19 13:04 asuraparaju * doc/algorithm/const_qual.htm: Added documentation on constant quality encoding. 2004-08-19 13:03 asuraparaju * doc/faq.htm: Added details on patent position. Fixed broken links. Minor text changes 2004-08-19 13:02 asuraparaju * doc/dirac_bitstream.txt: Initial bitstream syntax document for Dirac bitstream v0.1 2004-08-19 12:55 asuraparaju * util/instrumentation/: instrmain.cpp, process_sequence.cpp, process_sequence.h, libdirac_instrument/draw_overlay.cpp, libdirac_instrument/draw_overlay.h, libdirac_instrument/motion_arrows.cpp, libdirac_instrument/motion_arrows.h, libdirac_instrument/motion_colour.cpp, libdirac_instrument/motion_colour_arrows.cpp, libdirac_instrument/overlay.cpp, libdirac_instrument/pred_mode.cpp, libdirac_instrument/sad.cpp, libdirac_instrument/split_mode.cpp: Output all MEData members and cope with monochrome sequences Fixed block dimensions bug. Fixed padded pictures bug. 2004-08-19 12:50 asuraparaju * libdirac_common/bit_manager.h, libdirac_common/common.h, libdirac_decoder/dirac_cppparser.cpp, libdirac_decoder/dirac_cppparser.h, libdirac_decoder/dirac_parser.cpp, libdirac_decoder/dirac_parser.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/seq_decompress.cpp: Bitstream v0.1 related changes - Handling new start codes and bitstream version 2004-08-19 12:46 asuraparaju * libdirac_motionest/: me_mode_decn.cpp, me_utils.cpp, motion_estimate.cpp, pixel_match.cpp: Tiffled motion estimation parameters to improve performance. 2004-08-19 12:45 asuraparaju * libdirac_common/arith_codec.h: Minor mods to fix compile time errors 2004-08-19 12:45 asuraparaju * libdirac_common/dirac_assertions.h: New debug test macros TEST, TESTM, REPORT and REPORTM 2004-08-19 12:44 asuraparaju * libdirac_common/: motion.cpp, motion.h: Instrumentation update: outputs all MEData members and copes with monochrome sequences 2004-08-19 12:43 asuraparaju * libdirac_common/: mot_comp.cpp, pic_io.cpp, wavelet_utils.cpp: Cleansed code 2004-08-19 12:40 asuraparaju * libdirac_encoder/: frame_compress.cpp, quality_monitor.cpp, quality_monitor.h, seq_compress.cpp: Handling new start codes and bitstream version. Fixed bug in quality monitor code where padding area was taken into account in calculating PSNR. Removed unused code for calculating weighted PSNR. Removed commented output from quality monitor. Instrumentation update: outputs all MEData members and copes with monochrome sequences. 2004-08-11 16:30 asuraparaju * ChangeLog: Update this log with details recent checkins 2004-08-11 16:23 asuraparaju * tests/Makefile.am: Deleting data files created by encode and decode operation durng cleanup. 2004-08-11 15:53 asuraparaju * decoder/decmain.cpp: Decoder modified to use the "C" interface. 2004-08-11 15:53 asuraparaju * encoder/encmain.cpp: Added support for cut-detection and intra frame insertion. Changed output structure to output frame by frame, and added recoding to exploit this. Recoding takes place if quality is not within a range of the target quality. Replaced tabs with spaces. Updated data file extension 2004-08-11 15:48 asuraparaju * libdirac_encoder/: Makefile.am, frame_compress.cpp, frame_compress.h, quality_monitor.cpp, quality_monitor.h, seq_compress.cpp, seq_compress.h: Fixed the bug where all header files were being dumped into the same install directory. Now headers are copied into the /dirac/ directory. Added support for cut-detection and intra frame insertion. Changed output structure to output frame by frame, and added recoding to exploit this. Recoding takes place if quality is not within a range of the target quality. Writing frame start, sequence start and sequence end codes to bitstream. Modifications to build under WIN32 2004-08-11 15:44 asuraparaju * libdirac_decoder/: Makefile.am, frame_decompress.cpp, frame_decompress.h, seq_decompress.cpp, seq_decompress.h: Handling new "C" interface files. Handling bitstream changes in frame and sequence decompress routines. Fixed the bug where all header files were being dumped into the same install directory. Now headers are copied into the /dirac/libdirac_decoder 2004-08-11 15:40 asuraparaju * libdirac_common/: Makefile.am, arith_codec.h, arrays.h, band_codec.cpp, band_codec.h, bit_manager.cpp, bit_manager.h, common.cpp, common.h, frame.cpp, frame.h, frame_buffer.cpp, mot_comp.cpp, motion.cpp, mv_codec.cpp, mv_codec.h, pic_io.cpp, pic_io.h: Renamed BitOutputManager to UnitOutputManager in bit_manager.* Modified bit_manager.* to handle modifications to bitstream. Moved enumerated types common to the encoder, decoder and codec interfaces from common.h into common_types.h to avoid duplication of declarations. Added support for cut-detection and intra frame insertion. Changed output structure to output frame by frame, and added recoding to exploit this. Recoding takes place if quality is not within a range of the target quality. Modifications to build under WIN32 Fixed icc compiler warning 522 Fixed VC++ 2003 compiler warnings Fixed the bug where all header files were being dumped into the same install directory. Now headers are copied into the /dirac/libdirac_common directory. 2004-08-11 15:30 asuraparaju * libdirac_motionest/: Makefile.am, me_mode_decn.cpp, me_subpel.cpp, motion_estimate.cpp, motion_estimate.h: Minor mods to improve motion estimation: no lambda-smoothing on pixel-accurate ME. Fixed the bug where all header files were being dumped into the same install directory. Now headers are copied into the /dirac/libdirac_motionest directory.. 2004-08-11 15:27 asuraparaju * util/instrumentation/: Makefile.am, instrmain.cpp, process_sequence.cpp, process_sequence.h, libdirac_instrument/overlay.h: Restructured the code. Corrected header file path in instrmain.cpp. Added a ProcessSequence class. File extension of motion vector instrumentation file changed from _mvdata to .imt 2004-08-11 15:24 asuraparaju * tests/: Makefile.am, colourbars.at: Deleting instrumentation files during clean up. Ignoring stdout and stderr when running decoder. 2004-08-11 15:23 asuraparaju * win/Makefile: Fixed VC++ 2003 compile and link errors 2004-08-11 15:21 asuraparaju * libdirac_common/: dirac_assertions.cpp, dirac_assertions.h: Added functions for runtime testing in debug mode. Two new macros are defined. ASSERT( exp ) - if exp resolves to false, the program prints the line number and file where the assertion failure occured. In debug mode the program exits immediately dumping core. ASSERT( exp, mesg ) - if exp resolves to false, the program prints the line number, file name where the assertion failure occured and mesg. In debug mode the program exits immediately 2004-08-11 15:20 asuraparaju * libdirac_common/common_types.h: Moved enumerated types common to the encoder, decoder and codec interfaces from common.h into this file to avoid duplication of declarations. 2004-08-11 15:16 asuraparaju * libdirac_decoder/: decoder_types.h, dirac_cppparser.cpp, dirac_cppparser.h, dirac_parser.cpp, dirac_parser.h: These new files define the "C" interface to the decoder. The bitstream has been modified to be able to parse it for decoding. BitStream Changes: The new dirac bit stream is as follows . . . Sequence start code: Each sequence begins with a 5 bytes start code 0x01 0x02 0x03 0x04 0xB3 Frame start code: Each frame begins with a 5 bytes frame start code 0x01 0x02 0x03 0x04 0xB4 Sequence End code: Each sequence ends with a 5 bytes sequence end code 0x01 0x02 0x03 0x04 0xB7 Not a start code flag: If the arithmetic codec ouputs the start code prefix 0x01 0x02 0x03 0x04, 0xFF is inserted into the bitstream to flag that this is the output of the Arithmetic codec and not a start code. 2004-08-11 14:27 asuraparaju * configure.ac: Added a new option --enable-profile to include the profiling option -pg to them compile line. Setting up CXXFLAGS correctly for Intel compiler when the --enable-debug option is used. 2004-08-11 14:26 asuraparaju * README.release: A checklist for producing a new release 2004-08-03 10:32 asuraparaju * ChangeLog: Updated this log with details of recent checkins 2004-08-03 10:22 asuraparaju * Makefile.am, configure.ac, dirac.pc.in, decoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/Makefile.am, libdirac_common/arrays.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/Makefile.am, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, libdirac_motionest/pixel_match.cpp, libdirac_motionest/pixel_match.h: libdirac_common, libdirac_encoder, encoder: Incorporated diagnostic tool libdirac_common, libdirac_encoder, libdirac_motionest: Added lifting classes for wavelet transform. Refactored motion estimation to make logic clearer, and added separate pixel-accurate matching classes. Put in a longer temporal filter in QualityMonitor class to reduce oscillation and changed motion estimation Lagrangian parameter to improve performance. TO DO: tune ME parameter for each picture size/block size combination. libdirac_common: Corrected bug with lifting functions not returning a value. Modified MvData class to make member variables private. libdirac_encoder: Modified ME lambda value to improve performance. libdirac_decode, libdirac_encoder, libdirac_motionest, libdirac_common: Modified MvData class to make member variables private. Created MEData class as a subclass of MvData for use in motion estimation. libdirac_commonm libdirac_encoder: Refactored output classes to create classes for unit, frame and sequence output, where a unit is a subband or MV data, and consists of a header and subsequent data. Output can only be effected at the sequence level and occurs only after a whole frame of data has been accumulated. This will allow for frames to be re-coded before being output if their quality is not satisfactory. 2004-08-03 10:07 asuraparaju * util/: Makefile.am, instrumentation/Makefile.am, instrumentation/README, instrumentation/instrmain.cpp, instrumentation/libdirac_instrument/Makefile.am, instrumentation/libdirac_instrument/draw_overlay.cpp, instrumentation/libdirac_instrument/draw_overlay.h, instrumentation/libdirac_instrument/motion_arrows.cpp, instrumentation/libdirac_instrument/motion_arrows.h, instrumentation/libdirac_instrument/motion_colour.cpp, instrumentation/libdirac_instrument/motion_colour.h, instrumentation/libdirac_instrument/motion_colour_arrows.cpp, instrumentation/libdirac_instrument/motion_colour_arrows.h, instrumentation/libdirac_instrument/overlay.cpp, instrumentation/libdirac_instrument/overlay.h, instrumentation/libdirac_instrument/overlay_symbols.cpp, instrumentation/libdirac_instrument/overlay_symbols.h, instrumentation/libdirac_instrument/pred_mode.cpp, instrumentation/libdirac_instrument/pred_mode.h, instrumentation/libdirac_instrument/sad.cpp, instrumentation/libdirac_instrument/sad.h, instrumentation/libdirac_instrument/split_mode.cpp, instrumentation/libdirac_instrument/split_mode.h: Adding instrumentation tool 2004-07-16 17:05 asuraparaju * ChangeLog: Updated thislog with details of recent checkins 2004-07-16 16:29 asuraparaju * libdirac_encoder/quality_monitor.cpp: Fixed bug with model updating - limits of slope of linear model were inaccurate. Fixed bug with numerical stability of lambda re-calculation. Performance with cuts or shot-changes is still poor, however. 2004-07-16 16:23 asuraparaju * DCO.developers, README.developers: Added contents section. Added text about licensing and contribution. Modified licensing requirements so that contributors contribute under Mozilla too. Added Developers Certificate of Origin, which developers are to sign before their work is included. 2004-07-12 12:23 asuraparaju * ChangeLog: Updated this log with details of most recent checkins 2004-07-12 11:59 asuraparaju * libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/cmd_line.cpp, libdirac_common/cmd_line.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h: Changed order of initialisation parameters for TwoDArray template class and subclass PicArray. Tidied TwoDArray and OneDArray classes. Removed all use of allocators. Replaced tabs with spaces in libdirac_common. Fixed minor bug in quality_monitor PSNR measurement. Made other typographical changes. 2004-07-12 11:53 asuraparaju * Makefile.am, configure.ac, tests/Makefile.am, tests/testsuite.at, tests/unittests.at, unit_tests/Makefile.am, unit_tests/arrays_test.cpp, unit_tests/arrays_test.h, unit_tests/core_suite.h, unit_tests/cppunit_testsuite.cpp, unit_tests/utmain.cpp: Added a unit test framework based on Cppunit. The unit tests will reside in the directory unit_tests. 'make check' command will now run the unit tests as well. Currently unit test exists only for the TwoDArrays class. More tests will be added in future. 2004-07-06 12:51 asuraparaju * ChangeLog: Update this log with details of mostrecent checkins 2004-07-06 12:26 asuraparaju * Makefile.am, README, encoder/encmain.cpp, libdirac_common/arith_codec.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame.cpp, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/mot_comp.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/pic_io.cpp, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_utils.cpp, libdirac_motionest/motion_estimate.cpp, tests/colourbars.at: README: Removed discussion of Iqf, L1qf and L2qf. Added text explaining constant- quality encoding using -qf. Makefile.am: Changed order of make, so that utilities can use the common (and other) libraries. libdirac_common: Changed EncoderParams to include a quality parameter for constant-quality encoding. Changed perceptual weighting to use an extension of CCIR 959 weights, with extra weight for DC band, and lower weights for chroma bands. Modified enumerated type CompSort to avoid name clashes by using longer names. Refactored OLBParams class to have private member variables and access functions. libdirac_encoder: Added QualityMonitor class to do constant-quality encoding. Class looks at difference between locally decoded and original frames and adjusts Lagrangian parameters appropriately. Simplified interface for encoding results, where a single quality parameter is specified. libdirac_decoder FrameDecompressor::Decompress now returns true upon success and false upon failure. encoder/encmain.cpp: Simplified interface for encoding results, where a single quality parameter is specified. 2004-07-02 14:46 asuraparaju * ChangeLog: Updated this log with details about recent checkins 2004-06-30 17:53 asuraparaju * README.developers: Removed dollar signs around CVS tags which cause them to be expanded 2004-06-30 17:44 asuraparaju * AUTHORS, README, README.developers, configure.ac, decoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/Makefile.am, libdirac_common/arith_codec.h, libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/cmd_line.cpp, libdirac_common/cmd_line.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/context.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, picheader/headmain.cpp, util/conversion/BMPtoRGB.cpp, util/conversion/RGBtoBMP.cpp, util/conversion/RGBtoUYVY.cpp, util/conversion/RGBtoYUV411.cpp, util/conversion/RGBtoYUV420.cpp, util/conversion/RGBtoYUV422.cpp, util/conversion/RGBtoYUV444.cpp, util/conversion/UYVYtoRGB.cpp, util/conversion/YUV411toRGB.cpp, util/conversion/YUV420toRGB.cpp, util/conversion/YUV422toRGB.cpp, util/conversion/YUV444toRGB.cpp, util/conversion/common/bitmap.cpp, util/conversion/common/bitmap.h, util/conversion/common/setstdiomode.cpp, util/conversion/common/setstdiomode.h: - Included a coding style guidelines sub-section (Coding Style) in README.developers under the section 'Software Practices'. This sub-section describes the coding guidelines for developers and is to be used as a reference by developers while writing code and while peer-reviewing code. - Removed the following CVS tags from all files $Author: asuraparaju $ $Log: ChangeLog,v $ Revision 1.31 2009/02/10 23:26:54 asuraparaju Updated ChangeLog Author: Anuradha Suraparaju Revision 1.30 2009/02/10 00:32:11 asuraparaju Update ChangeLog Author: Anuradha Suraparaju Revision 1.29 2008/09/16 06:49:27 asuraparaju Updated ChangeLog. Author: asuraparaju@diracvideo.org Revision 1.28 2008/06/04 05:39:17 asuraparaju *** empty log message *** Revision 1.27 2008/05/30 06:33:56 asuraparaju *** empty log message *** Revision 1.26 2008/01/26 12:11:44 asuraparaju *** empty log message *** Revision 1.25 2008/01/23 01:17:25 asuraparaju *** empty log message *** Revision 1.24 2007/10/01 10:57:15 asuraparaju *** empty log message *** Revision 1.23 2007/05/09 14:06:51 asuraparaju *** empty log message *** $Revision: 1.31 $ - Included the following CVS tags in all source and header files $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ $Name: Dirac_1_0_2 $ - Included a new configuration option, --enable-debug, in configure.ac. This option turns on the flags '-Wall -pedantic -Werror' to trap warnings. - Modified parameter classes in common.{h,cpp} to make member variables private and accessible through class methods. Traced through codec. - Deleted context.h. The classes that were originally in this file have been integrated as nested classes into ArithCodec class in arith_codec.h - Fixed bug on QCIF coding. The number of downconversions during hierarchical motion estimation is now limited based on the size of the picture - Changed decoder and encoder params to be references throughout frame and component (de)compression rather than being copied. - Code cleansed to follow coding standards specified in README.developers. - Changed names of member variables to use m_ convention - Used spaces to improve readability of code - Accessing class member variables through accessor/mutator function rather than directly - Non-trivial member functions moved from headers to .cpp files Changes mainly in the following directories: libdirac_common libdirac_decoder libdirac_encoder - Fixed g++ compiler warnings 2004-06-22 11:10 asuraparaju * libdirac_common/wavelet_utils.h: Modified doxygen comments to match the declaration of member function SetBandWeights in class WaveletTransform. 2004-06-22 11:08 asuraparaju * encoder/encmain.cpp: Fixed compilation errors caused by trying to access non-existent cformat data member in class EncoderParams. 2004-06-18 16:58 tjdwave * libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame.cpp, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_encoder/seq_compress.cpp, libdirac_motionest/motion_estimate.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h: Removed chroma format parameter cformat from CodecParams and derived classes to avoid duplication. Made consequential minor mods to seq_{de}compress and frame_{de}compress code. Revised motion compensation to use built-in arrays for weighting matrices and to enforce their const-ness. Removed unnecessary memory (de)allocations from Frame class copy constructor and assignment operator. 2004-06-16 17:06 asuraparaju * decoder/Makefile.am, encoder/Makefile.am, libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, util/conversion/Makefile.am, util/conversion/common/Makefile.am: Enable dependency tracking by removing the macro AUTOMAKE_OPTIONS = no-dependencies from Makefile.am 2004-06-16 09:25 tjdwave * doc/algorithm/: algorithm.htm, toc.htm: Corrected link in TOC. Put correct date in main page. 2004-06-08 17:18 timborer * NEWS: Updated release notes for version 0.3.1 2004-06-08 17:03 timborer * configure.ac, libdirac_common/golomb.cpp, libdirac_common/mv_codec.h, libdirac_motionest/block_match.cpp, util/conversion/BMPtoRGB.cpp, util/conversion/RGBtoBMP.cpp, util/conversion/RGBtoUYVY.cpp, util/conversion/RGBtoYUV411.cpp, util/conversion/RGBtoYUV420.cpp, util/conversion/RGBtoYUV422.cpp, util/conversion/RGBtoYUV444.cpp, util/conversion/UYVYtoRGB.cpp, util/conversion/YUV411toRGB.cpp, util/conversion/YUV420toRGB.cpp, util/conversion/YUV422toRGB.cpp, util/conversion/YUV444toRGB.cpp, util/conversion/common/bitmap.cpp, util/conversion/common/bitmap.h, util/conversion/common/setstdiomode.cpp, util/conversion/common/setstdiomode.h, win/Makefile: Files updated so that code compiles under Windows (previously broken under Windows). Colour matrix coefficients corrected in video conversion utilities Video conversion utilites now build with the rest of the code. 2004-06-03 14:07 stuart_hc * README.developers: Added Profiling & optimisation section. 2004-05-28 16:05 tjdwave * NEWS, TODO: Added information about picture format conversion utilities. Removed frame padding from the TODO list. 2004-05-28 15:58 tjdwave * README: Added text on how to use the conversion utilities to provide test material for Dirac. 2004-05-28 15:27 tjdwave * util/conversion/: BMPtoRGB.cpp, Makefile.am, RGBtoBMP.cpp, RGBtoUYVY.cpp, RGBtoYUV411.cpp, RGBtoYUV420.cpp, RGBtoYUV422.cpp, RGBtoYUV444.cpp, UYVYtoRGB.cpp, YUV411toRGB.cpp, YUV420toRGB.cpp, YUV422toRGB.cpp, YUV444toRGB.cpp: Initial commit of command-line tools for converting between uncompressed picture formats. All conversions use uncompressed RGB as an intermediate format. There is a known bug with the colour matrixing which applies a gain when going from YUV to RGB and back again. This will be fixed in a subsequent release. 2004-05-28 15:18 tjdwave * util/conversion/common/: bitmap.cpp, bitmap.h, setstdiomode.cpp, setstdiomode.h: Initial commit. Common tools for handling BMP headers and stdio handling for Windows. 2004-05-28 15:15 tjdwave * util/conversion/common/Makefile.am: Initial commit. Builds common library for use by all the conversion routines. 2004-05-28 15:14 tjdwave * util/conversion/Makefile.am: Initial commit. Builds file conversion utilities. 2004-05-28 15:12 tjdwave * util/Makefile.am: Added Makefile to build utility subdirectories. 2004-05-28 15:10 tjdwave * Makefile.am, configure.ac: Updated to add utilities directory. 2004-05-27 14:58 asuraparaju * configure.ac, doc/Makefile.am, doc/algorithm/Makefile.am, doc/api/Makefile.am, doc/programmers/Makefile.am: Corrected API and programmer doc build and installation. Added algorithm doc install (from CVS only - not distribution). 2004-05-27 13:21 stuart_hc * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and $Log: ChangeLog,v $ * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.31 2009/02/10 23:26:54 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Updated ChangeLog * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Author: Anuradha Suraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.30 2009/02/10 00:32:11 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Update ChangeLog * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Author: Anuradha Suraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.29 2008/09/16 06:49:27 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Updated ChangeLog. * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Author: asuraparaju@diracvideo.org * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.28 2008/06/04 05:39:17 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.27 2008/05/30 06:33:56 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.26 2008/01/26 12:11:44 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.25 2008/01/23 01:17:25 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.24 2007/10/01 10:57:15 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.23 2007/05/09 14:06:51 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and in description of keywords. 2004-05-27 13:14 stuart_hc * README.developers: Added section on the testsuite and on binary files. 2004-05-27 09:02 tjdwave * doc/programmers/: programmers_guide.dvi, programmers_guide.log: Removed LaTeX-generated .dvi and .log files from CVS control. 2004-05-27 09:00 tjdwave * doc/: algorithm/algorithm.htm, algorithm/var_size.htm, algorithm/wlt_transform.htm, programmers/programmers_guide.dvi, programmers/programmers_guide.log: Updated docs to take into account that Dirac does edge-padding, not padding with black, in order to avoid significant artefacts at low bit-rate. 2004-05-26 17:01 tjdwave * configure.ac, doc/Makefile.am, doc/faq.htm, doc/algorithm/algorithm.htm, doc/algorithm/block_data.htm, doc/algorithm/intra_pred.htm, doc/algorithm/intro.htm, doc/algorithm/mb_structs.htm, doc/algorithm/mot_est.htm, doc/algorithm/mot_est_and_comp.htm, doc/algorithm/mv_coding_arch.htm, doc/algorithm/mv_data_coding.htm, doc/algorithm/mv_data_pred.htm, doc/algorithm/mv_entropy_code.htm, doc/algorithm/olb_mc.htm, doc/algorithm/overall_arch.htm, doc/algorithm/parent_child.htm, doc/algorithm/quantisation.htm, doc/algorithm/rdo.htm, doc/algorithm/rdo_mot_est.htm, doc/algorithm/subband_rdo.htm, doc/algorithm/temporal_prediction_structures.htm, doc/algorithm/toc.htm, doc/algorithm/transform_coding.htm, doc/algorithm/transform_coding_arch.htm, doc/algorithm/var_size.htm, doc/algorithm/wlt_coeff_coding.htm, doc/algorithm/wlt_transform.htm, doc/algorithm/figs/DC.jpg, doc/algorithm/figs/DCSAD.jpg, doc/algorithm/figs/braces.jpg, doc/algorithm/figs/d.jpg, doc/algorithm/figs/eqA.jpg, doc/algorithm/figs/eqB.jpg, doc/algorithm/figs/eqC.jpg, doc/algorithm/figs/eqD.jpg, doc/algorithm/figs/eqE.jpg, doc/algorithm/figs/eqF.jpg, doc/algorithm/figs/eqG.jpg, doc/algorithm/figs/eqH.jpg, doc/algorithm/figs/eqI.jpg, doc/algorithm/figs/eqJ.jpg, doc/algorithm/figs/fig1.jpg, doc/algorithm/figs/fig10.jpg, doc/algorithm/figs/fig12.jpg, doc/algorithm/figs/fig13.jpg, doc/algorithm/figs/fig14.jpg, doc/algorithm/figs/fig15.jpg, doc/algorithm/figs/fig16.jpg, doc/algorithm/figs/fig17.jpg, doc/algorithm/figs/fig18.jpg, doc/algorithm/figs/fig19.jpg, doc/algorithm/figs/fig2.jpg, doc/algorithm/figs/fig20.jpg, doc/algorithm/figs/fig21.jpg, doc/algorithm/figs/fig22.jpg, doc/algorithm/figs/fig23.jpg, doc/algorithm/figs/fig24.jpg, doc/algorithm/figs/fig26.jpg, doc/algorithm/figs/fig27.jpg, doc/algorithm/figs/fig3.jpg, doc/algorithm/figs/fig4.jpg, doc/algorithm/figs/fig5.jpg, doc/algorithm/figs/fig6.jpg, doc/algorithm/figs/fig7.bmp, doc/algorithm/figs/fig7.jpg, doc/algorithm/figs/fig8.jpg, doc/algorithm/figs/fig9.jpg, doc/algorithm/figs/fp.jpg, doc/algorithm/figs/m.jpg, doc/algorithm/figs/nhood.jpg, doc/algorithm/figs/nhoodresidue.jpg, doc/algorithm/figs/p.jpg, doc/algorithm/figs/p2.jpg, doc/algorithm/figs/t.jpg, doc/algorithm/figs/two.jpg, doc/algorithm/figs/var.jpg, doc/algorithm/figs/vtilda.jpg, doc/algorithm/figs/vw.jpg, doc/api/Makefile.am, doc/api/dirac_api.doxygen, doc/api/dirac_api.doxygen.in, doc/api/dirac_api_foot.html, doc/api/dirac_api_head.html, doc/api/libdirac_encoder_api.doxygen, doc/api/libdirac_encoder_api_foot.html, doc/api/libdirac_encoder_api_head.html, doc/programmers/Makefile.am, doc/programmers/programmers_guide.aux, doc/programmers/programmers_guide.dvi, doc/programmers/programmers_guide.log, doc/programmers/programmers_guide.tex: Added algorithm documentation and FAQ. Changed name of Scott Ladd's programmers guide to programmers_guide.tex from dirac_algor.tex to clarify purpose. Created individual subdirectories for algorithm, api and programmers guide docs. Modified make files and configure.ac appropriately. 2004-05-26 16:44 tjdwave * doc/: dirac_algor.tex, dirac_api.doxygen, dirac_api.doxygen.in, dirac_api_foot.html, dirac_api_head.html, libdirac_encoder_api.doxygen, libdirac_encoder_api_foot.html, libdirac_encoder_api_head.html: Removed old documentation structure. New doc structure to be put in place. 2004-05-26 16:18 tjdwave * libdirac_decoder/seq_decompress.cpp: Corrected behaviour at end of stream, so that decoder freezes on the last frame. 2004-05-26 15:33 tjdwave * libdirac_encoder/comp_compress.cpp, libdirac_common/band_codec.cpp, libdirac_decoder/comp_decompress.cpp: Updated default DC prediction value to take into account the removal of scaling from the wavelet transform. 2004-05-26 15:31 tjdwave * libdirac_common/wavelet_utils.h: Added doxygen comments to describe how perceptual weighting now incorporates scaling factors from the scaling. 2004-05-25 16:30 tjdwave * libdirac_common/wavelet_utils.cpp: Removed scaling from the wavelet transform. Scaling is now incorporated into perceptual weighting; the wavelet transform is now exactly invertible. 2004-05-25 10:49 tjdwave * libdirac_common/pic_io.cpp: Fixed bug where coder segfaulted on reading. 2004-05-25 03:39 chaoticcoyote * ChangeLog, libdirac_common/frame.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_encoder/seq_compress.h, libdirac_motionest/me_utils.cpp: Unnecessary qualification of some class members in frame.h and pic_io.h. ISO C++ forbids variable-size automatic arrays; fixed in pic_io.cpp Removed spurious semi-colons in me_utils.cpp Fixed out-of-order member constructors in seq_compress.h 2004-05-24 17:03 tjdwave * libdirac_decoder/: frame_decompress.cpp, frame_decompress.h, seq_decompress.cpp: Support for IO error handling. Decoder freezes on last frame if out of data. 2004-05-24 16:57 tjdwave * picheader/headmain.cpp, encoder/encmain.cpp, decoder/decmain.cpp: Changed CLI names and functions to house style. 2004-05-24 16:55 tjdwave * libdirac_common/: cmd_line.cpp, cmd_line.h: Modified class name to fit house style: ClassName, not class_name. 2004-05-24 16:53 tjdwave * libdirac_common/: pic_io.cpp, pic_io.h: Added error handling: IO functions now return boolean values. 2004-05-24 16:52 tjdwave * tests/colourbars.at: Fixed test so that header file has correct zlength=1. 2004-05-24 16:51 tjdwave * Makefile.am: Switched order so that docs are builts last. 2004-05-24 13:38 tjdwave * libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h: Replaced spagetti code for linear interpolation in motion compensation and motion estimation routines with simple loops. Code is much clearer, although possibly slightly slower. 2004-05-21 18:46 asuraparaju * Makefile.am, configure.ac, tests/Makefile.am, tests/colourbars.at, tests/colourbars_420.yuv, tests/testsuite.at: Initial support for autotest testsuite (run "make check"). 2004-05-21 17:27 stuart_hc * README.developers: Initial revision of software practice guidelines for CVS developers. 2004-05-21 15:17 tjdwave * libdirac_common/mot_comp.cpp: Fixed bug with erroneous linear interpolation for sub-pixel values. 2004-05-20 13:44 tjdwave * README: Minor edit of example of making a header, to reflect the new CLI. 2004-05-20 13:39 tjdwave * picheader/headmain.cpp: Fixed help message for CLI. 2004-05-20 13:38 tjdwave * decoder/decmain.cpp: Fixed minor bug with -verbose option to make it true boolean. 2004-05-20 13:37 tjdwave * encoder/encmain.cpp: Corrected help text for CLI. 2004-05-20 11:50 stuart_hc * doc/dirac_api.doxygen, doc/dirac_api_foot.html, doc/dirac_api_head.html, doc/libdirac_encoder_api_foot.html, doc/libdirac_encoder_api_head.html, libdirac_common/band_codec.cpp: Corrected CRLF line-endings to LF for consistency. 2004-05-20 11:35 stuart_hc * NEWS: Added mention of libtool removal, slight rearrangement for clarity. Corrected CRLF line-endings to LF. 2004-05-20 11:31 stuart_hc * README: Fixed incorrect interlace argument in DV transcode example. Minor grammatical errors fixed. 2004-05-19 23:08 chaoticcoyote * README: Updated for changes in command-line parser 2004-05-19 23:00 chaoticcoyote * AUTHORS: Added my middle name to credits Corrected company name 2004-05-19 18:39 chaoticcoyote * decoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/cmd_line.cpp, libdirac_common/cmd_line.h, picheader/headmain.cpp: Modified command line parser to correctly handle boolean options 2004-05-19 17:27 stuart_hc * README: Added example usage for MPlayer, display (ImageMagick), and transcode. Reformatted all example commands to be indented for clarity. 2004-05-19 16:51 tjdwave * NEWS: More details for 0.3.0 release 2004-05-19 15:29 tjdwave * NEWS: Include release notes for 0.2.0 & 0.3.0 2004-05-19 15:19 tjdwave * TODO: Removed mention of frame buffer class, since now complete. 2004-05-19 15:14 tjdwave * AUTHORS: Added contributers. 2004-05-19 15:04 tjdwave * libdirac_common/pic_io.cpp: Changed YUV output to output lines instead of bytes, according to patch provided by Malcolm Parsons 2004-05-19 10:16 tjdwave * libdirac_common/: mot_comp.cpp, pic_io.cpp: Replaced zero-padding with edge-padding to eliminate colour-fringeing at low bitrates. Mod to set padded values to 0 when compensating frames. 2004-05-18 08:46 tjdwave * README, encoder/encmain.cpp, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/pic_io.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/seq_compress.cpp: Added support for I-frame only coding by setting num_L1 equal 0; num_L1 negative gives a single initial I-frame ('infinitely' many L1 frames). Revised quantiser selection to cope with rounding error noise. 2004-05-14 18:27 stuart_hc * decoder/decmain.cpp: Added better error checking. 2004-05-14 18:25 stuart_hc * libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, picheader/headmain.cpp: Replaced binary header files with ASCII text format to achieve cross-platform interoperability. Rearranged PicOutput constructor to permit code reuse from picheader/headmain.cpp 2004-05-14 18:20 stuart_hc * decoder/Makefile.am, encoder/Makefile.am, picheader/Makefile.am: Use LDADD to ensure files which depend on libraries are rebuilt when necessary. 2004-05-14 15:21 tjdwave * README: Build information now incorporated. 2004-05-14 11:48 stuart_hc * bootstrap: Avoid errors when mixing versions of autotools. 2004-05-14 11:47 stuart_hc * make_debug.sh: Rearranged to use "make" to be more maintainable. 2004-05-12 17:04 tjdwave * decoder/decmain.cpp, picheader/headmain.cpp, libdirac_encoder/seq_compress.cpp: Done general code tidy, implementing copy constructors, assignment= and const correctness for most classes. Replaced Gop class by FrameBuffer class throughout. Added support for frame padding so that arbitrary block sizes and frame dimensions can be supported. 2004-05-12 17:03 tjdwave * encoder/encmain.cpp: Done general code tidy, implementing copy constructors, assignment= and const correctness for most classes. Replaced Gop class by FrameBuffer class throughout. Added support for frame padding so that arbitrary block sizes and frame dimensions can be supported. 2004-05-12 10:23 tjdwave * reconf: Removed since it duplicated the job of ./bootstrap. 2004-05-12 10:20 tjdwave * dirac_build_howto.txt: All build instructions are now in the README file. Information on creating a distribution removed since it is not indended for the target audience. 2004-05-12 09:46 tjdwave * win/xparam/README: XParam library is no longer needed to build Dirac. 2004-05-12 09:35 tjdwave * libdirac_common/arith_codec.h, libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/context.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.h, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h: Done general code tidy, implementing copy constructors, assignment= and const correctness for most classes. Replaced Gop class by FrameBuffer class throughout. Added support for frame padding so that arbitrary block sizes and frame dimensions can be supported. 2004-05-12 09:21 stuart_hc * libdirac_common/: gop.cpp, gop.h, Makefile.am: FrameBuffer classes (frame_buffer.{cpp,h}) now replace Gop classes (gop.{cpp,h}). 2004-05-12 09:14 tjdwave * libdirac_common/: frame_buffer.cpp, frame_buffer.h: Initial commit of FrameBuffer classes to handle free-style temporal reference structures. Replaces Gop class (gop.{cpp,h}). 2004-05-11 17:11 stuart_hc * Makefile.am, bootstrap, configure.ac, decoder/Makefile.am, doc/Makefile.am, encoder/Makefile.am, libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, picheader/Makefile.am: Removed use of libtool - all libraries and binaries are now static for ease of development & debugging. Added tests for documentation tools and added documentation to default make target 'all'. 2004-05-11 15:17 tjdwave * Makefile.am, README, configure.ac, dirac_build_howto.txt, decoder/Makefile.am, decoder/decmain.cpp, encoder/Makefile.am, encoder/encmain.cpp, libdirac_common/cmd_line.cpp, libdirac_common/cmd_line.h, libdirac_encoder/seq_compress.cpp, picheader/Makefile.am, picheader/headmain.cpp, win/Makefile, win/README, win/xparam/README: Removed dependency on XParam CLI library for both encoder and decoder. 2004-05-11 15:15 tjdwave * doc/dirac_algor.tex: Removed inline comments and notes. Added text describing frame types (I, L1 and L2) and relation to MPEG types. 2004-05-10 05:44 chaoticcoyote * doc/dirac_algor.tex: Newest version of "programmer's guide" 2004-05-10 05:43 chaoticcoyote * libdirac_common/: cmd_line.cpp, cmd_line.h: Simple, portable command-line parser (eliminates Xparam dependency) 2004-05-10 05:41 chaoticcoyote * doc/dirac_algor.tex, encoder/encmain.cpp, libdirac_common/Makefile.am: Updated dirac algorithm document Modified encoder to use simple, portable command-line parser 2004-05-10 02:04 chaoticcoyote * encoder/decmain.cpp: Removed spurious file 2004-04-25 23:27 chaoticcoyote * win/: README, xparam/README: Read Me files to explain the context of this directory and Makefile 2004-04-25 23:16 chaoticcoyote * win/Makefile: Added nmake makefile for Microsoft Visual C++ 2004-04-22 23:14 chaoticcoyote * make_debug.sh: Enhanced the debug build script to support different architectures 2004-04-22 22:11 chaoticcoyote * misc/xparam-1.22-gcc-3.4.0.patch: A patch for xparam 1.22 to work around a GCC 3.4.0 internal compiler error 2004-04-22 22:08 chaoticcoyote * make_debug.sh, libdirac_encoder/comp_compress.cpp: Fixed warning generated by some versions of GCC for libdirac_encoder/comp_compress.cpp Added make_debug.sh script to build debuggable, profilable versions of encoder and decoder 2004-04-16 04:12 chaoticcoyote * doc/Makefile.in: Removed spurious file 2004-04-16 04:11 chaoticcoyote * doc/: Makefile.in, dirac_api.doxygen.in: Added additional documentation build files 2004-04-16 04:10 chaoticcoyote * Makefile.am, doc/Makefile.am, doc/dirac_api.doxygen: Addiitonal work on generating docs for distribution 2004-04-16 02:41 chaoticcoyote * doc/: dirac_algor.tex, dirac_algorithm2.tex: Renamed algorithm document 2004-04-16 02:28 chaoticcoyote * Makefile.am, doc/Makefile.am: Added documentation targets to makefiles 2004-04-15 14:59 chaoticcoyote * configure.ac: Added doc/Makefile 2004-04-15 14:57 chaoticcoyote * doc/Makefile.am: Added makefile boilerplate to generate docusment via "docs" target 2004-04-15 14:54 chaoticcoyote * configure.ac: Added program checks for Doxygen and LaTeX 2004-04-15 13:31 chaoticcoyote * configure.ac: Updated to version 0.2.0 2004-04-15 13:30 chaoticcoyote * doc/dirac_algorithm2.tex: Dirac algorithm document added 2004-04-12 02:57 chaoticcoyote * Makefile.am, decoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/pic_io.cpp: Fixed problem Intel C++ had in finding xparam headers on Linux Solved Segmentation Fault bug in pic_io.cpp 2004-04-11 23:54 chaoticcoyote * libdirac_common/: arith_codec.h, bit_manager.h, context.h: Additional comments 2004-04-11 23:50 chaoticcoyote * libdirac_common/arrays.h, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/golomb.cpp, libdirac_common/gop.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/pic_io.cpp, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/seq_compress.cpp, libdirac_motionest/block_match.cpp, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_utils.cpp, libdirac_motionest/motion_estimate.cpp: Modifications to allow compilation by Visual C++ 6.0 Changed local for loop declarations into function-wide definitions Replaced variable array declarations with new/delete of dynamic array Added second argument to allocator::alloc calls, since MS has no default Fixed missing and namespace problems with min, max, cos, and abs Added typedef unsigned int uint (MS does not have this) Added a few missing std:: qualifiers that GCC didn't require 2004-04-11 17:25 chaoticcoyote * windows/dirac/: dirac.dsw, libdirac_common/libdirac_common.dsp, libdirac_decoder/libdirac_decoder.dsp, libdirac_encoder/libdirac_encoder.dsp, libdirac_motionest/libdirac_motionest.dsp: Added initial Windows Visual Studio C++ 6.0 project files 2004-04-06 19:06 chaoticcoyote * libdirac_common/: arith_codec.h, arrays.h, band_codec.h, bit_manager.h, common.h, context.h, frame.h, gop.h, mot_comp.h, motion.h, mv_codec.h, pic_io.h, upconvert.h, wavelet_utils.h: Boilerplate for Doxygen comments; testing ability to commit into SF CVS 2004-04-05 04:05 chaoticcoyote * libdirac_motionest/: downconvert.h, me_mode_decn.h, me_subpel.h, me_utils.h, motion_estimate.h: Updated Doxygen API documentation comments Test to see if Scott's CVS is now working correctly 2004-03-30 16:52 chaoticcoyote * doc/dirac_api.doxygen, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.h: New Doxygen comments 2004-03-29 02:52 chaoticcoyote * libdirac_decoder/: comp_decompress.h, frame_decompress.h, seq_decompress.h: Added Doxygen comments 2004-03-22 01:33 chaoticcoyote * doc/dirac_doc_howto.txt: Added more description of HTML and LATEX document generation 2004-03-22 01:04 chaoticcoyote * libdirac_encoder/: comp_compress.cpp, comp_compress.h, frame_compress.h, seq_compress.cpp, seq_compress.h: Added API documentation to encoder library Moved large constructors so they are no longer inlined 2004-03-21 21:01 chaoticcoyote * doc/: libdirac_encoder_api_foot.html, libdirac_encoder_api_head.html: Adding custome header and footer for HTML libdirac_encoder docs 2004-03-21 21:00 chaoticcoyote * doc/: libdirac_encoder_api.doxygen, libdirac_encoder_foot.html, libdirac_encoder_head.html: Adjusting file names 2004-03-21 20:51 chaoticcoyote * doc/: libdirac_encoder_api.doxygen, libdirac_encoder_foot.html, libdirac_encoder_head.html: Added files to generate socumentation specific to libdirac_encoder 2004-03-21 19:26 chaoticcoyote * doc/dirac_api.doxygen: Change graphic configuration 2004-03-21 14:05 chaoticcoyote * dirac_build_howto.txt, doc/dirac_api.doxygen, doc/dirac_api_foot.html, doc/dirac_api_head.html, doc/dirac_doc_howto.txt: Updated documentation files 2004-03-21 13:06 chaoticcoyote * ltmain.sh, reconf: Updated autoconf to use libtoolize Removed spurious ltmain.sh 2004-03-19 07:43 chaoticcoyote * doc/dirac_algorithm.doc: Removed Word doc because the conversion didn't work 2004-03-19 07:35 chaoticcoyote * doc/: dirac_algorithm.doc, dirac_api.doxygen: Created document diractory Populated doc directory with preliminary texts 2004-03-13 17:34 chaoticcoyote * decoder/Makefile.am, encoder/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am: Disabled auto-dependency checking in newer versions of AutoMake 2004-03-13 17:11 chaoticcoyote * ltmain.sh, reconf, libdirac_common/Makefile.am: Required files for for autoconf 2004-03-12 17:09 chaoticcoyote * NEWS: Minor change to test commit ability 2004-03-11 17:45 timborer * AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am, NEWS, README, TODO, bootstrap, configure.ac, dirac.pc.in, decoder/Makefile.am, decoder/decmain.cpp, encoder/Makefile.am, encoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/Makefile.am, libdirac_common/arith_codec.h, libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/context.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/gop.cpp, libdirac_common/gop.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/Makefile.am, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/Makefile.am, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, picheader/Makefile.am, picheader/headmain.cpp: Initial import (well nearly!) 2004-03-11 17:45 timborer * AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am, NEWS, README, TODO, bootstrap, configure.ac, dirac.pc.in, decoder/Makefile.am, decoder/decmain.cpp, encoder/Makefile.am, encoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/Makefile.am, libdirac_common/arith_codec.h, libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/context.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/gop.cpp, libdirac_common/gop.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/Makefile.am, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/Makefile.am, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, picheader/Makefile.am, picheader/headmain.cpp: Initial revision 2006-11-13 09:41 tjdwave * libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/quant_chooser.cpp: Changed quantiser offsets to be different for Intra and Inter frames, as per the latest draft of the spec. Having an offset of 0.5*quantiser for intra frames improves performance at high rate, especially iterated coding with Dirac Pro apps. 2006-11-09 12:11 tjdwave * doc/latex_spec/: arith-encoder.tex, arith.tex, layout-fullsize.tex, low-delay.tex, mc.tex, motion-dec.tex, profilelevel.tex, spec-conventions.tex, spec-structure.tex, wlt-dec.tex: Added more text on the low-delay syntax and decoded picture buffer model. Clarified arithmetic decoding process and conventions. 2006-11-09 11:30 tjdwave * libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame_buffer.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_encoder/quant_chooser.cpp, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp: Overall improvements to encoding framework to improve quality for difficult pictures and at low bit rates. Changes to the RDO parameters are experimental and they may change again. - Added test for whether a frame is a B frame or not - Identified Layer 1 frames with P frames and Layer 2 with B frames, rather than with Inter Ref and Inter Non-ref respectively. This is more efficient with the new GOP structure - Modified RDO framework to provide correction where there has been ME failure i.e. lots of Intra blocks - Slightly increased ME search areas - Corrected the frame type parameter for the final B frame in a sequence - Changed confusing terminology for costs/errors in quantisation factor selection - Added overall PSNR stats for a sequence for performance comparisons 2006-10-30 15:17 tjdwave * doc/latex_spec/: arith.tex, dataenc.tex, motion-dec.tex, wlt-dec.tex: Fixed bug in specification of inverse quantisation. Changed default arithmetic decoding padding value to 1 from 0, so after reading in LENGTH bytes, a value of 1 is used from that point. This should support early termination i.e. encode only the first few values in a subband and then the decoder will correctly decode the remainder as 0, but this is as yet untested. 2006-10-30 14:57 tjdwave * libdirac_common/arith_codec.cpp: Fixed bug so that the decoder can now append any data to the end of the arithmetically encoded block and still decode correctly. Default padding data is all 1s - this should make a null or terminated subband decode with zeroes. 2006-10-30 13:42 tjdwave * libdirac_common/band_codec.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_decoder/comp_decompress.cpp: Fixed definitions of mean/median so that unbiased mean values are used. Likewise changed the prediction for DC values to take account of the fact that they may be negative. These changes change the bitstream. 2006-10-30 13:38 tjdwave * doc/latex_spec/: motion-dec.tex, spec-conventions.tex, wlt-dec.tex: Changed specification of division so that it agrees with C/C++ standards. Traced through these changes to specification of split mode, block dc value and intra dc band prediction. 2006-10-26 16:22 tjdwave * libdirac_encoder/dirac_encoder.cpp: Moved to using cout instead of cerr for reporting. 2006-10-26 16:07 tjdwave * libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_encoder/seq_compress.cpp: Made operation of retired picture list comply with specification: only reference pictures are signalled to be retired and non-reference pictures are retired by the decoder once they are displayed. Clarified frame type parameters so as to be sure they always agree. This will need further refactoring. Reference frames are now cleaned from the buffer _after_ being the current frame has been decoded, as per the spec. This allows slightly more flexible GOP structures. 2006-10-25 14:01 tjdwave * libdirac_common/common.cpp: Fixed bug with wrong quantiser offset being used: now complies with spec again. 2006-10-24 09:09 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, dataenc.tex, dirac-overview.tex, layout-fullsize.tex, picture-dec.tex, profilelevel.tex, spec-conventions.tex, spec-structure.tex, state-macros.tex, vidsys-sigrange.tex, vidsys.tex: First stab at including the low-delay syntax used for Dirac Pro profiles, together with profile and level text. Work in progress! 2006-10-19 16:01 tjdwave * doc/latex_spec/picture-dec.tex: Changed order of reference buffer management so that a reference picture is not removed until after the current picture has been decoded, 2006-10-19 14:53 tjdwave * libdirac_common/band_codec.cpp: Put in Dave Schleef's patch for making the computation of parent coefficient coordinates correct and spec compliant. 2006-10-10 15:04 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/dirac_types.h, libdirac_encoder/dirac_encoder.cpp: Fixed bug with aspect ratio being set to 0/0. Now it should be set to the correct value from the video format defaults. 2006-10-09 16:24 tjdwave * libdirac_common/wavelet_utils_mmx.cpp: Renamed functions with consistent filter names. 2006-10-05 16:22 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common_types.h, libdirac_common/video_format_defaults.cpp, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h: Given wavelet filters correct names and numbers as per spec. Added support for HAAR1 and HAAR2 filters. FIDELITY filter will be forthcoming. 2006-09-28 18:20 davidf_ * doc/: browser_compatibility.html, licences.html, licenses.html, template.html, template2.html, todo.html: fix license spelling mistake correction typos/misses/references 2006-09-28 18:13 davidf_ * doc/: contact.html, documentation.html, faq.html, getting_involved.html, index.html, overview.html, soc2006.html, soc2006_ideas.html, specification.html, styles.css, todo.html, documentation/publications/diracoverview-ibc2006.pdf: merge shas' website fixes added ibc2006 publication 2006-09-28 14:59 tjdwave * libdirac_common/: common.cpp, mot_comp.cpp: Fixed the block parameter testing so as to be compliant with the specification. Non-overlapped blocks are now allowed and supported. The raised cosine macro has now been removed and only linear weights are supported. 2006-09-28 10:17 tjdwave * doc/latex_spec/low-delay.tex: Added file to cover low delay syntax. 2006-09-28 10:08 tjdwave * doc/latex_spec/: abstract.tex, arith-contexts.tex, arith-datainput.tex, arith-decoder-ba.tex, arith-decoder-impl.tex, arith-decoder-sint.tex, arith-decoder-sua.tex, arith-decoder-tua.tex, arith-decoder-uua.tex, arith-decoder.tex, arith-encoder.tex, arith-engine.tex, arith-init.tex, arith-intro.tex, arith-update.tex, arith.tex, begin-bs.tex, begin-compmethods.tex, begin-dwt-fwd.tex, begin-dwt-parentchild.tex, begin-dwt.tex, begin-ec-dwt.tex, begin-ec-mc.tex, begin-ec.tex, begin-mc-accuracy.tex, begin-mc-blocks.tex, begin-mc-global.tex, begin-mc-intra.tex, begin-mc.tex, begin-more.tex, begin-pictypes.tex, begin-videocoding.tex, bs-intro.tex, bs-semantics.tex, bs-spec.tex, bs-syntax.tex, conv-bs-bytealign.tex, conv-bs-defaults.tex, conv-bs-reading.tex, conv-intro.tex, conv-parse-diagnums.tex, conv-parse-diagrams.tex, conv-pseudocode-syntax.tex, conv-pseudocode.tex, dataenc-bool.tex, dataenc-input.tex, dataenc-intro.tex, dataenc-nbitlit.tex, dataenc-nbytelit.tex, dataenc-vlc-segol.tex, dataenc-vlc-su.tex, dataenc-vlc-uegol.tex, dataenc-vlc-ut.tex, dataenc-vlc-uu.tex, dataenc-vlc.tex, dirac-concepts.tex, dirac-overview.tex, gendec.tex, idwt-1dsynthesis.tex, idwt-filters.tex, idwt-interleaving.tex, idwt-intro.tex, idwt-lifting.tex, idwt-padremoval.tex, idwt-synthesis.tex, idwt-vhsynthesis.tex, idwt.tex, intro-docstruct.tex, intro-purpose.tex, intro-scope.tex, layout-fullsize.tex, logicalstruct-accessunit.tex, logicalstruct-arithcoding.tex, logicalstruct-blocks.tex, logicalstruct-coordinates.tex, logicalstruct-dwt.tex, logicalstruct-frameordering.tex, logicalstruct-frames.tex, logicalstruct-globalmc.tex, logicalstruct-intro.tex, logicalstruct-localmc.tex, logicalstruct-parseunit.tex, logicalstruct-sequence.tex, logicalstruct-subbands.tex, logicalstruct-superblocks.tex, logicalstructs.tex, mc-alg.tex, mc-blockcoverage.tex, mc-chomascaling.tex, mc-impl.tex, mc-intro.tex, mc-obmc-matrix.tex, mc-precision.tex, mc-pred.tex, mc-upconvert.tex, motion-dec.tex, parsediagrams.tex, prep-idwt-codeblk-dim.tex, prep-idwt-codeblk-process.tex, prep-idwt-coef-process.tex, prep-idwt-conventions.tex, prep-idwt-ctxt-init.tex, prep-idwt-ctxt-magnitude.tex, prep-idwt-ctxt-quantindex.tex, prep-idwt-ctxt-sign.tex, prep-idwt-ctxt-skip.tex, prep-idwt-pred-dc.tex, prep-idwt-process.tex, prep-idwt.tex, prep-mc-ctxt-init.tex, prep-mc-decode-blkmotion.tex, prep-mc-decode-dc.tex, prep-mc-decode-mv.tex, prep-mc-decode-predictionmode.tex, prep-mc-decoding.tex, prep-mc-mbdata.tex, prep-mc-predapeature.tex, prep-mc-predictionmodes.tex, prep-mc-predmbcommon.tex, prep-mc-predmbglobal.tex, prep-mc-predmbsplit.tex, ref-default-videoparams.tex, ref-quantization-lut.tex, semantics-auh.tex, semantics-dwt.tex, semantics-intro.tex, semantics-mv.tex, semantics.tex, spec-conventions.tex, spec-structure.tex, state-macros.tex, wlt-dec.tex: Removing a whole load of cruft files. Bug fixes. 2006-09-12 12:18 tjdwave * doc/latex_spec/state-macros.tex: [no log message] 2006-09-12 10:00 tjdwave * doc/latex_spec/ref-default-videoparams.tex: Completed tables - added various decoding presets too. 2006-09-12 09:59 tjdwave * doc/latex_spec/sourcepresets.tex: This contains the presets for the source parameters. This needs to be merged with the video systems model section. 2006-09-12 09:58 tjdwave * doc/latex_spec/vidsys.tex: Slightly revised - to be merged with source parameters presets. 2006-09-12 09:56 tjdwave * doc/latex_spec/: idwt.tex, mc.tex, picture-dec.tex: Finished first draft of overall picture decoding process. Added stuff on global motion compensation (_probably_ works now). 2006-09-12 09:54 tjdwave * doc/latex_spec/: bs-spec.tex, motion-dec.tex, wlt-dec.tex: Created unified chapter files for parsing elements. Completed overall stream syntax chapter. 2006-09-12 09:52 tjdwave * doc/latex_spec/: arith.tex, dataenc.tex: Unified data access files into chapter files. 2006-09-12 09:51 tjdwave * doc/latex_spec/: dirac-concepts.tex, parsing.tex: Restructured part structure files. 2006-09-12 09:48 tjdwave * doc/latex_spec/spec-conventions.tex: Updated/added material on the way the pseudocode works and the mathematical notation. This section still needs work and reordering. 2006-09-12 09:45 tjdwave * doc/latex_spec/intro.tex: Revised and unified the general introduction. 2006-09-12 09:44 tjdwave * doc/latex_spec/spec-structure.tex: Revised overall document structure. 2006-09-12 09:42 tjdwave * doc/latex_spec/parsediagrams.tex: Added parse diagrams as an appendix. 2006-08-24 10:32 tjdwave * doc/latex_spec/: decoding-ops.tex, idwt.tex, state-macros.tex: Updated inverse wavelet transform section. Introduced Haar variants and added a fidelity filter. 2006-08-21 13:33 tjdwave * doc/latex_spec/: arith.tex, bs-spec.tex, dataenc.tex, decoding-ops.tex, layout-fullsize.tex, mc.tex, motion-dec.tex, parsing.tex, spec-structure.tex, state-macros.tex, wlt-dec.tex: Done motion data decoding and motion compensation. Amalgamated file contents to simplify structure. 2006-08-11 15:51 tjdwave * libdirac_common/: golomb.cpp, golomb.h: Functionality is now provided in the Byte IO library. ---------------------------------------------------------------------- 2006-07-28 14:33 tjdwave * libdirac_common/common.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_encoder/dirac_encoder.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h: Removed the Macroblock "Common" mode. This means that each prediction unit within a macroblock will have to code a mode. Motion data coding has also been changed so that instead of coding all the prediction modes first and then all the motion data, prediction modes are included in the motion data as per the spec. An updated version of the latex spec in which the Common mode is omitted is in preparation and will be committed in the next couple of weeks. 2006-07-19 12:29 tjdwave * doc/latex_spec/prep-idwt-process.tex: Added initialisation of the coefficient_reset variable. 2006-07-19 12:19 tjdwave * doc/latex_spec/: arith-contexts.tex, arith-decoder-sint.tex, dataenc-vlc-segol.tex, decoding-ops.tex, intro-docstruct.tex, parsing.tex, prep-idwt-coef-process.tex, state-macros.tex, figs/block-coverage.eps, figs/obmc-profile.eps: Mods to interface with arithmetic coding changes. 2006-07-19 11:48 tjdwave * doc/latex_spec/: arith-contexts.tex, arith-datainput.tex, arith-decoder-sint.tex, arith-decoder.tex, arith-engine.tex, arith-init.tex, arith-intro.tex, arith-update.tex, arith.tex: Refactored to take account of exp-Golomb binarisation and the use of global context indices being passed to arithmetic decoding operations. 2006-07-18 11:36 tjdwave * libdirac_common/: band_codec.cpp, band_codec.h: Changed nhood sum calculation so that it only takes account of whether the neighbour is zero or not. 2006-07-07 15:07 tjdwave * encoder/encmain.cpp: Fixed bug with framerate denominator being incorrectly set if omitted. 2006-07-07 12:14 tjdwave * doc/latex_spec/: intro-docstruct.tex, mc-intro.tex, mc-upconvert.tex, mc.tex: Debugging commit. 2006-07-07 12:07 tjdwave * doc/latex_spec/: arith-contexts.tex, arith.tex, bs-spec.tex, bs-syntax.tex, decoding-ops.tex, idwt.tex, prep-idwt-coef-process.tex, prep-idwt-conventions.tex, prep-idwt-ctxt-quantindex.tex, prep-idwt-process.tex, prep-idwt.tex, spec-structure.tex, state-macros.tex, wlt-dec.tex, figs/block-coverage.eps, figs/block-offset.eps, figs/block.eps, figs/dwt.eps, figs/frame-ordering.eps, figs/obmc-profile.eps, figs/sequence.eps, figs/superblock-16pu.eps, figs/superblock-1pu.eps, figs/superblock-4pu.eps: Updated and refactored data access and coefficient decoding sections. Spec should be up to date and accurate for coefficient decoding, but fine-tuning and checking is required. Diagrams also needed. Major change is in the way arithmetic decoding operations are called. Just specify sets of contexts to be used for follow bits, data bits and the sign by passing indices into the state variable, which maintains the contexts. This simplifies the code in the stream syntax, avoiding local copies etc. Explanation will be required for the context indices. The arithmetic decoding section needs updating to reflect this change and use of interleaved exp- Golomb coding. 2006-07-07 08:56 tjdwave * doc/latex_spec/layout-fullsize.tex: Added temporary environment pseudo* for documenting _part_ of a function's pseudocode (no function header). Fixed bug where \bsRET reduces indent by 1 - this broke indentation when there were a number of returns in a function. 2006-07-06 12:29 tjdwave * libdirac_common/: band_codec.cpp, band_codec.h: Changed coding of codeblock quantiser indices to be differential codeblock to codeblock, as per Tim's stream syntax, rather than differential with respect to the subband quantiser index. N.B. this now does not agree with version 0.9. 2006-07-03 14:57 tjdwave * doc/latex_spec/: arith-contexts.tex, arith-datainput.tex, arith-decoder-ba.tex, arith-decoder-sint.tex, arith-intro.tex: Initial update to take account of exp-Golomb binarisation. 2006-07-03 14:00 tjdwave * doc/latex_spec/arith-decoder-sint.tex: Adding to update to exp-Golomb binarisation. 2006-07-03 13:15 tjdwave * doc/latex_spec/: dataenc-bool.tex, dataenc-input.tex, dataenc-intro.tex, dataenc-nbitlit.tex, dataenc-nbytelit.tex, dataenc-vlc-segol.tex, dataenc-vlc-su.tex, dataenc-vlc-uegol.tex, dataenc-vlc-ut.tex, dataenc-vlc.tex, dataenc.tex: Brought up-to-date to do interleaved exp-Golomb coding. Included a section on bit-packing and reading conventions. To Do: Need to align with arithmetic decoding section. 2006-07-03 10:08 tjdwave * doc/latex_spec/: layout-fullsize.tex, state-macros.tex: Adding shortcuts for decoder state values/variables. This means we can change format, or introduce new paramater classes by (mostly) modding modding only state-macros.tex. 2006-06-29 15:11 asuraparaju * libdirac_common/: wavelet_utils.cpp, wavelet_utils.h, common.cpp: Defined new Wavelet Filter class VHFilterHaar to include HAAR filter support in Dirac. 2006-06-27 18:26 asuraparaju * README: Include explanation for new encoder command line variables iwlt_filter and rwlt_filter. 2006-06-27 18:17 asuraparaju * doc/documentation/code/programmers_guide/encoder_data_structs.htm: Reflect changes to dirac_encparams_t struct to which two fields have been added. These fields specify the wavelet filters to use for intra frames and inter frames. 2006-06-26 17:44 asuraparaju * encoder/encmain.cpp: [Spec Compliance] Include command line arguments to process non-default transform filters for intra and inter frames. 2006-06-26 17:43 asuraparaju * unit_tests/motion_comp_test.cpp: Ensure that the number of reference frames is specified when creating a CodecParams object. 2006-06-26 17:43 asuraparaju * libdirac_encoder/: dirac_encoder.cpp, dirac_encoder.h, frame_compress.cpp: [Spec Compliance] Use transform filters supplied in the command line arguments to encoder utility to set the transform filter in CodecParams while encoding based on frame type. Set up the default frame weight and precision parameters correctly based on frame type and number of references. 2006-06-26 17:40 asuraparaju * libdirac_common/: video_format_defaults.cpp, video_format_defaults.h: [Spec Compliance] Added functions to return the default transform filter based on frame type. The default frame weight and frame precision parametes are correctly set based on the frame type and number of references. 2006-06-26 17:39 asuraparaju * libdirac_common/: common.cpp, common.h: [Spec Compliance] Handle non-default frame weights. Include member variables in EncoderParams to store the transform filters for inter frame and intra frames supplied so that they can be used while encoding. 2006-06-26 17:38 asuraparaju * libdirac_byteio/mvdata_byteio.cpp, libdirac_byteio/transform_byteio.cpp, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h: [Spec Compliance] Handle non-default frame weights. 2006-06-23 15:17 tjdwave * doc/latex_spec/layout-fullsize.tex: Created unified style for syntax and semantics called pseudo. No longer uses typewriter font - Roman instead. 2006-06-23 10:41 tjdwave * doc/latex_spec/: arith-intro.tex, arith.tex, bs-spec.tex, dataenc-intro.tex, dataenc.tex, decoding-ops.tex, dirac-concepts.tex, dirac-overview.tex, idwt-intro.tex, idwt.tex, logicalstructs.tex, mc-intro.tex, mc.tex, motion-dec.tex, parsing.tex, picture-dec.tex, semantics.tex, spec-conventions.tex, spec-structure.tex, stream-access.tex, wlt-dec.tex: Reorganised so that file input is hierarchical, to make simultaneous working easier. 2006-06-23 08:48 tjdwave * doc/latex_spec/: bs-syntax.tex, layout-fullsize.tex: Moved streamsyntax environment definition into layout-fullsize.tex so that it's available to all input files. 2006-06-22 12:42 asuraparaju * doc/specification.html: Included links to latest Stream Syntax Document and Specification Document. 2006-06-22 10:13 tjdwave * doc/latex_spec/: intro-docstruct.tex, spec-structure.tex: Tentative revision of the specification structure. A rationale is contained in intro-docstruct.tex. 2006-06-22 09:02 tjdwave * doc/latex_spec/figs/: block-coverage.eps, block-coverage.fig, block.eps, block.fig, Makefile, block-offset.eps, block-offset.fig, dwt.eps, dwt.fig, frame-ordering.eps, frame-ordering.fig, obmc-profile.eps, obmc-profile.fig, sequence.eps, sequence.fig, stream.fig, superblock-16pu.eps, superblock-16pu.fig, superblock-1pu.eps, superblock-1pu.fig, superblock-4pu.eps, superblock-4pu.fig, wavelet-transform-process.fig: Adding in diagrams. 2006-06-22 08:57 tjdwave * doc/latex_spec/tools/: framed.sty, listings.zip, mkdep.pl: Additional latex spec commits. 2006-06-22 08:54 tjdwave * doc/latex_spec/: Makefile, abstract.tex, arith-contexts.tex, arith-datainput.tex, arith-decoder-ba.tex, arith-decoder-impl.tex, arith-decoder-sua.tex, arith-decoder-tua.tex, arith-decoder-uua.tex, arith-decoder.tex, arith-encoder.tex, arith-engine.tex, arith-init.tex, arith.tex, begin-bs.tex, begin-compmethods.tex, begin-dwt-fwd.tex, begin-dwt-parentchild.tex, begin-dwt.tex, begin-ec-dwt.tex, begin-ec-mc.tex, begin-ec.tex, begin-mc-accuracy.tex, begin-mc-blocks.tex, begin-mc-global.tex, begin-mc-intra.tex, begin-mc.tex, begin-more.tex, begin-pictypes.tex, begin-videocoding.tex, bs-intro.tex, bs-semantics.tex, bs-syntax.tex, coder-intro.tex, conv-bs-bytealign.tex, conv-bs-defaults.tex, conv-bs-reading.tex, conv-intro.tex, conv-parse-diagnums.tex, conv-parse-diagrams.tex, conv-pseudocode-syntax.tex, conv-pseudocode.tex, dataenc-bool.tex, dataenc-nbitlit.tex, dataenc-nbytelit.tex, dataenc-vlc-segol.tex, dataenc-vlc-su.tex, dataenc-vlc-uegol.tex, dataenc-vlc-ut.tex, dataenc-vlc-uu.tex, dataenc-vlc.tex, dataenc.tex, gendec.tex, idwt-1dsynthesis.tex, idwt-filters.tex, idwt-interleaving.tex, idwt-lifting.tex, idwt-padremoval.tex, idwt-synthesis.tex, idwt-vhsynthesis.tex, idwt.tex, intro-docstruct.tex, intro-purpose.tex, intro-scope.tex, layout-fullsize.tex, logicalstruct-accessunit.tex, logicalstruct-arithcoding.tex, logicalstruct-blocks.tex, logicalstruct-coordinates.tex, logicalstruct-dwt.tex, logicalstruct-frameordering.tex, logicalstruct-frames.tex, logicalstruct-globalmc.tex, logicalstruct-intro.tex, logicalstruct-localmc.tex, logicalstruct-parseunit.tex, logicalstruct-sequence.tex, logicalstruct-subbands.tex, logicalstruct-superblocks.tex, mc-alg.tex, mc-blockcoverage.tex, mc-chomascaling.tex, mc-impl.tex, mc-obmc-matrix.tex, mc-precision.tex, mc-pred.tex, mc-upconvert.tex, mc.tex, prep-idwt-codeblk-dim.tex, prep-idwt-codeblk-process.tex, prep-idwt-coef-process.tex, prep-idwt-conventions.tex, prep-idwt-ctxt-init.tex, prep-idwt-ctxt-magnitude.tex, prep-idwt-ctxt-quantindex.tex, prep-idwt-ctxt-sign.tex, prep-idwt-ctxt-skip.tex, prep-idwt-pred-dc.tex, prep-idwt-process.tex, prep-idwt.tex, prep-mc-ctxt-init.tex, prep-mc-decode-blkmotion.tex, prep-mc-decode-dc.tex, prep-mc-decode-mv.tex, prep-mc-decode-predictionmode.tex, prep-mc-decoding.tex, prep-mc-mbdata.tex, prep-mc-predapeature.tex, prep-mc-predictionmodes.tex, prep-mc-predmbcommon.tex, prep-mc-predmbglobal.tex, prep-mc-predmbsplit.tex, ref-default-videoparams.tex, ref-quantization-lut.tex, semantics-auh.tex, semantics-dwt.tex, semantics-intro.tex, semantics-mv.tex, spec-structure.tex, vidsys-aspect.tex, vidsys-colour.tex, vidsys-colourmatrix.tex, vidsys-colourprimaries.tex, vidsys-framerate.tex, vidsys-sigrange.tex, vidsys-transfer.tex, vidsys.tex: Initial commit of Latex port of draft specification. 2006-06-19 18:35 asuraparaju * libdirac_common/: common.cpp, mot_comp.cpp, mot_comp.h, mot_comp_mmx.cpp, mot_comp_mmx.h: [Spec Compliance] Ensure that block overlaps in x and y direction are integral powers of 2. Make the OBMC weights calculation truly linear. 2006-06-19 18:34 asuraparaju * libdirac_decoder/frame_decompress.cpp, libdirac_encoder/seq_compress.cpp: Replace std::pow operation with left bit-shift operator 2006-06-19 12:27 asuraparaju * libdirac_byteio/: byteio.h, mvdata_byteio.cpp: Fix for bug#1508532. Ensure that m_current_byte is re-initialised to 0 in the ouput byte alignment function ByteIO::OutputCurrentByte. 2006-06-16 12:07 asuraparaju * doc/: contact.html, documentation.html, faq.html, getting_involved.html, index.html, licenses.html, overview.html, soc2006.html, soc2006_ideas.html, specification.html, template2.html, todo.html, documentation/algorithm/algorithm/intro.htm: Ensure that links to Browse CVS on Sourceforge work correctly. 2006-06-16 11:38 asuraparaju * doc/documentation.html: Ensuring that named anchors work properly. 2006-06-16 11:37 asuraparaju * doc/documentation/code/programmers_guide/: common_data_structs.htm, decoder_api_example.htm, decoder_api_functions.htm, decoder_api_overview.htm, decoder_api_reference.htm, decoder_data_structs.htm, encoder_api_example.htm, encoder_api_functions.htm, encoder_api_overview.htm, encoder_api_reference.htm, encoder_data_structs.htm, encoding.htm, index.htm, input_formats.htm, intro.htm, overview.htm, software.htm: Updated data structs and functionality description for Dirac Codec V0.6.0 2006-06-13 12:58 asuraparaju * ChangeLog: [no log message] 2006-06-13 12:56 asuraparaju * NEWS: Updated with 0.6.0 release notes. 2006-06-13 12:35 asuraparaju * extras/patches/: README_ffmpegsvn_trunk_revision_5470-dirac-0.6.x_patch, ffmpegsvn_trunk_revision_5470-dirac-0.6.x.patch: Dirac 0.6.0 patch and install notes for ffmpeg svn revision 5470. 2006-06-13 12:34 asuraparaju * extras/patches/: MPlayer-1.0pre7try2_dirac-0.6.x.patch, README_MPlayer-1.0pre7try2_dirac-0.6.x_patch: Dirac 0.6.0 patch and install notes for MPlayer release MPlayer-1.0pre7try2. 2006-06-13 10:07 timborer * libdirac_common/: arith_codec.h, mv_codec.cpp, mv_codec.h: Added En/DecodeUInt and En/DecodeSInt functions to the arithmetic codec class. These functions read and write signed and unsigned integers in a unified way. They are used to replace the acres of duplicated code in mv_codec.cpp. This change also had the happy side effect of removing the need for a whole slew of chooseXXX functions used for selecting the arithmetic coding context. 2006-06-12 16:24 stuart_hc * libdirac_decoder/frame_decompress.cpp: whitespace cleanup (corrected stray CRLF line-ending to LF) 2006-06-12 13:11 asuraparaju * libdirac_common/common.h, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/frame_compress.cpp: Use enumerated values for number of motion vector contexts and coefficient contexts instead of hardcoded constants. This helps in not having to change multiple files when the number of contexts changes. 2006-06-12 13:11 asuraparaju * libdirac_common/mv_codec.cpp: [Spec Compliance] Super block Split residual is no longer coded bit-wise but is now coded using truncated unary arithmetic coding. 2006-06-12 13:10 asuraparaju * libdirac_common/common.cpp, libdirac_common/video_format_defaults.cpp, libdirac_decoder/dirac_parser.cpp: [Spec Compliance] Ensure that Video format defaults are set as per spec 2006-06-12 10:06 tjdwave * libdirac_common/wavelet_utils.cpp: Fixed bug with setting weights for bands by depth - removed duplicate correction factor. 2006-06-08 17:55 asuraparaju * libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/common.h, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: [Spec compliance] Number of contexts in Bin 1 for a Non-zero parent reduced to two from three. 2006-06-08 16:19 asuraparaju * README, encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common_types.h, libdirac_common/video_format_defaults.cpp: Renamed SD_PAL and SD_NTSC video format names to 4CIF and 4SIF to avoid confusing them with the SD Digital video format names. 2006-06-08 16:14 asuraparaju * extras/dirac_dshow/src/: basesplitter/basesplitter.vcproj, diracsplitter/DiracSplitter.vcproj, diracsplitter/DiracSplitterFile.cpp: Fix path to header and libraries in project files. Modify code to handle chages to Dirac decoder logic. 2006-06-06 17:11 asuraparaju * win32/VS2003/: DiracDecoder/DiracDecoder.vcproj, DiracEncoder/DiracEncoder.vcproj, libdirac_byteio/libdirac_byteio.vcproj: Fix link errors. 2006-06-06 17:11 asuraparaju * util/instrumentation/libdirac_instrument/: draw_overlay.cpp, motion_arrows.cpp, sad.cpp: Fix for bug #1501636. Ensuring that we are not going past array boundaries. 2006-06-06 17:08 asuraparaju * unit_tests/motion_comp_test.cpp: Remove tests for frame equality after motion estimation because rounding errors can mean that the frames are not equal. However the frame equality is still tested after zero motion compensation. 2006-06-06 17:08 asuraparaju * libdirac_byteio/mvdata_byteio.cpp, libdirac_common/common.h: [Spec Compliance] Reference frame weights are now unsigned. 2006-06-06 17:08 asuraparaju * README: Updated the encoder command line argument list 2006-06-05 16:00 asuraparaju * configure.ac: Update release id to 0.6.0 2006-06-05 15:57 asuraparaju * util/instrumentation/libdirac_instrument/: draw_overlay.cpp, motion_arrows.cpp, motion_colour.cpp, motion_colour_arrows.cpp, overlay.cpp, pred_mode.cpp, sad.cpp, split_mode.cpp: [Spec compliance] Ensure that the instrumentation utility works for true 8 bit data. Note that there is no support at present for non-8bit data. 2006-06-05 15:56 asuraparaju * util/instrumentation/instrmain.cpp: Read video depth from diagnostics input file. 2006-06-05 15:55 asuraparaju * libdirac_encoder/quality_monitor.cpp: [Spec compliance] Adjust lambda values to make them bit-depth agnostic. Tested only on 8 bit input data. Need to test and maybe adjust for other bit-depths. 2006-06-05 15:55 asuraparaju * libdirac_encoder/dirac_encoder.cpp: [Spec compliance] Default Video depth is 8 bits. 2006-06-05 15:55 asuraparaju * libdirac_decoder/: frame_decompress.cpp, frame_decompress.h, seq_decompress.cpp: [Spec compliance] Include Variable bit-depth support in FrameDecompressor class. 2006-06-05 15:54 asuraparaju * libdirac_common/: wavelet_utils.cpp, wavelet_utils.h, wavelet_utils_mmx.cpp: [Spec compliance] Accuracy bits are required in the wavelet analysis stage. The number of bits required depends on the transform depth. Shift the input data up 1 bit to the right to increase accuracy in the Analyis stage. Round the input data down by 1 bit in the Synthesis stage to counter the shift in the analysis stage. All rounding is unbiased irrespective of the number of bit it is rounded to. The perceptual weights are adjusted for each subband depending on the level of the subband. 2006-06-05 15:54 asuraparaju * libdirac_common/mot_comp.cpp, libdirac_common/pic_io.cpp, libdirac_decoder/dirac_parser.cpp, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils_mmx.cpp: [Spec Compliance] The input/output is always true bit depth specified by video-depth and not converted to 10 bit data internally. So no need to shift 8 bit data by two to convert it to 10 bits. 2006-06-05 15:53 asuraparaju * libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_encoder/seq_compress.cpp, unit_tests/frames_test.cpp, unit_tests/motion_comp_test.cpp: [Spec Compliance] Set Variable bit-depth in FrameBuffer classe to set up FrameParams class with variable bit-depth. 2006-06-05 15:53 asuraparaju * libdirac_common/: frame.cpp, frame.h: [Spec Compliance] Support for multiple video depths. Included functionality to clip upconverted data. 2006-06-05 15:53 asuraparaju * libdirac_common/: common_types.h, video_format_defaults.cpp: [Spec Compliance] Ensure that default parameters are correctly set for all video formats. Add enumerated types for D-Cinema video formats' parameters. Default motion vector precision has reverted to quarter pixel from half pixel. 2006-06-05 15:52 asuraparaju * libdirac_common/: common.cpp, common.h: [Spec Compliance] Add support for D-Cinema video formats. Include Variable bit-depth support in Frame Params. Used for clipping. Fix bug in calculating number of code blocks for different transform depths. 2006-06-05 15:52 asuraparaju * libdirac_common/arrays.h: [Spec Compliance] PIXEL_VALUE_MIN and PIXEL_VALUE_MAX no longer required as the min and max values are calculated based on the bit-depth of the input video. Fix indentation by replacing tabs with white space. 2006-06-05 15:51 asuraparaju * libdirac_byteio/transform_byteio.cpp: Fixed bug where the non-default wavelet filter flag was not being written to the bitstream when a non-default filter is used. 2006-06-05 15:51 asuraparaju * libdirac_byteio/seqparams_byteio.cpp: [Spec compliance] Throw an error if a video depth other than the default value of 8 is specified. 2006-06-05 15:51 asuraparaju * libdirac_byteio/frame_byteio.cpp: [Spec compliance] Actual picture number is stored in the picture header and not the offset from the Access unit picture number. Reference frame offsets and retired frame offsets are calculated from current picture number and not access unit header picture number. 2006-06-05 15:50 asuraparaju * libdirac_byteio/byteio.h: Fix warnings in doxygen documentation. 2006-06-05 15:50 asuraparaju * encoder/encmain.cpp: Write video depth to diagnostics output file. 2006-05-23 14:09 tjdwave * libdirac_encoder/quant_chooser.cpp: Changed initial index to 0 from 4, so that 8 bit video will be properly coded. 2006-05-22 10:56 tjdwave * libdirac_encoder/quality_monitor.cpp: Modified PSNR log to output a table for greater clarity. 2006-05-17 18:33 asuraparaju * unit_tests/: motion_comp_test.cpp, motion_comp_test.h: Change precision type in test prototype from int to MVPrecisionType. 2006-05-16 14:53 asuraparaju * libdirac_common/wavelet_utils_mmx.cpp: Changed the wavelet transform so that unbiased rounding is not used with a shift of 1 in the lifting stage to keep in line with the non-MMX optimised code. 2006-05-16 12:25 asuraparaju * libdirac_encoder/seq_compress.cpp: Fix g++ warnings 2006-05-16 12:24 asuraparaju * libdirac_encoder/quant_chooser.cpp: Minor mods to speed up error calculation. Overall improvement in encoding speed is about 4-5% for long gop Changed quantisation as per draft spec so that extra 2 bits accuracy apply to the quantisation offset. This helps at low quantisation factors particularly. 2006-05-16 12:24 asuraparaju * libdirac_encoder/: quality_monitor.cpp, quality_monitor.h: - Removed superfluous filtering function. - Computes PSNR instead of weighted 4th power metric; chroma PSNRs are also computed. 2006-05-16 12:24 asuraparaju * libdirac_encoder/frame_compress.cpp: Spec Compliance: - Setup default code blocks depending on whether frame type is intra or inter. 2006-05-16 12:23 asuraparaju * libdirac_encoder/dirac_encoder.h: Change type of mv_precision in dirac_encparams_t function to MVPrecisionType 2006-05-16 12:23 asuraparaju * libdirac_encoder/dirac_encoder.cpp: Spec Compliance: - Handle CodeBlockMode which replaces the multi-quantisers flag. - Set default spatial partition flag to false if wavelet depth is not set to the default value. 2006-05-16 12:23 asuraparaju * libdirac_decoder/frame_decompress.cpp: Spec Compliance - Throw error if Zero transform flag is set for Intra frames. - Handle Zero transform condition for inter frames. 2006-05-16 12:22 asuraparaju * libdirac_decoder/dirac_parser.h: The parser no longer returns STATE_PICTURE_START state. Modify the example in the doxygen documentation to reflect this. 2006-05-16 12:22 asuraparaju * libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h: Spec Compliance - multiple quantisers are used when code block mode is set to QUANT_MULTIPLE - All values are set to 0 if a block is skipped irrespective of whether is is a DC block or not. - Modified SetupCodeBlocks functions to use the default code blocks if default partitioning is enabled or values of from the bitstream for custom paritioning (only for decoder) 2006-05-16 12:21 asuraparaju * libdirac_common/: wavelet_utils.h, wavelet_utils_mmx.cpp: Implement unbiased rounding for the lifting stages in all wavelet filters. 2006-05-16 12:21 asuraparaju * libdirac_common/video_format_defaults.cpp: Spec compliance - Set up default Codec parameters to comply with spec. - Default motion vector precision is now Half Pixel. 2006-05-16 12:20 asuraparaju * libdirac_common/mv_codec.cpp: Spec compliance - Common Mode prediction function returns false for top left corner of block. - Block mode prediction function return INTRA instead of REF1_ONLY for the top left corner of a block - The sign flag is encoded/decoded as true if the value is negative. 2006-05-16 12:20 asuraparaju * libdirac_common/: mot_comp.cpp, mot_comp_mmx.cpp: Define MMX optimised version of Half Pixel block compensation function MotionCompensator_HalfPixel::CompensateBlock 2006-05-16 12:19 asuraparaju * libdirac_common/band_codec.cpp: Spec Compliance: - Code block skip flag encoded/decoded only if there is more than one code block in a subband - The sign flag is encoded/decoded as true if the value is negative. - Max number of quantisers increased to 97 (0..96). Throw an error if quantisation index exceeds this value while decoding. - Changed quantisation as per draft spec so that extra 2 bits accuracy apply to the quantisation offset. This helps at low quantisation factors particularly. 2006-05-16 12:19 asuraparaju * encoder/encmain.cpp: Print extra-information regarding encoder params used to encoding. E.g. motion vector precision, transform depth etc. 2006-05-16 12:18 asuraparaju * libdirac_byteio/transform_byteio.cpp: Spec compliance: - Zero transform flag applies only to Intra frames. - Read/write code blocks from/to bitstream if Default spatial partitioning is disabled. Throw error when non-default transform depth is specified but default spatial partitioning is set. - Replace Multiple quantisers flag with Code block mode enumerated type. 2006-05-16 12:18 asuraparaju * libdirac_common/common_types.h: New enumerated type to handle CodeBlockMode which replaces the binary Multiple quantisers flag. 2006-05-16 12:17 asuraparaju * libdirac_common/: common.cpp, common.h: Spec Compliance: New class CodeBlocks for handling code blocks. In CodecParams class - change type of m_mv_precision to MVPrecisionType - change type of m_wlt_depth to unsigned - replace m_multi_quants flag with CodeBlockMode enumerated type. - New member variable and member functions to handle CodeBlocks In QuantisersLists class - Add a new member variable m_max_qindex to set the max val of quantiser index that can be handled by the decoder. 2006-05-15 12:45 asuraparaju * libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: Fix bug in specifying number of contexts. The number should be 23 and not 22 as previously specified. 2006-05-15 12:43 asuraparaju * libdirac_common/: mv_codec.cpp, mv_codec.h: [Thomas's changes] Changed coding of MB split so that it's bitwise, with bitwise prediction. This is more efficient and is consistent with coding prediction modes. 2006-05-15 12:43 asuraparaju * libdirac_common/common.h: [Thomas's changes] Changed coding of MB split so that it's bitwise, with bitwise prediction. This is more efficient and is consistent with coding prediction modes. Changed quantisation to give 2 bits of accuracy to quantisation factors. This improves performance in high-quality applications, and reduces large steps in quality. 2006-05-15 12:42 asuraparaju * libdirac_common/common.cpp, libdirac_encoder/quant_chooser.cpp: [Thomas's changes] Changed quantisation to give 2 bits of accuracy to quantisation factors. This improves performance in high-quality applications, and reduces large steps in quality. 2006-05-15 12:42 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: [Thomas's changes] Changed quantisation to give 2 bits of accuracy to quantisation factors. This improves performance in high-quality applications, and reduces large steps in quality. Fixed bug with multiple code blocks changing m_cutoff_point repeatedly. 2006-05-04 09:45 tjdwave * libdirac_common/band_codec.cpp, libdirac_common/common.h, libdirac_common/mv_codec.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: Rationalised arithmetic coding contexts and tidied code. Coefficient coding now covers bins 1-4 individually for "follow/continue bits". There are also separate info contexts for the case where the parent is zero/non-zero. 2006-05-03 17:05 asuraparaju * doc/: browser_compatibility.html, contact.html, documentation.html, faq.html, getting_involved.html, index.html, licenses.html, overview.html, soc2006.html, soc2006_ideas.html, specification.html, todo.html: Include links and details of Dirac participation in Google's Summer of Code 2006 program. 2006-04-26 16:06 asuraparaju * doc/faq.html: Fixed a typo. 2006-04-26 15:59 asuraparaju * tests/samples.at: Set luma block size values depending on the preset value. 2006-04-21 14:59 dirac_dev * encoder/encmain.cpp: Prevents user from specifying more than 5 wavlet transforms 2006-04-21 14:20 dirac_dev * encoder/encmain.cpp, libdirac_byteio/mvdata_byteio.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/common_types.h, libdirac_common/dirac_exception.h, libdirac_common/mot_comp.cpp, libdirac_common/video_format_defaults.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/frame_compress.cpp, libdirac_motionest/me_mode_decn.cpp: Added in variable motion-vector precision. Can now be controlled from the command-line. Default is quarter pixel. 2006-04-21 10:23 asuraparaju * libdirac_common/band_codec.cpp, libdirac_common/common.h, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: Differential quantiser index is now coded using arithmetic signed multiplexed exp Golomb binarisation to conform with spec. Added contexts to list of contexts to support this in common.h. 2006-04-20 16:39 asuraparaju * libdirac_byteio/: byteio.cpp, byteio.h, displayparams_byteio.cpp, frame_byteio.cpp, mvdata_byteio.cpp, parseparams_byteio.cpp, parseunit_byteio.cpp, seqparams_byteio.cpp, subband_byteio.cpp, transform_byteio.cpp: Replaced exp-Golomb coding with interleaved exp-Golomb coding to conform with spec. Fixed-length values (like access unit picture number, parser offset) are now written out in Big-Endian order to conform with spec. Renamed coding functions to reflect whether they are coding fixed length values or variable length values. 2006-04-20 11:45 asuraparaju * libdirac_byteio/Makefile.am: Missed this file in the previous commit. It is part of the major restructure to Dirac bytestream I/O. 2006-04-20 11:41 asuraparaju * Makefile.am, README, configure.ac, decoder/decmain.cpp, doc/documentation/code/api/dirac_api.doxygen, encoder/encmain.cpp, extras/dirac_dshow/src/diracsplitter/DiracSplitter.cpp, extras/dirac_dshow/src/diracsplitter/DiracSplitter.vcproj, extras/dirac_dshow/src/diracsplitter/DiracSplitterFile.cpp, extras/dirac_dshow/src/diracsplitter/stdafx.h, libdirac_byteio/accessunit_byteio.cpp, libdirac_byteio/accessunit_byteio.h, libdirac_byteio/byteio.cpp, libdirac_byteio/byteio.h, libdirac_byteio/component_byteio.cpp, libdirac_byteio/component_byteio.h, libdirac_byteio/dirac_byte_stats.cpp, libdirac_byteio/dirac_byte_stats.h, libdirac_byteio/dirac_byte_stream.cpp, libdirac_byteio/dirac_byte_stream.h, libdirac_byteio/displayparams_byteio.cpp, libdirac_byteio/displayparams_byteio.h, libdirac_byteio/endofsequence_byteio.cpp, libdirac_byteio/endofsequence_byteio.h, libdirac_byteio/frame_byteio.cpp, libdirac_byteio/frame_byteio.h, libdirac_byteio/mvdata_byteio.cpp, libdirac_byteio/mvdata_byteio.h, libdirac_byteio/parseparams_byteio.cpp, libdirac_byteio/parseparams_byteio.h, libdirac_byteio/parseunit_byteio.cpp, libdirac_byteio/parseunit_byteio.h, libdirac_byteio/seqparams_byteio.cpp, libdirac_byteio/seqparams_byteio.h, libdirac_byteio/subband_byteio.cpp, libdirac_byteio/subband_byteio.h, libdirac_byteio/transform_byteio.cpp, libdirac_byteio/transform_byteio.h, libdirac_common/Makefile.am, libdirac_common/arith_codec.cpp, libdirac_common/arith_codec.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/common_types.h, libdirac_common/dirac_exception.cpp, libdirac_common/dirac_exception.h, libdirac_common/dirac_types.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/mot_comp.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/video_format_defaults.cpp, libdirac_common/video_format_defaults.h, libdirac_common/wavelet_utils.cpp, libdirac_decoder/Makefile.am, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/dirac_cppparser.cpp, libdirac_decoder/dirac_cppparser.h, libdirac_decoder/dirac_parser.cpp, libdirac_decoder/dirac_parser.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quant_chooser.cpp, libdirac_encoder/quant_chooser.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp, tests/samples.at, unit_tests/frames_test.cpp, unit_tests/motion_comp_test.cpp, util/instrumentation/instrmain.cpp, util/instrumentation/process_sequence.cpp, util/instrumentation/libdirac_instrument/overlay.cpp, win32/VS2003/Makefile.am, win32/VS2003/dirac.sln, win32/VS2003/ConversionUtils/libconv_common/libconv_common.vcproj, win32/VS2003/DiracDecoder/DiracDecoder.vcproj, win32/VS2003/DiracEncoder/DiracEncoder.vcproj, win32/VS2003/EncodeDirac/EncodeDirac.vcproj, win32/VS2003/libdirac_byteio/libdirac_byteio.vcproj, win32/VS2003/libdirac_common/libdirac_common.vcproj: Major restructure of Input/Output classes in Dirac internals. New directory, libdirac_byteio contains classes to input from/output to a Dirac bistream. Dirac external API (both encoder and decoder) has changed. So the patches for MPlayer, FFmpeg, and the Dirac Directshow filter will no longer work with the CVS source. The external API is likely to change over the next few weeks. Updated versions of the patches and Direcshow filter will be available with the next release of Dirac. NOTE: the bytestream has changed to largely conform to the latest Dirac spec. More work needs to be done to conform fully to the Dirac definition document. So expect the CVS source and resulting bitstream to change frequently over the next few weeks. 2006-04-18 11:18 tjdwave * libdirac_common/arith_codec.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/common.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/frame_compress.cpp: Changing binarisation for arithmetic coding, and associated contexts. The specification will be modified accordingly. Binarisation for the magnitude values of wavelet coefficients, motion vector prediction residues and DC values has been changed from unary to interleaved exp-Golomb so that the number of symbols to be decoded in order to reconstruct a coefficient is reduced. Exp-Golomb binarisation takes a number N>=0 and codes it via the binary representation of N+1, 1bbbbbb. If there are K bits following the leading 1, the representation is K zeroes followed by the binary representation: 00...01bbbbb Interleaved exp-Golomb is the same, except that the K lsbs are interleaved with the zeroes: 0b0b 0b1 so that a single decoding loop can be used. The zeroes here act as "follow bits" indicating that another bit is to be sent, with 1 as the terminator. Contexts for coding these symbols are selected for the follow bits and other bits ("information bits") separately. Compression performance is hardly affected, nor is speed performance in software, but hardware performance is greatly facilitated. 2006-04-12 16:06 tjdwave * libdirac_common/arith_codec.h: Changed while loops for decoding and encoding into fixed-size for-loops with break conditions. Although ugly, this provides safer code as loops will terminate if there's an error. 2006-04-11 12:23 asuraparaju * unit_tests/motion_comp_test.cpp: Set number of references in MvData constructor to fix compilation errors. 2006-04-10 11:13 tjdwave * libdirac_common/band_codec.cpp: Changed lookup table-based division to a straight division. This is slightly slower, but will scale to higher levels of wavelet decomposition. Also eliminates bug with occasional wrap-around for lossless coding on some pictures. Making abs_val 64 bits would also work but could be equally slow on 32 bit architectures. 2006-03-20 12:54 asuraparaju * encoder/encmain.cpp, libdirac_encoder/dirac_encoder.cpp: Fixed bug in writing instrumentation data to output which always assumed that data for two references were available. 2006-03-17 18:04 timborer * libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/pixel_match.cpp, util/instrumentation/process_sequence.cpp: Changed block mode coding so that residues for reference 2 are not generated when we are only using one reference. THIS CHANGES THE BYTESTREAM This reduces the bit rate by a few bits, but the reason for doing it is becuase it makes the codec more logical. Also modified BlockModePrediction so that it doesn't do a prediction for reference 2 when we are only using one reference. Removed some unnecessary memory allocation in MvData constructor. Removed a few warning messages and tidied up a bit. 2006-03-01 18:19 asuraparaju * libdirac_common/: arith_codec.cpp, arith_codec.h: Rationalised types used i.e. replaced all code_t, calc_t etc with unsigned int. Simplified the code by removing one addition and shift from DecodeSymbol. 2006-02-28 15:53 asuraparaju * libdirac_common/arith_codec.cpp: Fixed g++ warning when compiled in debug mode 2006-02-28 15:29 asuraparaju * libdirac_common/Makefile.am, win32/VS2003/libdirac_common/libdirac_common.vcproj: Added arith_codec.cpp to list of .cpp files 2006-02-28 15:25 asuraparaju * libdirac_common/: arith_codec.cpp, arith_codec.h: Refactored code to make implementation easier to understand. The code restructure modified the bitstream but older version of arith_codec can decode this new version and vice-versa. 2006-02-21 13:32 tjdwave * libdirac_common/arith_codec.h: Modified arithmetic coding engine for speed and spec conformance. 1. Changed context statistics so that maximum weight is 256 2. Changed look-up table so that inverse of weight is calculated to 16 instead of 31 bits. 3. Changed scaled count of zero m_prob0 so that it's 16 bits instead of 10 Changes 1-3 mean that m_prob0 can be worked out using only 16 bit multiplies and no bitshift. This is more hardware friendly. 4. Modified do .. while loop for encoding and decoding so that a more efficient test for MSB equality can be used, resulting in a speed-up 5. Changed the order of decoding so that bits are shifted in first and then the symbol is determined. This reduces unnecessary bit inputs and moves to a 'lazy' input mode 6. Changed the statistics update function so that m_prob0 is calculated for every update rather than every other. This speeds up the code and gives better compression performance. 2006-02-15 14:27 asuraparaju * tests/samples.at: Included block variables so that tests can be run for different block sizes. Note that the block sizes must be changed manually before running the tests. 2006-02-15 14:26 asuraparaju * libdirac_motionest/: me_utils.cpp, me_utils_mmx.cpp, pixel_match.cpp: Padding related changes. Since there may no longer be an integer number of whole macroblocks and blocks in a paddied picture, made changes to ensure that we do not fall off the boundaries of the padded pictured during motion estimation. WARNING : This changes the bitstream 2006-02-15 14:24 asuraparaju * libdirac_common/: mot_comp.cpp, mot_comp.h, mot_comp_mmx.cpp, mot_comp_mmx.h: A linear function is used to calculate the OBMC weights instead of a raised cosine function to make it compliant with spec. Also motion compensation is performed only on true picture dimensions and not padded picture dimensions, WARNING : This changes the bitstream 2006-02-15 14:23 asuraparaju * libdirac_common/common.cpp: Modified CodecParams.SetBlockSizes function to be compliant with spec. WARNING : This changes the bitstream 2006-02-15 14:21 asuraparaju * libdirac_common/common.h, libdirac_common/frame.cpp, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/seq_compress.cpp, unit_tests/frames_test.cpp, unit_tests/motion_comp_test.cpp: Currently a frame is padded so that it has an integer number of whole macro blocks and is also a multiple of 2^(wavelet transform depth). This has changed in the Dirac specification where a frame is padded so that its dimensions are a multiple of 2^(wavelet transform depth) only. Also the luma and the chroma components can be padded differently. E.g. the luma dimensions may be a perfect multiple of 2^(wavelet transform depth) so the luma component is not padded but the chroma component may need to be padded depending on the chroma format of the input. To take care of this, FrameParams class has been modified to accept both padded chroma and padded luma dimensions. WARNING! This modifies the bitstream. 2006-02-14 12:48 tjdwave * libdirac_common/arith_codec.h: Changed count rescaling so that it occurs every time a bit is encoded/decoded. This is to make compliant with spec, and also because doing it every other bit was giving no speed advantage. WARNING! This changes the bitstream. 2006-02-10 09:49 tjdwave * libdirac_common/common.cpp: Modified calculation of quantisation, inverse quantisation and offset values so as to conform to specification. WARNING: this modifies the bitstream. 2006-02-09 13:58 tjdwave * libdirac_common/: motion.h, mv_codec.cpp: Removed the function for computing a mean of a vector of ints. Instead all means are of unsigned int values, and are calculated using unbiased arithmetic ie with an offset of N/2 for N values to ensure even rounding. This changes the mean used for predicting DC values in motion vector coding. As a result, the bitstream is also changed. 2006-01-06 15:56 tjdwave * libdirac_common/mv_codec.cpp: Changed refresh so that statistics are refreshed after m_reset_num macroblocks as intended, rather than m_reset_num+1. WARNING! This changes the bitstream. 2006-01-06 15:22 asuraparaju * libdirac_motionest/me_utils.cpp: Fixed bug#1383890. Applied patch supplied in bug report. 2005-12-07 12:50 asuraparaju * doc/specification.html: Link to Dirac specification document 2005-12-07 11:34 asuraparaju * doc/: contact.html, documentation.html, faq.html, getting_involved.html, index.html, licenses.html, overview.html, template2.html, todo.html: Included a link to the Dirac Specification document. 2005-12-07 11:33 asuraparaju * doc/documentation/algorithm/algorithm/wlt_transform.xht: Fixed filter coefficients for 13,5 filter. 2005-12-05 12:44 asuraparaju * ChangeLog: [no log message] 2005-12-05 12:38 asuraparaju * NEWS: Updated with 0.5.4 release notes 2005-12-05 12:33 asuraparaju * extras/patches/: FFMpeg-20051205-dirac-0.5.x.patch, README_FFMpeg-20051205-dirac-0.5.x_patch: FFMpeg patch for cvs version dated 05-Dec-2005. 2005-12-05 12:32 asuraparaju * extras/patches/: README_FFMpeg-20050806-dirac-0.5.x_patch, README_ffmpeg-0.4.9-pre1-dirac-0.5.x_patch: Updated instruction for latest Dirac release 2005-12-05 12:26 asuraparaju * extras/patches/README_MPlayer-1.0pre7_dirac-0.5.x_patch: Updated instructions to use latest release of Dirac and MPlayer 2005-12-02 16:25 asuraparaju * libdirac_common/mot_comp_mmx.cpp: Fix bug with uninitialised memory reads when compiling in msys-g++ environment. 2005-12-02 10:16 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: Added Steve Bearcroft to list of contributors. 2005-12-01 14:34 asuraparaju * README: Changes to reflect the new/modified options of the command line encoder dirac_encoder. 2005-12-01 14:30 asuraparaju * AUTHORS: Updated contributor list. 2005-12-01 14:30 asuraparaju * configure.ac: Updated release id to 0.5.4 2005-12-01 14:29 asuraparaju * tests/: colourbars.at, samples.at: Changes due to modified dirac_encoder command line. Include the -local option to generate diagnostics and locally decoded data to use in comparison and instrumentation tests. 2005-12-01 14:27 asuraparaju * encoder/encmain.cpp: Generation of Diagnostics data and locally decoded output is now disabled by default. To enable this use the commandline option -local. 2005-12-01 14:26 asuraparaju * libdirac_common/upconvert_mmx.cpp: Mods to make Upconverter::DoUpconverter function more efficient 2005-12-01 14:25 asuraparaju * libdirac_common/wavelet_utils.h: New function VHFilter5_3::HorizSynth which is used only when MMX opts are enabled. This function is used to interleave horizontal synthesis with vertical synthesis to make the wavelet syntheis function slightly more efficient. 2005-12-01 14:22 asuraparaju * libdirac_common/: band_codec.cpp, band_codec.h: New function ClearBlock to set all values in block to 0 more efficiently. Applied BandCodec optimisation part of patch 1303281 which make DecodeVal function more efficient. 2005-12-01 14:12 asuraparaju * libdirac_common/wavelet_utils_mmx.cpp: Minor mods to optimise VHFilter5_3::Split further. 2005-12-01 14:10 asuraparaju * libdirac_common/mot_comp_mmx.cpp: Minor changes to ensure that uninitialised memory reads do not cause crashes when compiled using MS VC++. Note that the data read from unitialised memory is not being used but still causes problems on some platforms. 2005-12-01 14:06 asuraparaju * libdirac_common/mot_comp.cpp: Using calculated values of blocks per macro block row and blocks per sub-block row instead of hardcoded values. 2005-12-01 14:02 asuraparaju * util/encoder_gui/: README, diracdata.h, diracgui.cpp, diracgui.h, encodebox.cpp, encoder_gui.pro, filesbox.cpp, repthread.cpp, tables.h: Included option in GUI to disable the creation of diagnostics data file and locally decoded output. dirac_encoder need no longer be in the current working directory but in any directory in the PATH variable. 2005-11-15 15:35 asuraparaju * libdirac_common/arith_codec.h: Minor cosmetic difference as to how CODE_MSB and CODE_2ND_MSB are initialised to make their usage more obvious. 2005-11-15 15:33 asuraparaju * doc/Makefile.am: Fix problem with install target 2005-11-08 11:45 asuraparaju * libdirac_common/band_codec.cpp: Minor changes in DoWorkCode, DoWorkDecode and DecodeCoeffBlock functions in the way 2-D arrays are accessed which resulted in a slight decoding speed improvement. 2005-11-08 11:43 asuraparaju * libdirac_common/upconvert_mmx.cpp: Minor changes to DoUpConverter routine to give slight improvement in uoconversion speed. 2005-11-08 11:41 asuraparaju * libdirac_common/arrays.h: In Resize function in OneDArray class, dealloc and realloc data only if the new and old array sizes are different. 2005-11-08 11:40 asuraparaju * libdirac_common/: wavelet_utils.cpp, wavelet_utils_mmx.cpp: Optimised WaveletTransform::VHFilter5_3::Split using MMX instructions. Minor mods to WaveletTransform::VHFilter5_3::Synth function improve speed slightly. 2005-11-08 11:37 asuraparaju * libdirac_motionest/Makefile.am, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert_mmx.cpp, win32/VS2003/libdirac_motionest/libdirac_motionest.vcproj: Optimised DoDownConverter routine using MMX instructions 2005-11-08 11:34 asuraparaju * libdirac_common/: mot_comp.cpp, mot_comp.h, mot_comp_mmx.cpp: Modified motion compensation so that it take Macro-Block splitting mode into consideration when compensating a row of blocks. Depending on the macroblock split mode, 1,2 or 4 blocks of reference data are used to calculate the motion compensated data. This sped up the default quarter pixel block motion compensation routine by an average of 20-23% for a 2Mbps Dirac bitstream. 2005-11-08 11:26 asuraparaju * libdirac_common/: frame.cpp, frame.h, frame_buffer.cpp, frame_buffer.h: Changes to FrameBuffer handling. Deleting old frames and allocating new frames is quite expensive. So instead of deleting frames no longer required in the frame buffer, they are flagged "not in use". So the next time a new reference frame has to be inserted in the Frame buffer, the first frame "not in use" is used to store the new frame. An overall improvement of 6-7 percent in decoding speed for a 2Mbps bitstream resulted. 2005-10-17 12:06 asuraparaju * libdirac_encoder/dirac_encoder.cpp: Fixed bug #1328565. Now ensuring that all locally decoded frames are available for output. 2005-10-11 14:02 tjdwave * libdirac_common/arith_codec.h: Incorporated Steve Bearcroft's speed-up patch, with some minor typographical changes for clarity. 2005-10-11 10:00 tjdwave * libdirac_motionest/block_match.cpp: Added patch 1309571 which fixes the quality degradation introduced in the motion estimation speed-ups. 2005-10-07 11:17 asuraparaju * libdirac_motionest/: me_utils.cpp, me_utils_mmx.cpp, me_utils_mmx.h: Applied MMX optimisations to modified ME routines. This is an initial version that improves Motion Estimation speed by 30% resulting in a 20% improvement in encoding speed overall. This is work in progress. 2005-09-27 14:44 dirac_dev * libdirac_encoder/dirac_encoder.h: Replaced boolean with int. C-compilers (eg. ffmpeg) complain about C++ constructs. 2005-09-27 14:08 tjdwave * libdirac_encoder/quality_monitor.cpp: Set the motion estimation factor to compensate for the default search precision being at 1/4 pel (as this is the default precision) rather than 1/8th pel. 2005-09-27 14:07 tjdwave * libdirac_motionest/: motion_estimate.cpp, motion_estimate.h: Removed cut detection, which is now in the FrameCompressor class. Removed the kludge which scaled the motion vector precisions. All motion estimation is now at the selected precision. 2005-09-27 14:01 tjdwave * libdirac_motionest/: me_mode_decn.cpp, me_mode_decn.h: Use specific matching classes for different pixel accuracies. Reduced search ranges for increased speed. 2005-09-27 13:59 tjdwave * libdirac_motionest/me_subpel.cpp: Removed calculation of lambda map. Simplified class by using the specific subpixel refinement matching function. 2005-09-27 13:55 tjdwave * libdirac_motionest/: pixel_match.cpp, pixel_match.h: Search ranges restricted to improve motion estimation speed. 2005-09-27 13:52 tjdwave * libdirac_motionest/: block_match.cpp, block_match.h: Refactored the BlockMatcher class. There are now three functions for finding a best match - finding the pixel-accurate best match, refining this to sub-pixel accuracy, and also finding a best match from a list at sub-pixel level. These matching functions contain shortcuts to speed up matching as follows. FindBestMatchPel: - The predictors are each searched first, and if their SAD values are small then the search ends. - bailout functions are used for calculating matching costs for the remaining candidates RefineMatchSubpel: - The predictor from neighbouring (previously refined) vectors is tested first. If there's a small SAD, then the search ends - Pixel-accurate vectors are refined to half-pel vectors by searching the 4 closest half-pel positions (shown as X) first: X XOX X If one of these is better than the pixel-accurate value, then the two nearest values in the immediate neighbourhood of the pixel-accurate value are also searched, eg the Y values below: YXY XOX X This two-stage procedure is followed again in refining to quarter- and eighth-pel. - At each stage of refinement, if we're 10% worse than the value derived for the predictor, we end the search. FindBestMatchSubpel: - bailout functions are used 2005-09-27 13:40 tjdwave * libdirac_motionest/: me_utils.cpp, me_utils.h: Reorganised classes for doing SAD calculations at pixel and sub-pixel accuracy. Distinct classes for half-, quarter- and eighth-pixel matching have been created. These are present also in 'bailout' form so that you can leave the calculation as soon as you know that you're not going to beat the best match so far. These mods support speeding up motion estimation, and hence the encoder generally. 2005-09-27 12:25 asuraparaju * libdirac_encoder/dirac_encoder.cpp: Fixed bug# 1291478. Now ensuring that dirac_encoder_output returns ENC_STATE_BUFFER when data is not loaded into the encoder. 2005-09-27 12:21 asuraparaju * doc/documentation/code/programmers_guide/decoder_api_functions.htm: Bug fix: 1291481. Corrected return value in dirac_parse function prototype. 2005-09-27 10:21 tjdwave * libdirac_encoder/seq_compress.cpp: The quality measurement model can only be calculated correctly if reconstructed compressed video is available, which isn't the case if we're not doing local decoding. In this case, calculating and outputting these values is disabled. 2005-09-27 10:16 tjdwave * libdirac_encoder/: frame_compress.cpp, frame_compress.h: Moved the analysis of whether or not we have a cut into FrameCompressor class and out of motion estimation classes. Also, only do motion compensation on L2 frames if local decoding is required. This is because, by definition, L2 frames can't be references and so can be left in a partially reconstructed state if local decoding isn't required, which improves encoding speed. 2005-09-27 10:12 tjdwave * libdirac_encoder/dirac_encoder.cpp: Added support for local decoding flag, so that local decoding can be avoided for speed. 2005-09-27 10:09 tjdwave * libdirac_encoder/comp_compress.cpp: Removed commented-out code. 2005-09-27 10:09 tjdwave * libdirac_encoder/comp_compress.cpp: Inverse wavelet transform is now only done for L2 frames if local decoding is required. This is because L2 frames are (by definition) not used for reference and can be left in a partially reconstructed state if local decoding isn't needed. 2005-09-27 09:54 tjdwave * libdirac_common/mot_comp.cpp: Introduced unbiased rounding into calculation of weighting matrices. This allows the subsequent rationalisation of the values to be avoided. Also, chroma scale factors applied to motion vectors have been replaced by shift factors, so that bitshifts can be used instead of divisions for greater efficiency. 2005-09-27 09:50 tjdwave * libdirac_common/: common.cpp, common.h: Added support for an encode params flag indicating whether we're doing local decoding. Local decoding can then be omitted for greater efficiency. 2005-09-27 09:44 tjdwave * decoder/decmain.cpp: Made timing info only output in verbose mode. 2005-09-27 09:43 tjdwave * encoder/encmain.cpp: Added timing data for encoding. 2005-09-27 09:40 tjdwave * libdirac_common/arith_codec.h: Simplified ArithCodec class so that probality intervals aren't used. 2005-09-07 15:29 tjdwave * util/encoder_gui/: COPYING, README, diracdata.h, diracgui.cpp, diracgui.h, encodebox.cpp, encoder_gui.pro, filesbox.cpp, main.cpp, presetbox.cpp, qualitybox.cpp, reportbox.cpp, repthread.cpp, repthread.h, tables.cpp, tables.h, videobox.cpp: Adding files for Dirac encoder GUI. 2005-09-07 10:41 tjdwave * doc/DiracSpecV0.1.doc: Version 0.1 superceded by version 0.9 now in CVS. 2005-09-07 10:39 tjdwave * doc/DiracSpec0.9.pdf: Added decoder semantics and revised bitstream structure. 2005-08-31 14:42 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/quality_monitor.cpp: Added support for lossless I-frame and long-GOP coding, with CLI option. 2005-08-23 11:52 asuraparaju * ChangeLog: [no log message] 2005-08-23 11:46 asuraparaju * NEWS: Added 0.5.3 release notes 2005-08-23 11:14 asuraparaju * doc/documentation.html: Having trouble creating a pdf document in which MathML is rendered correctly. Hence a pdf version of the Algorithm document cannot be generated at the moment. Removed broken link to Algorithm pdf until this problem can be fixed. 2005-08-22 13:51 asuraparaju * configure.ac: Update the help string for enable-mmx configure argument to make it clear that MMX opts are enabled by default. The user will have to explcitly specify --enable-mmmx=no or --disable-mmx to disable MMX opts. 2005-08-19 13:41 asuraparaju * extras/patches/: README_transcode-1.0.0_dirac-0.5.x_patch, transcode-1.0.0-dirac-0.5.x.patch: Dirac patch for transcode-1.0.0. This patch is not a standalone patch and will be effective only if the ffmpeg library it uses is built with the dirac patch applied. 2005-08-19 13:38 asuraparaju * extras/patches/README_MPlayer-1.0pre7_dirac-0.5.x_patch: Updated notes for dirac v0.5.3 2005-08-19 13:36 asuraparaju * extras/patches/: FFMpeg-20050806-dirac-0.5.x.patch, README_FFMpeg-20050806-dirac-0.5.x_patch: Dirac patch for ffmpeg cvs snapshot dated 06-Aug-2005. Note that this has been tested with CVS versions as late at 16-Aug-2006 but the CVS snapshots past 06-Aug-2005 are not available for download on the FFmpeg server. 2005-08-19 13:34 asuraparaju * extras/patches/README_transcode-0.6.14_dirac-0.5.x_patch: Updated for dirac v0.5.3 2005-08-19 13:33 asuraparaju * extras/patches/: README_ffmpeg-0.4.9-pre1-dirac-0.5.x_patch, ffmpeg-0.4.9-pre1-dirac-0.5.x.patch: Updated patch for dirac-0.5.3. Changed license to LGPL. Fixed bug in setting the quality factor where the quality factor lookup table was uint8_t instead of float which was causing the qf to be truncated to uint8_t. dirac_decode_frame now correctly returns the number of bytes it consumed. This is a fix for bug 1246767. 2005-08-18 09:30 tjdwave * encoder/encmain.cpp: Clarified CLI error message. 2005-08-18 09:27 tjdwave * README: Refactored the encoding instructions so that they're much clearer. 2005-08-16 15:37 asuraparaju * libdirac_common/arith_codec.h: Removed DOS line-breaks. 2005-08-16 10:37 asuraparaju * doc/Makefile.am: Fix problem with install targer in main doc directory 2005-08-15 18:21 asuraparaju * doc/Makefile.am: Fixed bug where make was failing when built in a distribtion 2005-08-15 17:48 asuraparaju * doc/: Makefile.am, documentation/code/programmers_guide/Makefile.am: Ensured that all required files are installed correctly when using the install target of make. 2005-08-15 17:18 asuraparaju * doc/documentation/: Makefile.am, tools/diagnostics/Makefile.am: Changes related to documents directory restructure 2005-08-15 17:11 asuraparaju * configure.ac, doc/Makefile.am, doc/documentation/algorithm/Makefile.am, doc/documentation/algorithm/enhancements/Makefile.am, doc/documentation/algorithm/global_motion/Makefile.am, doc/documentation/algorithm/upconversion/Makefile.am, doc/documentation/tools/Makefile.am: Changes related to documentation tree restructure 2005-08-15 16:09 asuraparaju * doc/: Makefile.am, documentation/algorithm/Makefile.am, documentation/algorithm/algorithm/Makefile.am, documentation/code/Makefile.am, documentation/code/api/Makefile.am, documentation/code/api/dirac_api.doxygen, documentation/code/api/dirac_api.doxygen.in, documentation/code/api/dirac_api_foot.html, documentation/code/api/dirac_api_head.html, documentation/code/programmers_guide/Makefile.am: Changes related to documentation tree restructure. 2005-08-15 16:03 asuraparaju * doc/api/: Makefile.am, dirac_api.doxygen, dirac_api.doxygen.in, dirac_api_foot.html, dirac_api_head.html, libdirac_encoder_api.doxygen, libdirac_encoder_api_foot.html, libdirac_encoder_api_head.html: Removing old files as part of Documentation directory restructure. API docs are now generated in doc/documentation/code/api/html 2005-08-15 15:56 asuraparaju * doc/algorithm/: Makefile.am, algorithm.htm, block_data.htm, const_qual.htm, intro.htm, mb_structs.htm, mot_est.htm, mot_est_and_comp.htm, mv_coding_arch.htm, mv_data_coding.htm, mv_entropy_code.htm, olb_mc.htm, overall_arch.htm, quantisation.htm, rdo.htm, rdo_mot_est.htm, subband_rdo.htm, temporal_prediction_structures.htm, transform_coding.htm, transform_coding_arch.htm, var_size.htm, wlt_transform.htm, figs/DC.jpg, figs/DCSAD.jpg, figs/braces.jpg, figs/d.jpg, figs/eqA.jpg, figs/eqB.jpg, figs/eqC.jpg, figs/eqD.jpg, figs/eqE.jpg, figs/eqF.jpg, figs/eqG.jpg, figs/eqH.jpg, figs/eqI.jpg, figs/eqJ.jpg, figs/fig1.jpg, figs/fig10.jpg, figs/fig12.jpg, figs/fig13.jpg, figs/fig14.jpg, figs/fig15.jpg, figs/fig16.jpg, figs/fig17.jpg, figs/fig18.jpg, figs/fig19.jpg, figs/fig2.jpg, figs/fig20.jpg, figs/fig21.jpg, figs/fig22.jpg, figs/fig23.jpg, figs/fig24.jpg, figs/fig26.jpg, figs/fig27.jpg, figs/fig3.jpg, figs/fig4.jpg, figs/fig5.jpg, figs/fig6.jpg, figs/fig7.bmp, figs/fig7.jpg, figs/fig8.jpg, figs/fig9.jpg, figs/fp.jpg, figs/m.jpg, figs/nhood.jpg, figs/nhoodresidue.jpg, figs/p.jpg, figs/p2.jpg, figs/t.jpg, figs/two.jpg, figs/var.jpg, figs/vtilda.jpg, figs/vw.jpg, mv_data_pred.htm, parent_child.htm, toc.htm, wlt_coeff_coding.htm: Removing old files as part of Documentation directory restructure. Algorithm documentation can now be found in doc/documentation/algorithm/algorithm 2005-08-15 15:52 asuraparaju * doc/programmers/: Makefile.am, programmers_guide.aux, programmers_guide.tex: Removed old files as part of document directory restructure 2005-08-15 12:26 asuraparaju * doc/documentation/algorithm/enhancements/: 050var_wlt.htm, 130alt_bin.htm: Checking in missed doc files missed out in earlier website docs check in. 2005-08-15 12:22 asuraparaju * doc/: browser_compatibility.html, contact.html, documentation.html, faq.html, getting_involved.html, index.html, licenses.html, overview.html, styles.css, template.html, template2.html, todo.html, documentation/algorithm/algorithm/block_data.htm, documentation/algorithm/algorithm/index.htm, documentation/algorithm/algorithm/intra_pred.htm, documentation/algorithm/algorithm/intro.htm, documentation/algorithm/algorithm/mb_structs.htm, documentation/algorithm/algorithm/mot_est.htm, documentation/algorithm/algorithm/mot_est_and_comp.htm, documentation/algorithm/algorithm/mv_coding_arch.htm, documentation/algorithm/algorithm/mv_data_coding.htm, documentation/algorithm/algorithm/mv_data_pred.htm, documentation/algorithm/algorithm/mv_entropy_code.htm, documentation/algorithm/algorithm/olb_mc.xht, documentation/algorithm/algorithm/overall_arch.htm, documentation/algorithm/algorithm/overall_arch_svg.htm, documentation/algorithm/algorithm/parent_child.htm, documentation/algorithm/algorithm/quantisation.xht, documentation/algorithm/algorithm/rdo.htm, documentation/algorithm/algorithm/rdo_mot_est.xht, documentation/algorithm/algorithm/subband_rdo.xht, documentation/algorithm/algorithm/temporal_prediction_structures.htm, documentation/algorithm/algorithm/toc.htm, documentation/algorithm/algorithm/transform_coding.htm, documentation/algorithm/algorithm/transform_coding_arch.htm, documentation/algorithm/algorithm/var_size.htm, documentation/algorithm/algorithm/wlt_coeff_coding.xht, documentation/algorithm/algorithm/wlt_transform.xht, documentation/algorithm/algorithm/figs/fig1.dia, documentation/algorithm/algorithm/figs/fig1.gif, documentation/algorithm/algorithm/figs/fig1.jpg, documentation/algorithm/algorithm/figs/fig1.png, documentation/algorithm/algorithm/figs/fig1.svg, documentation/algorithm/algorithm/figs/fig10.dia, documentation/algorithm/algorithm/figs/fig10.gif, documentation/algorithm/algorithm/figs/fig10.jpg, documentation/algorithm/algorithm/figs/fig10.png, documentation/algorithm/algorithm/figs/fig10.svg, documentation/algorithm/algorithm/figs/fig12.dia, documentation/algorithm/algorithm/figs/fig12.gif, documentation/algorithm/algorithm/figs/fig12.jpg, documentation/algorithm/algorithm/figs/fig12.png, documentation/algorithm/algorithm/figs/fig12.svg, documentation/algorithm/algorithm/figs/fig15.dia, documentation/algorithm/algorithm/figs/fig15.gif, documentation/algorithm/algorithm/figs/fig15.jpg, documentation/algorithm/algorithm/figs/fig15.png, documentation/algorithm/algorithm/figs/fig15.svg, documentation/algorithm/algorithm/figs/fig16.dia, documentation/algorithm/algorithm/figs/fig16.gif, documentation/algorithm/algorithm/figs/fig16.jpg, documentation/algorithm/algorithm/figs/fig16.png, documentation/algorithm/algorithm/figs/fig16.svg, documentation/algorithm/algorithm/figs/fig17.dia, documentation/algorithm/algorithm/figs/fig17.gif, documentation/algorithm/algorithm/figs/fig17.jpg, documentation/algorithm/algorithm/figs/fig17.png, documentation/algorithm/algorithm/figs/fig17.svg, documentation/algorithm/algorithm/figs/fig18.dia, documentation/algorithm/algorithm/figs/fig18.gif, documentation/algorithm/algorithm/figs/fig18.jpg, documentation/algorithm/algorithm/figs/fig18.png, documentation/algorithm/algorithm/figs/fig18.svg, documentation/algorithm/algorithm/figs/fig19.cgm, documentation/algorithm/algorithm/figs/fig19.dia, documentation/algorithm/algorithm/figs/fig19.gif, documentation/algorithm/algorithm/figs/fig19.jpg, documentation/algorithm/algorithm/figs/fig19.png, documentation/algorithm/algorithm/figs/fig19.svg, documentation/algorithm/algorithm/figs/fig19.wmf, documentation/algorithm/algorithm/figs/fig1_100.svg, documentation/algorithm/algorithm/figs/fig1_10000.dia, documentation/algorithm/algorithm/figs/fig1_10000.svg, documentation/algorithm/algorithm/figs/fig1_mod.svg, documentation/algorithm/algorithm/figs/fig1_px.svg, documentation/algorithm/algorithm/figs/fig2.dia, documentation/algorithm/algorithm/figs/fig2.gif, documentation/algorithm/algorithm/figs/fig2.jpg, documentation/algorithm/algorithm/figs/fig2.png, documentation/algorithm/algorithm/figs/fig2.svg, documentation/algorithm/algorithm/figs/fig20.dia, documentation/algorithm/algorithm/figs/fig20.gif, documentation/algorithm/algorithm/figs/fig20.jpg, documentation/algorithm/algorithm/figs/fig20.png, documentation/algorithm/algorithm/figs/fig20.svg, documentation/algorithm/algorithm/figs/fig21.dia, documentation/algorithm/algorithm/figs/fig21.gif, documentation/algorithm/algorithm/figs/fig21.jpg, documentation/algorithm/algorithm/figs/fig21.png, documentation/algorithm/algorithm/figs/fig21.svg, documentation/algorithm/algorithm/figs/fig22.dia, documentation/algorithm/algorithm/figs/fig22.gif, documentation/algorithm/algorithm/figs/fig22.jpg, documentation/algorithm/algorithm/figs/fig22.png, documentation/algorithm/algorithm/figs/fig22.svg, documentation/algorithm/algorithm/figs/fig23.dia, documentation/algorithm/algorithm/figs/fig23.gif, documentation/algorithm/algorithm/figs/fig23.jpg, documentation/algorithm/algorithm/figs/fig23.png, documentation/algorithm/algorithm/figs/fig23.svg, documentation/algorithm/algorithm/figs/fig2_webdraw.svg, documentation/algorithm/algorithm/figs/fig3.bmp, documentation/algorithm/algorithm/figs/fig3.dia, documentation/algorithm/algorithm/figs/fig3.gif, documentation/algorithm/algorithm/figs/fig3.jpg, documentation/algorithm/algorithm/figs/fig3.png, documentation/algorithm/algorithm/figs/fig3.svg, documentation/algorithm/algorithm/figs/fig3_a.svg, documentation/algorithm/algorithm/figs/fig4.dia, documentation/algorithm/algorithm/figs/fig4.gif, documentation/algorithm/algorithm/figs/fig4.jpg, documentation/algorithm/algorithm/figs/fig4.png, documentation/algorithm/algorithm/figs/fig4.svg, documentation/algorithm/algorithm/figs/fig4_dia.svg, documentation/algorithm/algorithm/figs/fig5.dia, documentation/algorithm/algorithm/figs/fig5.gif, documentation/algorithm/algorithm/figs/fig5.jpg, documentation/algorithm/algorithm/figs/fig5.png, documentation/algorithm/algorithm/figs/fig5.svg, documentation/algorithm/algorithm/figs/fig6.dia, documentation/algorithm/algorithm/figs/fig6.gif, documentation/algorithm/algorithm/figs/fig6.jpg, documentation/algorithm/algorithm/figs/fig6.png, documentation/algorithm/algorithm/figs/fig6.svg, documentation/algorithm/algorithm/figs/fig7.jpg, documentation/algorithm/algorithm/figs/fig8.dia, documentation/algorithm/algorithm/figs/fig8.gif, documentation/algorithm/algorithm/figs/fig8.jpg, documentation/algorithm/algorithm/figs/fig8.png, documentation/algorithm/algorithm/figs/fig8.svg, documentation/algorithm/algorithm/figs/fig9.dia, documentation/algorithm/algorithm/figs/fig9.gif, documentation/algorithm/algorithm/figs/fig9.jpg, documentation/algorithm/algorithm/figs/fig9.png, documentation/algorithm/algorithm/figs/fig9.svg, documentation/algorithm/enhancements/010version_num.htm, documentation/algorithm/enhancements/020precision.htm, documentation/algorithm/enhancements/030index_tables.htm, documentation/algorithm/enhancements/040bit_stream.htm, documentation/algorithm/enhancements/060var_blocks.htm, documentation/algorithm/enhancements/070var_mv_precn.htm, documentation/algorithm/enhancements/080multi_ref.htm, documentation/algorithm/enhancements/090nl_quant.htm, documentation/algorithm/enhancements/100multi_quant.htm, documentation/algorithm/enhancements/110spatially_var_quant.htm, documentation/algorithm/enhancements/120wt_ref.htm, documentation/algorithm/enhancements/140pred_ctx.htm, documentation/algorithm/enhancements/150ctx_update.htm, documentation/algorithm/enhancements/160intra_ctxs.htm, documentation/algorithm/enhancements/170global_motion.htm, documentation/algorithm/enhancements/180skipped.htm, documentation/algorithm/enhancements/190mv_trace.htm, documentation/algorithm/enhancements/200interlace.htm, documentation/algorithm/enhancements/index.htm, documentation/algorithm/enhancements/toc.htm, documentation/algorithm/global_motion/affine.htm, documentation/algorithm/global_motion/code.htm, documentation/algorithm/global_motion/index.htm, documentation/algorithm/global_motion/intro.htm, documentation/algorithm/global_motion/optimising.htm, documentation/algorithm/global_motion/projective.htm, documentation/algorithm/global_motion/projective_2.htm, documentation/algorithm/global_motion/toc.htm, documentation/algorithm/global_motion/images/abc.jpg, documentation/algorithm/global_motion/images/affine_1.jpg, documentation/algorithm/global_motion/images/affine_2.jpg, documentation/algorithm/global_motion/images/affine_3.jpg, documentation/algorithm/global_motion/images/affine_4.jpg, documentation/algorithm/global_motion/images/affine_5.jpg, documentation/algorithm/global_motion/images/affine_v_error.jpg, documentation/algorithm/global_motion/images/arrow_up.gif, documentation/algorithm/global_motion/images/code_1.jpg, documentation/algorithm/global_motion/images/code_2.jpg, documentation/algorithm/global_motion/images/code_3.jpg, documentation/algorithm/global_motion/images/code_4.jpg, documentation/algorithm/global_motion/images/next.gif, documentation/algorithm/global_motion/images/optimising_1.jpg, documentation/algorithm/global_motion/images/optimising_2.jpg, documentation/algorithm/global_motion/images/optimising_3.jpg, documentation/algorithm/global_motion/images/optimising_4.jpg, documentation/algorithm/global_motion/images/optimising_5.jpg, documentation/algorithm/global_motion/images/optimising_fi.jpg, documentation/algorithm/global_motion/images/prev.gif, documentation/algorithm/global_motion/images/projective_1.jpg, documentation/algorithm/global_motion/images/projective_10.jpg, documentation/algorithm/global_motion/images/projective_11.jpg, documentation/algorithm/global_motion/images/projective_2.jpg, documentation/algorithm/global_motion/images/projective_3.jpg, documentation/algorithm/global_motion/images/projective_4.jpg, documentation/algorithm/global_motion/images/projective_5.jpg, documentation/algorithm/global_motion/images/projective_6.jpg, documentation/algorithm/global_motion/images/projective_7.jpg, documentation/algorithm/global_motion/images/projective_8.jpg, documentation/algorithm/global_motion/images/projective_9.jpg, documentation/algorithm/global_motion/images/projective_e.jpg, documentation/algorithm/global_motion/images/projective_e_2.jpg, documentation/algorithm/global_motion/images/projective_ec.jpg, documentation/algorithm/global_motion/images/projective_m_1.jpg, documentation/algorithm/global_motion/images/projective_w.jpg, documentation/algorithm/global_motion/images/toc.gif, documentation/algorithm/upconversion/downconv.htm, documentation/algorithm/upconversion/downconv_code.htm, documentation/algorithm/upconversion/downconv_filt.htm, documentation/algorithm/upconversion/index.htm, documentation/algorithm/upconversion/intro.htm, documentation/algorithm/upconversion/results.htm, documentation/algorithm/upconversion/results_down.htm, documentation/algorithm/upconversion/results_up.htm, documentation/algorithm/upconversion/toc.htm, documentation/algorithm/upconversion/upconv.htm, documentation/algorithm/upconversion/upconv_basic.htm, documentation/algorithm/upconversion/upconv_filt.htm, documentation/algorithm/upconversion/upconv_opt.htm, documentation/algorithm/upconversion/upconv_opt_arith.htm, documentation/algorithm/upconversion/upconv_opt_io.htm, documentation/algorithm/upconversion/upconv_opt_other.htm, documentation/algorithm/upconversion/images/image1.jpg, documentation/algorithm/upconversion/images/image2.jpg, documentation/algorithm/upconversion/images/image3.jpg, documentation/algorithm/upconversion/images/image4.jpg, documentation/algorithm/upconversion/images/image5.jpg, documentation/algorithm/upconversion/images/image6.jpg, documentation/algorithm/upconversion/images/next.gif, documentation/algorithm/upconversion/images/prev.gif, documentation/algorithm/upconversion/images/toc.gif, documentation/code/programmers_guide/common_data_structs.htm, documentation/code/programmers_guide/decoder_api.htm, documentation/code/programmers_guide/decoder_api_example.htm, documentation/code/programmers_guide/decoder_api_functions.htm, documentation/code/programmers_guide/decoder_api_overview.htm, documentation/code/programmers_guide/decoder_api_reference.htm, documentation/code/programmers_guide/decoder_data_structs.htm, documentation/code/programmers_guide/decoding.htm, documentation/code/programmers_guide/encoder_api.htm, documentation/code/programmers_guide/encoder_api_example.htm, documentation/code/programmers_guide/encoder_api_functions.htm, documentation/code/programmers_guide/encoder_api_overview.htm, documentation/code/programmers_guide/encoder_api_reference.htm, documentation/code/programmers_guide/encoder_data_structs.htm, documentation/code/programmers_guide/encoding.htm, documentation/code/programmers_guide/index.htm, documentation/code/programmers_guide/input_formats.htm, documentation/code/programmers_guide/intro.htm, documentation/code/programmers_guide/key.htm, documentation/code/programmers_guide/overview.htm, documentation/code/programmers_guide/software.htm, documentation/code/programmers_guide/toc.htm, documentation/code/programmers_guide/images/arrow_right.gif, documentation/code/programmers_guide/images/arrow_up.gif, documentation/code/programmers_guide/images/image1.jpg, documentation/code/programmers_guide/images/image2.jpg, documentation/code/programmers_guide/images/image3.jpg, documentation/code/programmers_guide/images/next.gif, documentation/code/programmers_guide/images/prev.gif, documentation/code/programmers_guide/images/toc.gif, documentation/publications/dirac-handout-lude-04-2004.pdf, documentation/support/test.html, documentation/tools/diagnostics/index.htm, documentation/tools/diagnostics/intro.htm, documentation/tools/diagnostics/operation.htm, documentation/tools/diagnostics/operation_buffer.htm, documentation/tools/diagnostics/operation_code.htm, documentation/tools/diagnostics/operation_des.htm, documentation/tools/diagnostics/operation_trans.htm, documentation/tools/diagnostics/over.htm, documentation/tools/diagnostics/over_diag.htm, documentation/tools/diagnostics/over_intr.htm, documentation/tools/diagnostics/over_oper.htm, documentation/tools/diagnostics/overlay.htm, documentation/tools/diagnostics/overlay_gmv.htm, documentation/tools/diagnostics/overlay_mv.htm, documentation/tools/diagnostics/overlay_mv_arr.htm, documentation/tools/diagnostics/overlay_mv_clr.htm, documentation/tools/diagnostics/overlay_pred.htm, documentation/tools/diagnostics/overlay_sad.htm, documentation/tools/diagnostics/overlay_split.htm, documentation/tools/diagnostics/toc.htm, documentation/tools/diagnostics/images/image1.jpg, documentation/tools/diagnostics/images/image2.jpg, documentation/tools/diagnostics/images/image3.jpg, documentation/tools/diagnostics/images/image4.jpg, documentation/tools/diagnostics/images/image5.jpg, documentation/tools/diagnostics/images/image6.jpg, documentation/tools/diagnostics/images/image7.jpg, documentation/tools/diagnostics/images/image8.jpg, documentation/tools/diagnostics/images/next.gif, documentation/tools/diagnostics/images/prev.gif, documentation/tools/diagnostics/images/toc.gif, images/arrow_right.gif, images/arrow_right_indent.gif, images/arrow_up.gif, images/black_pixel.jpg, images/dirac_banner.jpg, images/icon_html.gif, images/icon_pdf.gif, images/icon_txt.gif, images/icon_zip.gif: Committing website documentation to CVS 2005-08-15 11:24 asuraparaju * doc/faq.htm: Removing unwanted files in doc restructure 2005-08-15 08:34 tjdwave * libdirac_common/arith_codec.h: Added comment explaining look-up table operation. 2005-08-12 11:58 asuraparaju * configure.ac: Include an extra flag to suppress warnings when compiling in debug mode using icc. 2005-08-12 11:57 asuraparaju * README, README.developers: MMX optimisations are enabled by default. Provided instructions as to how to disable it. 2005-08-12 10:26 tjdwave * libdirac_common/motion.cpp: Reinstated transition detection code. This means that mode decision is kinder when a transition in the motion vector field is detected, giving better quality in motion transition areas. 2005-08-11 11:44 tjdwave * libdirac_common/arith_codec.h: Added Pete Bleackley's code to use a look-up table for division. 2005-08-11 08:21 tjdwave * libdirac_common/common.cpp: Added a warning when impossible block parameters are being used, and the encoder changes them. 2005-08-10 17:50 asuraparaju * libdirac_common/: wavelet_utils.cpp, wavelet_utils_mmx.cpp: Optimised 5_3 wavelet synthesis function, VHFilter5_3::Synth, using MMX instructions resulting in 6 percent speed improvement in decoding SD. 2005-08-10 17:48 asuraparaju * libdirac_encoder/seq_compress.cpp: Fix g++ warning about unused variable recode. 2005-08-10 17:47 asuraparaju * encoder/encmain.cpp: Print error message and exit if input and output file names are the same. Changed back cif preset option to uppercase. Sequence and encoder params currently being used are displayed on standard out before actual coding starts. 2005-08-10 17:45 asuraparaju * configure.ac: MMX optimisations are enabled by default. Use --disable-mmx to explicitly disable them. 2005-08-10 09:13 tjdwave * README: Added modified instructions for -qf and advice about -width and -height. 2005-08-10 09:06 tjdwave * libdirac_motionest/block_match.cpp: Changed motion vector bitrate measure so that transitions from foreground to background and vice-versa are not penalised. 2005-08-10 09:04 tjdwave * libdirac_encoder/seq_compress.cpp: Removed recoding: superfluous now there is no CQ coding. 2005-08-10 09:02 tjdwave * libdirac_encoder/: quality_monitor.cpp, quality_monitor.h: Removed constant quality encoding control mechanism, because it worked too poorly for varied sequences. Instead, QualityMonitor just monitors quality and encoder control reverts to constant Lagrangian parameters. The magic numbers chosen may not work for all sequences or all video standards but will do for the moment. 2005-08-10 08:57 tjdwave * libdirac_decoder/comp_decompress.cpp, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/frame_compress.cpp: Changed default wavelet filters to fast filters APPROX97 and FIVETHREE. Wavelet filter type is now signalled in the frame header so that changing these filters just changes the encoder. (This is now consistent with the spec). 2005-08-10 08:50 tjdwave * libdirac_common/: motion.cpp, motion.h: Fixed bug with way median is calculated. Removed large inline functions from .h and placed in .cpp for clarity. 2005-08-10 08:48 tjdwave * libdirac_common/mot_comp.cpp: Minor tidy of the way that weighting matrices are computed. 2005-08-10 08:44 tjdwave * libdirac_common/: common.cpp, common.h: Removed recode parameter. Added a CodecParams parameter for the wavelet filter being used, to support signalling this in the bitstream, rather than selecting by frame type. (This is in the spec). 2005-08-10 08:42 tjdwave * libdirac_common/: bit_manager.cpp, bit_manager.h: Added support for finding out the current size of bit buffers. This will support future CBR implementations and calculations of bit rate on the fly. 2005-08-10 08:40 tjdwave * libdirac_encoder/: dirac_encoder.cpp, dirac_encoder.h: Removed recode option. Set block parameters for HD720 the same as for SD to get around bug 1245129. Need to fix padding and edge issues to fully resolve this bug. 2005-08-10 08:27 tjdwave * encoder/encmain.cpp: Added feature to print out help if there's an unrecognised/unparsed option. Removed recode feature. 2005-08-01 17:14 asuraparaju * libdirac_decoder/dirac_parser.cpp: Speed up set_component function using MMX optimisation. 2005-08-01 17:14 asuraparaju * libdirac_common/arrays.h: In TwoDArray::Resize, free and reallocate data only if the new dimensions differ from the old one. 2005-08-01 17:12 asuraparaju * win32/VS2003/: DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, libdirac_common/libdirac_common.vcproj: Define HAVE_MMX macro for mmx enabled targets. 2005-08-01 17:11 asuraparaju * util/instrumentation/process_sequence.cpp: Fix uninitialised memory read bug reported by Valgrind on reaching end of sequence. 2005-08-01 17:10 asuraparaju * unit_tests/: motion_comp_test.cpp, motion_comp_test.h: Test all MV precision values - from pixel to an eighth of a pixel. 2005-08-01 17:10 asuraparaju * libdirac_common/wavelet_utils_mmx.cpp: Reimplement VHFilterApprox9_7::Synth and VHFilter13_5::Synth using MMX optimisation. 2005-08-01 17:09 asuraparaju * libdirac_common/upconvert_mmx.cpp: Reimplemented UpConverter::DoUpConverter function using MMX optimisation. 2005-08-01 17:07 asuraparaju * libdirac_common/: mot_comp_mmx.cpp, mot_comp_mmx.h: Implementation of QuarterPixel::CompensateBlock function using MMX optimisation. 2005-08-01 17:06 asuraparaju * libdirac_common/wavelet_utils.cpp: MMX version of Wavelet sythesis functions are used if MMX is enabled. 2005-08-01 17:05 asuraparaju * libdirac_common/upconvert.cpp: MMX version of DoUpConverter is used if MMX is enabled. 2005-08-01 17:04 asuraparaju * libdirac_common/: mot_comp.cpp, mot_comp.h: Modified the block weights to be of type short to make efficient use of MMX instructions. Modified CompensateComponente to make more efficient use of data in cache. MMX versions of CompensateBlock are used if MMX is enabled. 2005-08-01 17:04 asuraparaju * libdirac_common/Makefile.am: Include new mmx optimisation source files and headers. 2005-07-26 10:39 tjdwave * libdirac_encoder/dirac_encoder.cpp: Reduced chroma weighting factors in order to increase chroma fidelity - chroma bit rates should increase from about 5% of total for 420 to 7.5% of total. Changed default block separation for HD720 preset to remove block edge overlaps at the top of the screen. This may be returned to the old settings when we know why they caused the problem. 2005-07-25 18:01 mservais * libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_motionest/global_motion.cpp, libdirac_motionest/global_motion.h, libdirac_motionest/me_motion_type_decn.cpp, libdirac_motionest/me_motion_type_decn.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp: Minor bug fixes and added some extra comments 2005-07-22 18:09 asuraparaju * configure.ac: updated revision to 0.5.3 2005-07-22 18:09 asuraparaju * libdirac_common/bit_manager.h: Updated bitstream version to 0.5 since the bitstream is no longer compatible with dirac-0.5.2 2005-07-22 12:59 asuraparaju * configure.ac: Include macro AC_SYS_LARGEFILE to overcome the 2GB i/o file limit. Fix for bug #1212581. 2005-07-21 09:11 tjdwave * encoder/encmain.cpp: Made presets non-case-sensitive. 2005-07-20 10:29 tjdwave * libdirac_encoder/dirac_encoder.cpp: Fixed bug where block parameters were being set incorrectly. 2005-07-20 09:43 tjdwave * README: Added text about recode CLI option. 2005-07-19 16:39 tjdwave * encoder/encmain.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/dirac_encoder.h, libdirac_encoder/seq_compress.cpp: Added -recode parameter. If -recode [n] is present, then the encoder will recode up to n times (ie will encoder up to n+1 times). 2005-07-19 15:17 tjdwave * libdirac_common/mv_codec.cpp, libdirac_motionest/me_mode_decn.cpp: Fixed bug 1240709. Common mode is now used to reduce encoding of prediction modes. Common mode was also being set incorrectly in the motion estimation process, which caused divergence between the encoder and decoder values. Since common mode wasn't used, this bug was masked before. Both now fixed. 2005-07-08 10:26 tjdwave * libdirac_common/: upconvert.cpp, upconvert.h: Incorporated patch 1211899. This tidies up the code and makes it confirm to dirac coding conventions, and also uses a smaller filter. This commit differs from the patch in that the filter is not reduced to 6 taps but is reducted to 10 taps instead. In the future, variable filter coefficients may be supported via templated polymorphism. 2005-06-22 17:52 mservais * libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_motionest/filter_weighted_local.cpp, libdirac_motionest/global_motion.cpp, libdirac_motionest/global_motion.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_motion_type_decn.cpp, libdirac_motionest/me_motion_type_decn.h, libdirac_motionest/model_affine.cpp, libdirac_motionest/model_affine.h, libdirac_motionest/model_projective.cpp, libdirac_motionest/model_projective.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp: When using global motion (but not exclusively global motion), the global motion decisions can now be flagged either per Prediction Unit or per Macro-Block. Also, the use of a Common Mode for each Macro-Block is now possible. (This had not been fully implemented before.) 2005-06-10 15:15 tjdwave * libdirac_encoder/quality_monitor.cpp, libdirac_motionest/block_match.cpp: Fixed bug with computing MV costs. Incorporated patch 1216297 for quality measurement. 2005-06-10 11:52 tjdwave * libdirac_encoder/dirac_encoder.cpp: Changed default block height and width for motion compensation to 24 by 24 pixels from 20 by 20. Separation remains 16 by 16. The result is reduced blockiness in areas of poor motion prediction. Downside is slower encoder, but the block parameters are merely scaled-up versions of the SD parameters. 2005-05-26 19:48 asuraparaju * extras/patches/ffmpeg-0.4.9-pre1-dirac-0.5.x.patch: Fixed bug 1209053. Frame size parameters are now fetched from the AV context before setting frame size. Also fixed a bug where quality factor was not being set correctly. 2005-05-26 16:20 stuart_hc * tests/samples.at: Fix bug 1209017: use -width/-height instead of -x/-y 2005-05-26 16:01 stuart_hc * encoder/encmain.cpp: Fix bug 1209017: use -width/-height instead of -x/-y Also fix SEGV when incorrect -cformat parameter is passed. 2005-05-26 15:59 stuart_hc * README: Fix bug 1209017: use -width/-height instead of -x/-y 2005-05-25 14:30 asuraparaju * ChangeLog: [no log message] 2005-05-25 13:51 asuraparaju * README.release: Add ffmpeg patch to checklist 2005-05-25 13:43 asuraparaju * NEWS: Included dirac-0.5.2 release notes 2005-05-25 13:40 asuraparaju * AUTHORS: Updated contibutor list 2005-05-25 13:06 asuraparaju * extras/patches/: MPlayer-1.0pre7_dirac-0.5.x.patch, README_MPlayer-1.0pre7_dirac-0.5.x_patch, README_ffmpeg-0.4.9-pre1-dirac-0.5.x_patch, README_transcode-0.6.14_dirac-0.5.x_patch, ffmpeg-0.4.9-pre1-dirac-0.5.x.patch, transcode-0.6.14-dirac-0.5.x.patch: Patches to MPlayer, ffmped and transcode to add Dirac support to these tools. 2005-05-24 08:28 tjdwave * libdirac_encoder/seq_compress.cpp: Fixed bug with count increment so that fast adaption takes place on first recoding rather than second. 2005-05-20 15:30 asuraparaju * README: Modified this file to remove all references to image header files which are no longer required. 2005-05-20 15:25 asuraparaju * libdirac_encoder/seq_compress.cpp: Fix minor glitches in verbose output 2005-05-20 15:02 asuraparaju * win32/VS2003/dirac.sln: Remove MakeHeader from list of targets as contents of header files have been replaced with command line arguments. 2005-05-20 15:01 asuraparaju * encoder/encmain.cpp, libdirac_encoder/dirac_encoder.cpp, libdirac_encoder/seq_compress.cpp: Fix bugs in bit rate reporting 2005-05-20 14:05 asuraparaju * Makefile.am, configure.ac: make_header utility is no longer required. So removing picheader directory from list of targets. 2005-05-20 13:44 asuraparaju * tests/: colourbars.at, create_dirac_testfile.pl, samples.at: Remove all references to make_header. Sequence header information is now passed to encoder on the command line. 2005-05-20 13:43 asuraparaju * util/instrumentation/instrmain.cpp: The encoder now writes sequence header information to the instrumentation output file. So read sequence info from instrumentation file. 2005-05-20 13:42 asuraparaju * encoder/encmain.cpp: Fix g++ errors. Write the sequence header information to the instrumentation file. 2005-05-20 13:41 asuraparaju * libdirac_common/: pic_io.cpp, pic_io.h: Delete all code relating to header file creation/reading. All sequence parameters are now supplied to encoder via the command line. 2005-05-19 12:23 dirac_dev * decoder/decmain.cpp: Removed any references to header files. 2005-05-19 12:15 dirac_dev * encoder/encmain.cpp: Removed requirement of a header file. All parameters are handled through command-line options. Most options will still be set by the pre-set option, although they can be overriden. 2005-05-19 12:03 asuraparaju * unit_tests/motion_comp_test.cpp: Update motion compensation tests to use the helper function in MotionCompensator to instantiate the MotionCompensator sub-class for the mv precision value selected. 2005-05-19 11:56 asuraparaju * libdirac_decoder/: frame_decompress.cpp, frame_decompress.h: Now reads the MV precision in the frame header. 2005-05-19 11:35 asuraparaju * libdirac_encoder/frame_compress.cpp: Writing the motion vector precision value as part of frame header. Default mv precision is set to 2 i.e. quarter pixel. 2005-05-19 11:25 asuraparaju * libdirac_motionest/me_utils_mmx.cpp: Fixed C/C++ aliasing violations that caused a performance slow down when compiled with gcc 4.0.0 2005-05-19 11:24 asuraparaju * libdirac_motionest/me_utils.h: Fixed gcc 4.0.0 warnings 2005-05-19 11:23 asuraparaju * libdirac_common/bit_manager.h: Updated bitstream version to 0.4 2005-05-19 11:21 asuraparaju * libdirac_common/: common.cpp, common.h: Added a field to CodecParams class for motion vector precision. A value of 'n' implies a precision of (2**-n)i pixel. i.e. a value of 2 implies an mv precision of 1/4 i.e. quarter pixel. 2005-05-19 11:16 asuraparaju * libdirac_common/: mot_comp.cpp, mot_comp.h: Added support for multiple levels of motion vector precision - pixel, half pixel, quarter pixel and multiple pixel. The main MotionCompensator class is an abstract class. Each of its sub-classes define the CompensateBlock function to a particular level of motion precision. 2005-05-19 11:12 asuraparaju * libdirac_motionest/: me_mode_decn.cpp, me_subpel.cpp, motion_estimate.cpp: Motion estimation modified to support variable motion vector precision. The implementation is preliminary, and should be modified later: vectors are scaled by a factor 8 to give a maximum of eighth-pel accuracy. Generic block matching functions are used at this accuracy even though true accuracy will be less - the subpixel search is merely truncated. In the future, half-pixel and quarter-pixel block matching functions should be written, just as for motion compensation as these will be faster. 2005-05-13 09:40 mservais * libdirac_common/mot_comp.cpp, libdirac_common/motion.cpp, libdirac_common/mv_codec.cpp, libdirac_motionest/me_motion_type_decn.cpp, libdirac_motionest/me_motion_type_decn.h, libdirac_motionest/motion_estimate.cpp, win32/VS2003/ConversionUtils/BMPtoRGB/Debug/BuildLog.htm, win32/VS2003/ConversionUtils/BMPtoRGB/Debug/vc70.idb, win32/VS2003/ConversionUtils/BMPtoRGB/Debug/vc70.pdb: Prediction units can now use either global or block motion. (Decision based on similarity of global and block motion vectors.) 2005-05-11 10:13 tjdwave * libdirac_common/wavelet_utils.cpp: Fixed -pedantic errors on unused variables. Replaced dynamic built-in array (which violates ISO C++) with array class. 2005-05-05 15:10 tjdwave * unit_tests/wavelet_utils_test.cpp: Added support for testing all different wavelet transforms for invertibility. 2005-05-04 14:35 tjdwave * libdirac_common/common.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_common/band_codec.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp: Modifications to support different wavelet filter types. wavelet_utils.{cpp,h} Added three new filter types with lifting implementations, all much faster than Daubechies (9,7). Refactored the code to support filter selection in constructor of WaveletTransform class. Added method to correctly output DC band expected values. Separated off coefficient interleaving and deinterleaving. Setting of subband weights is now a WaveletTransform function, as noise weighting factors depend on the filter choice. band_codec.cpp Removed literal constant and used 0 instead for top-left DC value prediction. comp_compress.cpp, comp_decompress.cpp Changed default filters from Daubechies (9,7) to faster filters which perform almost as well. This is a temporary mod. It is intended to be able to select fast filters via the CLI and for wavelet filter choices to be signalled in frame headers. This will be done in later refactoring to converge with the bitstream syntax in terms of frame types and header information. 2005-05-04 12:13 mservais * libdirac_motionest/: me_motion_type_decn.cpp, me_motion_type_decn.h: Introduces decision as to whether individual prediction units should use Global Motion or not. (Not complete yet!) 2005-05-04 12:06 mservais * libdirac_common/common.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_motionest/motion_estimate.cpp, win32/VS2003/libdirac_common/libdirac_common.vcproj, win32/VS2003/libdirac_motionest/libdirac_motionest.vcproj: Introduces decision as to whether individual prediction units should use Global Motion or not. (Not complete yet!) 2005-04-13 16:36 asuraparaju * libdirac_common/arrays.h: New constants PIXEL_VALUE_MIN and PIXEL_VALUE_MAX to define the upper and lower limits on pixel values. 2005-04-13 16:28 asuraparaju * libdirac_common/frame.cpp: Included an MMX implementation of Frame::ClipComponent to achieve a decoding speedup in conjuction with mot_comp.cpp changes. Also using pointer arithmetic insted of index operator when accessing TwoDArray objects. 2005-04-13 16:25 asuraparaju * libdirac_motionest/me_utils_mmx.cpp: Using pointer arithmetic instead of the index operator when using TwoDArray objects to get an overall slight improvement in encoding speed. 2005-04-13 16:16 asuraparaju * libdirac_common/mot_comp.cpp: Partially applied patch 1151976. Using pointer arithmetic instead of index operator to access TwoDArray objects. A few other tweaks to improve cache locality. 2005-04-13 16:09 asuraparaju * libdirac_encoder/quant_chooser.cpp: Fix errors reported by MIPSPro C++ compiler regarding not specifiying the namespace for math functions like floor and log. 2005-04-13 16:06 asuraparaju * libdirac_common/arith_codec.h: Fix g++ warning re unused variables. 2005-04-13 16:06 asuraparaju * configure.ac: Included icc compile time flag -wr964 to treat warning 964 as a remark when mmx is enabled. 2005-04-12 11:56 timborer * doc/DiracSpecV0.1.doc: Modifed default Motion Vector precision (now 1/4 pel), added note that max MV precision should be included in Level. Corrected typos. 2005-04-06 15:31 tjdwave * libdirac_common/: band_codec.cpp, band_codec.h, mv_codec.cpp, mv_codec.h: Oops. Correct files now uploaded. 2005-04-06 15:28 tjdwave * libdirac_common/: band_codec.cpp, band_codec.h, mv_codec.cpp, mv_codec.h: Changes to reflect mods to arith_codec.h: in particular, Update is removed as this is no longer a virtual function. Instead the base class function is called directly in the encoding/decoding engines. 2005-04-06 15:07 tjdwave * libdirac_common/arith_codec.h: Speed-up to arithmetic coding and decoding, using probability range renormalisation to avoid unnecessary divides. 2005-04-05 14:56 timborer * doc/DiracSpecV0.1.doc: Initial draft of Dirac spec. This is not a specification of what we have but a proposed spec for what we want. At the moment it focuses on syntax rather than semantics. It is inkorect and incomplet. 2005-03-17 11:21 mservais * libdirac_motionest/motion_estimate.cpp: Example with "Global Motion Only" set to 1. 2005-03-17 11:01 mservais * libdirac_motionest/: filter_weighted_local.cpp, global_motion.cpp, me_mode_decn.cpp, model_affine.cpp, model_affine.h, model_global_motion.h, model_projective.h, motion_estimate.cpp, reject_intensity.cpp, reject_sad.cpp: Initial implementation of Global Motion. Allows for Global Motion Only switch for each frame. If this is set, only the Global Motion Parameters are coded - i.e. no block motion vectors are coded. 2005-03-17 10:57 mservais * libdirac_common/common.h, libdirac_common/mot_comp.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h: Initial implementation of Global Motion. Allows for Global Motion Only switch for each frame. If this is set, only the Global Motion Parameters are coded - i.e. no block motion vectors are coded. 2005-03-17 10:43 mservais * libdirac_motionest/reject_local.cpp: Initial implementation of Global Motion. Allows for Global Motion Only switch for each frame. If this is set, only the Global Motion Parameters are coded - i.e. no block motion vectors are coded. 2005-03-17 10:34 mservais * libdirac_motionest/global_motion.h: Initial Implementation for Global Motion. Allows a Global Motion Only switch for each frame. If this is set, only the Global Motion Parameters are coded - i.e. no block motion vectors are coded. 2005-03-11 13:43 asuraparaju * libdirac_common/: common.cpp, common.h: Fixed bug 1159031. dirac_quantiser_lists is not an extern anymore and is limited to file scope. 2005-03-04 14:55 tjdwave * libdirac_common/arrays.h, AUTHORS: Added Mike Ferenduros' mods to arrays, so that memory allocation is always contiguous. Also added him to list of contributors. 2005-02-17 14:07 asuraparaju * ChangeLog: [no log message] 2005-02-17 13:05 asuraparaju * NEWS: Included Dirac 0.5.1 release notes 2005-02-17 13:05 asuraparaju * README.release: Included Dirac Directshow filter and Mplayer patch to checklist 2005-02-17 13:03 asuraparaju * README.developers: Modified MMX optimisation implementation guidelines to use Intrinsics. Included notes on conducting end-to-end test using 'make check' and create_dirac_testfile.pl 2005-02-17 13:02 asuraparaju * README: Included notes on how to enable MMX optimisations and how to use the data generation script create_dirac_testfile.pl 2005-02-17 12:23 asuraparaju * picheader/headmain.cpp: Not returning an exit code when usage info is displayed. 2005-02-17 12:22 asuraparaju * tests/create_dirac_testfile.pl: Fix compilation errors. 2005-02-17 12:21 asuraparaju * tests/Makefile.am: Include scrip create_dirac_testfile.pl in install list to bin directory 2005-02-16 17:52 asuraparaju * libdirac_common/bit_manager.h: the bitstream has changed. So updated bitstream version so that an error is reported if attempting to decode older versions of Dirac files. 2005-02-16 17:48 asuraparaju * extras/patches/: MPlayer-1.0pre6a_dirac-0.5.x.patch, README_MPlayer-1.0pre6a_dirac-0.5.x_patch: Mplayer 1.0pre6a patch to enable Dirac support in MPlayer 2005-02-16 17:42 asuraparaju * extras/dirac_dshow/src/diracsplitter/: DiracSplitter.cpp, DiracSplitter.def: Dirac direct show filter files 2005-02-16 17:40 asuraparaju * extras/dirac_dshow/src/basesplitter/: BaseSplitterFileEx.cpp, BaseSplitterFileEx.h: Direct show filter files 2005-02-16 17:19 asuraparaju * extras/dirac_dshow/: DiracSplitter.sln, INSTALL, README.developers, include/IChapterInfo.h, include/IKeyFrameInfo.h, include/moreuuids.h, include/matroska/matroska.h, include/winddk/devioctl.h, include/winddk/ntddcdrm.h, include/winddk/ntddstor.h, src/basesplitter/AsyncReader.cpp, src/basesplitter/AsyncReader.h, src/basesplitter/BaseSplitter.cpp, src/basesplitter/BaseSplitter.h, src/basesplitter/BaseSplitterFile.cpp, src/basesplitter/BaseSplitterFile.h, src/basesplitter/basesplitter.vcproj, src/basesplitter/stdafx.cpp, src/basesplitter/stdafx.h, src/diracsplitter/DiracSplitter.h, src/diracsplitter/DiracSplitter.rc, src/diracsplitter/DiracSplitter.vcproj, src/diracsplitter/DiracSplitterFile.cpp, src/diracsplitter/DiracSplitterFile.h, src/diracsplitter/resource.h, src/diracsplitter/stdafx.cpp, src/diracsplitter/stdafx.h, src/dsutil/DSUtil.cpp, src/dsutil/DSUtil.h, src/dsutil/MediaTypes.cpp, src/dsutil/MediaTypes.h, src/dsutil/NullRenderers.cpp, src/dsutil/NullRenderers.h, src/dsutil/a_yuv2rgb.asm, src/dsutil/a_yuvtable.asm, src/dsutil/convert_a.asm, src/dsutil/dsutil.vcproj, src/dsutil/stdafx.cpp, src/dsutil/stdafx.h, src/dsutil/text.cpp, src/dsutil/text.h, src/dsutil/vd.cpp, src/dsutil/vd.h, src/switcher/AudioSwitcher.h, src/switcher/StreamSwitcher.h: Patches and DirectShow filter related files 2005-02-15 11:39 asuraparaju * win32/VS2003/: dirac.sln, ConversionUtils/ConversionUtils.vcproj, ConversionUtils/BMPtoRGB/BMPtoRGB.vcproj, ConversionUtils/RGBtoBMP/RGBtoBMP.vcproj, ConversionUtils/RGBtoUYVY/RGBtoUYVY.vcproj, ConversionUtils/RGBtoYUV411/RGBtoYUV411.vcproj, ConversionUtils/RGBtoYUV420/RGBtoYUV420.vcproj, ConversionUtils/RGBtoYUV422/RGBtoYUV422.vcproj, ConversionUtils/RGBtoYUV444/RGBtoYUV444.vcproj, ConversionUtils/UYVYtoRGB/UYVYtoRGB.vcproj, ConversionUtils/YUV411toRGB/YUV411toRGB.vcproj, ConversionUtils/YUV420toRGB/YUV420toRGB.vcproj, ConversionUtils/YUV422toRGB/YUV422toRGB.vcproj, ConversionUtils/YUV444toRGB/YUV444toRGB.vcproj, ConversionUtils/libconv_common/libconv_common.vcproj, DecodeDirac/DecodeDirac.vcproj, DiracDecoder/DiracDecoder.vcproj, DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, DiracEncoder/DiracEncoder.vcproj, DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, EncodeDirac/EncodeDirac.vcproj, Everything/Everything.vcproj, InstrumentDirac/InstrumentDirac.vcproj, InstrumentDirac/libdirac_instrument/libdirac_instrument.vcproj, MakeHeader/MakeHeader.vcproj, libdirac_common/libdirac_common.vcproj, libdirac_motionest/libdirac_motionest.vcproj: Added new targets for building with MMX optimisation enabled. 2005-02-15 11:38 asuraparaju * configure.ac: Update release id to 0.5.1. Added flag to enable MMX optimisation and test for checking if MMX optimising is available. Default opt level changed to -O3 for g++ and icc. Added extra optimisation flags when compiling with g++. Fixed cppunit availability check to report linker errors so that shared library mismatches are trapped. 2005-02-15 11:33 asuraparaju * encoder/encmain.cpp: Modified error messages to output more information. 2005-02-15 11:31 asuraparaju * tests/: Makefile.am, create_dirac_testfile.pl, samples.at, testsuite.at: A new script to generate dirac test data of different chroma formats from source RGB format input data. A new testcase, samples.at, which looks for Dirac test data in the directory specified by the env variable DIRAC_INPUT_DATA_DIR. The script and testcase are useful to run end-to-end tests using all input formats supported by Dirac. 2005-02-15 11:21 asuraparaju * libdirac_motionest/: Makefile.am, me_utils.cpp, me_utils_mmx.cpp, me_utils_mmx.h: Using MMX to compute block differences. Applied a modified version of patch 1081743. 2005-02-15 11:15 asuraparaju * libdirac_common/: band_codec.h, wavelet_utils.h: Fixed doxygen warnings 2005-02-15 11:13 asuraparaju * acinclude.m4: File containing user defined autoconf macro functions specific to Dirac project 2005-02-08 14:02 tjdwave * libdirac_common/arith_codec.h: Replaced delete with delete[] in destructor. Added clean-up in data reading so that the class can be re-used without causing a memory leak. 2005-02-07 12:12 tjdwave * libdirac_encoder/comp_compress.cpp, libdirac_decoder/comp_decompress.cpp: Fixed bug where blocks of coefficients with zero dimensions were being generated. There's now a minimum size of 4x4 coefficients for a code block. 2005-02-02 15:29 asuraparaju * libdirac_common/arith_codec.h, libdirac_common/band_codec.cpp, libdirac_common/mv_codec.cpp, libdirac_decoder/comp_decompress.cpp: Fixed g++ warnings when compiled in debug mode (i.e. configure with flag --enable-debug) 2005-02-02 15:24 dirac_dev * win32/VS2003/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj: Added quant_chooser.cpp/h 2005-02-02 14:50 tjdwave * libdirac_decoder/: comp_decompress.cpp, comp_decompress.h: Added support for multiple code blocks/quantisers. Added separate function for reading header. 2005-02-02 14:49 tjdwave * libdirac_encoder/Makefile.am: Modded to add quant_chooser.{cpp,h} 2005-02-02 14:47 tjdwave * libdirac_encoder/: comp_compress.cpp, comp_compress.h, quality_monitor.cpp, quality_monitor.h: Removed quantiser selection from comp_compress to another class. 2005-02-02 14:46 tjdwave * libdirac_encoder/: quant_chooser.cpp, quant_chooser.h: Modified author details. 2005-02-02 14:44 tjdwave * libdirac_encoder/: quant_chooser.cpp, quant_chooser.h: Added classes to handle selecting quantisers. These allow a single quantiser per subband to be chosen, or alternatively one for each code block. 2005-02-02 14:42 tjdwave * libdirac_common/: band_codec.cpp, common.cpp, mv_codec.cpp, wavelet_utils.cpp, arith_codec.h, band_codec.h, common.h, mv_codec.h, wavelet_utils.h: Modified wavelet coeff coding to code blocks of coefficients. with skip flags if all coefficients are zero. Wavelet coefficient coding has reduced use of class member variables for clarity. The arithmetic coding and decoding engines have been modified to improve speed and code organisation. The decoder now reads in all the data before beginning decoding. Coding of motion vector data has been tidied, and modified to accommodate changes in the arithmetic coding engine. Block prediction modes are now coded slightly differently, which improves compression performance. 2005-01-24 16:58 tjdwave * libdirac_common/common.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_motionest/me_mode_decn.cpp: Changed prediction of block modes to be bitwise - bit 0 indicates the presence of a Ref1 MV, and bit 1 indicated the presence of a Ref2 MV. This is also reflected in selecting modes in motion estimation. 2005-01-24 16:06 tjdwave * libdirac_motionest/me_mode_decn.cpp: Re-instituted bi-directional prediction, inadvertently commented out. 2005-01-24 14:43 tjdwave * libdirac_motionest/: block_match.cpp, block_match.h, me_subpel.cpp: Made local motion vector variance a member function of the block matcher, and made the cut-off limits depend on the picture size. This improves performance at HD by 4% or so. 2005-01-18 19:13 mservais * libdirac_motionest/global_motion.h: Testing CVS (Marc) 2005-01-18 18:20 mservais * libdirac_motionest/global_motion.h: Testing CVS (Marc) 2005-01-18 17:42 mservais * libdirac_motionest/global_motion.cpp: Marc: Testing that CVS works OK 2005-01-12 17:50 asuraparaju * libdirac_motionest/global_motion.h: Forgot to add this file with the earlier lot of global motion files 2005-01-12 16:18 asuraparaju * win32/VS2003/libdirac_motionest/libdirac_motionest.vcproj: Added global motion related files to the project 2005-01-12 15:30 asuraparaju * libdirac_motionest/: Makefile.am, filter_weighted_local.cpp, filter_weighted_local.h, global_motion.cpp, model_affine.cpp, model_affine.h, model_global_motion.cpp, model_global_motion.h, model_projective.cpp, model_projective.h, motion_estimate.cpp, refine_motion_vector_field.cpp, refine_motion_vector_field.h, reject_edge.cpp, reject_edge.h, reject_intensity.cpp, reject_intensity.h, reject_local.cpp, reject_local.h, reject_motion_vector_outliers.cpp, reject_motion_vector_outliers.h, reject_outlier.cpp, reject_outlier.h, reject_sad.cpp, reject_sad.h, reject_value.cpp, reject_value.h, test_global_motion_model.cpp, test_global_motion_model.h, test_mv_sad.cpp, test_mv_sad.h: Global motion estimation related new files and mods to existing files 2004-12-22 11:59 tjdwave * libdirac_motionest/block_match.cpp: Fixed bug with assigning costs to lists of vectors, reported by Eric Rannaud. 2004-12-10 15:28 asuraparaju * libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, util/instrumentation/libdirac_instrument/Makefile.am: Fixed bug 1081435. 2004-12-10 15:21 asuraparaju * decoder/Makefile.am, encoder/Makefile.am, picheader/Makefile.am, util/instrumentation/Makefile.am: Link in math library, libm, if required. 2004-12-10 15:20 asuraparaju * tests/colourbars.at: Not ignoring standard error so that errors are trapped when running the test suite. 2004-12-10 15:18 asuraparaju * encoder/encmain.cpp: Print the bitrate to standard output even when not in verbose mode. 2004-12-10 15:16 asuraparaju * libdirac_encoder/comp_compress.cpp: Included Peter Meerwald in list of contributors 2004-12-10 15:13 asuraparaju * libdirac_encoder/comp_compress.cpp: Fixed errors reported by MIPSpro 7.4 C++ compiler. Applied patch 1081664 which improves encoding speed by 10-15%. 2004-12-10 15:04 asuraparaju * configure.ac: Added check to see if math library, libm, needs to be linked. Added test to check for C++ header files that are not included in old versions of C++ compilers. Applied patch 1081730. 2004-12-10 14:59 asuraparaju * bootstrap: Exit with a failure message if automake fails. 2004-12-01 16:21 asuraparaju * win32/VS2003/MakeHeader/MakeHeader.vcproj: MakeHeader.exe now is correctly being created in win32/VS2003/bin/ directory. 2004-12-01 14:45 asuraparaju * ChangeLog: [no log message] 2004-12-01 14:40 asuraparaju * NEWS: Included 0.5.0 release notes 2004-12-01 14:39 asuraparaju * README: Updated Section 3 (Building and installing) to reflect changes to building the codec under UNIX-like envoroments and MS Windows. Added sub-section on how to build Dirac coder on MS Windows platform using MS VC++ .NET 2003. Updated make_header usage in the File Formats suc-section. Update encoder app usage information. 2004-12-01 14:35 asuraparaju * README.developers: New sub-section on namespaces to be used in Dirac. Added note on new test target 'valgrind-check' 2004-12-01 14:32 asuraparaju * TODO: Replaced contents with link to the TODO list on Dirac homepage 2004-12-01 14:13 timborer * util/conversion/YUV420toRGB.cpp: Fixed bug 1050816. 2004-11-29 12:54 asuraparaju * libdirac_common/arith_codec.h, libdirac_common/arrays.h, libdirac_common/band_codec.h, libdirac_common/bit_manager.h, libdirac_common/common.h, libdirac_common/mot_comp.h, libdirac_common/mv_codec.h, libdirac_common/pic_io.h, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.h, libdirac_decoder/seq_decompress.h, libdirac_encoder/seq_compress.h, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.h: Fix warnings reported by doxygen 2004-11-26 13:47 asuraparaju * misc/xparam-1.22-gcc-3.4.0.patch: xparam package not used hence removed this file from repository 2004-11-26 13:43 asuraparaju * windows/dirac/: dirac.dsw, libdirac_common/libdirac_common.dsp, libdirac_decoder/libdirac_decoder.dsp, libdirac_encoder/libdirac_encoder.dsp, libdirac_motionest/libdirac_motionest.dsp: Removing older VS files that are no longer supported 2004-11-26 13:36 asuraparaju * unit_tests/: frames_test.cpp, frames_test.h, motion_comp_test.cpp, motion_comp_test.h: Unit test for Motion Compensation 2004-11-26 13:36 asuraparaju * unit_tests/Makefile.am: Added Motion compensation unit test related files to list of targets 2004-11-26 13:28 asuraparaju * configure.ac: Modified check for cppunit test framework to ensure that it can run without errors. This was required because unit tests fail when built with icc. This is a temporary measure until it is determined why unit tests fail when built with icc on linux. 2004-11-26 13:23 asuraparaju * AUTHORS: Updated list of contributors 2004-11-26 13:22 asuraparaju * Makefile.am: Removed win directory from distribution list as build with nmake is no longer supported. Added win32 to list of target subdirectories 2004-11-26 13:13 asuraparaju * win32/: Makefile.am, VS2003/Makefile.am, VS2003/dirac.sln, VS2003/ConversionUtils/ConversionUtils.vcproj, VS2003/ConversionUtils/BMPtoRGB/BMPtoRGB.vcproj, VS2003/ConversionUtils/RGBtoBMP/RGBtoBMP.vcproj, VS2003/ConversionUtils/RGBtoUYVY/RGBtoUYVY.vcproj, VS2003/ConversionUtils/RGBtoYUV411/RGBtoYUV411.vcproj, VS2003/ConversionUtils/RGBtoYUV420/RGBtoYUV420.vcproj, VS2003/ConversionUtils/RGBtoYUV422/RGBtoYUV422.vcproj, VS2003/ConversionUtils/RGBtoYUV444/RGBtoYUV444.vcproj, VS2003/ConversionUtils/UYVYtoRGB/UYVYtoRGB.vcproj, VS2003/ConversionUtils/YUV411toRGB/YUV411toRGB.vcproj, VS2003/ConversionUtils/YUV420toRGB/YUV420toRGB.vcproj, VS2003/ConversionUtils/YUV422toRGB/YUV422toRGB.vcproj, VS2003/ConversionUtils/YUV444toRGB/YUV444toRGB.vcproj, VS2003/ConversionUtils/libconv_common/libconv_common.vcproj, VS2003/DecodeDirac/DecodeDirac.vcproj, VS2003/DiracDecoder/DiracDecoder.vcproj, VS2003/DiracDecoder/libdirac_decoder/libdirac_decoder.vcproj, VS2003/DiracEncoder/DiracEncoder.vcproj, VS2003/DiracEncoder/libdirac_encoder/libdirac_encoder.vcproj, VS2003/EncodeDirac/EncodeDirac.vcproj, VS2003/Everything/Everything.vcproj, VS2003/InstrumentDirac/InstrumentDirac.vcproj, VS2003/InstrumentDirac/libdirac_instrument/libdirac_instrument.vcproj, VS2003/MakeHeader/MakeHeader.vcproj, VS2003/libdirac_common/libdirac_common.vcproj, VS2003/libdirac_motionest/libdirac_motionest.vcproj: Solution and Project files for building Dirac using MS Visual Studio 2003 2004-11-25 13:42 asuraparaju * decoder/decmain.cpp, encoder/encmain.cpp: Modified to use only public API and none of the C++ classes 2004-11-25 13:41 asuraparaju * libdirac_common/dirac_types.h: Turn off _declspec for non-windows builds and windows static builds 2004-11-24 11:41 tjdwave * doc/algorithm/rdo_mot_est.htm: Remaining mods to algorithmic docs. 2004-11-24 11:27 tjdwave * doc/algorithm/: algorithm.htm, const_qual.htm, intra_pred.htm, intro.htm, quantisation.htm, subband_rdo.htm: Mods to algorithm docs; intra_pred.htm removed. 2004-11-22 14:23 asuraparaju * ChangeLog: [no log message] 2004-11-22 14:15 asuraparaju * AUTHORS: Updated list of contributors. 2004-11-22 14:05 asuraparaju * libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/cmd_line.cpp, libdirac_common/cmd_line.h, libdirac_common/common_types.h, libdirac_common/dirac_assertions.h, libdirac_common/frame.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/wavelet_utils.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/dirac_cppparser.cpp, libdirac_decoder/dirac_cppparser.h, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.h, libdirac_encoder/comp_compress.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, libdirac_motionest/pixel_match.cpp, libdirac_motionest/pixel_match.h: Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:58 asuraparaju * bootstrap: Added libtool support 2004-11-22 13:57 asuraparaju * dirac.pc.in: After the library restructuring, only two libraries are required - the encoder and decoder libraries. 2004-11-22 13:57 asuraparaju * configure.ac: Added libtool support to build libraries. 2004-11-22 13:56 asuraparaju * INSTALL: Minor changes related to the main configure file and the flags to use 2004-11-22 13:56 asuraparaju * README: Added descrition of additional flags available at configure time 2004-11-22 13:54 asuraparaju * decoder/Makefile.am, encoder/Makefile.am, libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, util/conversion/common/Makefile.am, util/instrumentation/Makefile.am, util/instrumentation/libdirac_instrument/Makefile.am: Instead of 4 libraries only two libraries are now built and installed - libdirac_encoder and libdirac_decoder. Only the public "C" API headers and libraries are copied to the installation directories when 'make install' is used. Now using libtool to build libraries. On GNU/Linux and UNIX-like platforms, shared and static versions of the exported libraries are built. On MS Windows platforms, only shared libraries or static libraries can be built but not both. 2004-11-22 13:51 asuraparaju * tests/: Makefile.am, colourbars.at, unittests.at: Added valgrind support while running tests. The 'make valgrind-check' command now runs valgrind memory checks on all the tests. Note that the tests take a very long time to run in this mode 2004-11-22 13:50 asuraparaju * util/: Makefile.am, conversion/Makefile.am: Include Id tag to track revisions. 2004-11-22 13:48 asuraparaju * doc/: Makefile.am, algorithm/Makefile.am, api/Makefile.am, programmers/Makefile.am: Included the Id tag to track revisions. 2004-11-22 13:46 asuraparaju * Makefile.am: Added support for 'valgrind-check' argument to make. 2004-11-22 13:42 asuraparaju * util/instrumentation/libdirac_instrument/: draw_overlay.cpp, draw_overlay.h, gm_inliers.cpp, gm_inliers.h, motion_arrows.cpp, motion_arrows.h, motion_colour.cpp, motion_colour.h, motion_colour_arrows.cpp, motion_colour_arrows.h, overlay.cpp, overlay.h, overlay_symbols.cpp, overlay_symbols.h, pred_mode.cpp, pred_mode.h, sad.cpp, sad.h, split_mode.cpp, split_mode.h: Fixed "invalid read" and "memory leak" errors reported by valgrind. Added namespace support. All instrumentation library functionality is in the namespace dirac_instr. 2004-11-22 13:39 asuraparaju * util/instrumentation/: process_sequence.cpp, process_sequence.h: Replace all refrences to PicInput and PicOutput classes with FileStreamInput and FileStreamOutput classes. m_zl (number of frames in sequence) is no longer part of the Sequence header. Changed function ProcessSequence::DoSequence to work around this. 2004-11-22 13:39 asuraparaju * util/instrumentation/instrmain.cpp: Replaces all references to PicInput and PicOutput classes with FileStreamInput and FileStreamOutput classes. 2004-11-22 13:37 asuraparaju * picheader/: Makefile.am, headmain.cpp: Number of frames in a sequence is no longer required in encode/decode operations. 2004-11-22 13:36 asuraparaju * libdirac_encoder/: seq_compress.cpp, seq_compress.h: Restructured SequenceCompressor class to separate frame loading and frame compression functionality into two different functions. This was necessary to implement the "C" interface to the encoder. Added new access functions, GetFrameEncoded and GetMEData(), to return the latest frame encoded and the motion estimation data associated with it. Added function EndSequence that writes end of sequence information the the output bitstream. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:35 asuraparaju * libdirac_encoder/: frame_compress.cpp, frame_compress.h: Motion Estimation data is no longer written to a file. Instead, added new functions, IsMEDataAvail and GetMEdata, to enable class user to access the Motion Estimation data. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:34 asuraparaju * libdirac_encoder/comp_compress.cpp: Allowed a full range of quantisers, so that lossless coding is possible. Replaced tabs with spaces. Fixed MSVC++ compiler warnings. Added namespace support. 2004-11-22 13:33 asuraparaju * libdirac_decoder/seq_decompress.cpp: Removed all depedency on the m_zl (number of frames in sequence) parameter in the sequence parameters which no longer exists. 2004-11-22 13:32 asuraparaju * decoder/decmain.cpp, libdirac_decoder/dirac_parser.cpp, libdirac_decoder/dirac_parser.h: Moved structures common to the encoder and decoder "C" interfaces into librac_common/dirac_types.h 2004-11-22 13:30 asuraparaju * libdirac_common/bit_manager.h: Updated the bit stream version since the the bitstream in release 0.5.0 differs from the bitstream in version 0.4.x. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:29 asuraparaju * libdirac_common/: frame_buffer.cpp, frame_buffer.h: FrameBuffer functions now support all io classes derived from the abstract pic io classes StreamPicInput and StreamPicOutput Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:29 asuraparaju * libdirac_common/: pic_io.cpp, pic_io.h: Restructured the PicIO classes so that in addition to file io streams, memory based io streams are also supported. Replaced PicInput and PicOutput classes with FileStreamInput and FileStreamOutput classes. 2004-11-22 13:28 asuraparaju * libdirac_common/dirac_assertions.cpp: Modified dirac_assert function always dump core irrespetive of whether the code was built in debug mode or release mode. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:26 asuraparaju * unit_tests/: core_suite.h, cppunit_testsuite.cpp, utmain.cpp: Added licence declaration. 2004-11-22 13:25 asuraparaju * unit_tests/Makefile.am: Added wavelet transform test. 2004-11-22 13:24 asuraparaju * unit_tests/: arrays_test.cpp, arrays_test.h: Added unit test for TwoDArray value constructor. 2004-11-22 13:22 asuraparaju * README.developers: Added text on bootstrapping to create the configure script from the CVS repository. Also added text on how to profile the code. 2004-11-22 13:21 asuraparaju * libdirac_common/frame.cpp: Modified clipping so that overshoots are allowed wrt Rec 601 ranges. This is because the original data may have overshoots too. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:20 asuraparaju * libdirac_motionest/: me_mode_decn.cpp, me_utils.cpp: Minor code tidy. Assignment = changed to copy construction for a number of declarations. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:19 asuraparaju * libdirac_decoder/frame_decompress.cpp: Changes related to MotionCompensator constructor changes. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:16 asuraparaju * libdirac_common/: arith_codec.h, arrays.h, bit_manager.cpp, mot_comp.cpp, mot_comp.h, motion.cpp, motion.h, wavelet_utils.h: Added constant-value constructor to arrays.h. Removed motion compensation-specific functions from motion.h. Refactored mot_comp.h for speed and to remove rounding errors, incorporating patch supplied by Stephen Bearcroft. Also changed function for computing overlapped block weights to remove potential rounding errors here. Changed constructor to configure motion compensation for addition or subtraction. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:13 asuraparaju * encoder/encmain.cpp: Modified the encoder to use the new Encoder Public API. 2004-11-22 13:11 asuraparaju * libdirac_common/: common.cpp, common.h: Enforced a maximum of 100% overlap in setting block sizes. Removed m_zl (number of frames) parameter from SeqParams class. The user need no longer to specify the number of frames in the input sequence. Added new functions ChromaWidth and ChromaHeight to SeqParams class which return the width and height of the chroma component. Changed m_output_path in EncParams to var type std::string to prevent buffer overflow errors. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:09 asuraparaju * libdirac_common/: upconvert.cpp, upconvert.h: Fixed bug in interpolating at the edge of the picture. Also clarified variable names. Added namespace support. All core Dirac functionality is now in namespace dirac. 2004-11-22 13:07 asuraparaju * unit_tests/: wavelet_utils_test.cpp, wavelet_utils_test.h: Unit test to test the Wavelet utilities 2004-11-22 13:06 asuraparaju * tests/at_wrap.in: Wrapper script around tests to use valgrind for memory checks 2004-11-22 13:05 asuraparaju * libdirac_encoder/: dirac_encoder.cpp, dirac_encoder.h: Encoder "C" Public API implementation files 2004-11-22 13:04 asuraparaju * libdirac_common/dirac_types.h: New header file to hold structures common to the Dirac Encoder and Decoder public "C" API 2004-11-04 12:54 asuraparaju * encoder/encmain.cpp: Setting original frame dimensions to codec_params for global motion 2004-11-04 12:54 asuraparaju * libdirac_common/arrays.h: Applied patch 1055707 and extended it to use memcpy for assigment = and copy constructor in both One-D and Two-D arrays. 2004-11-04 12:53 asuraparaju * libdirac_common/common.h: Including original frame dimensions in codec_params for use in global motion 2004-11-04 12:53 asuraparaju * libdirac_common/: motion.cpp, motion.h: Including arrays to hold global motion data in MvData and MEData 2004-11-04 12:52 asuraparaju * libdirac_common/: wavelet_utils.cpp, wavelet_utils.h: Refactored wavelet transform (again). Code now does re-ordering separately so that all the wavelet lifting stages can be done with in-place calculation. All loops traverse contiguous data in memory to facilitate future vectorisation. 2004-11-04 12:52 asuraparaju * libdirac_encoder/comp_compress.cpp: Fixed bug 1055692 which was caused by integer overflow when calculating the quality based on 4th powers of error. The integer overflow resulted in attempting to determine the square root of a negative number which caused the encoder to go into a permanent loop when using gcc 3.4.2. Modified the Mean Square Error calculation to use double instead of int type to fix this bug. 2004-11-04 12:52 asuraparaju * libdirac_motionest/me_utils.cpp: Applied patch 1055714. Now the Difference calculator uses a CalcValueType accumulator rather than float. 2004-11-04 12:50 asuraparaju * util/instrumentation/: instrmain.cpp, libdirac_instrument/Makefile.am, libdirac_instrument/gm_inliers.cpp, libdirac_instrument/gm_inliers.h, libdirac_instrument/overlay.cpp, libdirac_instrument/overlay.h: Update instrumentation with changes related to handling global motion 2004-10-21 15:27 asuraparaju * libdirac_common/motion.cpp: Fix "invalid write error" reported by valgrind in function MEData::FindTransitions. This was causing the encoder to seg fault when using video of size 352x576. (Bug# 1050757) 2004-10-21 15:26 asuraparaju * libdirac_motionest/motion_estimate.cpp: Fix the error reported by valgrind in SetChromaDC where an unitialised variable was being used to initialise dcarray. 2004-10-20 18:27 asuraparaju * libdirac_motionest/block_match.cpp: Code tidy 2004-10-20 18:26 asuraparaju * libdirac_encoder/quality_monitor.h: Broke up extremely long function prototype into multiple lines 2004-10-20 18:24 asuraparaju * libdirac_encoder/quality_monitor.cpp: Introduced clipping of the feedback control signal to reduce overshoots due to inaccuracies in the model. 2004-10-20 18:23 asuraparaju * libdirac_decoder/: frame_decompress.cpp, frame_decompress.h: Fixed memory leak (Bug# 1044503) 2004-10-20 18:21 asuraparaju * libdirac_decoder/dirac_parser.cpp: Fixed memory leak (Bug# 1044501) 2004-10-20 18:20 asuraparaju * libdirac_common/mot_comp.cpp: Fixed memory leak (Bug #1044499) 2004-10-20 18:18 asuraparaju * libdirac_common/band_codec.cpp: Added max value for the number of symbols to be accumulated between resets. Prevents overflow in the arithmetic coder. 2004-10-20 18:17 asuraparaju * encoder/encmain.cpp: Changed GOP structure for 720p to be 24,3 not 24,6 2004-10-20 18:16 asuraparaju * decoder/decmain.cpp: Fixed memory leak caused by not freeing up frame buffer that was dynamically allocated 2004-09-21 14:02 asuraparaju * ChangeLog: Included details of checkins for 0.4.3 release 2004-09-21 13:58 asuraparaju * NEWS: Included 0.4.3 release notes 2004-09-21 13:45 asuraparaju * configure.ac: Updated release id to 0.4.3 2004-09-21 11:56 asuraparaju * encoder/encmain.cpp: Removed ambiguity between -HD720 and HD720p options. 2004-09-21 11:16 asuraparaju * util/instrumentation/libdirac_instrument/overlay.cpp: Fixed bug in setting x chroma factor for 4:1:1 input which caused the diagnostics tool to crash. 2004-09-21 11:15 asuraparaju * libdirac_motionest/: downconvert.cpp, downconvert.h: Fixed bug where downconverting a picture with odd valued dimensions. 2004-09-21 11:14 asuraparaju * libdirac_encoder/: quality_monitor.cpp, quality_monitor.h: Tidied and changed terminology to refer to quality rather than PSNR. 2004-09-21 11:14 asuraparaju * libdirac_common/: common.cpp, common.h: Fixed bug with block sizes for 411 coding. 2004-09-21 11:14 asuraparaju * doc/algorithm/: algorithm.htm, const_qual.htm, subband_rdo.htm: Added detail of the constant quality coding revisions. Updated version number. 2004-09-17 16:46 asuraparaju * libdirac_motionest/: block_match.cpp, me_mode_decn.cpp, me_subpel.cpp, me_subpel.h, motion_estimate.cpp: Changed structure to use a map for the different lambdas, which is encpasulated in the MEData structure. Limited size of motion vector costs to allow us to cope with motion transitions better. 2004-09-17 16:44 asuraparaju * libdirac_encoder/: comp_compress.cpp, frame_compress.cpp, quality_monitor.cpp, quality_monitor.h: Changed quality metric from PSNR to one based on 4th powers of errors, to give bigger weighting to large errors. 2004-09-17 16:43 asuraparaju * libdirac_common/: common.h, frame.cpp, frame_buffer.cpp, mot_comp.cpp, mot_comp.h, motion.cpp, motion.h, wavelet_utils.cpp: Fixed bug with scaling motion vectors for non-444 formats. Rationalised frame buffer functions. Added comments to common.h. General tidying up of code. 2004-09-10 14:13 asuraparaju * ChangeLog: Included details of recent checkins 2004-09-10 14:05 asuraparaju * NEWS: Included 0.4.2 release notes 2004-09-10 14:04 asuraparaju * configure.ac: Updated release id to 0.4.2 2004-09-10 12:34 asuraparaju * libdirac_common/pic_io.h, encoder/encmain.cpp: Ensure that the number of frame in the output pic header is set to the number of frames written to the file. 2004-09-10 11:06 asuraparaju * Makefile.am: Only Makefile and README from win directory are now included in distribution 2004-09-09 15:48 asuraparaju * util/instrumentation/: process_sequence.cpp, libdirac_instrument/draw_overlay.cpp, libdirac_instrument/draw_overlay.h, libdirac_instrument/overlay.cpp, libdirac_instrument/overlay.h: Fixed bug with handling reference 2 when only one reference frame is available 2004-09-09 15:43 asuraparaju * util/instrumentation/libdirac_instrument/split_mode.cpp: Fix writng beyond end of array bug which caused the diagnostics tool to crash when using split_mode. 2004-09-09 15:42 asuraparaju * util/instrumentation/README: Correct pathname to diagnostic tool 2004-09-09 15:41 asuraparaju * libdirac_encoder/seq_compress.cpp: Fixed bug with bit-rate being miscalculated when only a section of the sequence is encoded. 2004-09-09 15:40 asuraparaju * libdirac_encoder/frame_compress.cpp: Restored mod which outputs array dimensions for instrumentation output. 2004-09-09 15:39 asuraparaju * libdirac_common/wavelet_utils.cpp: Fixed bug with setting DC band perceptual weight. 2004-09-09 15:39 asuraparaju * encoder/encmain.cpp: Fixed bug with setting length of output sequence when coding a section of picture. 2004-09-09 15:38 asuraparaju * decoder/decmain.cpp: Print average frame decode time to stdout instead of stderr so that stderr can be monitored for errors in tests 2004-09-09 15:37 asuraparaju * configure.ac: Add diagnostic tool to test path 2004-09-09 15:36 asuraparaju * README.release: Add testing diagnostic tool to release checklist 2004-08-26 12:08 asuraparaju * ChangeLog: Updated with details of recent checkins 2004-08-26 12:05 asuraparaju * NEWS: Included 0.4.1 release notes 2004-08-26 12:02 asuraparaju * configure.ac: Updated release id to 0.4.1 2004-08-25 18:09 asuraparaju * ChangeLog: Updated this doc with details of recent checkins 2004-08-25 17:58 asuraparaju * decoder/Makefile.am, encoder/Makefile.am, libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, picheader/Makefile.am, unit_tests/Makefile.am, util/conversion/Makefile.am, util/conversion/common/Makefile.am, util/instrumentation/Makefile.am, util/instrumentation/libdirac_instrument/Makefile.am: Build under windows using gnu autotools, MSys as a shell and the no-cost MS VC++ 2003 compiler now supported. 2004-08-25 17:56 asuraparaju * configure.ac: Fixed bug in configure where configure passed but make unit_tests failed when a version of cppunit older that 1.10.2 is installed. Build under windows using gnu autotools, MSys as a shell and MS C++ compiler 7.1 (free version) now supported. 2004-08-25 17:55 asuraparaju * tests/Makefile.am: Set up CLEANFILES to the files created by encoder and decoder so that they are deleted during 'make clean' instead of manually deleting them. 2004-08-25 17:54 asuraparaju * README.release: Added compile and test under windows using MSYS and cl to checklist Included updating project page on www.freshmeat.net in check list. Corrected line numbering and added note to send email to dirac-announce mailing list. 2004-08-25 17:52 asuraparaju * README: Added a section on compiling using MSYS shell and VC++ 2003 compiler under windows. Replaced all tabas with spaces. Reformatted text to not exceed 80 chars per line. 2004-08-25 17:51 asuraparaju * doc/dirac_bitstream.txt: Fixed error concerning prefix codes. 2004-08-25 17:51 asuraparaju * encoder/encmain.cpp: Removed duplicate text output. Fixed char buffer overflow bug which causes encoder to fail when file name paths exceed 80 chars. 2004-08-25 17:50 asuraparaju * libdirac_common/common.h: Fixed bug where SeqParams.Interlace() was returning the chroma format instead of interlace. 2004-08-25 17:48 asuraparaju * libdirac_common/pic_io.cpp: Removed text output if we've run out of input. 2004-08-25 17:47 asuraparaju * libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/motion.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/block_match.cpp, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/pixel_match.cpp: Modified motion estimation so that it's done on the uncompressed data. Changed the ME utilities so that they compute SAD only. Modified mode decisions to restore weights applied to different levels of decomposition. Changed QualityMonitor class so that the internal model of rate versus distortion is effectively reset if we have to recode a frame. Fixed bug with measurement of PSNR. 2004-08-20 16:05 asuraparaju * tests/colourbars.at: Fix paths for out-of-tree builds 2004-08-19 15:27 asuraparaju * doc/api/dirac_api.doxygen: Include utilities in documentation 2004-08-19 14:55 asuraparaju * configure.ac: Update release id to 0.4.0 2004-08-19 13:32 asuraparaju * ChangeLog: Updated with details of recent checkins 2004-08-19 13:23 asuraparaju * decoder/Makefile.am, encoder/Makefile.am, libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, picheader/Makefile.am, tests/Makefile.am, unit_tests/Makefile.am, util/conversion/Makefile.am, util/conversion/common/Makefile.am, util/instrumentation/Makefile.am, util/instrumentation/libdirac_instrument/Makefile.am: Fixed build errors when compiling out of source tree. Out-of-source-tree builds are now successful. 2004-08-19 13:21 asuraparaju * NEWS: Included Alpha 0.4.0 release notes 2004-08-19 13:20 asuraparaju * decoder/decmain.cpp: Handling STATE_INVALID returned by parser. 2004-08-19 13:20 asuraparaju * encoder/encmain.cpp: Fixed bug with setting block sizes. 2004-08-19 13:19 asuraparaju * picheader/headmain.cpp: Replace tabs with spaces. Fixed a character array overrun error. 2004-08-19 13:17 asuraparaju * util/instrumentation/README: Updated this document 2004-08-19 13:16 asuraparaju * win/Makefile: Updated Makefile to build correctly 2004-08-19 13:14 asuraparaju * TODO: Update todo list 2004-08-19 13:13 asuraparaju * README.release: Include tagging of files with release id in the checklist 2004-08-19 13:13 asuraparaju * README: Updated for 0.4.0 release 2004-08-19 13:12 asuraparaju * AUTHORS: Updated list of contributors 2004-08-19 13:11 asuraparaju * dirac.pc.in: Setting include and libs vars to correct values so that pkg-config shows the correct dependencies for Dirac. 2004-08-19 13:10 asuraparaju * configure.ac: Included additional condtional vars to check if documentation can be built successfully. Included -Wno-long-double flag on platforms where it is supported to prevent compile time warnings. 2004-08-19 13:08 asuraparaju * doc/: Makefile.am, api/Makefile.am, api/dirac_api.doxygen, api/dirac_api_foot.html, programmers/Makefile.am: Included additional condtional vars to check if documentation can be built successfully. Included dirac_bitstream.txt in distribution. 2004-08-19 13:06 asuraparaju * doc/algorithm/: algorithm.htm, rdo.htm, toc.htm, transform_coding.htm: Added links to constant quality encoding pages. 2004-08-19 13:04 asuraparaju * doc/algorithm/const_qual.htm: Added documentation on constant quality encoding. 2004-08-19 13:03 asuraparaju * doc/faq.htm: Added details on patent position. Fixed broken links. Minor text changes 2004-08-19 13:02 asuraparaju * doc/dirac_bitstream.txt: Initial bitstream syntax document for Dirac bitstream v0.1 2004-08-19 12:55 asuraparaju * util/instrumentation/: instrmain.cpp, process_sequence.cpp, process_sequence.h, libdirac_instrument/draw_overlay.cpp, libdirac_instrument/draw_overlay.h, libdirac_instrument/motion_arrows.cpp, libdirac_instrument/motion_arrows.h, libdirac_instrument/motion_colour.cpp, libdirac_instrument/motion_colour_arrows.cpp, libdirac_instrument/overlay.cpp, libdirac_instrument/pred_mode.cpp, libdirac_instrument/sad.cpp, libdirac_instrument/split_mode.cpp: Output all MEData members and cope with monochrome sequences Fixed block dimensions bug. Fixed padded pictures bug. 2004-08-19 12:50 asuraparaju * libdirac_common/bit_manager.h, libdirac_common/common.h, libdirac_decoder/dirac_cppparser.cpp, libdirac_decoder/dirac_cppparser.h, libdirac_decoder/dirac_parser.cpp, libdirac_decoder/dirac_parser.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/seq_decompress.cpp: Bitstream v0.1 related changes - Handling new start codes and bitstream version 2004-08-19 12:46 asuraparaju * libdirac_motionest/: me_mode_decn.cpp, me_utils.cpp, motion_estimate.cpp, pixel_match.cpp: Tiffled motion estimation parameters to improve performance. 2004-08-19 12:45 asuraparaju * libdirac_common/arith_codec.h: Minor mods to fix compile time errors 2004-08-19 12:45 asuraparaju * libdirac_common/dirac_assertions.h: New debug test macros TEST, TESTM, REPORT and REPORTM 2004-08-19 12:44 asuraparaju * libdirac_common/: motion.cpp, motion.h: Instrumentation update: outputs all MEData members and copes with monochrome sequences 2004-08-19 12:43 asuraparaju * libdirac_common/: mot_comp.cpp, pic_io.cpp, wavelet_utils.cpp: Cleansed code 2004-08-19 12:40 asuraparaju * libdirac_encoder/: frame_compress.cpp, quality_monitor.cpp, quality_monitor.h, seq_compress.cpp: Handling new start codes and bitstream version. Fixed bug in quality monitor code where padding area was taken into account in calculating PSNR. Removed unused code for calculating weighted PSNR. Removed commented output from quality monitor. Instrumentation update: outputs all MEData members and copes with monochrome sequences. 2004-08-11 16:30 asuraparaju * ChangeLog: Update this log with details recent checkins 2004-08-11 16:23 asuraparaju * tests/Makefile.am: Deleting data files created by encode and decode operation durng cleanup. 2004-08-11 15:53 asuraparaju * decoder/decmain.cpp: Decoder modified to use the "C" interface. 2004-08-11 15:53 asuraparaju * encoder/encmain.cpp: Added support for cut-detection and intra frame insertion. Changed output structure to output frame by frame, and added recoding to exploit this. Recoding takes place if quality is not within a range of the target quality. Replaced tabs with spaces. Updated data file extension 2004-08-11 15:48 asuraparaju * libdirac_encoder/: Makefile.am, frame_compress.cpp, frame_compress.h, quality_monitor.cpp, quality_monitor.h, seq_compress.cpp, seq_compress.h: Fixed the bug where all header files were being dumped into the same install directory. Now headers are copied into the /dirac/ directory. Added support for cut-detection and intra frame insertion. Changed output structure to output frame by frame, and added recoding to exploit this. Recoding takes place if quality is not within a range of the target quality. Writing frame start, sequence start and sequence end codes to bitstream. Modifications to build under WIN32 2004-08-11 15:44 asuraparaju * libdirac_decoder/: Makefile.am, frame_decompress.cpp, frame_decompress.h, seq_decompress.cpp, seq_decompress.h: Handling new "C" interface files. Handling bitstream changes in frame and sequence decompress routines. Fixed the bug where all header files were being dumped into the same install directory. Now headers are copied into the /dirac/libdirac_decoder 2004-08-11 15:40 asuraparaju * libdirac_common/: Makefile.am, arith_codec.h, arrays.h, band_codec.cpp, band_codec.h, bit_manager.cpp, bit_manager.h, common.cpp, common.h, frame.cpp, frame.h, frame_buffer.cpp, mot_comp.cpp, motion.cpp, mv_codec.cpp, mv_codec.h, pic_io.cpp, pic_io.h: Renamed BitOutputManager to UnitOutputManager in bit_manager.* Modified bit_manager.* to handle modifications to bitstream. Moved enumerated types common to the encoder, decoder and codec interfaces from common.h into common_types.h to avoid duplication of declarations. Added support for cut-detection and intra frame insertion. Changed output structure to output frame by frame, and added recoding to exploit this. Recoding takes place if quality is not within a range of the target quality. Modifications to build under WIN32 Fixed icc compiler warning 522 Fixed VC++ 2003 compiler warnings Fixed the bug where all header files were being dumped into the same install directory. Now headers are copied into the /dirac/libdirac_common directory. 2004-08-11 15:30 asuraparaju * libdirac_motionest/: Makefile.am, me_mode_decn.cpp, me_subpel.cpp, motion_estimate.cpp, motion_estimate.h: Minor mods to improve motion estimation: no lambda-smoothing on pixel-accurate ME. Fixed the bug where all header files were being dumped into the same install directory. Now headers are copied into the /dirac/libdirac_motionest directory.. 2004-08-11 15:27 asuraparaju * util/instrumentation/: Makefile.am, instrmain.cpp, process_sequence.cpp, process_sequence.h, libdirac_instrument/overlay.h: Restructured the code. Corrected header file path in instrmain.cpp. Added a ProcessSequence class. File extension of motion vector instrumentation file changed from _mvdata to .imt 2004-08-11 15:24 asuraparaju * tests/: Makefile.am, colourbars.at: Deleting instrumentation files during clean up. Ignoring stdout and stderr when running decoder. 2004-08-11 15:23 asuraparaju * win/Makefile: Fixed VC++ 2003 compile and link errors 2004-08-11 15:21 asuraparaju * libdirac_common/: dirac_assertions.cpp, dirac_assertions.h: Added functions for runtime testing in debug mode. Two new macros are defined. ASSERT( exp ) - if exp resolves to false, the program prints the line number and file where the assertion failure occured. In debug mode the program exits immediately dumping core. ASSERT( exp, mesg ) - if exp resolves to false, the program prints the line number, file name where the assertion failure occured and mesg. In debug mode the program exits immediately 2004-08-11 15:20 asuraparaju * libdirac_common/common_types.h: Moved enumerated types common to the encoder, decoder and codec interfaces from common.h into this file to avoid duplication of declarations. 2004-08-11 15:16 asuraparaju * libdirac_decoder/: decoder_types.h, dirac_cppparser.cpp, dirac_cppparser.h, dirac_parser.cpp, dirac_parser.h: These new files define the "C" interface to the decoder. The bitstream has been modified to be able to parse it for decoding. BitStream Changes: The new dirac bit stream is as follows . . . Sequence start code: Each sequence begins with a 5 bytes start code 0x01 0x02 0x03 0x04 0xB3 Frame start code: Each frame begins with a 5 bytes frame start code 0x01 0x02 0x03 0x04 0xB4 Sequence End code: Each sequence ends with a 5 bytes sequence end code 0x01 0x02 0x03 0x04 0xB7 Not a start code flag: If the arithmetic codec ouputs the start code prefix 0x01 0x02 0x03 0x04, 0xFF is inserted into the bitstream to flag that this is the output of the Arithmetic codec and not a start code. 2004-08-11 14:27 asuraparaju * configure.ac: Added a new option --enable-profile to include the profiling option -pg to them compile line. Setting up CXXFLAGS correctly for Intel compiler when the --enable-debug option is used. 2004-08-11 14:26 asuraparaju * README.release: A checklist for producing a new release 2004-08-03 10:32 asuraparaju * ChangeLog: Updated this log with details of recent checkins 2004-08-03 10:22 asuraparaju * Makefile.am, configure.ac, dirac.pc.in, decoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/Makefile.am, libdirac_common/arrays.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/frame_decompress.cpp, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/Makefile.am, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, libdirac_motionest/pixel_match.cpp, libdirac_motionest/pixel_match.h: libdirac_common, libdirac_encoder, encoder: Incorporated diagnostic tool libdirac_common, libdirac_encoder, libdirac_motionest: Added lifting classes for wavelet transform. Refactored motion estimation to make logic clearer, and added separate pixel-accurate matching classes. Put in a longer temporal filter in QualityMonitor class to reduce oscillation and changed motion estimation Lagrangian parameter to improve performance. TO DO: tune ME parameter for each picture size/block size combination. libdirac_common: Corrected bug with lifting functions not returning a value. Modified MvData class to make member variables private. libdirac_encoder: Modified ME lambda value to improve performance. libdirac_decode, libdirac_encoder, libdirac_motionest, libdirac_common: Modified MvData class to make member variables private. Created MEData class as a subclass of MvData for use in motion estimation. libdirac_commonm libdirac_encoder: Refactored output classes to create classes for unit, frame and sequence output, where a unit is a subband or MV data, and consists of a header and subsequent data. Output can only be effected at the sequence level and occurs only after a whole frame of data has been accumulated. This will allow for frames to be re-coded before being output if their quality is not satisfactory. 2004-08-03 10:07 asuraparaju * util/: Makefile.am, instrumentation/Makefile.am, instrumentation/README, instrumentation/instrmain.cpp, instrumentation/libdirac_instrument/Makefile.am, instrumentation/libdirac_instrument/draw_overlay.cpp, instrumentation/libdirac_instrument/draw_overlay.h, instrumentation/libdirac_instrument/motion_arrows.cpp, instrumentation/libdirac_instrument/motion_arrows.h, instrumentation/libdirac_instrument/motion_colour.cpp, instrumentation/libdirac_instrument/motion_colour.h, instrumentation/libdirac_instrument/motion_colour_arrows.cpp, instrumentation/libdirac_instrument/motion_colour_arrows.h, instrumentation/libdirac_instrument/overlay.cpp, instrumentation/libdirac_instrument/overlay.h, instrumentation/libdirac_instrument/overlay_symbols.cpp, instrumentation/libdirac_instrument/overlay_symbols.h, instrumentation/libdirac_instrument/pred_mode.cpp, instrumentation/libdirac_instrument/pred_mode.h, instrumentation/libdirac_instrument/sad.cpp, instrumentation/libdirac_instrument/sad.h, instrumentation/libdirac_instrument/split_mode.cpp, instrumentation/libdirac_instrument/split_mode.h: Adding instrumentation tool 2004-07-16 17:05 asuraparaju * ChangeLog: Updated thislog with details of recent checkins 2004-07-16 16:29 asuraparaju * libdirac_encoder/quality_monitor.cpp: Fixed bug with model updating - limits of slope of linear model were inaccurate. Fixed bug with numerical stability of lambda re-calculation. Performance with cuts or shot-changes is still poor, however. 2004-07-16 16:23 asuraparaju * DCO.developers, README.developers: Added contents section. Added text about licensing and contribution. Modified licensing requirements so that contributors contribute under Mozilla too. Added Developers Certificate of Origin, which developers are to sign before their work is included. 2004-07-12 12:23 asuraparaju * ChangeLog: Updated this log with details of most recent checkins 2004-07-12 11:59 asuraparaju * libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/cmd_line.cpp, libdirac_common/cmd_line.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/comp_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h: Changed order of initialisation parameters for TwoDArray template class and subclass PicArray. Tidied TwoDArray and OneDArray classes. Removed all use of allocators. Replaced tabs with spaces in libdirac_common. Fixed minor bug in quality_monitor PSNR measurement. Made other typographical changes. 2004-07-12 11:53 asuraparaju * Makefile.am, configure.ac, tests/Makefile.am, tests/testsuite.at, tests/unittests.at, unit_tests/Makefile.am, unit_tests/arrays_test.cpp, unit_tests/arrays_test.h, unit_tests/core_suite.h, unit_tests/cppunit_testsuite.cpp, unit_tests/utmain.cpp: Added a unit test framework based on Cppunit. The unit tests will reside in the directory unit_tests. 'make check' command will now run the unit tests as well. Currently unit test exists only for the TwoDArrays class. More tests will be added in future. 2004-07-06 12:51 asuraparaju * ChangeLog: Update this log with details of mostrecent checkins 2004-07-06 12:26 asuraparaju * Makefile.am, README, encoder/encmain.cpp, libdirac_common/arith_codec.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame.cpp, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/mot_comp.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/pic_io.cpp, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_encoder/quality_monitor.cpp, libdirac_encoder/quality_monitor.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_utils.cpp, libdirac_motionest/motion_estimate.cpp, tests/colourbars.at: README: Removed discussion of Iqf, L1qf and L2qf. Added text explaining constant- quality encoding using -qf. Makefile.am: Changed order of make, so that utilities can use the common (and other) libraries. libdirac_common: Changed EncoderParams to include a quality parameter for constant-quality encoding. Changed perceptual weighting to use an extension of CCIR 959 weights, with extra weight for DC band, and lower weights for chroma bands. Modified enumerated type CompSort to avoid name clashes by using longer names. Refactored OLBParams class to have private member variables and access functions. libdirac_encoder: Added QualityMonitor class to do constant-quality encoding. Class looks at difference between locally decoded and original frames and adjusts Lagrangian parameters appropriately. Simplified interface for encoding results, where a single quality parameter is specified. libdirac_decoder FrameDecompressor::Decompress now returns true upon success and false upon failure. encoder/encmain.cpp: Simplified interface for encoding results, where a single quality parameter is specified. 2004-07-02 14:46 asuraparaju * ChangeLog: Updated this log with details about recent checkins 2004-06-30 17:53 asuraparaju * README.developers: Removed dollar signs around CVS tags which cause them to be expanded 2004-06-30 17:44 asuraparaju * AUTHORS, README, README.developers, configure.ac, decoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/Makefile.am, libdirac_common/arith_codec.h, libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/cmd_line.cpp, libdirac_common/cmd_line.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/context.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, picheader/headmain.cpp, util/conversion/BMPtoRGB.cpp, util/conversion/RGBtoBMP.cpp, util/conversion/RGBtoUYVY.cpp, util/conversion/RGBtoYUV411.cpp, util/conversion/RGBtoYUV420.cpp, util/conversion/RGBtoYUV422.cpp, util/conversion/RGBtoYUV444.cpp, util/conversion/UYVYtoRGB.cpp, util/conversion/YUV411toRGB.cpp, util/conversion/YUV420toRGB.cpp, util/conversion/YUV422toRGB.cpp, util/conversion/YUV444toRGB.cpp, util/conversion/common/bitmap.cpp, util/conversion/common/bitmap.h, util/conversion/common/setstdiomode.cpp, util/conversion/common/setstdiomode.h: - Included a coding style guidelines sub-section (Coding Style) in README.developers under the section 'Software Practices'. This sub-section describes the coding guidelines for developers and is to be used as a reference by developers while writing code and while peer-reviewing code. - Removed the following CVS tags from all files $Author: asuraparaju $ $Log: ChangeLog,v $ Revision 1.31 2009/02/10 23:26:54 asuraparaju Updated ChangeLog Author: Anuradha Suraparaju Revision 1.30 2009/02/10 00:32:11 asuraparaju Update ChangeLog Author: Anuradha Suraparaju Revision 1.29 2008/09/16 06:49:27 asuraparaju Updated ChangeLog. Author: asuraparaju@diracvideo.org Revision 1.28 2008/06/04 05:39:17 asuraparaju *** empty log message *** Revision 1.27 2008/05/30 06:33:56 asuraparaju *** empty log message *** Revision 1.26 2008/01/26 12:11:44 asuraparaju *** empty log message *** Revision 1.25 2008/01/23 01:17:25 asuraparaju *** empty log message *** Revision 1.24 2007/10/01 10:57:15 asuraparaju *** empty log message *** Revision 1.23 2007/05/09 14:06:51 asuraparaju *** empty log message *** Revision 1.22 2007/03/22 18:27:16 davidf_ Altered command line file handling. a) now support taking input from stdin (input specified as '-' or '/dev/stdin'). b) removed strange filename extension stripping/appending for primary input and output files (locally decoded video and instrumentation are outputfilename.{local-dec.yuv,imt}. Revision 1.21 2006/11/13 12:28:22 tjdwave *** empty log message *** $Revision: 1.31 $ - Included the following CVS tags in all source and header files $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ $Name: Dirac_1_0_2 $ - Included a new configuration option, --enable-debug, in configure.ac. This option turns on the flags '-Wall -pedantic -Werror' to trap warnings. - Modified parameter classes in common.{h,cpp} to make member variables private and accessible through class methods. Traced through codec. - Deleted context.h. The classes that were originally in this file have been integrated as nested classes into ArithCodec class in arith_codec.h - Fixed bug on QCIF coding. The number of downconversions during hierarchical motion estimation is now limited based on the size of the picture - Changed decoder and encoder params to be references throughout frame and component (de)compression rather than being copied. - Code cleansed to follow coding standards specified in README.developers. - Changed names of member variables to use m_ convention - Used spaces to improve readability of code - Accessing class member variables through accessor/mutator function rather than directly - Non-trivial member functions moved from headers to .cpp files Changes mainly in the following directories: libdirac_common libdirac_decoder libdirac_encoder - Fixed g++ compiler warnings 2004-06-22 11:10 asuraparaju * libdirac_common/wavelet_utils.h: Modified doxygen comments to match the declaration of member function SetBandWeights in class WaveletTransform. 2004-06-22 11:08 asuraparaju * encoder/encmain.cpp: Fixed compilation errors caused by trying to access non-existent cformat data member in class EncoderParams. 2004-06-18 16:58 tjdwave * libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/frame.cpp, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/frame_compress.cpp, libdirac_encoder/seq_compress.cpp, libdirac_motionest/motion_estimate.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h: Removed chroma format parameter cformat from CodecParams and derived classes to avoid duplication. Made consequential minor mods to seq_{de}compress and frame_{de}compress code. Revised motion compensation to use built-in arrays for weighting matrices and to enforce their const-ness. Removed unnecessary memory (de)allocations from Frame class copy constructor and assignment operator. 2004-06-16 17:06 asuraparaju * decoder/Makefile.am, encoder/Makefile.am, libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, util/conversion/Makefile.am, util/conversion/common/Makefile.am: Enable dependency tracking by removing the macro AUTOMAKE_OPTIONS = no-dependencies from Makefile.am 2004-06-16 09:25 tjdwave * doc/algorithm/: algorithm.htm, toc.htm: Corrected link in TOC. Put correct date in main page. 2004-06-08 17:18 timborer * NEWS: Updated release notes for version 0.3.1 2004-06-08 17:03 timborer * configure.ac, libdirac_common/golomb.cpp, libdirac_common/mv_codec.h, libdirac_motionest/block_match.cpp, util/conversion/BMPtoRGB.cpp, util/conversion/RGBtoBMP.cpp, util/conversion/RGBtoUYVY.cpp, util/conversion/RGBtoYUV411.cpp, util/conversion/RGBtoYUV420.cpp, util/conversion/RGBtoYUV422.cpp, util/conversion/RGBtoYUV444.cpp, util/conversion/UYVYtoRGB.cpp, util/conversion/YUV411toRGB.cpp, util/conversion/YUV420toRGB.cpp, util/conversion/YUV422toRGB.cpp, util/conversion/YUV444toRGB.cpp, util/conversion/common/bitmap.cpp, util/conversion/common/bitmap.h, util/conversion/common/setstdiomode.cpp, util/conversion/common/setstdiomode.h, win/Makefile: Files updated so that code compiles under Windows (previously broken under Windows). Colour matrix coefficients corrected in video conversion utilities Video conversion utilites now build with the rest of the code. 2004-06-03 14:07 stuart_hc * README.developers: Added Profiling & optimisation section. 2004-05-28 16:05 tjdwave * NEWS, TODO: Added information about picture format conversion utilities. Removed frame padding from the TODO list. 2004-05-28 15:58 tjdwave * README: Added text on how to use the conversion utilities to provide test material for Dirac. 2004-05-28 15:27 tjdwave * util/conversion/: BMPtoRGB.cpp, Makefile.am, RGBtoBMP.cpp, RGBtoUYVY.cpp, RGBtoYUV411.cpp, RGBtoYUV420.cpp, RGBtoYUV422.cpp, RGBtoYUV444.cpp, UYVYtoRGB.cpp, YUV411toRGB.cpp, YUV420toRGB.cpp, YUV422toRGB.cpp, YUV444toRGB.cpp: Initial commit of command-line tools for converting between uncompressed picture formats. All conversions use uncompressed RGB as an intermediate format. There is a known bug with the colour matrixing which applies a gain when going from YUV to RGB and back again. This will be fixed in a subsequent release. 2004-05-28 15:18 tjdwave * util/conversion/common/: bitmap.cpp, bitmap.h, setstdiomode.cpp, setstdiomode.h: Initial commit. Common tools for handling BMP headers and stdio handling for Windows. 2004-05-28 15:15 tjdwave * util/conversion/common/Makefile.am: Initial commit. Builds common library for use by all the conversion routines. 2004-05-28 15:14 tjdwave * util/conversion/Makefile.am: Initial commit. Builds file conversion utilities. 2004-05-28 15:12 tjdwave * util/Makefile.am: Added Makefile to build utility subdirectories. 2004-05-28 15:10 tjdwave * Makefile.am, configure.ac: Updated to add utilities directory. 2004-05-27 14:58 asuraparaju * configure.ac, doc/Makefile.am, doc/algorithm/Makefile.am, doc/api/Makefile.am, doc/programmers/Makefile.am: Corrected API and programmer doc build and installation. Added algorithm doc install (from CVS only - not distribution). 2004-05-27 13:21 stuart_hc * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and $Log: ChangeLog,v $ * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.31 2009/02/10 23:26:54 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Updated ChangeLog * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Author: Anuradha Suraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.30 2009/02/10 00:32:11 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Update ChangeLog * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Author: Anuradha Suraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.29 2008/09/16 06:49:27 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Updated ChangeLog. * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Author: asuraparaju@diracvideo.org * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.28 2008/06/04 05:39:17 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.27 2008/05/30 06:33:56 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.26 2008/01/26 12:11:44 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.25 2008/01/23 01:17:25 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.24 2007/10/01 10:57:15 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.23 2007/05/09 14:06:51 asuraparaju * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.22 2007/03/22 18:27:16 davidf_ * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Altered command line file handling. a) now support taking input from stdin * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and (input specified as '-' or '/dev/stdin'). b) removed strange filename * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and extension stripping/appending for primary input and output files (locally * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and decoded video and instrumentation are outputfilename.{local-dec.yuv,imt}. * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and Revision 1.21 2006/11/13 12:28:22 tjdwave * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and *** empty log message *** * README.developers: Prevent unintended expansion of $Id: ChangeLog,v 1.31 2009/02/10 23:26:54 asuraparaju Exp $ and in description of keywords. 2004-05-27 13:14 stuart_hc * README.developers: Added section on the testsuite and on binary files. 2004-05-27 09:02 tjdwave * doc/programmers/: programmers_guide.dvi, programmers_guide.log: Removed LaTeX-generated .dvi and .log files from CVS control. 2004-05-27 09:00 tjdwave * doc/: algorithm/algorithm.htm, algorithm/var_size.htm, algorithm/wlt_transform.htm, programmers/programmers_guide.dvi, programmers/programmers_guide.log: Updated docs to take into account that Dirac does edge-padding, not padding with black, in order to avoid significant artefacts at low bit-rate. 2004-05-26 17:01 tjdwave * configure.ac, doc/Makefile.am, doc/faq.htm, doc/algorithm/algorithm.htm, doc/algorithm/block_data.htm, doc/algorithm/intra_pred.htm, doc/algorithm/intro.htm, doc/algorithm/mb_structs.htm, doc/algorithm/mot_est.htm, doc/algorithm/mot_est_and_comp.htm, doc/algorithm/mv_coding_arch.htm, doc/algorithm/mv_data_coding.htm, doc/algorithm/mv_data_pred.htm, doc/algorithm/mv_entropy_code.htm, doc/algorithm/olb_mc.htm, doc/algorithm/overall_arch.htm, doc/algorithm/parent_child.htm, doc/algorithm/quantisation.htm, doc/algorithm/rdo.htm, doc/algorithm/rdo_mot_est.htm, doc/algorithm/subband_rdo.htm, doc/algorithm/temporal_prediction_structures.htm, doc/algorithm/toc.htm, doc/algorithm/transform_coding.htm, doc/algorithm/transform_coding_arch.htm, doc/algorithm/var_size.htm, doc/algorithm/wlt_coeff_coding.htm, doc/algorithm/wlt_transform.htm, doc/algorithm/figs/DC.jpg, doc/algorithm/figs/DCSAD.jpg, doc/algorithm/figs/braces.jpg, doc/algorithm/figs/d.jpg, doc/algorithm/figs/eqA.jpg, doc/algorithm/figs/eqB.jpg, doc/algorithm/figs/eqC.jpg, doc/algorithm/figs/eqD.jpg, doc/algorithm/figs/eqE.jpg, doc/algorithm/figs/eqF.jpg, doc/algorithm/figs/eqG.jpg, doc/algorithm/figs/eqH.jpg, doc/algorithm/figs/eqI.jpg, doc/algorithm/figs/eqJ.jpg, doc/algorithm/figs/fig1.jpg, doc/algorithm/figs/fig10.jpg, doc/algorithm/figs/fig12.jpg, doc/algorithm/figs/fig13.jpg, doc/algorithm/figs/fig14.jpg, doc/algorithm/figs/fig15.jpg, doc/algorithm/figs/fig16.jpg, doc/algorithm/figs/fig17.jpg, doc/algorithm/figs/fig18.jpg, doc/algorithm/figs/fig19.jpg, doc/algorithm/figs/fig2.jpg, doc/algorithm/figs/fig20.jpg, doc/algorithm/figs/fig21.jpg, doc/algorithm/figs/fig22.jpg, doc/algorithm/figs/fig23.jpg, doc/algorithm/figs/fig24.jpg, doc/algorithm/figs/fig26.jpg, doc/algorithm/figs/fig27.jpg, doc/algorithm/figs/fig3.jpg, doc/algorithm/figs/fig4.jpg, doc/algorithm/figs/fig5.jpg, doc/algorithm/figs/fig6.jpg, doc/algorithm/figs/fig7.bmp, doc/algorithm/figs/fig7.jpg, doc/algorithm/figs/fig8.jpg, doc/algorithm/figs/fig9.jpg, doc/algorithm/figs/fp.jpg, doc/algorithm/figs/m.jpg, doc/algorithm/figs/nhood.jpg, doc/algorithm/figs/nhoodresidue.jpg, doc/algorithm/figs/p.jpg, doc/algorithm/figs/p2.jpg, doc/algorithm/figs/t.jpg, doc/algorithm/figs/two.jpg, doc/algorithm/figs/var.jpg, doc/algorithm/figs/vtilda.jpg, doc/algorithm/figs/vw.jpg, doc/api/Makefile.am, doc/api/dirac_api.doxygen, doc/api/dirac_api.doxygen.in, doc/api/dirac_api_foot.html, doc/api/dirac_api_head.html, doc/api/libdirac_encoder_api.doxygen, doc/api/libdirac_encoder_api_foot.html, doc/api/libdirac_encoder_api_head.html, doc/programmers/Makefile.am, doc/programmers/programmers_guide.aux, doc/programmers/programmers_guide.dvi, doc/programmers/programmers_guide.log, doc/programmers/programmers_guide.tex: Added algorithm documentation and FAQ. Changed name of Scott Ladd's programmers guide to programmers_guide.tex from dirac_algor.tex to clarify purpose. Created individual subdirectories for algorithm, api and programmers guide docs. Modified make files and configure.ac appropriately. 2004-05-26 16:44 tjdwave * doc/: dirac_algor.tex, dirac_api.doxygen, dirac_api.doxygen.in, dirac_api_foot.html, dirac_api_head.html, libdirac_encoder_api.doxygen, libdirac_encoder_api_foot.html, libdirac_encoder_api_head.html: Removed old documentation structure. New doc structure to be put in place. 2004-05-26 16:18 tjdwave * libdirac_decoder/seq_decompress.cpp: Corrected behaviour at end of stream, so that decoder freezes on the last frame. 2004-05-26 15:33 tjdwave * libdirac_encoder/comp_compress.cpp, libdirac_common/band_codec.cpp, libdirac_decoder/comp_decompress.cpp: Updated default DC prediction value to take into account the removal of scaling from the wavelet transform. 2004-05-26 15:31 tjdwave * libdirac_common/wavelet_utils.h: Added doxygen comments to describe how perceptual weighting now incorporates scaling factors from the scaling. 2004-05-25 16:30 tjdwave * libdirac_common/wavelet_utils.cpp: Removed scaling from the wavelet transform. Scaling is now incorporated into perceptual weighting; the wavelet transform is now exactly invertible. 2004-05-25 10:49 tjdwave * libdirac_common/pic_io.cpp: Fixed bug where coder segfaulted on reading. 2004-05-25 03:39 chaoticcoyote * ChangeLog, libdirac_common/frame.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_encoder/seq_compress.h, libdirac_motionest/me_utils.cpp: Unnecessary qualification of some class members in frame.h and pic_io.h. ISO C++ forbids variable-size automatic arrays; fixed in pic_io.cpp Removed spurious semi-colons in me_utils.cpp Fixed out-of-order member constructors in seq_compress.h 2004-05-24 17:03 tjdwave * libdirac_decoder/: frame_decompress.cpp, frame_decompress.h, seq_decompress.cpp: Support for IO error handling. Decoder freezes on last frame if out of data. 2004-05-24 16:57 tjdwave * picheader/headmain.cpp, encoder/encmain.cpp, decoder/decmain.cpp: Changed CLI names and functions to house style. 2004-05-24 16:55 tjdwave * libdirac_common/: cmd_line.cpp, cmd_line.h: Modified class name to fit house style: ClassName, not class_name. 2004-05-24 16:53 tjdwave * libdirac_common/: pic_io.cpp, pic_io.h: Added error handling: IO functions now return boolean values. 2004-05-24 16:52 tjdwave * tests/colourbars.at: Fixed test so that header file has correct zlength=1. 2004-05-24 16:51 tjdwave * Makefile.am: Switched order so that docs are builts last. 2004-05-24 13:38 tjdwave * libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h: Replaced spagetti code for linear interpolation in motion compensation and motion estimation routines with simple loops. Code is much clearer, although possibly slightly slower. 2004-05-21 18:46 asuraparaju * Makefile.am, configure.ac, tests/Makefile.am, tests/colourbars.at, tests/colourbars_420.yuv, tests/testsuite.at: Initial support for autotest testsuite (run "make check"). 2004-05-21 17:27 stuart_hc * README.developers: Initial revision of software practice guidelines for CVS developers. 2004-05-21 15:17 tjdwave * libdirac_common/mot_comp.cpp: Fixed bug with erroneous linear interpolation for sub-pixel values. 2004-05-20 13:44 tjdwave * README: Minor edit of example of making a header, to reflect the new CLI. 2004-05-20 13:39 tjdwave * picheader/headmain.cpp: Fixed help message for CLI. 2004-05-20 13:38 tjdwave * decoder/decmain.cpp: Fixed minor bug with -verbose option to make it true boolean. 2004-05-20 13:37 tjdwave * encoder/encmain.cpp: Corrected help text for CLI. 2004-05-20 11:50 stuart_hc * doc/dirac_api.doxygen, doc/dirac_api_foot.html, doc/dirac_api_head.html, doc/libdirac_encoder_api_foot.html, doc/libdirac_encoder_api_head.html, libdirac_common/band_codec.cpp: Corrected CRLF line-endings to LF for consistency. 2004-05-20 11:35 stuart_hc * NEWS: Added mention of libtool removal, slight rearrangement for clarity. Corrected CRLF line-endings to LF. 2004-05-20 11:31 stuart_hc * README: Fixed incorrect interlace argument in DV transcode example. Minor grammatical errors fixed. 2004-05-19 23:08 chaoticcoyote * README: Updated for changes in command-line parser 2004-05-19 23:00 chaoticcoyote * AUTHORS: Added my middle name to credits Corrected company name 2004-05-19 18:39 chaoticcoyote * decoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/cmd_line.cpp, libdirac_common/cmd_line.h, picheader/headmain.cpp: Modified command line parser to correctly handle boolean options 2004-05-19 17:27 stuart_hc * README: Added example usage for MPlayer, display (ImageMagick), and transcode. Reformatted all example commands to be indented for clarity. 2004-05-19 16:51 tjdwave * NEWS: More details for 0.3.0 release 2004-05-19 15:29 tjdwave * NEWS: Include release notes for 0.2.0 & 0.3.0 2004-05-19 15:19 tjdwave * TODO: Removed mention of frame buffer class, since now complete. 2004-05-19 15:14 tjdwave * AUTHORS: Added contributers. 2004-05-19 15:04 tjdwave * libdirac_common/pic_io.cpp: Changed YUV output to output lines instead of bytes, according to patch provided by Malcolm Parsons 2004-05-19 10:16 tjdwave * libdirac_common/: mot_comp.cpp, pic_io.cpp: Replaced zero-padding with edge-padding to eliminate colour-fringeing at low bitrates. Mod to set padded values to 0 when compensating frames. 2004-05-18 08:46 tjdwave * README, encoder/encmain.cpp, libdirac_common/frame_buffer.cpp, libdirac_common/frame_buffer.h, libdirac_common/pic_io.cpp, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/seq_compress.cpp: Added support for I-frame only coding by setting num_L1 equal 0; num_L1 negative gives a single initial I-frame ('infinitely' many L1 frames). Revised quantiser selection to cope with rounding error noise. 2004-05-14 18:27 stuart_hc * decoder/decmain.cpp: Added better error checking. 2004-05-14 18:25 stuart_hc * libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, picheader/headmain.cpp: Replaced binary header files with ASCII text format to achieve cross-platform interoperability. Rearranged PicOutput constructor to permit code reuse from picheader/headmain.cpp 2004-05-14 18:20 stuart_hc * decoder/Makefile.am, encoder/Makefile.am, picheader/Makefile.am: Use LDADD to ensure files which depend on libraries are rebuilt when necessary. 2004-05-14 15:21 tjdwave * README: Build information now incorporated. 2004-05-14 11:48 stuart_hc * bootstrap: Avoid errors when mixing versions of autotools. 2004-05-14 11:47 stuart_hc * make_debug.sh: Rearranged to use "make" to be more maintainable. 2004-05-12 17:04 tjdwave * decoder/decmain.cpp, picheader/headmain.cpp, libdirac_encoder/seq_compress.cpp: Done general code tidy, implementing copy constructors, assignment= and const correctness for most classes. Replaced Gop class by FrameBuffer class throughout. Added support for frame padding so that arbitrary block sizes and frame dimensions can be supported. 2004-05-12 17:03 tjdwave * encoder/encmain.cpp: Done general code tidy, implementing copy constructors, assignment= and const correctness for most classes. Replaced Gop class by FrameBuffer class throughout. Added support for frame padding so that arbitrary block sizes and frame dimensions can be supported. 2004-05-12 10:23 tjdwave * reconf: Removed since it duplicated the job of ./bootstrap. 2004-05-12 10:20 tjdwave * dirac_build_howto.txt: All build instructions are now in the README file. Information on creating a distribution removed since it is not indended for the target audience. 2004-05-12 09:46 tjdwave * win/xparam/README: XParam library is no longer needed to build Dirac. 2004-05-12 09:35 tjdwave * libdirac_common/arith_codec.h, libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/context.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.h, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h: Done general code tidy, implementing copy constructors, assignment= and const correctness for most classes. Replaced Gop class by FrameBuffer class throughout. Added support for frame padding so that arbitrary block sizes and frame dimensions can be supported. 2004-05-12 09:21 stuart_hc * libdirac_common/: gop.cpp, gop.h, Makefile.am: FrameBuffer classes (frame_buffer.{cpp,h}) now replace Gop classes (gop.{cpp,h}). 2004-05-12 09:14 tjdwave * libdirac_common/: frame_buffer.cpp, frame_buffer.h: Initial commit of FrameBuffer classes to handle free-style temporal reference structures. Replaces Gop class (gop.{cpp,h}). 2004-05-11 17:11 stuart_hc * Makefile.am, bootstrap, configure.ac, decoder/Makefile.am, doc/Makefile.am, encoder/Makefile.am, libdirac_common/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am, picheader/Makefile.am: Removed use of libtool - all libraries and binaries are now static for ease of development & debugging. Added tests for documentation tools and added documentation to default make target 'all'. 2004-05-11 15:17 tjdwave * Makefile.am, README, configure.ac, dirac_build_howto.txt, decoder/Makefile.am, decoder/decmain.cpp, encoder/Makefile.am, encoder/encmain.cpp, libdirac_common/cmd_line.cpp, libdirac_common/cmd_line.h, libdirac_encoder/seq_compress.cpp, picheader/Makefile.am, picheader/headmain.cpp, win/Makefile, win/README, win/xparam/README: Removed dependency on XParam CLI library for both encoder and decoder. 2004-05-11 15:15 tjdwave * doc/dirac_algor.tex: Removed inline comments and notes. Added text describing frame types (I, L1 and L2) and relation to MPEG types. 2004-05-10 05:44 chaoticcoyote * doc/dirac_algor.tex: Newest version of "programmer's guide" 2004-05-10 05:43 chaoticcoyote * libdirac_common/: cmd_line.cpp, cmd_line.h: Simple, portable command-line parser (eliminates Xparam dependency) 2004-05-10 05:41 chaoticcoyote * doc/dirac_algor.tex, encoder/encmain.cpp, libdirac_common/Makefile.am: Updated dirac algorithm document Modified encoder to use simple, portable command-line parser 2004-05-10 02:04 chaoticcoyote * encoder/decmain.cpp: Removed spurious file 2004-04-25 23:27 chaoticcoyote * win/: README, xparam/README: Read Me files to explain the context of this directory and Makefile 2004-04-25 23:16 chaoticcoyote * win/Makefile: Added nmake makefile for Microsoft Visual C++ 2004-04-22 23:14 chaoticcoyote * make_debug.sh: Enhanced the debug build script to support different architectures 2004-04-22 22:11 chaoticcoyote * misc/xparam-1.22-gcc-3.4.0.patch: A patch for xparam 1.22 to work around a GCC 3.4.0 internal compiler error 2004-04-22 22:08 chaoticcoyote * make_debug.sh, libdirac_encoder/comp_compress.cpp: Fixed warning generated by some versions of GCC for libdirac_encoder/comp_compress.cpp Added make_debug.sh script to build debuggable, profilable versions of encoder and decoder 2004-04-16 04:12 chaoticcoyote * doc/Makefile.in: Removed spurious file 2004-04-16 04:11 chaoticcoyote * doc/: Makefile.in, dirac_api.doxygen.in: Added additional documentation build files 2004-04-16 04:10 chaoticcoyote * Makefile.am, doc/Makefile.am, doc/dirac_api.doxygen: Addiitonal work on generating docs for distribution 2004-04-16 02:41 chaoticcoyote * doc/: dirac_algor.tex, dirac_algorithm2.tex: Renamed algorithm document 2004-04-16 02:28 chaoticcoyote * Makefile.am, doc/Makefile.am: Added documentation targets to makefiles 2004-04-15 14:59 chaoticcoyote * configure.ac: Added doc/Makefile 2004-04-15 14:57 chaoticcoyote * doc/Makefile.am: Added makefile boilerplate to generate docusment via "docs" target 2004-04-15 14:54 chaoticcoyote * configure.ac: Added program checks for Doxygen and LaTeX 2004-04-15 13:31 chaoticcoyote * configure.ac: Updated to version 0.2.0 2004-04-15 13:30 chaoticcoyote * doc/dirac_algorithm2.tex: Dirac algorithm document added 2004-04-12 02:57 chaoticcoyote * Makefile.am, decoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/pic_io.cpp: Fixed problem Intel C++ had in finding xparam headers on Linux Solved Segmentation Fault bug in pic_io.cpp 2004-04-11 23:54 chaoticcoyote * libdirac_common/: arith_codec.h, bit_manager.h, context.h: Additional comments 2004-04-11 23:50 chaoticcoyote * libdirac_common/arrays.h, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/golomb.cpp, libdirac_common/gop.cpp, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/pic_io.cpp, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_decoder/seq_decompress.cpp, libdirac_encoder/comp_compress.cpp, libdirac_encoder/seq_compress.cpp, libdirac_motionest/block_match.cpp, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_utils.cpp, libdirac_motionest/motion_estimate.cpp: Modifications to allow compilation by Visual C++ 6.0 Changed local for loop declarations into function-wide definitions Replaced variable array declarations with new/delete of dynamic array Added second argument to allocator::alloc calls, since MS has no default Fixed missing and namespace problems with min, max, cos, and abs Added typedef unsigned int uint (MS does not have this) Added a few missing std:: qualifiers that GCC didn't require 2004-04-11 17:25 chaoticcoyote * windows/dirac/: dirac.dsw, libdirac_common/libdirac_common.dsp, libdirac_decoder/libdirac_decoder.dsp, libdirac_encoder/libdirac_encoder.dsp, libdirac_motionest/libdirac_motionest.dsp: Added initial Windows Visual Studio C++ 6.0 project files 2004-04-06 19:06 chaoticcoyote * libdirac_common/: arith_codec.h, arrays.h, band_codec.h, bit_manager.h, common.h, context.h, frame.h, gop.h, mot_comp.h, motion.h, mv_codec.h, pic_io.h, upconvert.h, wavelet_utils.h: Boilerplate for Doxygen comments; testing ability to commit into SF CVS 2004-04-05 04:05 chaoticcoyote * libdirac_motionest/: downconvert.h, me_mode_decn.h, me_subpel.h, me_utils.h, motion_estimate.h: Updated Doxygen API documentation comments Test to see if Scott's CVS is now working correctly 2004-03-30 16:52 chaoticcoyote * doc/dirac_api.doxygen, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.h: New Doxygen comments 2004-03-29 02:52 chaoticcoyote * libdirac_decoder/: comp_decompress.h, frame_decompress.h, seq_decompress.h: Added Doxygen comments 2004-03-22 01:33 chaoticcoyote * doc/dirac_doc_howto.txt: Added more description of HTML and LATEX document generation 2004-03-22 01:04 chaoticcoyote * libdirac_encoder/: comp_compress.cpp, comp_compress.h, frame_compress.h, seq_compress.cpp, seq_compress.h: Added API documentation to encoder library Moved large constructors so they are no longer inlined 2004-03-21 21:01 chaoticcoyote * doc/: libdirac_encoder_api_foot.html, libdirac_encoder_api_head.html: Adding custome header and footer for HTML libdirac_encoder docs 2004-03-21 21:00 chaoticcoyote * doc/: libdirac_encoder_api.doxygen, libdirac_encoder_foot.html, libdirac_encoder_head.html: Adjusting file names 2004-03-21 20:51 chaoticcoyote * doc/: libdirac_encoder_api.doxygen, libdirac_encoder_foot.html, libdirac_encoder_head.html: Added files to generate socumentation specific to libdirac_encoder 2004-03-21 19:26 chaoticcoyote * doc/dirac_api.doxygen: Change graphic configuration 2004-03-21 14:05 chaoticcoyote * dirac_build_howto.txt, doc/dirac_api.doxygen, doc/dirac_api_foot.html, doc/dirac_api_head.html, doc/dirac_doc_howto.txt: Updated documentation files 2004-03-21 13:06 chaoticcoyote * ltmain.sh, reconf: Updated autoconf to use libtoolize Removed spurious ltmain.sh 2004-03-19 07:43 chaoticcoyote * doc/dirac_algorithm.doc: Removed Word doc because the conversion didn't work 2004-03-19 07:35 chaoticcoyote * doc/: dirac_algorithm.doc, dirac_api.doxygen: Created document diractory Populated doc directory with preliminary texts 2004-03-13 17:34 chaoticcoyote * decoder/Makefile.am, encoder/Makefile.am, libdirac_decoder/Makefile.am, libdirac_encoder/Makefile.am, libdirac_motionest/Makefile.am: Disabled auto-dependency checking in newer versions of AutoMake 2004-03-13 17:11 chaoticcoyote * ltmain.sh, reconf, libdirac_common/Makefile.am: Required files for for autoconf 2004-03-12 17:09 chaoticcoyote * NEWS: Minor change to test commit ability 2004-03-11 17:45 timborer * AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am, NEWS, README, TODO, bootstrap, configure.ac, dirac.pc.in, decoder/Makefile.am, decoder/decmain.cpp, encoder/Makefile.am, encoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/Makefile.am, libdirac_common/arith_codec.h, libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/context.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/gop.cpp, libdirac_common/gop.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/Makefile.am, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/Makefile.am, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, picheader/Makefile.am, picheader/headmain.cpp: Initial import (well nearly!) 2004-03-11 17:45 timborer * AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am, NEWS, README, TODO, bootstrap, configure.ac, dirac.pc.in, decoder/Makefile.am, decoder/decmain.cpp, encoder/Makefile.am, encoder/decmain.cpp, encoder/encmain.cpp, libdirac_common/Makefile.am, libdirac_common/arith_codec.h, libdirac_common/arrays.h, libdirac_common/band_codec.cpp, libdirac_common/band_codec.h, libdirac_common/bit_manager.cpp, libdirac_common/bit_manager.h, libdirac_common/common.cpp, libdirac_common/common.h, libdirac_common/context.h, libdirac_common/frame.cpp, libdirac_common/frame.h, libdirac_common/golomb.cpp, libdirac_common/golomb.h, libdirac_common/gop.cpp, libdirac_common/gop.h, libdirac_common/mot_comp.cpp, libdirac_common/mot_comp.h, libdirac_common/motion.cpp, libdirac_common/motion.h, libdirac_common/mv_codec.cpp, libdirac_common/mv_codec.h, libdirac_common/pic_io.cpp, libdirac_common/pic_io.h, libdirac_common/upconvert.cpp, libdirac_common/upconvert.h, libdirac_common/wavelet_utils.cpp, libdirac_common/wavelet_utils.h, libdirac_decoder/Makefile.am, libdirac_decoder/comp_decompress.cpp, libdirac_decoder/comp_decompress.h, libdirac_decoder/frame_decompress.cpp, libdirac_decoder/frame_decompress.h, libdirac_decoder/seq_decompress.cpp, libdirac_decoder/seq_decompress.h, libdirac_encoder/Makefile.am, libdirac_encoder/comp_compress.cpp, libdirac_encoder/comp_compress.h, libdirac_encoder/frame_compress.cpp, libdirac_encoder/frame_compress.h, libdirac_encoder/seq_compress.cpp, libdirac_encoder/seq_compress.h, libdirac_motionest/Makefile.am, libdirac_motionest/block_match.cpp, libdirac_motionest/block_match.h, libdirac_motionest/downconvert.cpp, libdirac_motionest/downconvert.h, libdirac_motionest/me_mode_decn.cpp, libdirac_motionest/me_mode_decn.h, libdirac_motionest/me_subpel.cpp, libdirac_motionest/me_subpel.h, libdirac_motionest/me_utils.cpp, libdirac_motionest/me_utils.h, libdirac_motionest/motion_estimate.cpp, libdirac_motionest/motion_estimate.h, picheader/Makefile.am, picheader/headmain.cpp: Initial revision dirac-1.0.2/config.sub0000755000204200017500000010115311144426511011473 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-01-16' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: dirac-1.0.2/bootstrap0000775000204200017500000000074111010023167011446 00000000000000#!/bin/sh # # Extremely basic script to regenerate the autoconf files etc # # 11th March 2004 Copyright BBC # remove generated files (avoids clashes between versions of autotools) rm -f depcomp missing install-sh mkinstalldirs rm -f aclocal.m4 configure Makefile.in config.guess ltmain.sh config.sub rm -rf autom4te.cache set -x aclocal -I m4 libtoolize --force --copy automake --foreign --copy --add-missing if [ $? -ne 0 ]; then echo "automake failed" exit -3 fi autoconf dirac-1.0.2/libdirac_encoder/0000777000204200017500000000000011144427343013047 500000000000000dirac-1.0.2/libdirac_encoder/rate_control.cpp0000775000204200017500000004174711121601176016175 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: rate_control.cpp,v 1.33 2008/12/16 01:21:02 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Myo Tun (Original Author, myo.tun@brunel.ac.uk) * Jonathan Loo (Jonathan.Loo@brunel.ac.uk) * School of Engineering and Design, Brunel University, UK * Thomas Davies (bugfixes to improve stability and a major refactor to introduce a buffer model) * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ //////////////Rate Control Algorithm////////////////// /* The algorithm controls the bitrate by adaptively changing the Quality Factor, QF of each frame before encoding by the m_fcoder.Compress( , , , ) function in CompressNextPicture() (seq_compress.cpp). The first sub-group which is I, L1, L2, L2 frames are encoded by using the initial QF which is set to 7. The corresponding bitrate R is then calculated. Adaption for the next subgroup is carried out by determining a model parameter K, whose relationship to QF and bit rate is: QF = 10-5/2log(K/R^(-2)) K is determined from the first subgroup data (QF and rate), and used to calculate a new QF from the target rates for the next subgroup. The same procedure applies for the calculation of the QF for the remaining sub-groups until it reaches to the end of a GOP. For the next GOP, the initial QF of the first sub-group is the average value of the QF of the first sub-group and last sub-group from the previous GOP. The calculation of the QF of each and every sub-group is carried out in the CalcNextQualFactor( , ) function at the rate_control.cpp. The target bitrate is varied according to a decoder buffer model, consisting of the average bitrate over a GOP plus an adjustment to steer the buffer towards a target occupancy. A target bit rate corresponding to the different sub-groups still neeeds to be calculated from this overall target. In order to do this, the modified version of test model version 5, TM5 bit allocation procedure is employed and target bit rates for each sub-group are calculated by using the allocated bits to each frame types. The modified version of TM5 bit allocation procedure is implemented in Allocate ( , ) function at the rate_control.cpp. */ #include #include using namespace dirac; //Default constructor FrameComplexity::FrameComplexity(): m_XI(169784), m_XL1(36016), m_XL2(4824) {} //Default constructor RateController::RateController(int trate, SourceParams& srcp, EncoderParams& encp): m_qf (encp.Qf()), m_I_qf (encp.Qf()), m_I_qf_long_term(encp.Qf()), m_target_rate(trate), m_buffer_size(5000*trate),// for the moment, set buffer size to 5 seconds m_buffer_bits((m_buffer_size*9)/10),// initial occupancy of 90% m_encparams(encp), m_fcount(encp.L1Sep() ), m_intra_only(false), m_L2_complexity_sum(0) { SetFrameDistribution(); CalcTotalBits(srcp); if (m_intra_only) m_Iframe_bits = m_total_GOP_bits; else { m_Iframe_bits = m_total_GOP_bits/10; m_L1frame_bits = (m_Iframe_bits*3)/m_num_L1frame; if (m_encparams.L1Sep()>1) m_L2frame_bits = ( m_total_GOP_bits - m_Iframe_bits - m_L1frame_bits*m_num_L1frame )/ (m_encparams.GOPLength()-1-m_num_L1frame); else m_L2frame_bits = 0; } } void RateController::SetFrameDistribution() { m_num_L1frame = m_encparams.NumL1(); m_num_Iframe = 1; if (m_num_L1frame == 0) { m_num_Iframe = m_encparams.GOPLength(); m_intra_only = true; } m_num_L2frame = m_encparams.GOPLength() - m_num_Iframe - m_num_L1frame; } void RateController::CalcTotalBits(const SourceParams& sourceparams) { const Rational& frame_rate = sourceparams.FrameRate(); double f_rate = double(frame_rate.m_num)/double(frame_rate.m_denom); int GOP_length = m_encparams.GOPLength(); m_GOP_duration = GOP_length/f_rate; m_total_GOP_bits = (long int)(m_GOP_duration*1000.0)*m_target_rate; //Unit in bits m_GOP_target = m_total_GOP_bits; m_picture_bits = m_total_GOP_bits/GOP_length; if (m_encparams.Verbose()) { std::cout<<"\nRate Control Encoding with target bit rate = "; std::cout<target_ratio) tap = (actual_ratio-target_ratio)/top_size; else tap = (target_ratio-actual_ratio)/bottom_size; tap = std::min( 1.0, std::max(tap, 0.25 )); } if (!m_intra_only) { bool emergency_realloc = false; int target; // First, do normal coding if ( pparams.PicSort().IsIntra() == true ) { target = m_Iframe_bits; if (num_bits < target/2 ) emergency_realloc = true; // Update the statistics m_frame_complexity.SetIComplexity( num_bits ); // We've just coded an intra frame so we need to set qf for // the next group of L2(B) frames m_qf = std::max(tap*m_qf+(1.0-tap)*m_encparams.Qf(), m_encparams.Qf()-1.0); m_encparams.SetQf( m_qf ); if (pparams.PictureNum()/field_factor==0) { // We've just coded the very first frame, which is a special // case as the two L2 frames which normally follow are missing m_fcount = m_encparams.L1Sep(); } } //Update complexities if ( (pparams.PictureNum()/field_factor) % m_encparams.L1Sep() !=0 ) { // Scheduled B/L2 picture target = m_L2frame_bits; if (num_bits < target/2 ){ emergency_realloc = true; } m_L2_complexity_sum += num_bits; } else if ( pparams.PicSort().IsIntra() == false ) { // Scheduled P/L1 picture (if inserted I picture, don't change the complexity) target = m_L1frame_bits; if (num_bits < target/2 || num_bits > target*3 ){ emergency_realloc = true; } m_frame_complexity.SetL1Complexity(num_bits); } if ( m_fcount==0 || emergency_realloc==true) { if (emergency_realloc==true && m_encparams.Verbose()==true ) std::cout<1 && m_fcountm_buffer_size) { if (m_encparams.Verbose()) { std::cout<0.9 && ((fnum+1) % m_encparams.L1Sep())==0) { // If we're overshooting buffer target, correct quickly correction = std::min( 0.5, 0.5*( buffer_occ - 0.9 )/0.9 ); m_GOP_target = ( long int)(double(m_total_GOP_bits)*( 1.0+correction) ); } } const long int min_bits = m_total_GOP_bits/(100*m_encparams.GOPLength()); // Allocate intra bits m_Iframe_bits = (long int) (m_GOP_target / (m_num_Iframe +(double)(m_num_L1frame*XL1)/XI +(double)(m_num_L2frame*XL2)/XI)); m_Iframe_bits = std::max( min_bits, m_Iframe_bits ); // Allocate L1 bits m_L1frame_bits = (long int) (m_GOP_target / (m_num_L1frame +(double)(m_num_Iframe*XI)/XL1 +(double)(m_num_L2frame*XL2)/XL1)); m_L1frame_bits = std::max( min_bits, m_L1frame_bits ); // Allocate L2 bits m_L2frame_bits = (long int) (m_GOP_target / (m_num_L2frame +(double)(m_num_Iframe*XI)/XL2 +(double)(m_num_L1frame*XL1)/XL2)); m_L2frame_bits = std::max( min_bits, m_L2frame_bits ); } float RateController::ReviewQualityFactor( const float qfac, const long int num_bits ) { if (num_bits>m_total_GOP_bits/2) { // The frame is too big, so reset to a smaller quality factor return ClipQualityFactor(qfac-2); } else { // Keep the quality factor in a sensible range return ClipQualityFactor( qfac ); } } float RateController::ClipQualityFactor( const float qfac ) { // Keep the quality factor in a sensible range if ( !m_intra_only ) return std::min( std::max(qfac, 0.0f), 16.0f); else return std::max(qfac, 0.0f); } void RateController::CalcNextIntraQualFactor() { m_I_qf = (m_I_qf + m_qf)/2.0; m_I_qf = ClipQualityFactor( m_I_qf ); m_encparams.SetQf(m_I_qf); const double ff = 0.95; m_I_qf_long_term *= ff; m_I_qf_long_term += ( 1.0 - ff )*m_I_qf; } void RateController::SetCutPictureQualFactor() { m_qf = std::min( m_qf , m_I_qf_long_term ); m_encparams.SetQf( m_qf ); } dirac-1.0.2/libdirac_encoder/picture_compress.h0000664000204200017500000001644711050714332016531 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: picture_compress.h,v 1.7 2008/08/14 02:30:50 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * Scott R Ladd, * Anuradha Suraparaju * Andrew Kennedy * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #ifndef _PICTURE_COMPRESS_H_ #define _PICTURE_COMPRESS_H_ #include #include #include #include namespace dirac { class MvData; //! Compress a single image picture /*! This class compresses a single picture at a time, using parameters supplied at its construction. PictureCompressor is used by SequenceCompressor. */ class PictureCompressor { public: //! Constructor /*! Creates a FrameEncoder with specific set of parameters the control the compression process. It encodes motion data before encoding each component of the picture. \param encp encoder parameters */ PictureCompressor( EncoderParams& encp ); //! Destructor ~PictureCompressor( ); //! Do pixel accurate motion estimate void PixelME( EncQueue& my_buffer , int pnum ); //! Calculate the complexity of a picture void CalcComplexity( EncQueue& my_buffer, int pnum , const OLBParams& olbparams ); void CalcComplexity2( EncQueue& my_buffer, int pnum ); //! Normalise picture complexity with respect to others in the queue void NormaliseComplexity( EncQueue& my_buffer, int pnum ); //! Do subpixel accurate motion vector refinement void SubPixelME( EncQueue& my_buffer , int pnum ); //! Do mode decision based on sub-pel vectors void ModeDecisionME( EncQueue& my_buffer, int pnum ); //! Detect cuts in the current picture void IntraModeAnalyse( EncQueue& my_buffer, int pnum ); //! Does motion compensation on picture pnum (forward or backward) void MotionCompensate( EncQueue& my_buffer, int pnum, AddOrSub dirn ); //! Prefilter if required void Prefilter( EncQueue& my_buffer, int pnum ); //! Do the DWT on a given picture void DoDWT( EncQueue& my_buffer , int pnum, Direction dirn ); //! Compress a specific picture within a group of pictures (GOP) /*! Compresses a specified picture within a group of pictures. \param my_pbuffer picture buffer in which the reference frames resides \param pnum picture number to compress \param pic_byteio compressed picture in Dirac bytestream format */ void CodeResidue( EncQueue& my_pbuffer , int pnum , PictureByteIO* pic_byteio); //! Compresses the motion vector data void CodeMVData( EncQueue& my_buffer, int pnum, PictureByteIO* pic_byteio); //! Returns true if the picture has been skipped rather than coded normally bool IsSkipped(){ return m_skipped; } //! Returns true if Motion estimation data is available bool IsMEDataAvail() const { return m_medata_avail; } //! Returns the motion estimation data const MEData* GetMEData() const; private: //! Copy constructor is private and body-less /*! Copy constructor is private and body-less. This class should not be copied. */ PictureCompressor( const PictureCompressor& cpy ); //! Assignment = is private and body-less /*! Assignment = is private and body-less. This class should not be assigned. */ PictureCompressor& operator=(const PictureCompressor& rhs); //! Initialise the coefficient data array for holding wavelet coefficients void InitCoeffData( CoeffArray& coeff_data, const int xl, const int yl ); //! Returns the value lambda according to picture and component type float GetCompLambda( const EncPicture& my_picture, const CompSort csort ); void SelectQuantisers( CoeffArray& coeff_data , SubbandList& bands , const float lambda, OneDArray& est_counts, const CodeBlockMode cb_mode, const PictureParams& pp, const CompSort csort ); int SelectMultiQuants( CoeffArray& coeff_data , SubbandList& bands , const int band_num, const float lambda, const PictureParams& pp, const CompSort csort ); void SetupCodeBlocks( SubbandList& bands ); void AddSubAverage(CoeffArray& coeff_data,int xl,int yl,AddOrSub dirn); private: //member variables // a local copy of the encoder params EncoderParams& m_encparams; // True if the picture has been skipped, false otherwise bool m_skipped; // True if we use global motion vectors, false otherwise bool m_use_global; // True if we use block motion vectors, false otherwise bool m_use_block_mv; // Prediction mode to use if we only have global motion vectors PredMode m_global_pred_mode; // A pointer to the current picture motion vector data MEData* m_me_data; // True if motion estimation data is available bool m_medata_avail; // True if we have detected a cut bool m_is_a_cut; // The original MV precision type MVPrecisionType m_orig_prec; }; } // namespace dirac #endif dirac-1.0.2/libdirac_encoder/comp_compress.cpp0000664000204200017500000001261711135530021016335 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: comp_compress.cpp,v 1.49 2009/01/21 05:18:09 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * Scott R Ladd, * Anuradha Suraparaju * Andrew Kennedy * Tim Borer * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ //Compression of an individual component, //after motion compensation if appropriate ////////////////////////////////////////// #include #include #include #include using namespace dirac; #include #include #include CompCompressor::CompCompressor( EncoderParams& encp,const PictureParams& pp) : m_encparams(encp), m_pparams(pp), m_psort( m_pparams.PicSort() ), m_cformat( m_pparams.CFormat() ) {} ComponentByteIO* CompCompressor::Compress( CoeffArray& coeff_data , SubbandList& bands, CompSort csort, const OneDArray& estimated_bits) { // Need to transform, select quantisers for each band, // and then compress each component in turn unsigned int num_band_bytes( 0 ); // create byte output ComponentByteIO *p_component_byteio = new ComponentByteIO(csort); // Loop over all the bands (from DC to HF) quantising and coding them for (int b=bands.Length() ; b>=1 ; --b ) { // create subband byte io SubbandByteIO subband_byteio(bands(b)); if ( !bands(b).Skipped() ) { // If not skipped ... if (m_pparams.UsingAC()) { // A pointer to an object for coding the subband data BandCodec* bcoder; // Pick the right codec according to the picture type and subband if (b >= bands.Length()-3) { if ( m_psort.IsIntra() && b == bands.Length() ) bcoder=new IntraDCBandCodec(&subband_byteio, TOTAL_COEFF_CTXS , bands ); else bcoder=new LFBandCodec(&subband_byteio ,TOTAL_COEFF_CTXS, bands , b, m_psort.IsIntra()); } else bcoder=new BandCodec(&subband_byteio , TOTAL_COEFF_CTXS , bands , b, m_psort.IsIntra() ); num_band_bytes = bcoder->Compress(coeff_data); delete bcoder; } else { // A pointer to an object for coding the subband data BandVLC* bcoder; if ( m_psort.IsIntra() && b == bands.Length() ) bcoder=new IntraDCBandVLC(&subband_byteio, bands ); else bcoder=new BandVLC(&subband_byteio , 0, bands , b, m_psort.IsIntra() ); num_band_bytes = bcoder->Compress(coeff_data); delete bcoder; } // Update the entropy correction factors m_encparams.EntropyFactors().Update(b , m_pparams , csort , estimated_bits[b] , 8*num_band_bytes); } else { // ... skipped SetToVal( coeff_data , bands(b) , 0 ); } // output sub-band data p_component_byteio->AddSubband(&subband_byteio); }//b return p_component_byteio; } void CompCompressor::SetToVal(CoeffArray& coeff_data,const Subband& node,ValueType val) { for (int j=node.Yp() ; j #include using namespace dirac; SequenceCompressor::SequenceCompressor( StreamPicInput* pin , EncoderParams& encp, DiracByteStream& dirac_byte_stream): m_all_done(false), m_just_finished(true), m_srcparams(pin->GetSourceParams()), m_encparams(encp), m_predparams(encp.GetPicPredParams()), m_L1_sep(encp.L1Sep()), m_pparams(m_srcparams.CFormat(), m_encparams.Xl(), m_encparams.Yl(), m_encparams.LumaDepth(), m_encparams.ChromaDepth() ), m_pic_in(pin), m_current_display_pnum(-1), m_current_code_pnum(0), m_show_pnum(-1),m_last_picture_read(-1), m_gop_start_num(0), m_delay(1), m_qmonitor( m_encparams ), m_pcoder( m_encparams ), m_dirac_byte_stream(dirac_byte_stream), m_eos_signalled(false) { // Set up the compression of the sequence //TBD: put into the constructor for EncoderParams m_encparams.SetEntropyFactors( new EntropyCorrector(m_encparams.TransformDepth()) ); // Set up generic picture parameters m_pparams.SetUsingAC(m_encparams.UsingAC() ); // Set up a rate controller if rate control being used if (m_encparams.TargetRate() != 0) m_ratecontrol = new RateController(m_encparams.TargetRate(), m_pic_in->GetSourceParams(), encp); // Copy in the block parameters in case we want to change them dynamically m_basic_olb_params2 = &m_predparams.LumaBParams(2); m_basic_olb_params1 = new OLBParams( 2*m_predparams.LumaBParams(2).Xblen(), 2*m_predparams.LumaBParams(2).Yblen(), 2*m_predparams.LumaBParams(2).Xbsep(), 2*m_predparams.LumaBParams(2).Ybsep() ); m_basic_olb_params0 = new OLBParams( 4*m_predparams.LumaBParams(2).Xblen(), 4*m_predparams.LumaBParams(2).Yblen(), 4*m_predparams.LumaBParams(2).Xbsep(), 4*m_predparams.LumaBParams(2).Ybsep() ); m_intra_olbp = new OLBParams( 2*m_basic_olb_params2->Xbsep() , 2*m_basic_olb_params2->Ybsep() , m_basic_olb_params2->Xbsep() , m_basic_olb_params2->Ybsep() ); SetMotionParameters(); } void SequenceCompressor::SetMotionParameters(){ if ( m_encparams.TargetRate() != 0 ){ OLBParams new_olb_params = *m_basic_olb_params2; if (m_encparams.Qf()<2.5) new_olb_params = *m_basic_olb_params1; else if (m_encparams.Qf()<1.5) new_olb_params = *m_basic_olb_params0; m_predparams.SetBlockSizes( new_olb_params , m_srcparams.CFormat() ); } int xl = m_encparams.Xl(); int yl = m_encparams.Yl(); // Make sure we have enough macroblocks to cover the pictures m_predparams.SetXNumSB( (xl+m_predparams.LumaBParams(0).Xbsep()-1)/ m_predparams.LumaBParams(0).Xbsep() ); m_predparams.SetYNumSB( (yl+m_predparams.LumaBParams(0).Ybsep()-1)/ m_predparams.LumaBParams(0).Ybsep() ); m_predparams.SetXNumBlocks( 4 * m_predparams.XNumSB() ); m_predparams.SetYNumBlocks( 4 * m_predparams.YNumSB() ); } SequenceCompressor::~SequenceCompressor() { delete m_intra_olbp; delete m_basic_olb_params1; delete m_basic_olb_params0; if ( m_encparams.Verbose()) MakeSequenceReport(); //TBD: put into the destructor for EncoderParams delete &m_encparams.EntropyFactors(); if (m_encparams.TargetRate()!=0) delete m_ratecontrol; } bool SequenceCompressor::CanEncode() { const int queue_size = std::max( 4 , 2*m_encparams.L1Sep() ); if (m_eos_signalled) { if (m_encparams.NumL1() > 0) { /* * Long-GOP sequence */ int field_factor = m_encparams.PictureCodingMode() ? 2 : 1; int last_frame_read = m_last_picture_read/field_factor; int current_code_fnum = m_current_code_pnum/field_factor; if ((last_frame_read >= (current_code_fnum + (last_frame_read%m_encparams.L1Sep())))) return true; /* * Encode the remaining picture in the frame buffer. We check if * the reference pictures are available and modify the picture sort * accordingly. */ if (current_code_fnum <= last_frame_read) { m_current_display_pnum = m_current_code_pnum; return true; } } else { if (m_last_picture_read >= m_current_display_pnum) return true; } } else { if (m_last_picture_read >= m_current_display_pnum + queue_size) return true; } return false; } const EncPicture* SequenceCompressor::CompressNextPicture() { // This function codes the next picture in coding order and returns the next picture in display order // In general these will differ, and because of re-ordering there is a m_delay which needs to be imposed. // This creates problems at the start and at the end of the sequence which must be dealt with. // At the start we just keep outputting picture 0. At the end you will need to loop for longer to get all // the pictures out. It's up to the calling function to do something with the decoded pictures as they // come out - write them to screen or to file, or whatever. // current_pnum is the number of the current picture being coded in display order // m_current_code_pnum is the number of the current picture in coding order. This function increments // m_current_code_pnum by 1 each time and works out what the number is in display order. // m_show_pnum is the index of the picture number that can be shown when current_pnum has been coded. // Var m_delay is the m_delay caused by reordering (as distinct from buffering) TESTM (m_last_picture_read >= 0, "Data loaded before calling CompressNextPicture"); const int field_factor = m_encparams.FieldCoding() ? 2 : 1; // If we have a scheduled P picture, reset the P separation to normal if ( m_encparams.L1Sep()!=m_L1_sep ){ if ( (m_current_code_pnum-field_factor) % (m_encparams.L1Sep()*field_factor)==0 ) m_L1_sep = m_encparams.L1Sep(); } m_current_display_pnum = CodedToDisplay( m_current_code_pnum ); m_show_pnum = std::max( m_current_code_pnum - m_delay , 0 ); if ( CanEncode() ) { // Compress the picture// /////////////////////// const std::vector& queue_members = m_enc_pbuffer.Members(); EncPicture* current_pic = &m_enc_pbuffer.GetPicture( m_current_display_pnum ); PictureParams* current_pp = ¤t_pic->GetPparams(); // 1. Set the picture type and refs for all the pictures in the queue not already encoded for (size_t i=0; i0.8) // enc_pic.DropRef(2); // else if(enc_pic.GetPredBias()<0.2) // enc_pic.DropRef(1); // } } } } if ( current_pp->PicSort().IsInter() ){ // // 7. Normalise complexity for the current picture // m_pcoder.NormaliseComplexity( m_enc_pbuffer, m_current_display_pnum ); bool subgroup_reconfig; do{ subgroup_reconfig = false; //8. Do subpel refinement m_pcoder.SubPixelME( m_enc_pbuffer, m_current_display_pnum ); //9. Do mode decision m_pcoder.ModeDecisionME( m_enc_pbuffer, m_current_display_pnum ); //10. Work out how many blocks are intra m_pcoder.IntraModeAnalyse( m_enc_pbuffer, m_current_display_pnum ); //11. Change the GOP structure to PPP if there are too many intras if ( m_L1_sep>1 && current_pic->GetMEData().IntraBlockRatio()>0.25 && (m_current_display_pnum % (m_encparams.L1Sep()*field_factor))==0){ subgroup_reconfig = true; m_L1_sep = 1; for (int i = 0; iSetStatus( DONE_SET_PTYPE ); // Current picture to code has now changed: recalculate m_current_display_pnum = CodedToDisplay( m_current_code_pnum ); current_pic = &m_enc_pbuffer.GetPicture(m_current_display_pnum ); current_pp = ¤t_pic->GetPparams(); } }while(subgroup_reconfig==true); //11. Do cut detection and insert intra pictures if ( current_pic->GetMEData().IntraBlockRatio()>0.3333 ){ is_a_cut = true; if ( m_encparams.L1Sep()>1 && (m_current_display_pnum % (field_factor*m_encparams.L1Sep())) == 0){ m_gop_start_num = current_pp->PictureNum();//restart the GOP } if ( current_pp->PicSort().IsRef() ) // Set the picture type to intra current_pic->SetPictureSort (PictureSort::IntraRefPictureSort()); else current_pic->SetPictureSort (PictureSort::IntraNonRefPictureSort()); if ( m_encparams.Verbose() ) std::cout<GetMEData(); // // if (me_data.IntraBlockRatio()>0.1)//FIXME: this is broken with adaptive block sizes // m_predparams.SetBlockSizes(*m_intra_olbp, m_srcparams.CFormat() ); m_pcoder.MotionCompensate(m_enc_pbuffer, m_current_display_pnum, SUBTRACT ); current_pic->UpdateStatus( DONE_MC ); } } if ( current_pp->PicSort().IsRef()==true ) m_enc_pbuffer.SetRetiredPictureNum( m_show_pnum, m_current_display_pnum ); // 12. Now code the residual data and motion data if (m_encparams.TargetRate() != 0) UpdateIntraPicCBRModel( *current_pp, is_a_cut ); // 13. Write a sequence header if necessary if( (m_encparams.NumL1() > 0 && current_pp->PicSort().IsRef()==true && current_pp->PicSort().IsIntra()==true && (m_current_display_pnum % m_encparams.L1Sep() == 0)) || (m_encparams.NumL1() == 0 && (m_current_display_pnum % m_encparams.GOPLength())==0)) { if (m_encparams.Verbose()) { std::cout<GetSourceParams(), m_encparams); p_seqheader_byteio->Output(); m_dirac_byte_stream.AddSequenceHeader(p_seqheader_byteio); } // 13. Write the picture header. PictureByteIO* p_picture_byteio = new PictureByteIO(*current_pp, m_current_display_pnum ); p_picture_byteio->Output(); if ( m_encparams.Verbose() ){ if (m_encparams.TargetRate()!=0 ) m_ratecontrol->Report(); if (m_encparams.FieldCoding()) std::cout<PicSort().IsIntra()==false ) std::cout<GetMEData().IntraBlockRatio()*100.0<<"% of blocks are intra "; if (is_a_cut==true) std::cout<PicSort().IsRef() ) std::cout<<"REF"; else std::cout<<"NON-REF"; std::cout<<" , "; if (current_pp->PicSort().IsIntra()) std::cout<<"INTRA"; else std::cout<<"INTER"; if ( current_pp->PicSort().IsInter() ){ std::cout<Refs()[0]; if (current_pp->Refs().size() > 1) std::cout<<" and "<< current_pp->Refs()[1]; } } // 14. Code the motion vectors if ( current_pp->PicSort().IsInter() ) m_pcoder.CodeMVData(m_enc_pbuffer , m_current_display_pnum, p_picture_byteio); // 15. Do prefiltering on the residue if necessary if (m_encparams.Prefilter() != NO_PF ) m_pcoder.Prefilter( m_enc_pbuffer, m_current_display_pnum ); // 16. Do the transform on the 3 components m_pcoder.DoDWT( m_enc_pbuffer, m_current_display_pnum , FORWARD); // 17. Select the quantisers // 18. Code the residue m_pcoder.CodeResidue(m_enc_pbuffer , m_current_display_pnum, p_picture_byteio); const PictureSort& psort = current_pp->PicSort(); /* All coding is done - so output and reconstruct */ m_dirac_byte_stream.AddPicture(p_picture_byteio); // 19. Do the inverse DWT if necessary m_pcoder.DoDWT( m_enc_pbuffer, m_current_display_pnum , BACKWARD); // 20. Motion compensate back if necessary if (psort.IsInter() && !is_a_cut ) m_pcoder.MotionCompensate(m_enc_pbuffer, m_current_display_pnum, ADD ); // Reset block sizes for next picture m_predparams.SetBlockSizes(*m_basic_olb_params2, m_srcparams.CFormat() ); // 21. Clip the data to keep it in range current_pic->Clip(); // Use the results of encoding to update the CBR model if (m_encparams.TargetRate() != 0 ) UpdateCBRModel(*current_pic, p_picture_byteio); // 22. Measure the encoded picture quality if ( m_encparams.LocalDecode() ) m_qmonitor.UpdateModel( *current_pic ); // Increment our position m_current_code_pnum++; CleanBuffers(); current_pic->SetStatus( ALL_ENC ); } // Return the latest picture that can be shown if ( m_enc_pbuffer.GetPicture(m_show_pnum).GetStatus() == ALL_ENC ){ if ( m_encparams.Verbose() ){ std::cout<= 0) return &m_enc_pbuffer.GetPicture( m_current_display_pnum ); return 0; } DiracByteStats SequenceCompressor::EndSequence() { DiracByteStats seq_stats; if (m_just_finished) { seq_stats=m_dirac_byte_stream.EndSequence(); m_just_finished = false; m_all_done = true; } return seq_stats; } void SequenceCompressor::MakeSequenceReport() { if ( m_encparams.LocalDecode() ) m_qmonitor.WriteLog(); std::cout< 0 && m_encparams.NumL1() != 0){ // Calculate the new QF for encoding the following I picture if ( is_a_cut ) m_ratecontrol->SetCutPictureQualFactor(); else m_ratecontrol->CalcNextIntraQualFactor(); } } FrameSequenceCompressor::FrameSequenceCompressor( StreamPicInput* pin , EncoderParams& encp, DiracByteStream& dirac_byte_stream): SequenceCompressor(pin, encp, dirac_byte_stream) { } void FrameSequenceCompressor::SetPicTypeAndRefs( PictureParams& pparams ) { // Set the temporal prediction parameters for frame coding const int pnum = pparams.PictureNum(); const int rel_pnum = pnum - m_gop_start_num; const int gop_len = m_encparams.GOPLength(); const int num_L1 = m_encparams.NumL1(); pparams.SetRetiredPictureNum( -1 ); pparams.Refs().clear(); if ( num_L1>0 ){ if ( rel_pnum % gop_len == 0){ if (gop_len > 1) pparams.SetPicSort( PictureSort::IntraRefPictureSort()); else // I-picture only coding pparams.SetPicSort( PictureSort::IntraNonRefPictureSort()); // I picture expires after we've coded the next I picture pparams.SetExpiryTime( 2*m_L1_sep ); } else if (rel_pnum % m_L1_sep == 0){ pparams.SetPicSort( PictureSort::InterRefPictureSort()); // Ref the previous I or L1 picture pparams.Refs().push_back( pnum - m_L1_sep ); // if we don't have the first L1 picture ... if ( ((rel_pnum-m_L1_sep) % gop_len>0) && m_L1_sep>1) // ... other ref is the prior I/L1 picture but one pparams.Refs().push_back( pnum - 2*m_L1_sep ); // Expires after the next L1 or I picture pparams.SetExpiryTime( 2*m_L1_sep ); if (rel_pnum % m_encparams.L1Sep() == 0 ) pparams.SetExpiryTime(2*m_encparams.L1Sep()); } else if ((rel_pnum+1) % m_L1_sep == 0){ pparams.SetPicSort( PictureSort::InterNonRefPictureSort()); // .. and the previous picture pparams.Refs().push_back(pnum-1); // Refs are the next I or L1 picture ... if (m_enc_pbuffer.IsPictureAvail(pnum+1)) pparams.Refs().push_back(pnum+1); pparams.SetExpiryTime( 1 ); } else{ pparams.SetPicSort( PictureSort::InterRefPictureSort()); // .. and the previous picture pparams.Refs().push_back(pnum-1); // Refs are the next I or L1 picture ... int next_ref = ((pnum/m_L1_sep)+1)*m_L1_sep; if (m_enc_pbuffer.IsPictureAvail(next_ref)) pparams.Refs().push_back(next_ref); pparams.SetExpiryTime( 2 ); } } else{ pparams.SetPicSort( PictureSort::IntraNonRefPictureSort()); pparams.SetExpiryTime( 1 ); } } bool FrameSequenceCompressor::LoadNextFrame() { PictureParams pp( m_pparams ); pp.SetPictureNum( m_last_picture_read+1 ); // Set an initially huge expiry time as we don't know when it will expire yet pp.SetExpiryTime(1<<30); m_enc_pbuffer.PushPicture( pp ); m_pic_in->ReadNextPicture( m_enc_pbuffer.GetPicture(m_last_picture_read+1) ); // Copy into the original data m_enc_pbuffer.GetPicture(m_last_picture_read+1).SetOrigData(); if ( m_encparams.Prefilter()==CWM ) CWMFilter(m_enc_pbuffer.GetPicture( m_last_picture_read+1 ) , m_encparams.PrefilterStrength() ); if ( m_pic_in->End() ) { m_all_done = true; return false; } m_last_picture_read++; return true; } int FrameSequenceCompressor::CodedToDisplay( const int cnum ) { int div; if (m_L1_sep>0) { // We have L1 and L2 pictures if (cnum==0) return 0; else if ((cnum-1)% m_L1_sep==0) {//we have L1 or subsequent I pictures div=(cnum-1)/m_L1_sep; return cnum+m_L1_sep-1; } else//we have L2 pictures return cnum-1; } else {//we just have I-pictures, so no re-ordering return cnum; } } void FrameSequenceCompressor::UpdateCBRModel(EncPicture& my_frame, const PictureByteIO* p_picture_byteio) { // Update the quality factor m_ratecontrol->CalcNextQualFactor(my_frame.GetPparams(), p_picture_byteio->GetSize()*8); } FieldSequenceCompressor::FieldSequenceCompressor( StreamPicInput* pin , EncoderParams& encp, DiracByteStream& dirac_byte_stream): SequenceCompressor(pin, encp, dirac_byte_stream) { m_delay = 2; } bool FieldSequenceCompressor::LoadNextFrame() { PictureParams pp( m_pparams ); pp.SetExpiryTime( 1<<30 ); int pnum = m_last_picture_read+1; for (int j=pnum; j<=pnum+1; ++j){ pp.SetPictureNum( j ); m_enc_pbuffer.PushPicture( pp ); } StreamFieldInput* field_input = (StreamFieldInput*) m_pic_in; field_input->ReadNextFrame( m_enc_pbuffer.GetPicture( pnum ), m_enc_pbuffer.GetPicture(pnum+1) ); // Copy data across for (int j=pnum; j<=pnum+1; ++j){ m_enc_pbuffer.GetPicture( j ).SetOrigData(); if ( m_encparams.Prefilter()==CWM ) CWMFilter(m_enc_pbuffer.GetPicture( j ), m_encparams.PrefilterStrength() ); } if ( m_pic_in->End() ){ m_all_done = true; return false; } m_last_picture_read +=2; return true; } void FieldSequenceCompressor::PreMotionEstmationFilter(PicArray& comp) { //Special case for first row for (int i = comp.FirstX(); i <= comp.LastX(); ++i) { comp[comp.FirstY()][i] = (3*comp[comp.FirstY()][i] + comp[comp.FirstY()+1][i] +2 )>>2; } //Middle section for (int j = comp.FirstY()+1; j < comp.LastY(); ++j) { for (int i = comp.FirstX(); i <= comp.LastX(); ++i) { comp[j][i] = (comp[j-1][i] + 2*comp[j][i] + comp[j+1][i] + 2)>>2; } } //Special case for last row for (int i = comp.FirstX(); i <= comp.LastX(); ++i) { comp[comp.LastY()][i] = (comp[comp.LastY()-1][i] + 3*comp[comp.LastY()][i] + 2)>>2; } } void FieldSequenceCompressor::SetPicTypeAndRefs( PictureParams& pparams ) { // FIXME: won't work with adaptive GOP properly // Set the temporal prediction parameters for field coding const int pnum = pparams.PictureNum(); const int rel_pnum = pparams.PictureNum()-m_gop_start_num; const int gop_len = m_encparams.GOPLength(); const int num_L1 = m_encparams.NumL1(); pparams.SetRetiredPictureNum( -1 ); pparams.Refs().clear(); if ( num_L1>0 ){ if ( (rel_pnum/2) % gop_len == 0){ // Field 1 is Intra Field if (gop_len > 1){ pparams.SetPicSort( PictureSort::IntraRefPictureSort()); // I picture expires after we've coded the next L1 picture pparams.SetExpiryTime( gop_len * 2); pparams.SetExpiryTime( 2*m_L1_sep ); if ( pnum%2){ pparams.SetPicSort( PictureSort::InterRefPictureSort()); // Ref the previous I field pparams.Refs().push_back( pnum-1 ); } } else{ // I-picture only coding pparams.SetPicSort( PictureSort::IntraNonRefPictureSort()); pparams.SetExpiryTime( gop_len ); } } else if ((rel_pnum/2) % m_L1_sep == 0){ pparams.SetPicSort( PictureSort::InterRefPictureSort()); if (pnum%2){ // Field 2 // Ref the first field of same picture pparams.Refs().push_back( pnum - 1); // Ref the previous field 2 of I or L1 picture pparams.Refs().push_back( pnum - m_L1_sep*2 ); } else{ // Field 1 // Ref the field 1 of previous I or L1 picture pparams.Refs().push_back( pnum - m_L1_sep*2 ); // Ref the field 2 of previous I or L1 picture pparams.Refs().push_back( pnum - m_L1_sep*2 + 1 ); } // Expires after the next L1 or I picture pparams.SetExpiryTime( (m_L1_sep+1)*2-1 ); if ((rel_pnum/2) % m_encparams.L1Sep() == 0 ) pparams.SetExpiryTime((2*m_encparams.L1Sep())+1*2-1); } else if ((rel_pnum/2+1) % m_L1_sep == 0){ // Bi-directional non-reference fields. if (pnum%2) pparams.SetPicSort( PictureSort::InterNonRefPictureSort()); else pparams.SetPicSort( PictureSort::InterRefPictureSort()); pparams.Refs().push_back(pnum-1); if (m_enc_pbuffer.IsPictureAvail(pnum+2)) pparams.Refs().push_back(pnum+2); pparams.SetExpiryTime( 1 ); } else{ // Bi-directional reference fields. pparams.SetPicSort( PictureSort::InterRefPictureSort()); pparams.Refs().push_back(pnum-1); int next_ref = (((pnum/2)/m_L1_sep+1)*m_L1_sep)*2+(pnum%2); if (m_enc_pbuffer.IsPictureAvail(next_ref)) pparams.Refs().push_back(next_ref); pparams.SetExpiryTime( 4 ); } } else{ pparams.SetPicSort( PictureSort::IntraNonRefPictureSort()); pparams.SetExpiryTime( 2 ); } } FieldSequenceCompressor::~FieldSequenceCompressor() { } int FieldSequenceCompressor::CodedToDisplay( const int pnum ) { // Frame the field pnum belongs to int fnum = pnum>>1; if (m_L1_sep>0) { // We have L1 and L2 frames if (fnum==0) return pnum; else if ((fnum-1)% m_L1_sep==0) {//we have L1 or subsequent I frames return (pnum+(m_L1_sep-1)*2); } else//we have L2 frames return (pnum - 2); } else {//we just have I-frames, so no re-ordering return (pnum); } } void FieldSequenceCompressor::UpdateCBRModel(EncPicture& my_picture, const PictureByteIO* p_picture_byteio) { if (m_current_display_pnum%2 == 0) m_field1_bytes = p_picture_byteio->GetSize(); else m_field2_bytes = p_picture_byteio->GetSize(); // Update the quality factor if (my_picture.GetPparams().PictureNum()%2) m_ratecontrol->CalcNextQualFactor(my_picture.GetPparams(), (m_field1_bytes+m_field2_bytes)*8); } dirac-1.0.2/libdirac_encoder/Makefile.in0000664000204200017500000010642711144426512015041 00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # $Id: Makefile.am,v 1.18 2008/06/19 10:05:52 tjdwave Exp $ # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libdirac_encoder DIST_COMMON = $(library_include_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" \ "$(DESTDIR)$(library_includedir)" libLIBRARIES_INSTALL = $(INSTALL_DATA) LIBRARIES = $(lib_LIBRARIES) ARFLAGS = cru libdirac_encoder_a_DEPENDENCIES = \ $(top_builddir)/libdirac_motionest/libdirac_motionest.a \ $(top_builddir)/libdirac_common/libdirac_common.a \ $(top_builddir)/libdirac_byteio/libdirac_byteio.a am__objects_1 = am__objects_2 = comp_compress.$(OBJEXT) picture_compress.$(OBJEXT) \ quality_monitor.$(OBJEXT) quant_chooser.$(OBJEXT) \ seq_compress.$(OBJEXT) dirac_encoder.$(OBJEXT) \ rate_control.$(OBJEXT) prefilter.$(OBJEXT) \ enc_picture.$(OBJEXT) enc_queue.$(OBJEXT) am_libdirac_encoder_a_OBJECTS = $(am__objects_1) $(am__objects_2) libdirac_encoder_a_OBJECTS = $(am_libdirac_encoder_a_OBJECTS) libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) libdirac_encoder_la_DEPENDENCIES = \ $(top_builddir)/libdirac_motionest/libdirac_motionest.la \ $(top_builddir)/libdirac_common/libdirac_common.la \ $(top_builddir)/libdirac_byteio/libdirac_byteio.la am__objects_3 = libdirac_encoder_la-comp_compress.lo \ libdirac_encoder_la-picture_compress.lo \ libdirac_encoder_la-quality_monitor.lo \ libdirac_encoder_la-quant_chooser.lo \ libdirac_encoder_la-seq_compress.lo \ libdirac_encoder_la-dirac_encoder.lo \ libdirac_encoder_la-rate_control.lo \ libdirac_encoder_la-prefilter.lo \ libdirac_encoder_la-enc_picture.lo \ libdirac_encoder_la-enc_queue.lo am_libdirac_encoder_la_OBJECTS = $(am__objects_1) $(am__objects_3) libdirac_encoder_la_OBJECTS = $(am_libdirac_encoder_la_OBJECTS) libdirac_encoder_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) \ $(libdirac_encoder_la_LDFLAGS) $(LDFLAGS) -o $@ @USE_MSVC_FALSE@am_libdirac_encoder_la_rpath = -rpath $(libdir) DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libdirac_encoder_a_SOURCES) $(libdirac_encoder_la_SOURCES) DIST_SOURCES = $(libdirac_encoder_a_SOURCES) \ $(libdirac_encoder_la_SOURCES) library_includeHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(library_include_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOM4TE = @AUTOM4TE@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GENERIC_LIBRARY_NAME = @GENERIC_LIBRARY_NAME@ GENERIC_LIBRARY_VERSION = @GENERIC_LIBRARY_VERSION@ GENERIC_RELEASE = @GENERIC_RELEASE@ GENERIC_VERSION = @GENERIC_VERSION@ GREP = @GREP@ HAVE_DOT = @HAVE_DOT@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ HAVE_DVIPDFM = @HAVE_DVIPDFM@ HAVE_LATEX = @HAVE_LATEX@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXT = @LIBEXT@ LIBFLAGS = @LIBFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ INCLUDES = -I$(top_srcdir) -I$(srcdir) -I$(top_builddir) h_sources = comp_compress.h picture_compress.h quality_monitor.h \ quant_chooser.h seq_compress.h dirac_encoder.h \ rate_control.h prefilter.h enc_picture.h enc_queue.h cpp_sources = comp_compress.cpp picture_compress.cpp quality_monitor.cpp \ quant_chooser.cpp seq_compress.cpp dirac_encoder.cpp \ rate_control.cpp prefilter.cpp enc_picture.cpp enc_queue.cpp @USE_MSVC_TRUE@lib_LIBRARIES = libdirac_encoder.a @USE_MSVC_FALSE@libdirac_encoder_a_AR = ar crv @USE_MSVC_TRUE@libdirac_encoder_a_AR = link -lib -out:libdirac_encoder.a $(libdirac_encoder_a_OBJECTS); link $(LIBFLAGS) -out:libdirac_encoder$(LIBEXT) $(LDFLAGS) $(libdirac_encoder_a_OBJECTS) $(libdirac_encoder_a_DEPENDENCIES); echo @USE_MSVC_FALSE@lib_LTLIBRARIES = libdirac_encoder.la libdirac_encoder_a_SOURCES = $(h_sources) $(cpp_sources) libdirac_encoder_a_LIBADD = \ $(top_builddir)/libdirac_motionest/libdirac_motionest.a \ $(top_builddir)/libdirac_common/libdirac_common.a \ $(top_builddir)/libdirac_byteio/libdirac_byteio.a libdirac_encoder_la_SOURCES = $(h_sources) $(cpp_sources) libdirac_encoder_la_CXXFLAGS = $(AM_CXXFLAGS) libdirac_encoder_la_LIBADD = \ $(top_builddir)/libdirac_motionest/libdirac_motionest.la \ $(top_builddir)/libdirac_common/libdirac_common.la \ $(top_builddir)/libdirac_byteio/libdirac_byteio.la libdirac_encoder_la_LDFLAGS = -no-undefined -version-info $(GENERIC_LIBRARY_VERSION) library_includedir = $(includedir)/$(GENERIC_LIBRARY_NAME)/libdirac_encoder library_include_HEADERS = dirac_encoder.h @USE_MSVC_TRUE@CLEANFILES = *.pdb *.ilk *.dll *.lib *.exp *.a all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libdirac_encoder/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign libdirac_encoder/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-libLIBRARIES: $(lib_LIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ else :; fi; \ done @$(POST_INSTALL) @list='$(lib_LIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ p=$(am__strip_dir) \ echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ else :; fi; \ done uninstall-libLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ rm -f "$(DESTDIR)$(libdir)/$$p"; \ done clean-libLIBRARIES: -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) libdirac_encoder.a: $(libdirac_encoder_a_OBJECTS) $(libdirac_encoder_a_DEPENDENCIES) -rm -f libdirac_encoder.a $(libdirac_encoder_a_AR) libdirac_encoder.a $(libdirac_encoder_a_OBJECTS) $(libdirac_encoder_a_LIBADD) $(RANLIB) libdirac_encoder.a install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ else :; fi; \ done uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libdirac_encoder.la: $(libdirac_encoder_la_OBJECTS) $(libdirac_encoder_la_DEPENDENCIES) $(libdirac_encoder_la_LINK) $(am_libdirac_encoder_la_rpath) $(libdirac_encoder_la_OBJECTS) $(libdirac_encoder_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comp_compress.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirac_encoder.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/enc_picture.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/enc_queue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirac_encoder_la-comp_compress.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirac_encoder_la-dirac_encoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirac_encoder_la-enc_picture.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirac_encoder_la-enc_queue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirac_encoder_la-picture_compress.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirac_encoder_la-prefilter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirac_encoder_la-quality_monitor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirac_encoder_la-quant_chooser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirac_encoder_la-rate_control.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirac_encoder_la-seq_compress.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/picture_compress.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefilter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quality_monitor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quant_chooser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rate_control.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seq_compress.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< libdirac_encoder_la-comp_compress.lo: comp_compress.cpp @am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -MT libdirac_encoder_la-comp_compress.lo -MD -MP -MF $(DEPDIR)/libdirac_encoder_la-comp_compress.Tpo -c -o libdirac_encoder_la-comp_compress.lo `test -f 'comp_compress.cpp' || echo '$(srcdir)/'`comp_compress.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libdirac_encoder_la-comp_compress.Tpo $(DEPDIR)/libdirac_encoder_la-comp_compress.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='comp_compress.cpp' object='libdirac_encoder_la-comp_compress.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -c -o libdirac_encoder_la-comp_compress.lo `test -f 'comp_compress.cpp' || echo '$(srcdir)/'`comp_compress.cpp libdirac_encoder_la-picture_compress.lo: picture_compress.cpp @am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -MT libdirac_encoder_la-picture_compress.lo -MD -MP -MF $(DEPDIR)/libdirac_encoder_la-picture_compress.Tpo -c -o libdirac_encoder_la-picture_compress.lo `test -f 'picture_compress.cpp' || echo '$(srcdir)/'`picture_compress.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libdirac_encoder_la-picture_compress.Tpo $(DEPDIR)/libdirac_encoder_la-picture_compress.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='picture_compress.cpp' object='libdirac_encoder_la-picture_compress.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -c -o libdirac_encoder_la-picture_compress.lo `test -f 'picture_compress.cpp' || echo '$(srcdir)/'`picture_compress.cpp libdirac_encoder_la-quality_monitor.lo: quality_monitor.cpp @am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -MT libdirac_encoder_la-quality_monitor.lo -MD -MP -MF $(DEPDIR)/libdirac_encoder_la-quality_monitor.Tpo -c -o libdirac_encoder_la-quality_monitor.lo `test -f 'quality_monitor.cpp' || echo '$(srcdir)/'`quality_monitor.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libdirac_encoder_la-quality_monitor.Tpo $(DEPDIR)/libdirac_encoder_la-quality_monitor.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='quality_monitor.cpp' object='libdirac_encoder_la-quality_monitor.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -c -o libdirac_encoder_la-quality_monitor.lo `test -f 'quality_monitor.cpp' || echo '$(srcdir)/'`quality_monitor.cpp libdirac_encoder_la-quant_chooser.lo: quant_chooser.cpp @am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -MT libdirac_encoder_la-quant_chooser.lo -MD -MP -MF $(DEPDIR)/libdirac_encoder_la-quant_chooser.Tpo -c -o libdirac_encoder_la-quant_chooser.lo `test -f 'quant_chooser.cpp' || echo '$(srcdir)/'`quant_chooser.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libdirac_encoder_la-quant_chooser.Tpo $(DEPDIR)/libdirac_encoder_la-quant_chooser.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='quant_chooser.cpp' object='libdirac_encoder_la-quant_chooser.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -c -o libdirac_encoder_la-quant_chooser.lo `test -f 'quant_chooser.cpp' || echo '$(srcdir)/'`quant_chooser.cpp libdirac_encoder_la-seq_compress.lo: seq_compress.cpp @am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -MT libdirac_encoder_la-seq_compress.lo -MD -MP -MF $(DEPDIR)/libdirac_encoder_la-seq_compress.Tpo -c -o libdirac_encoder_la-seq_compress.lo `test -f 'seq_compress.cpp' || echo '$(srcdir)/'`seq_compress.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libdirac_encoder_la-seq_compress.Tpo $(DEPDIR)/libdirac_encoder_la-seq_compress.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='seq_compress.cpp' object='libdirac_encoder_la-seq_compress.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -c -o libdirac_encoder_la-seq_compress.lo `test -f 'seq_compress.cpp' || echo '$(srcdir)/'`seq_compress.cpp libdirac_encoder_la-dirac_encoder.lo: dirac_encoder.cpp @am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -MT libdirac_encoder_la-dirac_encoder.lo -MD -MP -MF $(DEPDIR)/libdirac_encoder_la-dirac_encoder.Tpo -c -o libdirac_encoder_la-dirac_encoder.lo `test -f 'dirac_encoder.cpp' || echo '$(srcdir)/'`dirac_encoder.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libdirac_encoder_la-dirac_encoder.Tpo $(DEPDIR)/libdirac_encoder_la-dirac_encoder.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='dirac_encoder.cpp' object='libdirac_encoder_la-dirac_encoder.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -c -o libdirac_encoder_la-dirac_encoder.lo `test -f 'dirac_encoder.cpp' || echo '$(srcdir)/'`dirac_encoder.cpp libdirac_encoder_la-rate_control.lo: rate_control.cpp @am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -MT libdirac_encoder_la-rate_control.lo -MD -MP -MF $(DEPDIR)/libdirac_encoder_la-rate_control.Tpo -c -o libdirac_encoder_la-rate_control.lo `test -f 'rate_control.cpp' || echo '$(srcdir)/'`rate_control.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libdirac_encoder_la-rate_control.Tpo $(DEPDIR)/libdirac_encoder_la-rate_control.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='rate_control.cpp' object='libdirac_encoder_la-rate_control.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -c -o libdirac_encoder_la-rate_control.lo `test -f 'rate_control.cpp' || echo '$(srcdir)/'`rate_control.cpp libdirac_encoder_la-prefilter.lo: prefilter.cpp @am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -MT libdirac_encoder_la-prefilter.lo -MD -MP -MF $(DEPDIR)/libdirac_encoder_la-prefilter.Tpo -c -o libdirac_encoder_la-prefilter.lo `test -f 'prefilter.cpp' || echo '$(srcdir)/'`prefilter.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libdirac_encoder_la-prefilter.Tpo $(DEPDIR)/libdirac_encoder_la-prefilter.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='prefilter.cpp' object='libdirac_encoder_la-prefilter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -c -o libdirac_encoder_la-prefilter.lo `test -f 'prefilter.cpp' || echo '$(srcdir)/'`prefilter.cpp libdirac_encoder_la-enc_picture.lo: enc_picture.cpp @am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -MT libdirac_encoder_la-enc_picture.lo -MD -MP -MF $(DEPDIR)/libdirac_encoder_la-enc_picture.Tpo -c -o libdirac_encoder_la-enc_picture.lo `test -f 'enc_picture.cpp' || echo '$(srcdir)/'`enc_picture.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libdirac_encoder_la-enc_picture.Tpo $(DEPDIR)/libdirac_encoder_la-enc_picture.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='enc_picture.cpp' object='libdirac_encoder_la-enc_picture.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -c -o libdirac_encoder_la-enc_picture.lo `test -f 'enc_picture.cpp' || echo '$(srcdir)/'`enc_picture.cpp libdirac_encoder_la-enc_queue.lo: enc_queue.cpp @am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -MT libdirac_encoder_la-enc_queue.lo -MD -MP -MF $(DEPDIR)/libdirac_encoder_la-enc_queue.Tpo -c -o libdirac_encoder_la-enc_queue.lo `test -f 'enc_queue.cpp' || echo '$(srcdir)/'`enc_queue.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libdirac_encoder_la-enc_queue.Tpo $(DEPDIR)/libdirac_encoder_la-enc_queue.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='enc_queue.cpp' object='libdirac_encoder_la-enc_queue.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirac_encoder_la_CXXFLAGS) $(CXXFLAGS) -c -o libdirac_encoder_la-enc_queue.lo `test -f 'enc_queue.cpp' || echo '$(srcdir)/'`enc_queue.cpp mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-library_includeHEADERS: $(library_include_HEADERS) @$(NORMAL_INSTALL) test -z "$(library_includedir)" || $(MKDIR_P) "$(DESTDIR)$(library_includedir)" @list='$(library_include_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(library_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(library_includedir)/$$f'"; \ $(library_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(library_includedir)/$$f"; \ done uninstall-library_includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(library_include_HEADERS)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(library_includedir)/$$f'"; \ rm -f "$(DESTDIR)$(library_includedir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(library_includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @USE_MSVC_FALSE@uninstall-local: @USE_MSVC_FALSE@install-exec-local: clean: clean-am clean-am: clean-generic clean-libLIBRARIES clean-libLTLIBRARIES \ clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-library_includeHEADERS install-dvi: install-dvi-am install-exec-am: install-exec-local install-libLIBRARIES \ install-libLTLIBRARIES install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLIBRARIES uninstall-libLTLIBRARIES \ uninstall-library_includeHEADERS uninstall-local .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLIBRARIES clean-libLTLIBRARIES clean-libtool ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-exec-local install-html \ install-html-am install-info install-info-am \ install-libLIBRARIES install-libLTLIBRARIES \ install-library_includeHEADERS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-libLIBRARIES \ uninstall-libLTLIBRARIES uninstall-library_includeHEADERS \ uninstall-local #Custom install rule for MSCV @USE_MSVC_TRUE@install-exec-local: libdirac_encoder.lib @USE_MSVC_TRUE@ $(mkinstalldirs) "$(DESTDIR)$(libdir)"; \ @USE_MSVC_TRUE@ echo " $(INSTALL_PROGRAM) libdirac_encoder.lib $(DESTDIR)$(libdir)/libdirac_encoder.lib"; \ @USE_MSVC_TRUE@ $(INSTALL_PROGRAM) libdirac_encoder.lib $(DESTDIR)$(libdir)/libdirac_encoder.lib || exit 1; \ @USE_MSVC_TRUE@ for ext in lib dll pdb; do \ @USE_MSVC_TRUE@ file="libdirac_encoder.$$ext"; \ @USE_MSVC_TRUE@ if test -f "$$file"; then \ @USE_MSVC_TRUE@ $(mkinstalldirs) "$(DESTDIR)$(bindir)"; \ @USE_MSVC_TRUE@ echo " $(INSTALL_PROGRAM) $$file $(DESTDIR)$(bindir)/$$file"; \ @USE_MSVC_TRUE@ $(INSTALL_PROGRAM) "$$file" "$(DESTDIR)$(bindir)/$$file" || exit 1; \ @USE_MSVC_TRUE@ fi \ @USE_MSVC_TRUE@ done @USE_MSVC_TRUE@uninstall-local: @USE_MSVC_TRUE@ for file in \ @USE_MSVC_TRUE@ "$(DESTDIR)$(bindir)/libdirac_encoder.dll" \ @USE_MSVC_TRUE@ "$(DESTDIR)$(bindir)/libdirac_encoder.pdb" \ @USE_MSVC_TRUE@ "$(DESTDIR)$(libdir)/libdirac_encoder.lib"; \ @USE_MSVC_TRUE@ do \ @USE_MSVC_TRUE@ if test -f "$$file"; then \ @USE_MSVC_TRUE@ echo " rm -f" "$$file"; \ @USE_MSVC_TRUE@ rm -f "$$file"; \ @USE_MSVC_TRUE@ fi \ @USE_MSVC_TRUE@ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: dirac-1.0.2/libdirac_encoder/enc_queue.cpp0000664000204200017500000002136311050710517015441 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: enc_queue.cpp,v 1.3 2008/08/14 01:58:39 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2008. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #include #include using namespace dirac; //Simple constructor for decoder operation EncQueue::EncQueue(){} //Copy constructor. Why anyone would need this I don't know. EncQueue::EncQueue(const EncQueue& cpy) { // first delete all frames in the current buffer for (size_t i=0 ; i::iterator it = m_pnum_map.find(pnum); unsigned int pos = 0; if (it != m_pnum_map.end()) pos = it->second; return *(m_pic_data[pos]); } const EncPicture& EncQueue::GetPicture( const unsigned int pnum ) const { //as above, but const version std::map::const_iterator it = m_pnum_map.find(pnum); unsigned int pos=0; if (it != m_pnum_map.end()) pos = it->second; return *(m_pic_data[pos]); } EncPicture& EncQueue::GetPicture( const unsigned int pnum, bool& is_present ) {//get picture with a given picture number, NOT with a given position in the buffer. //If the picture number does not occur, the first picture in the buffer is returned. std::map::iterator it = m_pnum_map.find(pnum); unsigned int pos = 0; if (it != m_pnum_map.end()) { is_present = true; pos = it->second; } else is_present=false; return *(m_pic_data[pos]); } const EncPicture& EncQueue::GetPicture( const unsigned int pnum, bool& is_present ) const { //as above, but const version std::map::const_iterator it = m_pnum_map.find(pnum); unsigned int pos=0; if (it != m_pnum_map.end()) { is_present = true; pos = it->second; } else is_present=false; return *(m_pic_data[pos]); } bool EncQueue::IsPictureAvail( const unsigned int pnum ) const { std::map::const_iterator it = m_pnum_map.find(pnum); if (it != m_pnum_map.end()) return true; else return false; } std::vector EncQueue::Members() const { std::vector members( 0 ); for (unsigned int i=0; iGetPparams(); members.push_back( pparams.PictureNum() ); }// i return members; } void EncQueue::PushPicture( const PictureParams& pp ) {// Put a new picture onto the top of the stack // if picture is present - return if (IsPictureAvail(pp.PictureNum())) return; // if ( pp.PicSort().IsRef() ) // m_ref_count++; EncPicture* pptr = new EncPicture(pp); // add the picture to the buffer m_pic_data.push_back(pptr); // put the picture number into the index table std::pair temp_pair(pp.PictureNum() , m_pic_data.size()-1); m_pnum_map.insert(temp_pair); } void EncQueue::CopyPicture( const EncPicture& picture ) { PushPicture(picture.GetPparams()); bool is_present; EncPicture & p= GetPicture(picture.GetPparams().PictureNum(), is_present); if(is_present) p = picture; } void EncQueue::ClearSlot(const unsigned int pos) { // Clear a slot corresponding to position pos to take more data std::pair* tmp_pair; if (pos( m_pic_data[i]->GetPparams().PictureNum() , i); m_pnum_map.insert(*tmp_pair); delete tmp_pair; }//i } } void EncQueue::SetRetiredPictureNum(const int show_pnum, const int current_coded_pnum) { if ( IsPictureAvail(current_coded_pnum)) { PictureParams &pparams = GetPicture(current_coded_pnum).GetPparams(); pparams.SetRetiredPictureNum(-1); for (size_t i=0 ; iGetPparams().PicSort().IsRef() ) { if ( (m_pic_data[i]->GetPparams().PictureNum() + m_pic_data[i]->GetPparams().ExpiryTime() ) <= show_pnum) { pparams.SetRetiredPictureNum(m_pic_data[i]->GetPparams().PictureNum()); break; } } }//i } } void EncQueue::CleanAll(const int show_pnum, const int current_coded_pnum) {// clean out all frames that have expired if (IsPictureAvail(current_coded_pnum)) { for (size_t i=0 ; iGetPparams().PictureNum() + m_pic_data[i]->GetPparams().ExpiryTime() ) <= show_pnum) ClearSlot(i); }//i } } void EncQueue::CleanRetired(const int show_pnum, const int current_coded_pnum) {// clean out all frames that have expired if ( IsPictureAvail(current_coded_pnum) ) { PictureParams &pparams = GetPicture(current_coded_pnum).GetPparams(); // Remove Reference picture specified in retired picture number. if (pparams.PicSort().IsRef() && pparams.RetiredPictureNum()>= 0) Remove(pparams.RetiredPictureNum()); pparams.SetRetiredPictureNum(-1); // Remove non-reference frames that have expired for (size_t i=0 ; iGetPparams().PictureNum()+ m_pic_data[i]->GetPparams().ExpiryTime() )<=show_pnum && m_pic_data[i]->GetPparams().PicSort().IsNonRef() ) ClearSlot(i); }//i } } void EncQueue::Remove(const int pnum) { for (size_t i=0 ; iGetPparams().PictureNum() == pnum) ClearSlot(i); }//i } dirac-1.0.2/libdirac_encoder/quant_chooser.cpp0000664000204200017500000002552511135530375016354 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: quant_chooser.cpp,v 1.20 2009/01/21 05:22:05 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ //Compression of an individual component, //after motion compensation if appropriate ////////////////////////////////////////// #include using namespace dirac; // Custom 4th power, to speed things up static inline double pow4 (double x) { return x * x * x* x; } // Constructor QuantChooser::QuantChooser( const CoeffArray& coeff_data, const float lambda ): m_coeff_data( coeff_data ), m_lambda( lambda ), m_entropy_correctionfactor( 1.0 ) {} int QuantChooser::GetBestQuant( Subband& node ) { // NB : quantiser selection only supports a single quantiser per subband // Setting MultiQuants=true and using this function will get the same // quantiser for each codeblock m_subband_wt = node.Wt(); // The largest value in the block or band CoeffType max_val; // The index of the maximum bit of the largest value int max_bit( 0 ); max_val = BlockAbsMax( node ); if ( max_val>=1 ) max_bit = int( std::floor( std::log( float( max_val ) )/std::log( 2.0 ) ) ); else { // Exit saying 'Skip this subband' if there's no data in it node.SetSkip( true ); return 0; } // The number of quantisers to be tested int num_quants( 4 * max_bit + 5 ); // Set the array sizes m_costs.Resize( num_quants ); m_count0.Resize( num_quants ); m_count1=node.Xl()*node.Yl(); m_countPOS.Resize( num_quants ); m_countNEG.Resize( num_quants ); m_error_total.Resize( num_quants ); // Total estimated bits for the subband double bit_sum( 0.0 ); // Step 1. Do integral bits first m_bottom_idx = 0; m_top_idx = num_quants-1; m_index_step = 4; IntegralErrorCalc( node, 2 , 2); LagrangianCalc( ); SelectBestQuant(); // Step 2. Do 1/2-bit accuracy next m_bottom_idx = std::max( m_min_idx - 2 , 0 ); m_top_idx = std::min( m_min_idx + 2 , num_quants-1 ); m_index_step = 2; NonIntegralErrorCalc( node, 2 , 2); LagrangianCalc( ); SelectBestQuant(); // Step 3. Finally, do 1/4-bit accuracy next m_bottom_idx = std::max( m_min_idx - 1 , 0 ); m_top_idx = std::min( m_min_idx + 1 , num_quants-1 ); m_index_step = 1; NonIntegralErrorCalc( node, 1 , 2); LagrangianCalc( ); SelectBestQuant(); bit_sum = m_costs[m_min_idx].ENTROPY * node.Xl() * node.Yl(); node.SetQuantIndex( m_min_idx ); TwoDArray& block_list( node.GetCodeBlocks() ); // Set the codeblock quantisers for (int j=0 ; j( bit_sum ); } void QuantChooser::IntegralErrorCalc( Subband& node, const int xratio , const int yratio ) { CoeffType val, quant_val , abs_val; CalcValueType error; m_count1 = ( (node.Xl()/xratio)*(node.Yl()/yratio) ); for (int q = m_bottom_idx ; q<=m_top_idx ; q+=4 ) { m_error_total[q] = 0.0; m_count0[q] =0; m_countPOS[q] = 0; m_countNEG[q] = 0; } // Work out the error totals and counts for each quantiser for ( int j=node.Yp(); j>= (q>>2); if (!quant_val) break; m_count0[q] += quant_val; // Multiply back up so that we can quantise again in the next loop step quant_val <<= (q>>2)+2; quant_val += dirac_quantiser_lists.InterQuantOffset4( q )+2; quant_val >>= 2; if (val>0) m_countPOS[q]++; else m_countNEG[q]++; error = abs_val-quant_val; // Using the fourth power to measure the error m_error_total[q] += pow4( static_cast( error ) ); }// q double derror = pow4 ( static_cast( abs_val ) ); for (; q <= m_top_idx; q+= 4) { m_error_total[q] += derror; } }// i }// j } void QuantChooser::NonIntegralErrorCalc( Subband& node , const int xratio , const int yratio ) { CoeffType val, abs_val; CalcValueType quant_val; CalcValueType error; m_count1 = ( (node.Xl()/xratio)*(node.Yl()/yratio) ); for (int q = m_bottom_idx ; q<=m_top_idx ; q+=m_index_step ) { m_error_total[q] = 0.0; m_count0[q] =0; m_countPOS[q] = 0; m_countNEG[q] = 0; } // Work out the error totals and counts for each quantiser for ( int j=node.Yp(); j( abs_val ); quant_val <<= 2; quant_val /= dirac_quantiser_lists.QuantFactor4( q ); if ( !quant_val ) break; m_count0[q] += quant_val; quant_val *= dirac_quantiser_lists.QuantFactor4( q ); quant_val += dirac_quantiser_lists.InterQuantOffset4( q )+2; quant_val >>= 2; if ( val>0 ) m_countPOS[q]++; else m_countNEG[q]++; error = abs_val-quant_val; m_error_total[q] += pow4( error ); }// q double derror = pow4( abs_val ); for ( ; q <= m_top_idx; q += m_index_step) m_error_total[q] += derror; }// i }// j } void QuantChooser::LagrangianCalc() { // probabilities double p0,p1; double sign_entropy; // Do Lagrangian costs calculation for ( int q=m_bottom_idx ; q<=m_top_idx ; q += m_index_step ) { m_costs[q].Error = m_error_total[q]/double(m_count1); m_costs[q].Error = std::sqrt( m_costs[q].Error )/( m_subband_wt*m_subband_wt ); // Calculate probabilities and entropy p0 = double( m_count0[q] )/ double( m_count0[q]+m_count1 ); p1 = 1.0 - p0; if ( p0 != 0.0 && p1 != 0.0) m_costs[q].ENTROPY = -( p0*std::log(p0)+p1*std::log(p1) ) / std::log(2.0); else m_costs[q].ENTROPY = 0.0; // We want the entropy *per symbol*, not per bit ... m_costs[q].ENTROPY *= double(m_count0[q]+m_count1); m_costs[q].ENTROPY /= double(m_count1); // Now add in the sign entropy if ( m_countPOS[q] + m_countNEG[q] != 0 ) { p0 = double( m_countNEG[q] )/double( m_countPOS[q]+m_countNEG[q] ); p1 = 1.0-p0; if ( p0 != 0.0 && p1 != 0.0) sign_entropy = -( (p0*std::log(p0)+p1*std::log(p1) ) / std::log(2.0)); else sign_entropy = 0.0; } else sign_entropy = 0.0; // We want the entropy *per symbol*, not per bit ... sign_entropy *= double( m_countNEG[q] + m_countPOS[q] ); sign_entropy /= double(m_count1); m_costs[q].ENTROPY += sign_entropy; // Sort out correction factors m_costs[q].ENTROPY *= m_entropy_correctionfactor; m_costs[q].TOTAL = m_costs[q].Error+m_lambda*m_costs[q].ENTROPY; }// q } void QuantChooser::SelectBestQuant() { // Selects the best quantiser to use for a subband block m_min_idx = m_bottom_idx; for ( int q=m_bottom_idx + m_index_step; q<=m_top_idx ; q +=m_index_step ) { if ( m_costs[q].TOTAL < m_costs[m_min_idx].TOTAL) m_min_idx = q; }// q } void QuantChooser::SetSkip( CodeBlock& cblock , const int qidx) { const int u_threshold = dirac_quantiser_lists.QuantFactor4( qidx ); // Sets the skip flag for a codeblock bool can_skip = true; for (int j=cblock.Ystart(); j= u_threshold ) can_skip = false; } } cblock.SetSkip( can_skip ); } CoeffType QuantChooser::BlockAbsMax( const Subband& node ) { int val( 0 ); for (int j=node.Yp() ; j #include namespace dirac { static const unsigned int DONE_ME_INIT = 0x1; static const unsigned int DONE_PEL_ME = 0x2; static const unsigned int DONE_SUBPEL_ME = 0x4; static const unsigned int DONE_ME_MODE_DECN = 0x8; static const unsigned int DONE_MV_CODING = 0x10; static const unsigned int DONE_MC = 0x20; static const unsigned int DONE_DWT = 0x40; static const unsigned int DONE_QUANT_SEL = 0x80; static const unsigned int DONE_RES_CODING = 0x100; static const unsigned int DONE_IDWT = 0x200; static const unsigned int DONE_MC_BACK = 0x400; static const unsigned int DONE_SET_PTYPE = 0x800; static const unsigned int DONE_PIC_COMPLEXITY = 0x1000; static const unsigned int ALL_ENC = 0xFFFFFFFF; static const unsigned int NO_ENC = 0; class EncPicture : public Picture { public: EncPicture( const PictureParams& pp ); virtual ~EncPicture(); //! Initialise the motion estimation data arrays void InitMEData( const PicturePredParams& predparams, const int num_refs); //! Returns the motion data MEData& GetMEData(){ return *m_me_data;} //! Returns the motion data const MEData& GetMEData() const { return *m_me_data;} //! Drops a reference from the motion vector data void DropRef( int rindex ); //! Returns a given component of the original data const PicArray& OrigData(CompSort c) const { return *m_orig_data[(int) c];} //! Returns a given upconverted component of the original data const PicArray& UpOrigData(CompSort cs) const; //! Initialises a copy of the data arrays into the original data void SetOrigData(); //! Returns a version of the picture data suitable for motion estimation const PicArray& DataForME(bool combined_me) const; //! Returns a version of the picture data suitable for subpel motion estimation const PicArray& UpDataForME(bool combined_me) const; void UpdateStatus( const unsigned int mask ){ m_status |= mask; } void FlipStatus( const unsigned int mask){ m_status ^= mask; } void SetStatus( const int status ){ m_status = status; } unsigned int GetStatus() const{ return m_status; } double GetComplexity() const {return m_complexity; } void SetComplexity(double c){ m_complexity = c; } double GetNormComplexity() const { return m_norm_complexity; } void SetNormComplexity( double c ){ m_norm_complexity = c; } double GetPredBias() const { return m_pred_bias; } void SetPredBias( double b ){ m_pred_bias = b; } private: virtual void ClearData(); //! Filters a (field) picture vertically to reduce aliasing for motion estimation purposes void AntiAliasFilter( PicArray& out_data, const PicArray& in_data ) const; //! Returns an anti-aliased version of the original data const PicArray& FiltData(CompSort c) const; const PicArray& CombinedData() const; const PicArray& UpCombinedData() const; void Combine( PicArray& comb_data, const PicArray& y_data, const PicArray& u_data, const PicArray& v_data ) const; //! Returns an upconverted anti-aliased version of the original data const PicArray& UpFiltData(CompSort c) const; void SetOrigData(const int c); private: PicArray* m_orig_data[3]; mutable PicArray* m_orig_up_data[3]; mutable PicArray* m_filt_data[3]; mutable PicArray* m_filt_up_data[3]; MEData* m_me_data; unsigned int m_status; double m_complexity; double m_norm_complexity; double m_pred_bias; }; } #endif dirac-1.0.2/libdirac_encoder/rate_control.h0000775000204200017500000001452310750330036015633 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: rate_control.h,v 1.7 2008/01/31 11:25:18 tjdwave Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Myo Tun (Original Author, myo.tun@brunel.ac.uk) * Jonathan Loo (Jonathan.Loo@brunel.ac.uk) * School of Engineering and Design, Brunel University, UK * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ //Compression of an individual component, //after motion compensation if appropriate ////////////////////////////////////////// #ifndef _RATE_CONTROL_H_ #define _RATE_CONTROL_H_ #include namespace dirac { class FrameComplexity { public: //! Default constructor FrameComplexity(); //! Return the complexity of I frame int IComplexity() {return m_XI;} //! Return the complexity of L1 frame int L1Complexity() {return m_XL1;} //! Return the complexity of L2 frame int L2Complexity() {return m_XL2;} //! Set the complexity of I frame void SetIComplexity(int cpx) {m_XI = cpx;} //! Set the complexity of L1 frame void SetL1Complexity(int cpx) {m_XL1 = cpx;} //! Set the complexity of L2 frame void SetL2Complexity(int cpx) {m_XL2 = cpx;} private: //! Complexity of I frame int m_XI; //! Complexity of L1 frame int m_XL1; //! Complexity of L2 frame int m_XL2; }; //! A clas for allocation the bits to each and every types of frames in a GOP class RateController { public: //! Default constructor RateController(int trate, SourceParams& srcp, EncoderParams& encp); //! Calculate the Quality factor of the next frame to encode void CalcNextQualFactor(const PictureParams& fparams, int num_bits); //! Calculate the Quality factor of the next I frame to encode void CalcNextIntraQualFactor(); //! Use the long-term average intra quality factor void SetCutPictureQualFactor(); //! Return I frame qf double IntraQualFactor() {return m_I_qf;} //! Return qf double QualFactor() {return m_qf;} //! Report the allocation to picture types void Report(); private: double TargetSubgroupRate(); double ProjectedSubgroupRate(); //! Allocate the bits to each type of frame in a GOP void Allocate(const int fnum); //! Calculate the total number of bits in a GOP void CalcTotalBits(const SourceParams& sourceparams); //! Set the value of Current IQF void SetIntraQualFactor(double value){m_I_qf = value;} //! Set the number of I, L1 and L2 frames in the GOP void SetFrameDistribution(); //! Review the quality factor to make sure it's being set sensibly float ReviewQualityFactor( const float qfac, const long int num_bits ); //! Clip the quality factor to something sensible float ClipQualityFactor( const float qfac ); //! Update the internal decoder buffer model void UpdateBuffer( const long int num_bits ); private: //! Current Quality Factor double m_qf; //! I frame Quality Factor double m_I_qf; //! Long-term average of I frame Quality Factor double m_I_qf_long_term; //! Target bit rate in kbps const int m_target_rate; //! Number of bits for I frame long int m_Iframe_bits; //! Number of bits for L1 frame long int m_L1frame_bits; //! Number of bits for L2 frame long int m_L2frame_bits; //! Number of I frames int m_num_Iframe; //! Number of L1 frames int m_num_L1frame; //! Number of L2 frames int m_num_L2frame; //! Total Number of bits in a GOP long int m_total_GOP_bits; //! Mean number of bits in a picture long int m_picture_bits; //! Size of the decoded bit buffer const long int m_buffer_size; //! Number of bits in the buffer long int m_buffer_bits; //! The old buffer occupancy long int m_old_buffer_bits; //! The rate of change of buffer occupancy double m_buffer_rate_of_change; //! The target number of bits for the current GOP long int m_GOP_target; //! The duration of a GOP double m_GOP_duration; //! A reference to the encoder parameters EncoderParams& m_encparams; //! A class to hold the frame complexity object FrameComplexity m_frame_complexity; //! A frame counter, giving the position within a subgroup int m_fcount; // Indicated whether a sequence is being coded intra only or not bool m_intra_only; // Sum of complexity of L2 frames int m_L2_complexity_sum; }; }// namespace dirac #endif dirac-1.0.2/libdirac_encoder/seq_compress.h0000664000204200017500000003450011077003374015642 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: seq_compress.h,v 1.33 2008/10/20 04:20:12 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * Scott R Ladd, * Anuradha Suraparaju * Andrew Kennedy * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #ifndef _SEQ_COMPRESS_H_ #define _SEQ_COMPRESS_H_ ///////////////////////////////////////// //-------------------------------------// //Class to manage compressing sequences// //-------------------------------------// ///////////////////////////////////////// #include #include #include #include #include #include #include #include #include namespace dirac { //! Compresses a sequence of frames/fields from a stream. /*! This class compresses a sequence of frames/fields, frame by frame. or field by field. It currently uses GOP parameters set in the encoder parameters in order to define the temporal prediction structure. A version to incorporate non-GOP structures is TBC. This is an abstract class. */ class SequenceCompressor{ public: //! Constructor /*! Creates a sequence compressor, and prepares to begin compressing with the first picture.Sets up picture padding in the picture input if necesary \param pin an input stream containing a sequence of frames \param encp parameters for the encoding process \param dirac_byte_stream Output destination for compressed data */ SequenceCompressor(StreamPicInput* pin, EncoderParams& encp, DiracByteStream& dirac_byte_stream); //! Destructor /*! Destructor. Must delete IO objects created by constructor. */ virtual ~SequenceCompressor(); //! Load data /*! Load one picture of data into the Sequence Compressor. Sets m_all_done to true if no more data is available to be loaded. Input can be frame or field. So the child class will have to implement this function. \return true - if frame load succeeded. false - otherwise */ virtual bool LoadNextFrame() = 0; //! Compress the next picture in sequence /*! This function codes the next picture in coding order and returns the next picture in display order. In general these will differ, and because of re-ordering there is a delay which needs to be imposed. This creates problems at the start and at the end of the sequence which must be dealt with. At the start we just keep outputting picture 0. At the end you will need to loop for longer to get all the pictures out. It's up to the calling function to do something with the decoded pictures as they come out -- write them to screen or to file, for example. . If coding is fast enough the compressed version could be watched real-time (with suitable buffering in the calling function to account for encode-time variations). NOTE: LoadNextFrame must be called atleast once before invoking this method. \return pointer to the next locally decoded picture available for display */ const EncPicture *CompressNextPicture(); //! Set up the appropriate prediction parameters for a picture virtual void SetPicTypeAndRefs( PictureParams& pparams ) = 0; //! Return a pointer to the most recent picture encoded const EncPicture *GetPictureEncoded(); DiracByteStats EndSequence(); //! Determine if compression is complete. /*! Indicates whether or not the last picture in the sequence has been compressed. \return true if last picture has been compressed; false if not */ bool Finished(){return m_all_done;} //! Signal end of sequence void SignalEOS() { m_eos_signalled = true; } //! The delay required for correct timestamps int PTSOffset(){return m_delay;} protected: //! Set up the motion block parameters void SetMotionParameters(); //! Uses the GOP parameters to convert picture numbers in coded order to display order. /*! Uses the GOP parameters to convert picture numbers in coded order to display order. Pure virtual function. The child class will have to define it. \param pnum the picture number in coded order */ virtual int CodedToDisplay(const int pnum) = 0; //! Make a report to screen on the coding results for the whole sequence void MakeSequenceReport(); //! Remove unwanted pictures from picture buffers virtual void CleanBuffers(); //! Update the CBR model based on the data we've compressed. //Purely virtual. The child class will have to define it. virtual void UpdateCBRModel(EncPicture& my_picture, const PictureByteIO* picture_byteio) = 0; //! Update the parameters to be used in advance of coding an intra frame void UpdateIntraPicCBRModel( const PictureParams& , const bool is_a_cut ); //! Returns true if the encoder can encode a picture bool CanEncode(); //! Completion flag, returned via the Finished method. bool m_all_done; //! Flag indicating whether we've just finished. /*! Flag which is false if we've been all-done for more than one picture, true otherwise (so that we can take actions on finishing once only). */ bool m_just_finished; //! A class to hold the basic block parameters OLBParams* m_basic_olb_params0; //! A class to hold the basic block parameters OLBParams* m_basic_olb_params1; //! A class to hold the basic block parameters const OLBParams* m_basic_olb_params2; //! A class to hold block parameters to use when there are lots of intra blocks OLBParams* m_intra_olbp; //! The parameters of the input source SourceParams& m_srcparams; //! The parameters used for encoding. EncoderParams& m_encparams; //! The parameters used for ME/MC PicturePredParams& m_predparams; //! The L1 separation currently in use int m_L1_sep; //! Generic picture parameters for initialising pictures PictureParams m_pparams; //! Pointer pointing at the picture input. StreamPicInput* m_pic_in; //! A picture buffer used for local storage of pictures whilst pending re-ordering or being used for reference. EncQueue m_enc_pbuffer; //state variables for CompressNextPicture //! The number of the current picture to be coded, in display order int m_current_display_pnum; //! The number of the current picture to be coded, in coded order int m_current_code_pnum; //! The number of the picture which should be output for concurrent display or storage int m_show_pnum; //! The index, in display order, of the last picture read int m_last_picture_read; //! The picture number of the last GOP start int m_gop_start_num; //! A delay so that we don't display what we haven't coded int m_delay; //! A class for monitoring the quality of pictures and adjusting parameters appropriately QualityMonitor m_qmonitor; //! A class for monitoring and controlling bit rate RateController* m_ratecontrol; //! A class to hold the picture compressor object PictureCompressor m_pcoder; //! Output destination for compressed data in bitstream format DiracByteStream& m_dirac_byte_stream; //! Flag to check if End of Sequence has been signalled by the end user bool m_eos_signalled; private: //! Copy constructor is private and body-less /*! Copy constructor is private and body-less. This class should not be copied. */ SequenceCompressor(const SequenceCompressor& cpy); //! Assignment = is private and body-less /*! Assignment = is private and body-less. This class should not be assigned.. */ SequenceCompressor& operator=(const SequenceCompressor& rhs); }; //! Compresses a sequence of frames from a stream. /*! This class compresses a sequence of frames, frame by frame. It currently uses GOP parameters set in the encoder parameters in order to define the temporal prediction structure. A version to incorporate non-GOP structures is TBC. */ class FrameSequenceCompressor : public SequenceCompressor { public: //! Constructor /*! Creates a sequence compressor that compresses frames i.e. progressive data, and prepares to begin compressing with the first frame.Sets up frame padding in the picture input if necesary \param pin an input stream containing a sequence of frames \param encp parameters for the encoding process \param dirac_byte_stream Output destination for compressed data */ FrameSequenceCompressor(StreamPicInput* pin, EncoderParams& encp, DiracByteStream& dirac_byte_stream); //! Destructor /*! Destructor. Must delete IO objects created by constructor. */ virtual ~FrameSequenceCompressor(){}; //! Load data /*! Load one frame of data into the Sequence Compressor. Sets m_all_done to true if no more data is available to be loaded. \return true - if frame load succeeded. false - otherwise */ virtual bool LoadNextFrame(); //! Set up the appropriate prediction parameters for a picture virtual void SetPicTypeAndRefs( PictureParams& pparams ); protected: virtual int CodedToDisplay(const int pnum); virtual void UpdateCBRModel(EncPicture& my_picture, const PictureByteIO* picture_byteio); }; //! Compresses a sequence of fields from a stream. /*! This class compresses a sequence of fields, field by field. It currently uses GOP parameters set in the encoder parameters in order to define the temporal prediction structure. A version to incorporate non-GOP structures is TBC. */ class FieldSequenceCompressor : public SequenceCompressor { public: //! Constructor /*! Creates a sequence compressor that compresses fields i.e. interlaced data, and prepares to begin compressing with the first field. \param pin an input stream containing a sequence of frames \param encp parameters for the encoding process \param dirac_byte_stream Output destination for compressed data */ FieldSequenceCompressor(StreamPicInput* pin, EncoderParams& encp, DiracByteStream& dirac_byte_stream); //! Destructor /*! Destructor. Must delete IO objects created by constructor. */ virtual ~FieldSequenceCompressor(); //! Load data /*! Load one frame i.e. two fields of data into the Sequence Compressor. Sets m_all_done to true if no more data is available to be loaded. \return true - if both fields load succeeded. false - otherwise */ virtual bool LoadNextFrame(); //! Set up the appropriate prediction parameters for a picture virtual void SetPicTypeAndRefs( PictureParams& pparams ); protected: virtual int CodedToDisplay(const int pnum); virtual void UpdateCBRModel(EncPicture& my_picture, const PictureByteIO* picture_byteio); private: //! Filter fields /*! Low pass filter the components in the fields used in Motion Estimation so that ME works better. Using a 1/4 1/2 1/4 filter */ void PreMotionEstmationFilter (PicArray& comp); // Field1 bytes int m_field1_bytes; // Field2 bytes int m_field2_bytes; }; } // namespace dirac #endif dirac-1.0.2/libdirac_encoder/comp_compress.h0000664000204200017500000000773511010241124016002 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: comp_compress.h,v 1.19 2008/05/07 05:47:00 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), Scott R Ladd * Andrew Kennedy * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #ifndef _COMP_COMPRESS_H_ #define _COMP_COMPRESS_H_ #include #include #include #include namespace dirac { class MEData; //! Compress a picture component /*! This class compresses one of the three components (Y, U, or V) of a picture according to a given set or parameters. CompCompressor is used by PictureCompressor. */ class CompCompressor { public: //! Constructor /*! Create and initialize a component compressor with the given characteristics. \param encp encoding parameters \param fp picture parameters */ CompCompressor( EncoderParams & encp, const PictureParams& fp); //! Compress a picture component /*! Compress a PicArray containing a picture component (Y, U, or V). \param coeff_data the component data to be compressed \param bands Subbands list \param csort Chroma format \param estimated_bits the list of estimated number of bits in each subband \return Picture-component in Dirac-bytestream format */ ComponentByteIO* Compress( CoeffArray& coeff_data , SubbandList& bands, CompSort csort, const OneDArray& estimated_bits); private: //! Copy constructor is private and body-less. This class should not be copied. CompCompressor(const CompCompressor& cpy); //! Assignment = is private and body-less. This class should not be assigned. CompCompressor& operator=(const CompCompressor& rhs); //! Set a subband to a constant value void SetToVal(CoeffArray& coeff_data,const Subband& node,ValueType val); private: // member variables EncoderParams& m_encparams; const PictureParams& m_pparams; const PictureSort& m_psort; const ChromaFormat& m_cformat; float m_lambda; }; } // namespace dirac #endif dirac-1.0.2/libdirac_encoder/enc_queue.h0000664000204200017500000002227111050714332015104 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: enc_queue.h,v 1.3 2008/08/14 02:30:50 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * Anuradha Suraparaju * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #ifndef _ENC_QUEUE_H_ #define _ENC_QUEUE_H_ #include #include #include #include namespace dirac { //! Holds pictures both for reference and to overcome reordering delay /*! The buffer holds pictures in a stack to overcome both reordering due to bi-directional prediction and use as references for subsequence motion estimation. Pictures, and components of pictures, can be accessed by their picture numbers. GOP parameters can be included in the constructors so that pictures can be given types (I picture, L1 picture or L2 picture) on being pushed onto the stack; alternatively, these parameters can be overridden. */ class EncQueue{ public: //! Default Constructor EncQueue(); //! Constructor /*! Creates a EncQueue using the chroma format. Suitable for compressing when there are no L2 pictures, or when the temporal prediction structure is to be determined on the fly. \param cf the Chroma format of pictures in the buffer \param xlen the luma width of pictures in the buffer \param ylen the luma height of pictures in the buffer \param luma_depth the video depth of the luma comp in the buffer \param chroma_depth the video depth of the chroma comp in the buffer \param using_ac True if using Arithmetic coding to code coefficient data */ EncQueue(ChromaFormat cf, const int xlen, const int ylen, const unsigned int luma_depth, const unsigned int chroma_depth, bool using_ac); //! Constructor /*! Creates a EncQueue using the chroma format, the number of L1 pictures between I pictures and the separation in pictures between L1 pictures. Suitable for compressing when there is a full GOP structure or when the temporal prediction structure is to be determined on the fly. \param cf the Chroma format of pictures in the buffer \param numL1 the number of Layer 1 pictures before the next I picture. 0 means that there is only one I picture. \param L1sep the number of Layer 2 pictures between Layer 1 pictures \param xlen the luma width of pictures in the buffer \param ylen the luma height of pictures in the buffer \param luma_depth the video depth of the luma comp in the buffer \param chroma_depth the video depth of the chroma comp in the buffer \param interlace Set true if material is being coded in interlaced mode \param using_ac True if using Arithmetic coding to code coefficient data */ EncQueue(ChromaFormat cf, const int numL1, const int L1sep, const int xlen, const int ylen, const unsigned int luma_depth, const unsigned int chroma_depth, bool interlace, bool using_ac); //! Copy constructor /*! Copy constructor. Removes the current contents of the pictureture buffer and copies in the contents of the initialising buffer. */ EncQueue(const EncQueue& cpy); //! Operator=. /*! Operator=. Assigns all elements of the rhs to the lhs. */ EncQueue& operator=(const EncQueue& rhs); //! Destructor ~EncQueue(); //! Get picture with a given picture number (NOT with a given position in the buffer) EncPicture& GetPicture(const unsigned int pnum ); //! Get picture with a given picture number (NOT with a given position in the buffer) const EncPicture& GetPicture(const unsigned int pnum) const; //! Get picture with a given picture number, setting a flag to true if it's there EncPicture& GetPicture(const unsigned int pnum, bool& is_present); //! Get picture with a given picture number, setting a flag to true if it's there const EncPicture& GetPicture(const unsigned int pnum, bool& is_present) const; //! Return true if picture with the particular picture number is available else return false bool IsPictureAvail(const unsigned int pnum) const; //! Returns a list of member pictures std::vector Members() const; //! Returns the size of the queue int Size() const { return m_pic_data.size(); } //! Put a new picture into the top of the buffer /*! Put a new picture into the top of the buffer. EncPicture parameters associated with the picture will be as given by the picture parameter object. */ void PushPicture(const PictureParams& pp); //! Put a copy of a new picture into the buffer /*! Put a copy of a new picture into the buffer. */ void CopyPicture( const EncPicture& picture ); //! Sets the reference picture number that will be cleaned /*! Indicate which picture which has been output and which is no longer required for reference. Expiry times are set in each picture's picture parameters. \param show_pnum picture number in display order that can be output \param current_coded_pnum picture number in display order of picture currently being coded */ void SetRetiredPictureNum(const int show_pnum, const int current_coded_pnum); //! Delete all expired pictures /*! Delete pictures which have been output and which are no longer required for reference. Expiry times are set in each picture's picture parameters. \param show_pnum picture number in display order that can be output \param current_coded_pnum picture number in display order of picture currently being coded */ void CleanAll(const int show_pnum, const int current_coded_pnum); //! Delete retired reference pictures and expired non-ref pictures /*! Delete pictures which have been output and retired reference pictures. Expiry times are set in each picture's picture parameters. \param show_pnum picture number in display order that can be output \param current_coded_pnum picture number in display order of picture currently being coded */ void CleanRetired(const int show_pnum, const int current_coded_pnum); //! Delete picture /*! Delete picture. \param pnum picture number in display order to be deleted from picture buffer */ void Remove(int pnum); private: //! Clear internal data slot number pos /*! Clear internal data slot number pos */ void ClearSlot(const unsigned int pos); private: // //! the count of the number of reference pictures in the buffer // int m_ref_count; //! the buffer storing all the values std::vector m_pic_data; //!the map from picture numbers to position in the buffer std::map m_pnum_map; }; } // namespace dirac #endif dirac-1.0.2/libdirac_encoder/Makefile.am0000664000204200017500000000520411026427600015015 00000000000000# $Id: Makefile.am,v 1.18 2008/06/19 10:05:52 tjdwave Exp $ # INCLUDES = -I$(top_srcdir) -I$(srcdir) -I$(top_builddir) h_sources = comp_compress.h picture_compress.h quality_monitor.h \ quant_chooser.h seq_compress.h dirac_encoder.h \ rate_control.h prefilter.h enc_picture.h enc_queue.h cpp_sources = comp_compress.cpp picture_compress.cpp quality_monitor.cpp \ quant_chooser.cpp seq_compress.cpp dirac_encoder.cpp \ rate_control.cpp prefilter.cpp enc_picture.cpp enc_queue.cpp if USE_MSVC lib_LIBRARIES = libdirac_encoder.a libdirac_encoder_a_AR = link -lib -out:libdirac_encoder.a $(libdirac_encoder_a_OBJECTS); link $(LIBFLAGS) -out:libdirac_encoder$(LIBEXT) $(LDFLAGS) $(libdirac_encoder_a_OBJECTS) $(libdirac_encoder_a_DEPENDENCIES); echo else libdirac_encoder_a_AR = ar crv lib_LTLIBRARIES = libdirac_encoder.la endif libdirac_encoder_a_SOURCES = $(h_sources) $(cpp_sources) libdirac_encoder_a_LIBADD = \ $(top_builddir)/libdirac_motionest/libdirac_motionest.a \ $(top_builddir)/libdirac_common/libdirac_common.a \ $(top_builddir)/libdirac_byteio/libdirac_byteio.a libdirac_encoder_la_SOURCES = $(h_sources) $(cpp_sources) libdirac_encoder_la_CXXFLAGS = $(AM_CXXFLAGS) libdirac_encoder_la_LIBADD = \ $(top_builddir)/libdirac_motionest/libdirac_motionest.la \ $(top_builddir)/libdirac_common/libdirac_common.la \ $(top_builddir)/libdirac_byteio/libdirac_byteio.la libdirac_encoder_la_LDFLAGS= -no-undefined -version-info $(GENERIC_LIBRARY_VERSION) library_includedir=$(includedir)/$(GENERIC_LIBRARY_NAME)/libdirac_encoder library_include_HEADERS = dirac_encoder.h #Custom install rule for MSCV if USE_MSVC install-exec-local: libdirac_encoder.lib $(mkinstalldirs) "$(DESTDIR)$(libdir)"; \ echo " $(INSTALL_PROGRAM) libdirac_encoder.lib $(DESTDIR)$(libdir)/libdirac_encoder.lib"; \ $(INSTALL_PROGRAM) libdirac_encoder.lib $(DESTDIR)$(libdir)/libdirac_encoder.lib || exit 1; \ for ext in lib dll pdb; do \ file="libdirac_encoder.$$ext"; \ if test -f "$$file"; then \ $(mkinstalldirs) "$(DESTDIR)$(bindir)"; \ echo " $(INSTALL_PROGRAM) $$file $(DESTDIR)$(bindir)/$$file"; \ $(INSTALL_PROGRAM) "$$file" "$(DESTDIR)$(bindir)/$$file" || exit 1; \ fi \ done uninstall-local: for file in \ "$(DESTDIR)$(bindir)/libdirac_encoder.dll" \ "$(DESTDIR)$(bindir)/libdirac_encoder.pdb" \ "$(DESTDIR)$(libdir)/libdirac_encoder.lib"; \ do \ if test -f "$$file"; then \ echo " rm -f" "$$file"; \ rm -f "$$file"; \ fi \ done endif if USE_MSVC CLEANFILES = *.pdb *.ilk *.dll *.lib *.exp *.a endif dirac-1.0.2/libdirac_encoder/quality_monitor.h0000664000204200017500000001030711050714332016367 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: quality_monitor.h,v 1.19 2008/08/14 02:30:50 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author) * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #ifndef _QUALITY_MONITOR_H_ #define _QUALITY_MONITOR_H_ #include #include #include namespace dirac { //! Class to monitor the quality of pictures and adjust coding parameters appropriately class QualityMonitor { public: //! Constructor. Sets up initial Lagrangian values /* Constructor sets up initial Lagrangian values. */ QualityMonitor(EncoderParams& ep); //! Destructor ~QualityMonitor(); //////////////////////////////////////////////////////////// // // // Assumes default copy constructor, assignment = // // and destructor // //////////////////////////////////////////////////////////// //! Update the mse factors, returning true if we need to recode /*! Update the mse factors, returning true if we need to recode \param enc_picture the picture being encoded */ void UpdateModel(const EncPicture& enc_picture ); //! Reset the quality factors (say if there's been a cut) void ResetAll(); //! Write a log of the quality to date void WriteLog(); private: //functions //! Calculate the quality of coded wrt original picture double QualityVal( const PicArray& coded_data , const PicArray& orig_data, const int xlen, const int ylen); //member variables// //////////////////// //! A reference to the encoder parameters EncoderParams& m_encparams; //! The overall average Y mse long double m_totalmse_averageY; //! The overall average U mse long double m_totalmse_averageU; //! The overall average V mse long double m_totalmse_averageV; //! The total number of pictures coded int m_allpicture_total; //! The average Y mse for the picture types OneDArray m_mse_averageY; //! The average U mse for the picture types OneDArray m_mse_averageU; //! The average V mse for the picture types OneDArray m_mse_averageV; //! The number of pictures of each type OneDArray m_picture_total; }; } // namespace dirac #endif dirac-1.0.2/libdirac_encoder/prefilter.cpp0000775000204200017500000005105711101746576015505 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: prefilter.cpp,v 1.9 2008/10/29 02:42:06 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2008. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #include #include using namespace dirac; void dirac::CWMFilter( Picture& picture, const int strength ) { CWMFilterComponent( picture.Data(Y_COMP), strength ); CWMFilterComponent( picture.Data(U_COMP), strength ); CWMFilterComponent( picture.Data(V_COMP), strength ); } void dirac::CWMFilterComponent( PicArray& pic_data, const int strength ) { // Do centre-weighted median denoising PicArray pic_copy( pic_data ); const int width( 3 ); const int offset( (width-1)/2 ); const int centre_weight = std::max(1, (width*width+1)-strength ); const int list_length = centre_weight+(width*width)-1; ValueType* val_list = new ValueType[list_length]; for (int j=offset; j ordered_vals( length ); // Place the values in order int pos=0; ordered_vals[0] = val_list[0]; for (int i=1 ; i=pos ; --k ) { ordered_vals[k+1] = ordered_vals[k]; }// k ordered_vals[pos] = val_list[i]; } }// i // return the middle value if ( length%2!=0 ) return ordered_vals[(length-1)/2]; else return (ordered_vals[(length/2)-1]+ordered_vals[length/2]+1)>>1; } /*************************************************************/ void VFilter( PicArray& pic_data, const OneDArray& filter, const int bits ); void HFilter( PicArray& pic_data, const OneDArray& filter, const int bits ); double sinxoverx( const double val ) { if ( 0.0f == val ) return 1.0; else return sin(val)/val; } OneDArray MakeLPRectFilter( const float bw, const int bits ) { const int tl = 8; const float pi = 3.1415926535; OneDArray double_filter( Range( -tl, tl ) ); OneDArray int_filter( Range( -tl, tl) ); // Use the Hanning window for (int i=double_filter.First(); i<=double_filter.Last(); ++i) { double_filter[i] = cos( (pi*i)/ (double_filter.Length()+1) ); } // Apply sinc function for (int i=double_filter.First(); i<=double_filter.Last(); ++i) { double_filter[i] *= sinxoverx( pi*1.0*bw*i ); } // Get DC gain = 1<0 ? int( double_filter[i]+0.5 ) : -int( -double_filter[i]+0.5 ); int_filter[i] = (int_filter[i]+8)>>4; } return int_filter; } void dirac::LPFilter( PicArray& pic_data, const float qf, const int strength ) { float bw = (std::min( std::max( qf+3.0f-float(strength), 1.0f ), 10.0f ))/10.0; // filter with 14-bit accuracy OneDArray filter=MakeLPRectFilter(bw, 14); HFilter( pic_data, filter, 14 ); VFilter( pic_data, filter, 14 ); } void HFilter( PicArray& pic_data, const OneDArray& filter, const int bits ) { ValueType* line_data = new ValueType[pic_data.LengthX()]; const int offset = (1<<(bits-1)); int sum; for (int j=0; j=filter.First(); --k) sum += filter[k]*pic_data[j][std::max(i-k,0)]; sum >>= bits; sum = std::min( 127, std::max( -128, sum) ); line_data[i] = ValueType( sum ); }// i // Do the middle bit for (int i=filter.Last(); i<=pic_data.LastX()+filter.First(); ++i) { sum = offset; for (int k=filter.Last(); k>=filter.First(); --k) sum += filter[k]*pic_data[j][i-k]; sum >>= bits; sum = std::min( 127, std::max( -128, sum) ); line_data[i] = ValueType( sum ); }// i // Do the last bit for (int i=pic_data.LastX()+filter.First()+1; i=filter.First(); --k) sum += filter[k]*pic_data[j][std::min(i-k,pic_data.LastX())]; sum >>= bits; sum = std::min( 127, std::max( -128, sum) ); line_data[i] = ValueType( sum ); }// i // Copy data back for (int i=0; i& filter, const int bits ) { PicArray tmp_data( pic_data ); const int offset = (1<<(bits-1)); int sum; // Do the first bit for (int j=0; j=filter.First(); --k) sum += filter[k]*pic_data[std::max(j-k,0)][i]; sum >>= bits; sum = std::min( 127, std::max( -128, sum) ); tmp_data[j][i] = ValueType( sum ); }// i }// j // Do the middle bit for (int j=filter.Last(); j<=pic_data.LastY()+filter.First(); ++j) { for (int i=0; i=filter.First(); --k) sum += filter[k]*pic_data[j-k][i]; sum >>= bits; sum = std::min( 127, std::max( -128, sum) ); tmp_data[j][i] = ValueType( sum ); }// i }// j // Do the last bit for (int j=pic_data.LastY()+filter.First()+1; j=filter.First(); --k) sum += filter[k]*pic_data[std::min(j-k,pic_data.LastY())][i]; sum >>= bits; sum = std::min( 127, std::max( -128, sum) ); tmp_data[j][i] = ValueType( sum ); }// i }// j // Copy data across pic_data = tmp_data; } /***************************************************************************/ ValueType DiagFilterBchkD( const PicArray& pic, const int xpos, const int ypos, const TwoDArray& filter, const int shift) { // Half the filter length const int len2 = 6; const int height = pic.LengthY(); const int width = pic.LengthX(); int uplus, uneg, vplus, vneg; int val = (1<<(shift-1)); // Do 0 position horizontally val += filter[0][0]*pic[ypos][xpos]; for (int i=1; i<=len2;++i){ uplus = xpos + i; uplus = (uplus>=width ? width-1 : uplus); uneg = xpos - i; uneg = (uneg<0 ? 0 : uneg ); val += filter[0][i]*(pic[ypos][uplus]+pic[ypos][uneg] ); } // Do other positions vertically// ////////////////////////////////// for (int j=1; j<=len2;++j){ vplus = ypos + j; vplus = ( vplus>=height ? height-1 : vplus); vneg = ypos - j; vneg = (vneg<0 ? 0 : vneg ); // Do 0 position horizontally val += filter[j][0]*(pic[vneg][xpos]+pic[vplus][xpos]); for (int i=1; i<=len2;++i){ uplus = xpos + i; uplus = (uplus>=width ? width-1 : uplus); uneg = xpos - i; uneg = (uneg<0 ? 0 : uneg ); val += filter[j][i]*(pic[vneg][uplus]+pic[vneg][uneg]+ pic[vplus][uplus]+pic[vplus][uneg] ); } } val >>= shift; return ValueType(val); } ValueType DiagFilterD( const PicArray& pic, const int xpos, const int ypos, const TwoDArray& filter, const int shift) { // Half the filter length const int len2 = 6; int uplus, uneg, vplus, vneg; int val = (1<<(shift-1)); // Do 0 position horizontally val += filter[0][0]*pic[ypos][xpos]; for (int i=1; i<=len2;++i){ uplus = xpos + i; uneg = xpos - i; val += filter[0][i]*(pic[ypos][uplus]+pic[ypos][uneg] ); } // Do other positions vertically// ////////////////////////////////// for (int j=1; j<=len2;++j){ vplus = ypos + j; vneg = ypos - j; // Do 0 position horizontally val += filter[j][0]*(pic[vneg][xpos]+pic[vplus][xpos]); for (int i=1; i<=len2;++i){ uplus = xpos + i; uneg = xpos - i; val += filter[j][i]*(pic[vneg][uplus]+pic[vneg][uneg]+ pic[vplus][uplus]+pic[vplus][uneg] ); } } val >>= shift; return ValueType(val); } TwoDArray GetDiagLPFilter( const float bw ) { TwoDArray f( 7, 7 ); // Bandwidth quantised to range 0.2-1 int qbf = int( bw*10.0 + 0.5 ); qbf = std::min( std::max( qbf, 2 ) , 10 ); switch (qbf){ case 1 : f[0][0]=1651; f[0][1]=1544; f[0][2]=1259; f[0][3]=887; f[0][4]=530; f[0][5]=260; f[0][6]=99; f[1][0]=1544; f[1][1]=1442; f[1][2]=1170; f[1][3]=817; f[1][4]=480; f[1][5]=229; f[1][6]=83; f[2][0]=1259; f[2][1]=1170; f[2][2]=935; f[2][3]=634; f[2][4]=354; f[2][5]=153; f[2][6]=45; f[3][0]=887; f[3][1]=817; f[3][2]=634; f[3][3]=405; f[3][4]=202; f[3][5]=70; f[3][6]=11; f[4][0]=530; f[4][1]=480; f[4][2]=354; f[4][3]=202; f[4][4]=80; f[4][5]=15; f[4][6]=0; f[5][0]=260; f[5][1]=229; f[5][2]=153; f[5][3]=70; f[5][4]=15; f[5][5]=0; f[5][6]=0; f[6][0]=99; f[6][1]=83; f[6][2]=45; f[6][3]=11; f[6][4]=0; f[6][5]=0; f[6][6]=0; break; case 2: f[0][0]=2855; f[0][1]=2540; f[0][2]=1775; f[0][3]=947; f[0][4]=364; f[0][5]=89; f[0][6]=10; f[1][0]=2540; f[1][1]=2251; f[1][2]=1551; f[1][3]=804; f[1][4]=290; f[1][5]=59; f[1][6]=1; f[2][0]=1775; f[2][1]=1551; f[2][2]=1020; f[2][3]=475; f[2][4]=130; f[2][5]=3; f[2][6]=-10; f[3][0]=947; f[3][1]=804; f[3][2]=475; f[3][3]=165; f[3][4]=5; f[3][5]=-22; f[3][6]=-6; f[4][0]=364; f[4][1]=290; f[4][2]=130; f[4][3]=5; f[4][4]=-28; f[4][5]=-10; f[4][6]=0; f[5][0]=89; f[5][1]=59; f[5][2]=3; f[5][3]=-22; f[5][4]=-10; f[5][5]=0; f[5][6]=0; f[6][0]=10; f[6][1]=1; f[6][2]=-10; f[6][3]=-6; f[6][4]=0; f[6][5]=0; f[6][6]=0; break; case 3: f[0][0]=5767; f[0][1]=4718; f[0][2]=2498; f[0][3]=745; f[0][4]=72; f[0][5]=5; f[0][6]=23; f[1][0]=4718; f[1][1]=3796; f[1][2]=1875; f[1][3]=423; f[1][4]=-58; f[1][5]=-41; f[1][6]=7; f[2][0]=2498; f[2][1]=1875; f[2][2]=643; f[2][3]=-146; f[2][4]=-241; f[2][5]=-88; f[2][6]=-9; f[3][0]=745; f[3][1]=423; f[3][2]=-146; f[3][3]=-367; f[3][4]=-220; f[3][5]=-51; f[3][6]=-2; f[4][0]=72; f[4][1]=-58; f[4][2]=-241; f[4][3]=-220; f[4][4]=-78; f[4][5]=-5; f[4][6]=0; f[5][0]=5; f[5][1]=-41; f[5][2]=-88; f[5][3]=-51; f[5][4]=-5; f[5][5]=0; f[5][6]=0; f[6][0]=23; f[6][1]=7; f[6][2]=-9; f[6][3]=-2; f[6][4]=0; f[6][5]=0; f[6][6]=0; break; case 4: f[0][0]=10534; f[0][1]=7642; f[0][2]=2603; f[0][3]=194; f[0][4]=56; f[0][5]=120; f[0][6]=28; f[1][0]=7642; f[1][1]=5237; f[1][2]=1218; f[1][3]=-383; f[1][4]=-153; f[1][5]=40; f[1][6]=2; f[2][0]=2603; f[2][1]=1218; f[2][2]=-771; f[2][3]=-958; f[2][4]=-269; f[2][5]=-3; f[2][6]=-7; f[3][0]=194; f[3][1]=-383; f[3][2]=-958; f[3][3]=-541; f[3][4]=-18; f[3][5]=48; f[3][6]=4; f[4][0]=56; f[4][1]=-153; f[4][2]=-269; f[4][3]=-18; f[4][4]=96; f[4][5]=22; f[4][6]=0; f[5][0]=120; f[5][1]=40; f[5][2]=-3; f[5][3]=48; f[5][4]=22; f[5][5]=0; f[5][6]=0; f[6][0]=28; f[6][1]=2; f[6][2]=-7; f[6][3]=4; f[6][4]=0; f[6][5]=0; f[6][6]=0; break; case 5 : f[0][0]=16421; f[0][1]=10159; f[0][2]=1716; f[0][3]=33; f[0][4]=325; f[0][5]=57; f[0][6]=6; f[1][0]=10159; f[1][1]=5309; f[1][2]=-580; f[1][3]=-747; f[1][4]=44; f[1][5]=-43; f[1][6]=-25; f[2][0]=1716; f[2][1]=-580; f[2][2]=-2310; f[2][3]=-763; f[2][4]=100; f[2][5]=-19; f[2][6]=-12; f[3][0]=33; f[3][1]=-747; f[3][2]=-763; f[3][3]=308; f[3][4]=326; f[3][5]=27; f[3][6]=1; f[4][0]=325; f[4][1]=44; f[4][2]=100; f[4][3]=326; f[4][4]=84; f[4][5]=-14; f[4][6]=0; f[5][0]=57; f[5][1]=-43; f[5][2]=-19; f[5][3]=27; f[5][4]=-14; f[5][5]=0; f[5][6]=0; f[6][0]=6; f[6][1]=-25; f[6][2]=-12; f[6][3]=1; f[6][4]=0; f[6][5]=0; f[6][6]=0; break; case 6 : f[0][0]=23511; f[0][1]=11883; f[0][2]=566; f[0][3]=524; f[0][4]=231; f[0][5]=18; f[0][6]=41; f[1][0]= 11883; f[1][1]=3647; f[1][2]=-2496; f[1][3]=-361; f[1][4]=-96; f[1][5]=-97; f[1][6]=1; f[2][0]=566; f[2][1]=-2496; f[2][2]=-2329; f[2][3]=459; f[2][4]=152; f[2][5]=-7; f[2][6]=18; f[3][0]=524; f[3][1]=-361; f[3][2]=459; f[3][3]=979; f[3][4]=33; f[3][5]=-28; f[3][6]=3; f[4][0]=231; f[4][1]=-96; f[4][2]=152; f[4][3]=33; f[4][4]=-184; f[4][5]=-15; f[4][6]=0; f[5][0]=18; f[5][1]=-97; f[5][2]=-7; f[5][3]=-28; f[5][4]=-15; f[5][5]=0; f[5][6]=0; f[6][0]=41; f[6][1]=1; f[6][2]=18; f[6][3]=3; f[6][4]=0; f[6][5]=0; f[6][6]=0; break; case 7 : f[0][0]=32188; f[0][1]=12652; f[0][2]=3; f[0][3]=921; f[0][4]=1; f[0][5]=128; f[0][6]=0; f[1][0]=12652; f[1][1]=295; f[1][2]=-3414; f[1][3]=-2; f[1][4]=-343; f[1][5]=-1; f[1][6]=-37; f[2][0]=3; f[2][1]=-3414; f[2][2]=-212; f[2][3]=1273; f[2][4]=1; f[2][5]=98; f[2][6]=0; f[3][0]=921; f[3][1]=-2; f[3][2]=1273; f[3][3]=110; f[3][4]=-363; f[3][5]=0; f[3][6]=-8; f[4][0]=1; f[4][1]=-343; f[4][2]=1; f[4][3]=-363; f[4][4]=-29; f[4][5]=29; f[4][6]=0; f[5][0]=128; f[5][1]=-1; f[5][2]=98; f[5][3]=0; f[5][4]=29; f[5][5]=0; f[5][6]=0; f[6][0]=0; f[6][1]=-37; f[6][2]=0; f[6][3]=-8; f[6][4]=0; f[6][5]=0; f[6][6]=0; break; case 8 : f[0][0]=41902; f[0][1]=12084; f[0][2]=435; f[0][3]=610; f[0][4]=188; f[0][5]=34; f[0][6]=37; f[1][0]=12084; f[1][1]=-4268; f[1][2]=-2715; f[1][3]=-286; f[1][4]=-144; f[1][5]=-84; f[1][6]=-2; f[2][0]=435; f[2][1]=-2715; f[2][2]=2809; f[2][3]=640; f[2][4]=127; f[2][5]=10; f[2][6]=17; f[3][0]=610; f[3][1]=-286; f[3][2]=640; f[3][3]=-1250; f[3][4]=-45; f[3][5]=-26; f[3][6]=2; f[4][0]=188; f[4][1]=-144; f[4][2]=127; f[4][3]=-45; f[4][4]=259; f[4][5]=-8; f[4][6]=0; f[5][0]=34; f[5][1]=-84; f[5][2]=10; f[5][3]=-26; f[5][4]=-8; f[5][5]=0; f[5][6]=0; f[6][0]=37; f[6][1]=-2; f[6][2]=17; f[6][3]=2; f[6][4]=0; f[6][5]=0; f[6][6]=0; break; case 9 : f[0][0]=53098; f[0][1]=10449; f[0][2]=1546; f[0][3]=73; f[0][4]=342; f[0][5]=38; f[0][6]=12; f[1][0]=10449; f[1][1]=-9060; f[1][2]=-873; f[1][3]=-727; f[1][4]=52; f[1][5]=-65; f[1][6]=-20; f[2][0]=1546; f[2][1]=-873; f[2][2]=4261; f[2][3]=-627; f[2][4]=137; f[2][5]=-27; f[2][6]=-7; f[3][0]=73; f[3][1]=-727; f[3][2]=-627; f[3][3]=-804; f[3][4]=328; f[3][5]=14; f[3][6]=2; f[4][0]=342; f[4][1]=52; f[4][2]=137; f[4][3]=328; f[4][4]=-83; f[4][5]=-20; f[4][6]=0; f[5][0]=38; f[5][1]=-65; f[5][2]=-27; f[5][3]=14; f[5][4]=-20; f[5][5]=0; f[5][6]=0; f[6][0]=12; f[6][1]=-20; f[6][2]=-7; f[6][3]=2; f[6][4]=0; f[6][5]=0; f[6][6]=0; break; default:// case 10 for (int j=0; j #include using namespace dirac; EncPicture::EncPicture( const PictureParams& pp): Picture( pp ), m_me_data( NULL ), m_status( NO_ENC ), m_complexity( 0.0 ), m_norm_complexity( 1.0 ), m_pred_bias(0.5) { for (int c=0; c<3; ++c ){ m_orig_data[c] = new PicArray( m_pic_data[c]->LengthY(), m_pic_data[c]->LengthX() ); m_orig_up_data[c] = NULL; m_filt_data[c] = NULL; m_filt_up_data[c] = NULL; } } void EncPicture::ClearData(){ Picture::ClearData(); for (int c=0;c<3;++c){ if (m_orig_data[c] != NULL){ delete m_orig_data[c]; m_orig_data[c] = NULL; } if (m_orig_up_data[c] != NULL){ delete m_orig_up_data[c]; m_orig_up_data[c] = NULL; } if (m_filt_data[c] != NULL){ delete m_filt_data[c]; m_filt_data[c] = NULL; } if (m_filt_up_data[c] != NULL){ delete m_filt_up_data[c]; m_filt_up_data[c] = NULL; } } if ( m_me_data != NULL ) delete m_me_data; } EncPicture::~EncPicture() { ClearData(); } void EncPicture::SetOrigData() { for ( int c=0; c<3 ; ++c ) SetOrigData(c); } void EncPicture::SetOrigData( const int c ) { if ( m_pic_data[c] != NULL ) *(m_orig_data[c]) = *(m_pic_data[c]); } void EncPicture::InitMEData( const PicturePredParams& predparams , const int num_refs) { if (m_me_data != NULL) delete m_me_data; m_me_data=new MEData( predparams, num_refs ); } const PicArray& EncPicture::DataForME( bool combined_me ) const{ if (combined_me) return CombinedData(); else return OrigData( Y_COMP ); } const PicArray& EncPicture::UpDataForME( bool combined_me ) const{ if (combined_me) return UpCombinedData(); else return UpOrigData( Y_COMP ); } const PicArray& EncPicture::UpOrigData(CompSort cs) const { const int c = (int) cs; if (m_orig_up_data[c] != NULL) return *m_orig_up_data[c]; else {//we have to do the upconversion m_orig_up_data[c] = new PicArray( 2*m_orig_data[c]->LengthY(), 2*m_orig_data[c]->LengthX() ); UpConverter* myupconv; if (c>0) myupconv = new UpConverter(-(1 << (m_pparams.ChromaDepth()-1)), (1 << (m_pparams.ChromaDepth()-1))-1, m_pparams.ChromaXl(), m_pparams.ChromaYl()); else myupconv = new UpConverter(-(1 << (m_pparams.LumaDepth()-1)), (1 << (m_pparams.LumaDepth()-1))-1, m_pparams.Xl(), m_pparams.Yl()); myupconv->DoUpConverter( *(m_orig_data[c]) , *(m_orig_up_data[c]) ); delete myupconv; return *(m_orig_up_data[c]); } } const PicArray& EncPicture::FiltData(CompSort cs) const { const int c = (int) cs; if (m_filt_data[c] != NULL) return *m_filt_data[c]; else {//we have to do the filtering if (m_orig_data[c] != NULL ) m_filt_data[c] = new PicArray( m_orig_data[c]->LengthY(), m_orig_data[c]->LengthX() ); AntiAliasFilter( *(m_filt_data[c]), *(m_orig_data[c])); return *(m_filt_data[c]); } } const PicArray& EncPicture::UpFiltData(CompSort cs) const { const int c = (int) cs; if (m_filt_up_data[c] != NULL) return *m_filt_up_data[c]; else {//we have to do the upconversion const PicArray& filt_data = FiltData( cs ); m_filt_up_data[c] = new PicArray( 2*filt_data.LengthY(), 2*filt_data.LengthX() ); UpConverter* myupconv; if (c>0) myupconv = new UpConverter(-(1 << (m_pparams.ChromaDepth()-1)), (1 << (m_pparams.ChromaDepth()-1))-1, m_pparams.ChromaXl(), m_pparams.ChromaYl()); else myupconv = new UpConverter(-(1 << (m_pparams.LumaDepth()-1)), (1 << (m_pparams.LumaDepth()-1))-1, m_pparams.Xl(), m_pparams.Yl()); myupconv->DoUpConverter( filt_data , *(m_filt_up_data[c]) ); delete myupconv; return *(m_filt_up_data[c]); } } void EncPicture::AntiAliasFilter( PicArray& out_data, const PicArray& in_data ) const{ //Special case for first row for (int i = in_data.FirstX(); i <= in_data.LastX(); ++i) { out_data[in_data.FirstY()][i] = (3*in_data[in_data.FirstY()][i] + in_data[in_data.FirstY()+1][i] +2 )>>2; } //Middle section for (int j = in_data.FirstY()+1; j < in_data.LastY(); ++j) { for (int i = in_data.FirstX(); i <= in_data.LastX(); ++i) { out_data[j][i] = (in_data[j-1][i] + 2*in_data[j][i] + in_data[j+1][i] + 2)>>2; } } //Special case for last row for (int i = in_data.FirstX(); i <= in_data.LastX(); ++i) { out_data[in_data.LastY()][i] = (in_data[in_data.LastY()-1][i] + 3*in_data[in_data.LastY()][i] + 2)>>2; } } const PicArray& EncPicture::CombinedData() const { if (m_filt_data[Y_COMP] != NULL) return *m_filt_data[Y_COMP]; else {//we have to do the combining if (m_orig_data[Y_COMP] != NULL ) m_filt_data[Y_COMP] = new PicArray( m_orig_data[Y_COMP]->LengthY(), m_orig_data[Y_COMP]->LengthX() ); Combine( *(m_filt_data[Y_COMP]), *(m_orig_data[Y_COMP]), *(m_orig_data[U_COMP]), *(m_orig_data[V_COMP]) ); return *(m_filt_data[Y_COMP]); } } const PicArray& EncPicture::UpCombinedData() const { if (m_filt_up_data[Y_COMP] != NULL) return *m_filt_up_data[Y_COMP]; else {//we have to do the upconversion const PicArray& filt_data = CombinedData(); m_filt_up_data[Y_COMP] = new PicArray( 2*filt_data.LengthY(), 2*filt_data.LengthX() ); UpConverter* myupconv; myupconv = new UpConverter(-(1 << (m_pparams.LumaDepth()-1)), (1 << (m_pparams.LumaDepth()-1))-1, m_pparams.Xl(), m_pparams.Yl()); myupconv->DoUpConverter( filt_data , *(m_filt_up_data[Y_COMP]) ); delete myupconv; return *(m_filt_up_data[Y_COMP]); } } void EncPicture::Combine( PicArray& comb_data, const PicArray& y_data, const PicArray& u_data, const PicArray& v_data ) const { int hcr = y_data.LengthX()/u_data.LengthX(); int vcr = y_data.LengthY()/u_data.LengthY(); float val, valc, valy; if (vcr==1){ for (int j=0; j>1]); val *= val; valc = val; val = float(v_data[j][i>>1]); val *= val; valc += val; valy = float(y_data[j][i]) + 128.0; valy *= valy; comb_data[j][i] = ValueType( std::sqrt(valc+valy)-128.0 ); valy = float(y_data[j][i+1]) + 128.0; valy *= valy; comb_data[j][i+1] = ValueType( std::sqrt(valc+valy)-128.0 ); }// i } }// j } else{ // 420 format for (int j=0; j>1][i>>1]); val *= val; valc = val; val = float(v_data[j>>1][i>>1]); val *= val; valc += val; valy = float(y_data[j][i]) + 128.0; valy *= valy; comb_data[j][i] = ValueType( std::sqrt(valc+valy)-128.0 ); valy = float(y_data[j][i+1]) + 128.0; valy *= valy; comb_data[j][i+1] = ValueType( std::sqrt(valc+valy)-128.0 ); valy = float(y_data[j+1][i]) + 128.0; valy *= valy; comb_data[j+1][i] = ValueType( std::sqrt(valc+valy)-128.0 ); valy = float(y_data[j+1][i+1]) + 128.0; valy *= valy; comb_data[j+1][i+1] = ValueType( std::sqrt(valc+valy)-128.0 ); }// i }// j } } void EncPicture::DropRef( int rindex ){ std::vector& refs = m_pparams.Refs(); if (rindex==1 || rindex==2 ) refs.erase( refs.begin()+rindex-1 ); // Now reconfigure the motion data if ( m_me_data!=NULL ) m_me_data->DropRef( rindex ); } dirac-1.0.2/libdirac_encoder/dirac_encoder.h0000664000204200017500000003723011110647402015715 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: dirac_encoder.h,v 1.28 2008/11/18 23:25:54 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Anuradha Suraparaju (Original Author) * Andrew Kennedy, * Thomas Davies * Myo Tun (Brunel University, myo.tun@brunel.ac.uk) * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #ifndef DIRAC_ENCODER_H #define DIRAC_ENCODER_H #include #include /*! \file \brief C interface to Dirac Encoder. A set of 'C' functions that define the public interface to the Dirac encoder. Refer to the the reference encoder source code, encoder/encmain.cpp for an example of how to use the "C" interface. The pseudocode below gives a brief description of the "C" interface usage. \verbatim #include #define ENCBUF_SIZE 1024*1024; unsigned char *buffer, enc_buf[ENC_BUFSIZE]; int buffer_size; dirac_encoder_t *encoder; dirac_encoder_context_t enc_ctx; // Initialse the encoder context with the presets for SD576 - Standard // Definition Digital dirac_encoder_context_init (&enc_ctx, VIDEO_FORMAT_SD576I50); // Override parameters if required // interlace : 1 - interlaced; 0 - progressive enc_ctx.seq_params.interlace = 0; enc_ctx.seq_params.topfieldfirst = 0; enc_ctx.enc_params.qf = 7.5; // disable instrumentation flag enc_ctx.instr_flag = 0; // return locally decoded output enc_ctx.decode_flag = 1; // Initialise the encoder with the encoder context. // Setting verbose output to false encoder= dirac_encoder_init(&enc_ctx, false); // Set the buffer size. For SD576 4:2:0 chroma buffer_size = (720*576*3)/2; buffer = (unsigned char *)malloc (buffer_size); // Output buffer dirac_encoder_state_t state; int go = 1; do { read uncompressed frame data into buffer if (end of file) { // push end of sequence dirac_encoder_end_sequence(encoder); } // load one frame of data into encoder if (dirac_encoder_load(encoder, buffer, buffer_size) == 0) { // Retrieve encoded frames from encoder do { encoder->enc_buf.buffer = enc_buf; encoder->enc_buf.size = ENCBUF_SIZE; state = dirac_encoder_output (encoder); switch (state) { case ENC_STATE_AVAIL: // Encoded frame available in encoder->enc_buf // Encoded frame params available in enccoder->enc_fparams // Encoded frame stats available in enccoder->enc_fstats break; case ENC_STATE_BUFFER: break; case ENC_STATE_EOS: // Reached end of sequence // End of sequence information is available in encoder->enc_buf // Sequence statistics available in encoder->enc_seqstats; go = 0; // exit from the encoding loop break; case ENC_STATE_INVALID: default: // Unrecoverable error encountered. Exit; exit (exit code); } if (encoder->decoded_frame_avail) { //locally decoded frame is available in //encoder->dec_buf //locally decoded frame parameters available //in encoder->dec_fparams } if (encoder->instr_data_avail) { //Instrumentation data (motion vectors etc.) //available in encoder->instr } } while (state == ENC_STATE_AVAIL) } } while (go == 1); // Free the encoder resources dirac_encoder_close(encoder) // Free the uncompressed data buffer free (buffer); \endverbatim */ #ifdef __cplusplus extern "C" { #endif /*! Enumerated type that defines encoder state */ typedef enum { ENC_STATE_INVALID = -1, ENC_STATE_BUFFER, ENC_STATE_AVAIL, ENC_STATE_EOS } dirac_encoder_state_t ; /*! Enumerated type that defines prefiltering types supported by the encoder. */ typedef PrefilterType dirac_prefilter_t; /*! Enumerated type that defines encoder presets that set the encoder and sequence paramters. More presets may be added in future*/ typedef VideoFormat dirac_encoder_presets_t; /*! Enumerated type that defines motion vector precisions supported by the encoder.*/ typedef MVPrecisionType dirac_mvprecision_t; /*! Structure that holds the encoder specific parameters */ typedef struct { /*! Lossless coding */ int lossless; /*! Quality factor */ float qf; /*! Full-search motion estimation */ int full_search; /*! Combined component motion estimation */ int combined_me; /*! x-range for full search ME */ int x_range_me; /*! y-range for full search ME */ int y_range_me; /*! The separation between L1 frames */ int L1_sep; /*! The number of L1 frames before the next intra frame. Together with L1_sep determines the GOP structure. */ int num_L1; /*! Normalised viewing distance parameter, in cycles per degree */ float cpd; /*! The width of blocks used for motion compensation */ int xblen; /*! The height of blocks used for motion compensation */ int yblen; /*! The horizontal separation between blocks. Always 0 - successful; -1 failed Failure may be due to input data size not matching the required frame size. */ extern DllExport int dirac_encoder_load (dirac_encoder_t *encoder, unsigned char *uncdata, int uncdata_size); /*! Retrieve an encoded frame from the encoder. Returns the state of the encoder. The encoder buffer enc_buf in the encodermust be set up with the buffer and buffer_size that will hold the encoded frame \param encoder Encoder Handle \return ENC_STATE_INVALID - unrecoverable error ENC_STATE_BUFFER - load data into encoder ENC_STATE_AVAIL - Encoded frame available ENC_STATE_EOS - End of Sequence info available */ extern DllExport dirac_encoder_state_t dirac_encoder_output (dirac_encoder_t *encoder); /*! Request the encoder to end the sequence. \param encoder Encoder Handle */ extern DllExport void dirac_encoder_end_sequence (dirac_encoder_t *encoder); /*! Free resources held by encoder \param encoder Encoder Handle */ extern DllExport void dirac_encoder_close (dirac_encoder_t *encoder); #endif #ifdef __cplusplus } #endif dirac-1.0.2/libdirac_encoder/quant_chooser.h0000664000204200017500000001144211016662022016003 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: quant_chooser.h,v 1.7 2008/05/27 01:29:54 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author) * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #ifndef _QUANT_CHOOSER_H_ #define _QUANT_CHOOSER_H_ #include #include #include namespace dirac { //! Choose a quantiser /*! This class chooses a quantiser or quantisers for a subband */ class QuantChooser { public: //! Constructor QuantChooser( const CoeffArray& pic_data , const float lambda ); //! Finds the best quantisers for the subband, returning the predicted number of bits needed int GetBestQuant( Subband& node ); //! Sets the factor used for correcting the entropy calculation void SetEntropyCorrection( const float ecfac ){ m_entropy_correctionfactor = ecfac; } private: //! Copy constructor is private and body-less. This class should not be copied. QuantChooser(const QuantChooser& cpy); //! Assignment = is private and body-less. This class should not be assigned. QuantChooser& operator=(const QuantChooser& rhs); //! Calculate errors and entropies for integral-bit quantisers void IntegralErrorCalc( Subband& node , const int xratio , const int yratio ); //! Calculate errors and entropies for non-integral-bit quantisers void NonIntegralErrorCalc( Subband& node, const int xratio, const int yratio ); //! Having got statistics, calculate the Lagrangian costs void LagrangianCalc(); //! Select the best quantisation index on the basis of the Lagrangian calculations void SelectBestQuant(); CoeffType BlockAbsMax( const Subband& node ); //! Set the skip flag for a codeblock void SetSkip( CodeBlock& cblock , const int qidx); private: //! The perceptual weighting factor of the subband being tested float m_subband_wt; //! The smallest quantisation index being tested int m_bottom_idx; //! The largest quantisation index being tested int m_top_idx; //! The step we use in jumping through the list of quantisers int m_index_step; //! The index of the quantiser with the lowest cost int m_min_idx; //! A local reference to the data under consideration const CoeffArray& m_coeff_data; //! The lambda value to be used in the Lagrangian calculation const float m_lambda; //! A value for correcting the crude calculation of the entropy float m_entropy_correctionfactor; //! An array used to count the number of zeroes OneDArray m_count0; //! The number of ones (equal to the number of coefficients) int m_count1; //! An array used to count the number of positive values OneDArray m_countPOS; //! An array used to count the number of negative values OneDArray m_countNEG; //! An array used to collate the sum of the perceptually-weighted errors OneDArray m_error_total; //! An array used to collate the computed costs OneDArray m_costs; }; } // namespace dirac #endif dirac-1.0.2/libdirac_encoder/quality_monitor.cpp0000664000204200017500000001631611050702232016724 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: quality_monitor.cpp,v 1.33 2008/08/14 01:04:26 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author) * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #include #include using namespace dirac; using std::log10; QualityMonitor::QualityMonitor(EncoderParams& encp) : m_encparams(encp), m_mse_averageY(3), m_mse_averageU(3), m_mse_averageV(3), m_picture_total(3) { ResetAll(); } QualityMonitor::~QualityMonitor() {} void QualityMonitor::ResetAll() { for (int i=0; i<3 ; ++i ) { m_mse_averageY[i] = 0.0; m_mse_averageU[i] = 0.0; m_mse_averageV[i] = 0.0; m_picture_total[i] = 0; }// i m_totalmse_averageY = 0.0; m_totalmse_averageU = 0.0; m_totalmse_averageV = 0.0; m_allpicture_total = 0; } void QualityMonitor::WriteLog() { const double Ymax = double( (1< #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace dirac; using namespace std; template void copy_2dArray (const TwoDArray & in, S *out) { for (int j=0 ; j & in, int *out) { for (int j=0 ; j & in, int *out) { for (int j=0 ; j &pc, dirac_mv_cost_t *dpc) { for (int j=0 ; jsb_split_mode = new int [instr->sb_ylen*instr->sb_xlen]; memset (instr->sb_split_mode, 0, sizeof(int)*instr->sb_ylen*instr->sb_xlen); instr->sb_costs = new float [instr->sb_ylen*instr->sb_xlen]; memset (instr->sb_costs, 0, sizeof(float)*instr->sb_ylen*instr->sb_xlen); instr->pred_mode = new int [instr->mv_ylen * instr->mv_xlen]; memset (instr->pred_mode, 0, sizeof(int)*instr->mv_ylen*instr->mv_xlen); instr->intra_costs = new float [instr->mv_ylen * instr->mv_xlen]; memset (instr->intra_costs, 0, sizeof(float)*instr->mv_ylen*instr->mv_xlen); instr->bipred_costs = new dirac_mv_cost_t [instr->mv_ylen * instr->mv_xlen]; memset (instr->bipred_costs, 0, sizeof(dirac_mv_cost_t)*instr->mv_ylen*instr->mv_xlen); instr->dc_ycomp = new short [instr->mv_ylen * instr->mv_xlen]; memset (instr->dc_ycomp, 0, sizeof(short)*instr->mv_ylen*instr->mv_xlen); instr->dc_ucomp = new short [instr->mv_ylen * instr->mv_xlen]; memset (instr->dc_ucomp, 0, sizeof(short)*instr->mv_ylen*instr->mv_xlen); instr->dc_vcomp = new short [instr->mv_ylen * instr->mv_xlen]; memset (instr->dc_vcomp, 0, sizeof(short)*instr->mv_ylen*instr->mv_xlen); for (int i = 0; i < 2; i++) { instr->mv[i] = new dirac_mv_t[instr->mv_ylen * instr->mv_xlen]; memset (instr->mv[i], 0, sizeof(dirac_mv_t)*instr->mv_ylen*instr->mv_xlen); } for (int i = 0; i < 2; i++) { instr->pred_costs[i] = new dirac_mv_cost_t[instr->mv_ylen * instr->mv_xlen]; memset (instr->pred_costs[i], 0, sizeof(dirac_mv_cost_t)*instr->mv_ylen*instr->mv_xlen); } } /* Function that frees the locally managed instrumentation data */ void dealloc_instr_data(dirac_instr_t *instr) { if (instr->sb_split_mode) delete [] instr->sb_split_mode; if (instr->sb_costs) delete [] instr->sb_costs; if (instr->pred_mode) delete [] instr->pred_mode; if (instr->intra_costs) delete [] instr->intra_costs; if (instr->bipred_costs) delete [] instr->bipred_costs; if (instr->dc_ycomp) delete [] instr->dc_ycomp; if (instr->dc_ucomp) delete [] instr->dc_ucomp; if (instr->dc_vcomp) delete [] instr->dc_vcomp; for (int i = 0; i < 2; i++) { if (instr->mv[i]) delete [] instr->mv[i]; } for (int i = 0; i < 2; i++) { if (instr->pred_costs[i]) delete [] instr->pred_costs[i]; } } /* Wrapper class around the SequenceCompressor Class. This class is used by the "C" encoder interface */ class DiracEncoder { public: // constructor DiracEncoder(const dirac_encoder_context_t *enc_ctx, bool verbose); // destructor ~DiracEncoder(); // Load the next frame of uncompressed data into the SequenceCompressor bool LoadNextFrame(unsigned char *data, int size); // Compress the next picture (frame/field) of data int CompressNextPicture(); // Set the encode frame in encoder to the encoded frame data int GetEncodedData(dirac_encoder_t *encoder); // Set the locally decoded frame data in encoder int GetDecodedData (dirac_encoder_t *encoder); // Set the instrumentation data in encoder void GetInstrumentationData (dirac_encoder_t *encoder); // Set the end of sequence infomration in encoder int GetSequenceEnd(dirac_encoder_t *encoder); // Set the buffer to hold the locally decoded frame void SetDecodeBuffer (unsigned char *buffer, int buffer_size); // Return the encoder parameters const EncoderParams& GetEncParams() const { return m_encparams; } // Return the source parameters const SourceParams& GetSrcParams() const { return m_srcparams; } // Return the pts offset int GetPTSOffset() const { return m_seqcomp->PTSOffset(); } // Signal End of Sequence void SignalEOS() { m_eos_signalled = true; m_seqcomp->SignalEOS(); } // End of Sequence bool EOS() { return m_eos_signalled == true; } private: // Set the encoder parameters void SetEncoderParams (const dirac_encoder_context_t *enc_ctx); // Set the source parameters void SetSourceParams (const dirac_encoder_context_t *enc_ctx); // Get the picture statistics void GetPictureStats(dirac_encoder_t *encoder); // Get the seuqence statistics void GetSequenceStats(dirac_encoder_t *encoder, const DiracByteStats& dirac_seq_stats); private: // sequence compressor SequenceCompressor *m_seqcomp; // Source parameters SourceParams m_srcparams; // encoder parameters EncoderParams m_encparams; // locally encoded picture in coded order const EncPicture *m_enc_picture; // locally encoded frame ME data const MEData *m_enc_medata; // locally decoded picture number in display order int m_decpnum; //locally decoded picture type PictureSort m_decpsort; // locally decoded picture number in display order int m_show_pnum; // total number of frames/fields loaded so far int m_num_loaded_pictures; // total number of frames/fields encoded so far int m_num_coded_pictures; // verbose flag bool m_verbose; // input stream for uncompressed input pictures MemoryStreamInput *m_inp_ptr; // output stream for locally decoded pictures MemoryStreamOutput *m_out_ptr; // buffer to hold locally decoded frame. Set by SetDecodeBuffer unsigned char *m_dec_buf; // size of buffer to hold locally decoded data. Set by SetDecodeBuffer int m_dec_bufsize; // Flag that determines if locally decoded pictures are to be returned. Set // in Constructor bool m_return_decoded_pictures; // Flag that determines if instrumentation data is to be returned. Set // in Constructor bool m_return_instr_data; // Output destination for compressed data in bitstream format DiracByteStream m_dirac_byte_stream; //Rate Control parameters // Total Number of bits for a GOP int m_gop_bits; // Total Number GOPs in the input sequence int m_gop_count; // To count the number of pictures for calculating the GOP bit rate int m_picture_count; // field 1 stats if interlaced dirac_enc_picstats_t m_field1_stats; // End of sequence flag. Set to true when user app signals end of // sequence bool m_eos_signalled; }; /* Instrumentation callback. This function is passed as a parameter to the SequenceCompressor constructor. It is called by the FrameCompressor::Compress function once the frame is successfully compressed */ void DiracEncoder::GetInstrumentationData (dirac_encoder_t *encoder) { ASSERT (encoder != NULL); dirac_instr_t *instr = &encoder->instr; dirac_instr_t old_instr = *instr; if (!m_return_instr_data || m_enc_picture == NULL) return; const PictureParams& pparams = m_enc_picture->GetPparams(); const PictureSort psort = pparams.PicSort(); instr->pnum = pparams.PictureNum(); instr->ptype = psort.IsIntra() ? INTRA_PICTURE : INTER_PICTURE; instr->rtype = psort.IsRef() ? REFERENCE_PICTURE : NON_REFERENCE_PICTURE; instr->num_refs = 0; encoder->instr_data_avail = 1; if (psort.IsIntra()) { // no MV data for Intra coded data return; } TESTM (m_enc_medata != NULL, "ME data available"); // Reference info instr->num_refs = pparams.Refs().size(); ASSERTM (instr->num_refs <= 2, "Max # reference frames is 2"); for (int i=0; inum_refs; ++i) instr->refs[i] = pparams.Refs()[i]; // Block separation params instr->ybsep = m_encparams.GetPicPredParams().LumaBParams(2).Ybsep(); instr->xbsep = m_encparams.GetPicPredParams().LumaBParams(2).Xbsep(); // Num superblocks instr->sb_ylen = m_enc_medata->SBSplit().LengthY(); instr->sb_xlen = m_enc_medata->SBSplit().LengthX(); // Motion vector array dimensions instr->mv_ylen = m_enc_medata->Vectors(1).LengthY(); instr->mv_xlen = m_enc_medata->Vectors(1).LengthX(); if (old_instr.sb_ylen != instr->sb_ylen || old_instr.sb_xlen != instr->sb_xlen || old_instr.mv_ylen != instr->mv_ylen || old_instr.mv_xlen != instr->mv_xlen) { dealloc_instr_data(instr); alloc_instr_data(instr); } copy_2dArray (m_enc_medata->SBSplit(), instr->sb_split_mode); copy_2dArray (m_enc_medata->SBCosts(), instr->sb_costs); copy_2dArray (m_enc_medata->Mode(), instr->pred_mode); copy_2dArray (m_enc_medata->IntraCosts(), instr->intra_costs); if (instr->num_refs > 1) { copy_mv_cost (m_enc_medata->BiPredCosts(), instr->bipred_costs); } copy_2dArray (m_enc_medata->DC( Y_COMP ), instr->dc_ycomp); if (m_enc_medata->DC().Length() == 3) { copy_2dArray (m_enc_medata->DC( U_COMP ), instr->dc_ucomp); copy_2dArray (m_enc_medata->DC( V_COMP ), instr->dc_vcomp); } for (int i=1; i<=instr->num_refs; ++i) { copy_mv (m_enc_medata->Vectors(i), instr->mv[i-1]); copy_mv_cost (m_enc_medata->PredCosts(i), instr->pred_costs[i-1]); } } DiracEncoder::DiracEncoder(const dirac_encoder_context_t *enc_ctx, bool verbose) : m_srcparams(static_cast(enc_ctx->enc_params.video_format), true), m_encparams(static_cast(enc_ctx->enc_params.video_format), INTER_PICTURE, 2, true), m_show_pnum(-1), m_num_loaded_pictures(0), m_num_coded_pictures(0), m_verbose(verbose), m_dec_buf(0), m_dec_bufsize(0), m_return_decoded_pictures(enc_ctx->decode_flag > 0), m_return_instr_data(enc_ctx->instr_flag > 0), m_gop_bits(0), m_gop_count(0), m_picture_count(0), m_eos_signalled(false) { // Setup source parameters SetSourceParams (enc_ctx); // Setup encoder parameters m_encparams.SetVerbose( verbose ); SetEncoderParams (enc_ctx); // Set up the input data stream (uncompressed data) m_inp_ptr = new MemoryStreamInput(m_srcparams, m_encparams.FieldCoding()); // Set up the output data stream (locally decoded frame) m_out_ptr = new MemoryStreamOutput(m_srcparams, m_encparams.FieldCoding()); // initialise the sequence compressor if (!m_encparams.FieldCoding()) { m_seqcomp = new FrameSequenceCompressor (m_inp_ptr->GetStream(), m_encparams, m_dirac_byte_stream); } else { m_seqcomp = new FieldSequenceCompressor (m_inp_ptr->GetStream(), m_encparams, m_dirac_byte_stream); } } void DiracEncoder::SetDecodeBuffer (unsigned char *buffer, int buffer_size) { m_dec_buf = buffer; m_dec_bufsize = buffer_size; m_return_decoded_pictures = true; } DiracEncoder::~DiracEncoder() { delete m_seqcomp; delete m_inp_ptr; delete m_out_ptr; } void DiracEncoder::SetSourceParams (const dirac_encoder_context_t *enc_ctx) { m_srcparams.SetCFormat( enc_ctx->src_params.chroma ); m_srcparams.SetXl( enc_ctx->src_params.width ); m_srcparams.SetYl( enc_ctx->src_params.height ); m_srcparams.SetCleanWidth( m_srcparams.Xl() ); m_srcparams.SetCleanHeight( m_srcparams.Yl() ); m_srcparams.SetLeftOffset( 0 ); m_srcparams.SetTopOffset( 0 ); m_srcparams.SetSourceSampling( enc_ctx->src_params.source_sampling ); if (m_srcparams.FrameRate().m_num != (unsigned int)enc_ctx->src_params.frame_rate.numerator || m_srcparams.FrameRate().m_denom != (unsigned int)enc_ctx->src_params.frame_rate.denominator) { m_srcparams.SetFrameRate( enc_ctx->src_params.frame_rate.numerator, enc_ctx->src_params.frame_rate.denominator ); } if (m_srcparams.PixelAspectRatio().m_num != (unsigned int)enc_ctx->src_params.pix_asr.numerator || m_srcparams.PixelAspectRatio().m_denom != (unsigned int)enc_ctx->src_params.pix_asr.denominator) { m_srcparams.SetPixelAspectRatio( enc_ctx->src_params.pix_asr.numerator, enc_ctx->src_params.pix_asr.denominator ); } // TO DO: CLEAN AREA and signal range // FIXME: Dirac currently support 8BIT_VIDEO only. Accept from command line // when Dirac supports multiple signal ranges. m_srcparams.SetSignalRange(SIGNAL_RANGE_8BIT_VIDEO); } void DiracEncoder::SetEncoderParams (const dirac_encoder_context_t *enc_ctx) { TEST (enc_ctx != NULL); OLBParams bparams(12, 12, 8, 8); m_encparams.SetLocalDecode(enc_ctx->decode_flag); m_encparams.SetXl( enc_ctx->src_params.width ); m_encparams.SetYl( enc_ctx->src_params.height ); m_encparams.SetChromaXl( enc_ctx->src_params.chroma_width ); m_encparams.SetChromaYl( enc_ctx->src_params.chroma_height ); if (enc_ctx->enc_params.picture_coding_mode > 1) { std::ostringstream errstr; errstr << "Picture coding mode " << enc_ctx->enc_params.picture_coding_mode << " out of supported range [0-1]"; DIRAC_THROW_EXCEPTION( ERR_INVALID_INIT_DATA, errstr.str(), SEVERITY_TERMINATE); } m_encparams.SetPictureCodingMode(enc_ctx->enc_params.picture_coding_mode); if (m_encparams.FieldCoding()) { // Change coding dimensions to field dimensions m_encparams.SetYl( enc_ctx->src_params.height>>1 ); m_encparams.SetChromaYl( enc_ctx->src_params.chroma_height >> 1); } unsigned int luma_depth = static_cast ( std::log((double)m_srcparams.LumaExcursion())/std::log(2.0) + 1 ); m_encparams.SetLumaDepth(luma_depth); unsigned int chroma_depth = static_cast ( std::log((double)m_srcparams.ChromaExcursion())/std::log(2.0) + 1 ); m_encparams.SetChromaDepth(chroma_depth); m_encparams.SetFullSearch(enc_ctx->enc_params.full_search); m_encparams.SetCombinedME(enc_ctx->enc_params.combined_me); m_encparams.SetXRangeME(enc_ctx->enc_params.x_range_me); m_encparams.SetYRangeME(enc_ctx->enc_params.y_range_me); m_encparams.SetCPD(enc_ctx->enc_params.cpd); m_encparams.SetQf(enc_ctx->enc_params.qf); m_encparams.SetTargetRate(enc_ctx->enc_params.trate); m_encparams.SetLossless(enc_ctx->enc_params.lossless); m_encparams.SetL1Sep(enc_ctx->enc_params.L1_sep); m_encparams.SetNumL1(enc_ctx->enc_params.num_L1); m_encparams.SetPrefilter(enc_ctx->enc_params.prefilter, enc_ctx->enc_params.prefilter_strength); m_encparams.SetUFactor(1.5f); m_encparams.SetVFactor(0.75f); m_encparams.GetPicPredParams().SetMVPrecision(enc_ctx->enc_params.mv_precision); m_encparams.SetUsingAC(enc_ctx->enc_params.using_ac); bparams.SetYblen( enc_ctx->enc_params.yblen ); bparams.SetXblen( enc_ctx->enc_params.xblen ); bparams.SetYbsep( enc_ctx->enc_params.ybsep ); bparams.SetXbsep( enc_ctx->enc_params.xbsep ); // Now rationalise the GOP options // this stuff should really be done in a constructor! if (m_encparams.NumL1()<0) { //don't have a proper GOP m_encparams.SetL1Sep( std::max(1 , m_encparams.L1Sep()) ); } else if (m_encparams.NumL1() == 0) { //have I-frame only coding m_encparams.SetL1Sep(0); } m_encparams.GetPicPredParams().SetBlockSizes( bparams , enc_ctx->src_params.chroma ); // Set transforms parameters m_encparams.SetIntraTransformFilter(enc_ctx->enc_params.intra_wlt_filter); m_encparams.SetInterTransformFilter(enc_ctx->enc_params.inter_wlt_filter); m_encparams.SetSpatialPartition(enc_ctx->enc_params.spatial_partition); m_encparams.SetTransformDepth(enc_ctx->enc_params.wlt_depth); m_encparams.SetCodeBlockMode(enc_ctx->enc_params.spatial_partition && enc_ctx->enc_params.multi_quants ? QUANT_MULTIPLE : QUANT_SINGLE); } bool DiracEncoder::LoadNextFrame (unsigned char *data, int size) { TESTM (m_seqcomp->Finished() != true, "Did not reach end of sequence"); m_inp_ptr->SetMembufReference(data, size); if (m_seqcomp->LoadNextFrame()) { if (!m_encparams.FieldCoding()) m_num_loaded_pictures++; else m_num_loaded_pictures+=2; return true; } return false; } int DiracEncoder::CompressNextPicture () { TESTM (m_seqcomp->Finished() != true, "Did not reach end of sequence"); if (!m_num_loaded_pictures) return 0; const EncPicture *mypicture = m_seqcomp->CompressNextPicture(); m_decpnum = -1; if (mypicture){ m_enc_picture = m_seqcomp->GetPictureEncoded(); if (m_enc_picture->GetPparams().PicSort().IsIntra()==false) m_enc_medata = &m_enc_picture->GetMEData(); else m_enc_medata = NULL; if (m_return_decoded_pictures && mypicture->GetPparams().PictureNum() != m_show_pnum){ int ret_val; m_show_pnum = mypicture->GetPparams().PictureNum(); TEST (! (m_return_decoded_pictures && !m_dec_buf) ); if (m_return_decoded_pictures && m_dec_buf) { // write locally decoded picture to decode buffer m_out_ptr->SetMembufReference(m_dec_buf, m_dec_bufsize); ret_val = m_out_ptr->GetStream()->WriteToNextFrame(*mypicture); if (ret_val) { m_decpnum = m_show_pnum; m_decpsort = mypicture->GetPparams().PicSort(); } } } } else{ m_enc_picture = NULL; m_enc_medata = NULL; } if(!m_dirac_byte_stream.IsUnitAvailable()) return 0; if (mypicture){ m_num_coded_pictures++; TESTM (m_enc_picture != 0, "Encoder picture available"); } return 1; } void DiracEncoder::GetPictureStats(dirac_encoder_t *encoder) { dirac_enc_picstats_t *pstats = &encoder->enc_pstats; DiracByteStats dirac_byte_stats = m_dirac_byte_stream.GetLastUnitStats(); pstats->mv_bits = dirac_byte_stats.GetBitCount(STAT_MV_BYTE_COUNT); // pstats->mv_hdr_bits = poutput.MVBytes() * 8; pstats->ycomp_bits = dirac_byte_stats.GetBitCount(STAT_YCOMP_BYTE_COUNT); // pstats->ycomp_hdr_bits = poutput.ComponentHeadBytes( Y_COMP ) * 8; pstats->ucomp_bits = dirac_byte_stats.GetBitCount(STAT_UCOMP_BYTE_COUNT); // pstats->ucomp_hdr_bits = poutput.ComponentHeadBytes( U_COMP ) * 8; pstats->vcomp_bits = dirac_byte_stats.GetBitCount(STAT_VCOMP_BYTE_COUNT); // pstats->vcomp_hdr_bits = poutput.ComponentHeadBytes( V_COMP ) * 8; pstats->pic_bits = dirac_byte_stats.GetBitCount(STAT_TOTAL_BYTE_COUNT); // pstats->pic_hdr_bits = poutput.PictureHeadBytes() * 8; DiracEncoder *compressor = (DiracEncoder *)encoder->compressor; if (compressor->GetEncParams().Verbose()) { std::cout<enc_pparams.pnum/2; std::cout<< " stats"; std::cout<dec_pparams; int ret_stat = (m_decpnum != -1); if (m_return_decoded_pictures && m_decpnum != -1) { pp->ptype = m_decpsort.IsIntra() ? INTRA_PICTURE : INTER_PICTURE; pp->rtype = m_decpsort.IsRef() ? REFERENCE_PICTURE : NON_REFERENCE_PICTURE; pp->pnum = m_decpnum; encoder->decoded_frame_avail = 1; m_decpnum = -1; } return ret_stat; } void DiracEncoder::GetSequenceStats(dirac_encoder_t *encoder, const DiracByteStats& dirac_seq_stats) { dirac_enc_seqstats_t *sstats = &encoder->enc_seqstats; sstats->seq_bits = dirac_seq_stats.GetBitCount(STAT_TOTAL_BYTE_COUNT); sstats->mv_bits = dirac_seq_stats.GetBitCount(STAT_MV_BYTE_COUNT); sstats->ycomp_bits = dirac_seq_stats.GetBitCount(STAT_YCOMP_BYTE_COUNT); sstats->ucomp_bits = dirac_seq_stats.GetBitCount(STAT_UCOMP_BYTE_COUNT); sstats->vcomp_bits = dirac_seq_stats.GetBitCount(STAT_VCOMP_BYTE_COUNT); sstats->bit_rate = int64_t((sstats->seq_bits * (double)m_srcparams.FrameRate().m_num)/ (m_srcparams.FrameRate().m_denom * m_num_coded_pictures)); if (encoder->enc_ctx.enc_params.picture_coding_mode==1) sstats->bit_rate *= 2; DiracEncoder *compressor = (DiracEncoder *)encoder->compressor; if (compressor->GetEncParams().Verbose()) { std::cout<ycomp_bits <<" were Y, "; std::cout<ucomp_bits <<" were U, "; std::cout<vcomp_bits<<" were V, and "; std::cout<mv_bits<<" were motion vector data."; } } int DiracEncoder::GetSequenceEnd (dirac_encoder_t *encoder) { dirac_enc_data_t *encdata = &encoder->enc_buf; DiracByteStats dirac_seq_stats=m_seqcomp->EndSequence(); string output = m_dirac_byte_stream.GetBytes(); int size = output.size(); if (size > 0) { if (encdata->size < size ) { return -1; } memmove (encdata->buffer, output.c_str(), size); GetSequenceStats(encoder, dirac_seq_stats); encdata->size = size; } else { encdata->size = 0; } m_dirac_byte_stream.Clear(); return size; } static bool InitialiseEncoder (const dirac_encoder_context_t *enc_ctx, bool verbose, dirac_encoder_t *encoder) { TEST (enc_ctx != NULL); TEST (encoder != NULL); if (enc_ctx->src_params.width == 0 || enc_ctx->src_params.height == 0) return false; if (enc_ctx->src_params.chroma < format444 || enc_ctx->src_params.chroma >= formatNK) return false; if (!enc_ctx->src_params.frame_rate.numerator || !enc_ctx->src_params.frame_rate.denominator) return false; memmove (&encoder->enc_ctx, enc_ctx, sizeof(dirac_encoder_context_t)); encoder->dec_buf.id = 0; switch ( enc_ctx->src_params.chroma ) { case format420: encoder->enc_ctx.src_params.chroma_width = enc_ctx->src_params.width/2; encoder->enc_ctx.src_params.chroma_height = enc_ctx->src_params.height/2; break; case format422: encoder->enc_ctx.src_params.chroma_width = enc_ctx->src_params.width/2; encoder->enc_ctx.src_params.chroma_height = enc_ctx->src_params.height; break; case format444: default: encoder->enc_ctx.src_params.chroma_width = enc_ctx->src_params.width; encoder->enc_ctx.src_params.chroma_height = enc_ctx->src_params.height; break; } try { DiracEncoder *comp = new DiracEncoder (&encoder->enc_ctx, verbose); encoder->compressor = comp; if (encoder->enc_ctx.decode_flag) { int bufsize = (encoder->enc_ctx.src_params.width * encoder->enc_ctx.src_params.height)+ 2*(encoder->enc_ctx.src_params.chroma_width*encoder->enc_ctx.src_params.chroma_height); encoder->dec_buf.buf[0] = new unsigned char [bufsize]; encoder->dec_buf.buf[1] = encoder->dec_buf.buf[0] + (encoder->enc_ctx.src_params.width * encoder->enc_ctx.src_params.height); encoder->dec_buf.buf[2] = encoder->dec_buf.buf[1] + (encoder->enc_ctx.src_params.chroma_width*encoder->enc_ctx.src_params.chroma_height); comp->SetDecodeBuffer (encoder->dec_buf.buf[0], bufsize); } } catch (...) { return false; } return true; } static void SetSourceParameters(dirac_encoder_context_t *enc_ctx, const VideoFormat& video_format) { TEST (enc_ctx != NULL); dirac_sourceparams_t &src_params = enc_ctx->src_params; // create object containing sequence params SourceParams default_src_params(video_format); src_params.height = default_src_params.Yl(); src_params.width = default_src_params.Xl(); src_params.chroma_height = default_src_params.ChromaHeight(); src_params.chroma_width = default_src_params.ChromaWidth(); src_params.chroma = default_src_params.CFormat(); src_params.frame_rate.numerator = default_src_params.FrameRate().m_num; src_params.frame_rate.denominator = default_src_params.FrameRate().m_denom; src_params.pix_asr.numerator = default_src_params.PixelAspectRatio().m_num; src_params.pix_asr.denominator = default_src_params.PixelAspectRatio().m_denom; src_params.source_sampling = default_src_params.SourceSampling(); src_params.topfieldfirst = default_src_params.TopFieldFirst(); //TODO - Need to accept these params from command line //Set clean area //Set signal range //Set colour specification } static void SetEncoderParameters(dirac_encoder_context_t *enc_ctx, const VideoFormat& video_format) { TEST (enc_ctx != NULL); dirac_encparams_t &encparams = enc_ctx->enc_params; encparams.video_format = static_cast(video_format); // set encoder defaults EncoderParams default_enc_params(video_format); encparams.qf = default_enc_params.Qf(); encparams.cpd = default_enc_params.CPD(); encparams.prefilter = default_enc_params.Prefilter(); encparams.prefilter_strength = default_enc_params.PrefilterStrength(); encparams.L1_sep = default_enc_params.L1Sep(); encparams.lossless = default_enc_params.Lossless(); encparams.using_ac = default_enc_params.UsingAC(); encparams.num_L1 = default_enc_params.NumL1(); // Set rate to zero by default, meaning no rate control encparams.trate = 0; // set default block params OLBParams default_block_params; SetDefaultBlockParameters(default_block_params, video_format); encparams.xblen = default_block_params.Xblen(); encparams.yblen = default_block_params.Yblen(); encparams.xbsep = default_block_params.Xbsep(); encparams.ybsep = default_block_params.Ybsep(); // set default MV parameters encparams.mv_precision = default_enc_params.GetPicPredParams().MVPrecision(); // by default, use hierarchical, not full search encparams.full_search = 0; encparams.x_range_me = 32; encparams.y_range_me = 32; // by default, don't use combined component motion estimation encparams.combined_me = 0; // set default transform parameters WltFilter wf; SetDefaultTransformFilter(INTRA_PICTURE, video_format, wf); encparams.intra_wlt_filter = wf; SetDefaultTransformFilter(INTER_PICTURE, video_format, wf); encparams.inter_wlt_filter = wf; encparams.wlt_depth = default_enc_params.TransformDepth(); encparams.spatial_partition = default_enc_params.SpatialPartition(); encparams.multi_quants = default_enc_params.GetCodeBlockMode() == QUANT_MULTIPLE; encparams.picture_coding_mode = default_enc_params.FieldCoding() ? 1 : 0; } #ifdef __cplusplus extern "C" { #endif extern DllExport void dirac_encoder_context_init ( dirac_encoder_context_t *enc_ctx, dirac_encoder_presets_t preset) { TEST (enc_ctx != NULL); memset (enc_ctx, 0, sizeof(dirac_encoder_context_t)); // preset is the video format int ps = static_cast(preset); VideoFormat video_format(static_cast(ps)); SetSourceParameters (enc_ctx, video_format); SetEncoderParameters (enc_ctx, video_format); } extern DllExport dirac_encoder_t *dirac_encoder_init (const dirac_encoder_context_t *enc_ctx, int verbose) { /* Allocate for encoder */ dirac_encoder_t *encoder = new dirac_encoder_t; memset (encoder, 0, sizeof(dirac_encoder_t)); /* initialse the encoder context */ if (!InitialiseEncoder(enc_ctx, verbose>0, encoder)) { delete encoder; return NULL; } encoder->encoded_picture_avail = encoder->decoded_frame_avail = 0; encoder->instr_data_avail = 0; return encoder; } #if DIRAC_RESEARCH_VERSION_ATLEAST(1,0,2) extern DllExport int dirac_encoder_pts_offset (const dirac_encoder_t *encoder) { TEST (encoder != NULL); TEST (encoder->compressor != NULL); DiracEncoder *compressor = (DiracEncoder *)encoder->compressor; int ret; try { ret = compressor->GetPTSOffset(); } catch (...) { ret = -1; } return ret; } #endif extern DllExport int dirac_encoder_load (dirac_encoder_t *encoder, unsigned char *uncdata, int uncdata_size) { TEST (encoder != NULL); TEST (encoder->compressor != NULL); DiracEncoder *compressor = (DiracEncoder *)encoder->compressor; int ret_stat = 0; try { if ( compressor->LoadNextFrame (uncdata, uncdata_size)) { ret_stat = uncdata_size; } } catch (...) { if (compressor->GetEncParams().Verbose()) std::cerr << "dirac_encoder_load failed" << std::endl; ret_stat = -1; } return ret_stat; } extern DllExport dirac_encoder_state_t dirac_encoder_output (dirac_encoder_t *encoder) { TEST (encoder != NULL); TEST (encoder->compressor != NULL); TEST (encoder->enc_buf.size != 0); TEST (encoder->enc_buf.buffer != NULL); DiracEncoder *compressor = (DiracEncoder *)encoder->compressor; dirac_encoder_state_t ret_stat = ENC_STATE_BUFFER; encoder->encoded_picture_avail = 0; encoder->decoded_frame_avail = 0; encoder->instr_data_avail = 0; try { // Get the next compressed picture if (compressor->CompressNextPicture() != 0) { if (compressor->GetEncodedData (encoder) < 0) ret_stat = ENC_STATE_INVALID; else { if (encoder->enc_buf.size > 0) { ret_stat = ENC_STATE_AVAIL; } } } else { // check if EOS has been signalled by the user app if (compressor->EOS()) { compressor->GetSequenceEnd (encoder); encoder->end_of_sequence = 1; encoder->enc_pparams.pnum = -1; ret_stat = ENC_STATE_EOS; } } if (encoder->enc_ctx.decode_flag) compressor->GetDecodedData(encoder); } catch (...) { if (compressor->GetEncParams().Verbose()) std::cerr << "GetEncodedData failed..." << std::endl; ret_stat = ENC_STATE_INVALID; } return ret_stat; } extern DllExport void dirac_encoder_end_sequence (dirac_encoder_t *encoder) { TEST (encoder != NULL); TEST (encoder->compressor != NULL); DiracEncoder *compressor = (DiracEncoder *)encoder->compressor; encoder->encoded_picture_avail = 0; encoder->decoded_frame_avail = 0; encoder->instr_data_avail = 0; compressor->SignalEOS(); } extern DllExport void dirac_encoder_close (dirac_encoder_t *encoder) { TEST (encoder != NULL); TEST (encoder->compressor != NULL); delete (DiracEncoder *)(encoder->compressor); if (encoder->enc_ctx.instr_flag) { dealloc_instr_data(&encoder->instr); } if (encoder->enc_ctx.decode_flag) { delete [] encoder->dec_buf.buf[0]; } delete encoder; } #ifdef __cplusplus } #endif dirac-1.0.2/libdirac_encoder/prefilter.h0000775000204200017500000000456711005626037015146 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: prefilter.h,v 1.1 2008/04/29 14:09:35 tjdwave Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2008. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author) * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #ifndef _PREFILTER_H_ #define _PREFILTER_H_ #include namespace dirac { /*************************************************************/ //! Denoises an input frame void CWMFilter( Picture& picture, const int strength ); void CWMFilterComponent( PicArray& pic_data, const int strength ); ValueType Median( const ValueType* val_list, const int length); /*************************************************************/ //! Denoises a component void LPFilter( PicArray& pic_data, const float qf, const int strength ); //! Diagonally filters an input component void DiagFilter( PicArray& pic_data, const float qf , const int strength ); } // namespace dirac #endif dirac-1.0.2/libdirac_encoder/picture_compress.cpp0000664000204200017500000005452511135530271017065 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: picture_compress.cpp,v 1.28 2009/01/21 05:20:57 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * Scott R Ladd, * Chris Bowley, * Anuradha Suraparaju, * Tim Borer, * Andrew Kennedy * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ //Compression of pictures// ///////////////////////// #include #include #include #include #include #include #include #include #include #include using namespace dirac; #include #include PictureCompressor::PictureCompressor( EncoderParams& encp ) : m_encparams(encp), m_skipped(false), m_use_global(false), m_use_block_mv(true), m_global_pred_mode(REF1_ONLY), m_me_data(NULL), m_medata_avail(false), m_is_a_cut(false) {} PictureCompressor::~PictureCompressor() {} void PictureCompressor::PixelME( EncQueue& my_buffer , int pnum ) { PixelMatcher pix_match( m_encparams ); pix_match.DoSearch( my_buffer , pnum ); } void PictureCompressor::CalcComplexity( EncQueue& my_buffer, int pnum , const OLBParams& olbparams ) { EncPicture& my_picture = my_buffer.GetPicture( pnum ); PictureParams& pparams = my_picture.GetPparams(); if ( (my_picture.GetStatus()&DONE_PEL_ME) != 0 ){ MEData& me_data = my_picture.GetMEData(); TwoDArray* pcosts1; TwoDArray* pcosts2; pcosts1 = &me_data.PredCosts(1); if (pparams.NumRefs()>1) pcosts2 = &me_data.PredCosts(2); else pcosts2 = pcosts1; float cost1, cost2, cost; double total_cost1 = 0.0; double total_cost2 = 0.0; double total_cost = 0.0; int count1=0;int count=0; float cost_threshold = float(olbparams.Xblen()*olbparams.Yblen()*10); for (int j=4; jLengthY()-4; ++j){ for (int i=4; iLengthX()-4; ++i){ cost1 = (*pcosts1)[j][i].SAD; cost2 = (*pcosts2)[j][i].SAD; cost = std::min(cost1, cost2); total_cost1 += cost1; total_cost2 += cost2; total_cost += cost; if (pparams.NumRefs()>1 && cost<=cost_threshold){ ++count; if (cost1<=cost2) ++count1; } } } total_cost1 *= olbparams.Xbsep()*olbparams.Ybsep(); total_cost1 /= olbparams.Xblen()*olbparams.Yblen(); total_cost2 *= olbparams.Xbsep()*olbparams.Ybsep(); total_cost2 /= olbparams.Xblen()*olbparams.Yblen(); if (pparams.NumRefs()>1){ my_picture.SetPredBias(float(count1)/float(count)); } else my_picture.SetPredBias(0.5); total_cost *= olbparams.Xbsep()*olbparams.Ybsep(); total_cost /= olbparams.Xblen()*olbparams.Yblen(); // my_picture.SetComplexity( total_cost ); my_picture.SetComplexity( total_cost*total_cost ); } } void PictureCompressor::CalcComplexity2( EncQueue& my_buffer, int pnum ) { // to be used after doing motion compensation EncPicture& my_picture = my_buffer.GetPicture( pnum ); const PicArray& pic_data = my_picture.Data( Y_COMP ); if ( (my_picture.GetStatus()&DONE_MC) != 0 ){ float cost; double total_sq_cost = 0.0; double total_cost = 0.0; for (int j=0; j queue_members = my_buffer.Members(); double mean_complexity = 0.0; int count = 0; for (size_t i=0; i= pnum - 10 && n <= pnum + 10){ mean_complexity += enc_pic.GetComplexity(); count++; } } mean_complexity /= count; my_picture.SetNormComplexity( my_picture.GetComplexity() / mean_complexity ); } } void PictureCompressor::SubPixelME( EncQueue& my_buffer , int pnum ) { const std::vector& refs = my_buffer.GetPicture(pnum).GetPparams().Refs(); const int num_refs = refs.size(); PictureParams& pparams = my_buffer.GetPicture(pnum).GetPparams(); MEData& me_data = my_buffer.GetPicture(pnum).GetMEData(); PicturePredParams& predparams = me_data.GetPicPredParams(); float lambda; if ( pparams.IsBPicture()) lambda = m_encparams.L2MELambda(); else lambda = m_encparams.L1MELambda(); //lambda *= my_buffer.GetPicture(pnum).GetNormComplexity(); // Set up the lambda to be used me_data.SetLambdaMap( num_refs , lambda ); m_orig_prec = predparams.MVPrecision(); // Step 2. // Pixel accurate vectors are then refined to sub-pixel accuracy if (m_orig_prec != MV_PRECISION_PIXEL) { SubpelRefine pelrefine( m_encparams ); pelrefine.DoSubpel( my_buffer , pnum ); } else { // FIXME: HACK HACK // Mutiplying the motion vectors by 2 and setting MV precision to // HALF_PIXEL to implement pixel accurate motion estimate MvArray &mv_arr1 = me_data.Vectors(1); for (int j = 0; j < mv_arr1.LengthY(); ++j) { for (int i = 0; i < mv_arr1.LengthX(); ++i) mv_arr1[j][i] = mv_arr1[j][i] << 1; } if (num_refs > 1) { MvArray &mv_arr2 = me_data.Vectors(2); for (int j = 0; j < mv_arr2.LengthY(); ++j) { for (int i = 0; i < mv_arr2.LengthX(); ++i) mv_arr2[j][i] = mv_arr2[j][i] << 1; } } predparams.SetMVPrecision(MV_PRECISION_HALF_PIXEL); } } void PictureCompressor::ModeDecisionME( EncQueue& my_buffer, int pnum ) { MEData& me_data = my_buffer.GetPicture(pnum).GetMEData(); PictureParams& pparams = my_buffer.GetPicture(pnum).GetPparams(); PicturePredParams& predparams = me_data.GetPicPredParams(); ModeDecider my_mode_dec( m_encparams ); my_mode_dec.DoModeDecn( my_buffer , pnum ); const int num_refs = pparams.NumRefs(); if (m_orig_prec == MV_PRECISION_PIXEL) { // FIXME: HACK HACK // Divide the motion vectors by 2 to convert back to pixel // accurate motion vectors and reset MV precision to // PIXEL accuracy MvArray &mv_arr1 = me_data.Vectors(1); for (int j = 0; j < mv_arr1.LengthY(); ++j) { for (int i = 0; i < mv_arr1.LengthX(); ++i) mv_arr1[j][i] = mv_arr1[j][i] >> 1; } if (num_refs > 1) { MvArray &mv_arr2 = me_data.Vectors(2); for (int j = 0; j < mv_arr2.LengthY(); ++j) { for (int i = 0; i < mv_arr2.LengthX(); ++i) mv_arr2[j][i] = mv_arr2[j][i]>>1; } } predparams.SetMVPrecision(MV_PRECISION_PIXEL); } } void PictureCompressor::IntraModeAnalyse( EncQueue& my_buffer, int pnum ) { MEData& me_data = my_buffer.GetPicture(pnum).GetMEData(); // Count the number of intra blocks const TwoDArray& modes = me_data.Mode(); int count_intra = 0; for ( int j=0 ; j( count_intra ) / static_cast( modes.LengthX() * modes.LengthY() ) ); } void PictureCompressor::MotionCompensate( EncQueue& my_buffer, int pnum, AddOrSub dirn ) { EncPicture* my_pic = &my_buffer.GetPicture(pnum); std::vector& my_refs = my_pic->GetPparams().Refs(); Picture* ref_pics[2]; ref_pics[0]=&my_buffer.GetPicture(my_refs[0]); if (my_refs.size()>1) ref_pics[1]=&my_buffer.GetPicture(my_refs[1]); else ref_pics[1]=&my_buffer.GetPicture(my_refs[0]); PicturePredParams& predparams = my_pic->GetMEData().GetPicPredParams(); MotionCompensator::CompensatePicture( predparams , dirn , my_pic->GetMEData() , my_pic, ref_pics ); } void PictureCompressor::Prefilter( EncQueue& my_buffer, int pnum ) { Picture& my_picture = my_buffer.GetPicture( pnum ); for (int c=0; c<3; ++c ){ if ( m_encparams.Prefilter() == RECTLP ) LPFilter( my_picture.Data( (CompSort) c) , m_encparams.Qf(), m_encparams.PrefilterStrength() ); if ( m_encparams.Prefilter() == DIAGLP ) // DiagFilter( my_picture.Data( (CompSort) c), 3.0, 5 ); DiagFilter( my_picture.Data( (CompSort) c) , m_encparams.Qf(), m_encparams.PrefilterStrength() ); } } void PictureCompressor::DoDWT( EncQueue& my_buffer , int pnum, Direction dirn ) { Picture& my_picture = my_buffer.GetPicture( pnum ); PictureParams& pparams = my_picture.GetPparams(); const PictureSort& psort = pparams.PicSort(); // Set the wavelet filter if ( psort.IsIntra() ){ m_encparams.SetTransformFilter( m_encparams.IntraTransformFilter() ); m_encparams.SetUsualCodeBlocks( INTRA_PICTURE ); } else{ m_encparams.SetTransformFilter( m_encparams.InterTransformFilter() ); m_encparams.SetUsualCodeBlocks( INTER_PICTURE ); } const int depth=m_encparams.TransformDepth(); const WltFilter filter = m_encparams.TransformFilter(); WaveletTransform wtransform( depth, filter ); if ( dirn==FORWARD ) my_picture.InitWltData( depth ); for (int c=0; c<3; ++c){ PicArray& comp_data = my_buffer.GetPicture( pnum ).Data((CompSort) c ); CoeffArray& coeff_data = my_buffer.GetPicture( pnum ).WltData((CompSort) c ); wtransform.Transform( dirn , comp_data, coeff_data ); } } void PictureCompressor::CodeResidue( EncQueue& my_buffer , int pnum, PictureByteIO* p_picture_byteio ) { EncPicture& my_picture = my_buffer.GetPicture( pnum ); PictureParams& pparams = my_picture.GetPparams(); if ( !m_skipped ){ // If not skipped we continue with the coding ... if (m_encparams.Verbose() ) std::cout<(m_encparams)); p_picture_byteio->SetTransformData(p_transform_byteio); p_transform_byteio->Output(); /* Code component data */ ///////////////////////// CompCompressor my_compcoder(m_encparams , pparams ); const int depth=m_encparams.TransformDepth(); PicArray* comp_data[3]; CoeffArray* coeff_data[3]; OneDArray* est_bits[3]; float lambda[3]; // Construction and definition of objects for (int c=0;c<3;++c){ comp_data[c] = &my_picture.Data((CompSort) c ); coeff_data[c] = &my_picture.WltData((CompSort) c ); est_bits[c] = new OneDArray( Range( 1, 3*depth+1 ) ); }// c /* Do the wavelet transforms and select the component * quantisers using perceptual weighting */ double cpd_scale; if (pparams.PicSort().IsIntra() ){ cpd_scale = 1.0; } else{ float intra_ratio = my_picture.GetMEData().IntraBlockRatio(); cpd_scale = 5.0*intra_ratio*1.0 + (1.0-5.0*intra_ratio)*0.125; cpd_scale = std::max( 0.125, std::min( 1.2, cpd_scale ) ); } for (int c=0; c<3; ++c){ lambda[c] = GetCompLambda( my_picture, (CompSort) c ); coeff_data[c]->SetBandWeights( m_encparams , pparams, (CompSort) c, cpd_scale); SubbandList& bands = coeff_data[c]->BandList(); SetupCodeBlocks( bands ); SelectQuantisers( *(coeff_data[c]) , bands , lambda[c], *est_bits[c] , m_encparams.GetCodeBlockMode(), pparams, (CompSort) c ); p_transform_byteio->AddComponent( my_compcoder.Compress( *(coeff_data[c]), bands, (CompSort) c, *est_bits[c] ) ); } // Destruction of objects for (int c=0; c<3; ++c) delete est_bits[c]; }//?m_skipped } void PictureCompressor::CodeMVData(EncQueue& my_buffer, int pnum, PictureByteIO* pic_byteio) { // Code the MV data EncPicture& my_picture = my_buffer.GetPicture(pnum); PictureParams& pparams = my_picture.GetPparams(); MvData& mv_data = static_cast (my_picture.GetMEData()); // If we're using global motion parameters, code them if (m_use_global){ /* Code the global motion parameters TBC .... */ } // If we're using block motion vectors, code them if ( m_use_block_mv ){ MvDataByteIO *mv_byteio = new MvDataByteIO(pparams, mv_data.GetPicPredParams()); pic_byteio->SetMvData(mv_byteio); SplitModeCodec smode_coder( mv_byteio->SplitModeData()->DataBlock(), TOTAL_MV_CTXS); smode_coder.Compress( mv_data ); mv_byteio->SplitModeData()->Output(); PredModeCodec pmode_coder( mv_byteio->PredModeData()->DataBlock(), TOTAL_MV_CTXS, pparams.NumRefs() ); pmode_coder.Compress( mv_data ); mv_byteio->PredModeData()->Output(); VectorElementCodec vcoder1h( mv_byteio->MV1HorizData()->DataBlock(), 1, HORIZONTAL, TOTAL_MV_CTXS); vcoder1h.Compress( mv_data ); mv_byteio->MV1HorizData()->Output(); VectorElementCodec vcoder1v( mv_byteio->MV1VertData()->DataBlock(), 1, VERTICAL, TOTAL_MV_CTXS); vcoder1v.Compress( mv_data ); mv_byteio->MV1VertData()->Output(); if ( pparams.NumRefs()>1 ) { VectorElementCodec vcoder2h( mv_byteio->MV2HorizData()->DataBlock(), 2, HORIZONTAL, TOTAL_MV_CTXS); vcoder2h.Compress( mv_data ); mv_byteio->MV2HorizData()->Output(); VectorElementCodec vcoder2v( mv_byteio->MV2VertData()->DataBlock(), 2, VERTICAL, TOTAL_MV_CTXS); vcoder2v.Compress( mv_data ); mv_byteio->MV2VertData()->Output(); } DCCodec ydc_coder( mv_byteio->YDCData()->DataBlock(), Y_COMP, TOTAL_MV_CTXS); ydc_coder.Compress( mv_data ); mv_byteio->YDCData()->Output(); DCCodec udc_coder( mv_byteio->UDCData()->DataBlock(), U_COMP, TOTAL_MV_CTXS); udc_coder.Compress( mv_data ); mv_byteio->UDCData()->Output(); DCCodec vdc_coder( mv_byteio->VDCData()->DataBlock(), V_COMP, TOTAL_MV_CTXS); vdc_coder.Compress( mv_data ); mv_byteio->VDCData()->Output(); mv_byteio->Output(); } } float PictureCompressor::GetCompLambda( const EncPicture& my_picture, const CompSort csort ) { const PictureParams& pparams = my_picture.GetPparams(); const PictureSort psort = pparams.PicSort(); float lambda; if ( psort.IsIntra() ){ if ( m_is_a_cut ) lambda = m_encparams.L1Lambda()/8; else lambda = m_encparams.ILambda(); } else{ double log_intra_lambda = std::log10( m_encparams.ILambda() ); /* double picture_lambda = m_encparams.L1Lambda() / my_picture.GetNormComplexity(); if (pparams.IsBPicture() ) picture_lambda *= 1.2; double log_picture_lambda = std::log10( picture_lambda ); */ ///* double log_picture_lambda; if (pparams.IsBPicture() ) log_picture_lambda= std::log10( m_encparams.L2Lambda() ); else log_picture_lambda= std::log10( m_encparams.L1Lambda() ); //*/ float intra_ratio = my_picture.GetMEData().IntraBlockRatio(); lambda= std::pow(10.0, 3.0*intra_ratio*log_intra_lambda+ (1.0-3.0*intra_ratio)*log_picture_lambda ); //lambda /= my_picture.GetNormComplexity(); } if (csort == U_COMP) lambda*= m_encparams.UFactor(); if (csort == V_COMP) lambda*= m_encparams.VFactor(); return lambda; } void PictureCompressor::SetupCodeBlocks( SubbandList& bands ) { int xregions; int yregions; for (int band_num = 1; band_num<=bands.Length() ; ++band_num){ if (m_encparams.SpatialPartition()){ int level = m_encparams.TransformDepth() - (band_num-1)/3; const CodeBlocks &cb = m_encparams.GetCodeBlocks(level); xregions = cb.HorizontalCodeBlocks(); yregions = cb.VerticalCodeBlocks(); } else{ xregions = 1; yregions = 1; } bands( band_num ).SetNumBlocks( yregions , xregions ); }// band_num } void PictureCompressor::SelectQuantisers( CoeffArray& coeff_data , SubbandList& bands , const float lambda, OneDArray& est_bits, const CodeBlockMode cb_mode, const PictureParams& pp, const CompSort csort ) { // Set up the multiquantiser mode for ( int b=bands.Length() ; b>=1 ; --b ){ // Set multiquants flag in the subband only if // a. Global m_cb_mode flag is set to QUANT_MULTIPLE in encparams // and // b. Current subband has more than one block if ( cb_mode == QUANT_MULTIPLE && (bands(b).GetCodeBlocks().LengthX() > 1 || bands(b).GetCodeBlocks().LengthY() > 1) ) bands(b).SetUsingMultiQuants( true ); else bands(b).SetUsingMultiQuants( false ); }// b // Select all the quantizers if ( !m_encparams.Lossless() ){ // Set quantizers for all bands. for ( int b=bands.Length() ; b>=1 ; --b ) est_bits[b] = SelectMultiQuants( coeff_data , bands , b, lambda, pp, csort ); } else{ for ( int b=bands.Length() ; b>=1 ; --b ){ bands(b).SetQuantIndex( 0 ); est_bits[b] = 0; TwoDArray& blocks = bands(b).GetCodeBlocks(); for (int j=0; j='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # 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' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); 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 lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); 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"')dnl " lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` ;; esac _LT_OUTPUT_LIBTOOL_INIT ]) # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2008 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) fi ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [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. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### 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 _LT_PROG_LTMAIN # 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) _LT_PROG_XSI_SHELLFNS 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" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # 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 ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl 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* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl 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* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [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" >&AS_MESSAGE_LOG_FD $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 >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) 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 ]) # _LT_DARWIN_LINKER_FEATURES # -------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(whole_archive_flag_spec, $1)='' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="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}" _LT_TAGVAR(module_expsym_cmds, $1)="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}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX # ----------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ 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],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. m4_defun([_LT_PROG_ECHO_BACKSLASH], [_LT_SHELL_INIT([ # 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 AC_SUBST(lt_ECHO) ]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that does not interpret backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) 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 AC_TRY_EVAL(ac_compile); 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 __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); 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 AC_TRY_EVAL(ac_compile); 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" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) 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 AC_TRY_EVAL(ac_compile); 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" ])# _LT_ENABLE_LOCK # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [AC_CHECK_TOOL(AR, ar, false) test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1]) AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # 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 _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # 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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD 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 $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" 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>&AS_MESSAGE_LOG_FD $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 $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl 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* | cegcc*) # 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 ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line __oline__ "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #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 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 ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl 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* | cegcc*) 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 AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; 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" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) 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 _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD 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_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $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* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) 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 AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [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]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != 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, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = 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 _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) 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" AC_MSG_RESULT([yes]) 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" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ 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.so # instead of lib.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* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) 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* | cegcc*) # 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`' m4_if([$1], [],[ 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_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [shlibpath_overrides_runpath=yes])]) 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_names_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 AC_MSG_RESULT([$dynamic_linker]) 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 _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[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]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [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 dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" 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]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) 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 AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [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 &1 /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 ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; 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 ]) 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 _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method == "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [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]) 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. AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # 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* | cegcc*) 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 AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && 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_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && 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" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD 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 ]) 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 AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # 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 m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-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_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # 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 m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-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_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # 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). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-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_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # 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 _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # 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'. _LT_TAGVAR(exclude_expsyms, $1)=['_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. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # 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 _LT_TAGVAR(ld_shlibs, $1)=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 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${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 _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= 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 _LT_TAGVAR(ld_shlibs, $1)=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 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$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)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$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 _LT_TAGVAR(archive_cmds, $1)='$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... _LT_TAGVAR(archive_expsym_cmds, $1)='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 _LT_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${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. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='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 _LT_TAGVAR(whole_archive_flag_spec, $1)='${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 _LT_TAGVAR(whole_archive_flag_spec, $1)='${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' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; 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 _LT_TAGVAR(whole_archive_flag_spec, $1)='${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' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='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 _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='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 _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$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 _LT_TAGVAR(ld_shlibs, $1)=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 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=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 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$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. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=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 _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$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. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${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 _LT_TAGVAR(hardcode_direct, $1)=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 _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= 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 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=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. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$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 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$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. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${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. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$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 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$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)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # 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. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=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. _LT_TAGVAR(archive_cmds, $1)='$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. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $1)=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*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$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 _LT_TAGVAR(archive_cmds, $1)='$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 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$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*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$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 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$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" AC_LINK_IFELSE(int foo(void) {}, _LT_TAGVAR(archive_expsym_cmds, $1)='$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' ) LDFLAGS="$save_LDFLAGS" else _LT_TAGVAR(archive_cmds, $1)='$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' _LT_TAGVAR(archive_expsym_cmds, $1)='$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 _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$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' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$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 _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$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 _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$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' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$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' _LT_TAGVAR(archive_expsym_cmds, $1)='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 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='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='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='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}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='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 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=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 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=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. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$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. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) 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. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then _LT_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], [[If ld is used when linking, flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [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]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [fix_srcfile_path], [1], [Fix the shell variable $srcfile for the compiler]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$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);}' _LT_TAG_COMPILER # 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 _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) 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 AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_PROG_CXX # ------------ # Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ # compiler, we have our own version here. m4_defun([_LT_PROG_CXX], [ pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) AC_PROG_CXX if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_CXX dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_CXX], []) # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [AC_REQUIRE([_LT_PROG_CXX])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # 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(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; 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 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 case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac 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. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = 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 _LT_TAGVAR(hardcode_direct, $1)=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 _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= 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 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=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. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$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 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$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. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${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. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$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 ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $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... _LT_TAGVAR(archive_expsym_cmds, $1)='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 -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${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. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='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' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $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 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${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' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $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' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=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'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; 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. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ]) dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_PROG_F77 # ------------ # Since AC_PROG_F77 is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_F77], [ pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) AC_PROG_F77 if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_F77 dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_F77], []) # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_REQUIRE([_LT_PROG_F77])dnl AC_LANG_PUSH(Fortran 77) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${F77-"f77"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) 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 AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_PROG_FC # ----------- # Since AC_PROG_FC is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_FC], [ pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) AC_PROG_FC if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_FC dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_FC], []) # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_REQUIRE([_LT_PROG_FC])dnl AC_LANG_PUSH(Fortran) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${FC-"f95"} compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) 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 AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC="$lt_save_CC" ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC= CC=${RC-"windres"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC="$lt_save_CC" ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # 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 AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # 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 _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_XSI_SHELLFNS # --------------------- # Bourne and XSI compatible variants of some useful shell functions. m4_defun([_LT_PROG_XSI_SHELLFNS], [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"` } dnl func_dirname_and_basename dnl A portable version of this function is already defined in general.m4sh dnl so there is no need for it here. # 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 ]) # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [0], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [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], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [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], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [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], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # Generated from ltversion.in. # serial 3012 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.2.6]) m4_define([LT_PACKAGE_REVISION], [1.3012]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.6' macro_revision='1.3012' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 4 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.10' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.10.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.10.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [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_$1_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_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 3 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; 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")` 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_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 13 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.60])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) 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 AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _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"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [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 AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [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. AC_MSG_CHECKING([for style of include used by $am_make]) 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 AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl 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= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # 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". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # 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. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/acinclude.m4]) m4_include([m4/ax_create_stdint_h.m4]) dirac-1.0.2/Makefile.in0000664000204200017500000005572511144426513011576 00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # $Id: Makefile.am,v 1.22 2008/10/01 05:33:56 asuraparaju Exp $ # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/dirac.pc.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ TODO config.guess config.sub depcomp install-sh ltmain.sh \ missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = dirac.pc SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pkgconfigdir)" pkgconfigDATA_INSTALL = $(INSTALL_DATA) DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = libdirac_byteio libdirac_common libdirac_motionest \ libdirac_encoder libdirac_decoder encoder decoder util \ unit_tests tests doc win32 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOM4TE = @AUTOM4TE@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GENERIC_LIBRARY_NAME = @GENERIC_LIBRARY_NAME@ GENERIC_LIBRARY_VERSION = @GENERIC_LIBRARY_VERSION@ GENERIC_RELEASE = @GENERIC_RELEASE@ GENERIC_VERSION = @GENERIC_VERSION@ GREP = @GREP@ HAVE_DOT = @HAVE_DOT@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ HAVE_DVIPDFM = @HAVE_DVIPDFM@ HAVE_LATEX = @HAVE_LATEX@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXT = @LIBEXT@ LIBFLAGS = @LIBFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = libdirac_byteio libdirac_common libdirac_motionest libdirac_encoder \ libdirac_decoder encoder decoder util $(CPPUNITTESTS_DIR) \ tests $(DOC_DIR) win32 @HAVE_DOXYGEN_FALSE@DOC_DIR = @HAVE_DOXYGEN_TRUE@DOC_DIR = doc @HAVE_CPPUNIT_TRUE@CPPUNITTESTS_DIR = unit_tests EXTRA_DIST = bootstrap pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = dirac.pc all: all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ cd $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) dirac.pc: $(top_builddir)/config.status $(srcdir)/dirac.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" @list='$(pkgconfig_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d $(distdir) || mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \ distclean distclean-generic distclean-libtool distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkgconfigDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-pkgconfigDATA .PHONY: valgrind-check valgrind-check: cd tests && $(MAKE) $(AM_MAKEFLAGS) $@ .PHONY: codec codec: for dir in "libdirac_common" "libdirac_byteio" "libdirac_motionest" "libdirac_encoder" "libdirac_decoder"; do (cd $$dir && $(MAKE) $(AM_MAKEFLAGS)) ; done cd encoder && $(MAKE) $(AM_MAKEFLAGS) cd decoder && $(MAKE) $(AM_MAKEFLAGS) .PHONY: codec-check codec-check: for dir in "libdirac_common" "libdirac_byteio" "libdirac_motionest" "libdirac_encoder" "libdirac_decoder"; do (cd $$dir && $(MAKE) $(AM_MAKEFLAGS)) ; done cd encoder && $(MAKE) $(AM_MAKEFLAGS) cd decoder && $(MAKE) $(AM_MAKEFLAGS) cd util/instrumentation && $(MAKE) $(AM_MAKEFLAGS) @HAVE_CPPUNIT_TRUE@ cd unit_tests && $(MAKE) $(AM_MAKEFLAGS) cd tests && $(MAKE) $(AM_MAKEFLAGS) cd tests && $(MAKE) $(AM_MAKEFLAGS) check .PHONY: encoder encoder: for dir in "libdirac_common" "libdirac_byteio" "libdirac_motionest" "libdirac_encoder" ; do (cd $$dir && $(MAKE) $(AM_MAKEFLAGS)) ; done cd encoder && $(MAKE) $(AM_MAKEFLAGS) .PHONY: decoder decoder: for dir in "libdirac_common" "libdirac_byteio" "libdirac_decoder" ; do (cd $$dir && $(MAKE) $(AM_MAKEFLAGS)) ; done cd decoder && $(MAKE) $(AM_MAKEFLAGS) .PHONY: instrumentation instrumentation: for dir in "libdirac_common" "libdirac_byteio" "libdirac_motionest" "libdirac_encoder" ; do (cd $$dir && $(MAKE) $(AM_MAKEFLAGS)) ; done cd util/instrumentation && $(MAKE) $(AM_MAKEFLAGS) .PHONY: conversion conversion: for dir in "libdirac_common" "libdirac_encoder" ; do (cd $$dir && $(MAKE) $(AM_MAKEFLAGS)) ; done cd util/conversion && $(MAKE) $(AM_MAKEFLAGS) .PHONY: unit_tests unit_tests: for dir in "libdirac_common" "libdirac_byteio" "libdirac_motionest" "libdirac_encoder" "libdirac_decoder"; do (cd $$dir && $(MAKE) $(AM_MAKEFLAGS)) ; done cd unit_tests && $(MAKE) $(AM_MAKEFLAGS) .PHONY: doc doc: cd doc && $(MAKE) $(AM_MAKEFLAGS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: dirac-1.0.2/dirac.pc.in0000664000204200017500000000051111121601077011516 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: @GENERIC_LIBRARY_NAME@ Description: The BBC Dirac Video Codec Version: @VERSION@ Libs: -L${libdir} -l@GENERIC_LIBRARY_NAME@_encoder -l@GENERIC_LIBRARY_NAME@_decoder @CONFIG_MATH_LIB@ -lstdc++ Cflags: -I${includedir}/@GENERIC_LIBRARY_NAME@ dirac-1.0.2/encoder/0000777000204200017500000000000011144427343011216 500000000000000dirac-1.0.2/encoder/Makefile.in0000664000204200017500000003723411144426511013206 00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # $Id: Makefile.am,v 1.12 2008/05/06 09:35:51 asuraparaju Exp $ # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = dirac_encoder$(EXEEXT) subdir = encoder DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_dirac_encoder_OBJECTS = encmain.$(OBJEXT) dirac_encoder_OBJECTS = $(am_dirac_encoder_OBJECTS) dirac_encoder_LDADD = $(LDADD) am__DEPENDENCIES_1 = @USE_MSVC_FALSE@dirac_encoder_DEPENDENCIES = \ @USE_MSVC_FALSE@ ../libdirac_encoder/libdirac_encoder.la \ @USE_MSVC_FALSE@ $(am__DEPENDENCIES_1) @USE_MSVC_TRUE@dirac_encoder_DEPENDENCIES = \ @USE_MSVC_TRUE@ ../libdirac_encoder/libdirac_encoder.a \ @USE_MSVC_TRUE@ ../libdirac_common/libdirac_common.a \ @USE_MSVC_TRUE@ ../libdirac_motionest/libdirac_motionest.a \ @USE_MSVC_TRUE@ ../libdirac_byteio/libdirac_byteio.a dirac_encoder_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(dirac_encoder_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(dirac_encoder_SOURCES) DIST_SOURCES = $(dirac_encoder_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOM4TE = @AUTOM4TE@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CONFIG_MATH_LIB = @CONFIG_MATH_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GENERIC_LIBRARY_NAME = @GENERIC_LIBRARY_NAME@ GENERIC_LIBRARY_VERSION = @GENERIC_LIBRARY_VERSION@ GENERIC_RELEASE = @GENERIC_RELEASE@ GENERIC_VERSION = @GENERIC_VERSION@ GREP = @GREP@ HAVE_DOT = @HAVE_DOT@ HAVE_DOXYGEN = @HAVE_DOXYGEN@ HAVE_DVIPDFM = @HAVE_DVIPDFM@ HAVE_LATEX = @HAVE_LATEX@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXT = @LIBEXT@ LIBFLAGS = @LIBFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ INCLUDES = -I$(top_srcdir) -I$(top_builddir) dirac_encoder_SOURCES = encmain.cpp @USE_MSVC_FALSE@LDADD = ../libdirac_encoder/libdirac_encoder.la $(CONFIG_MATH_LIB) @USE_MSVC_TRUE@LDADD = ../libdirac_encoder/libdirac_encoder.a ../libdirac_common/libdirac_common.a ../libdirac_motionest/libdirac_motionest.a ../libdirac_byteio/libdirac_byteio.a @USE_MSVC_FALSE@@USE_STATIC_TRUE@dirac_encoder_LDFLAGS = $(LDFLAGS) -static @USE_MSVC_TRUE@CLEANFILES = *.pdb *.ilk all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign encoder/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign encoder/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ || test -f $$p1 \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done dirac_encoder$(EXEEXT): $(dirac_encoder_OBJECTS) $(dirac_encoder_DEPENDENCIES) @rm -f dirac_encoder$(EXEEXT) $(dirac_encoder_LINK) $(dirac_encoder_OBJECTS) $(dirac_encoder_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encmain.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-binPROGRAMS install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: dirac-1.0.2/encoder/encmain.cpp0000664000204200017500000012550111101746576013263 00000000000000 /* ***** BEGIN LICENSE BLOCK ***** * * $Id: encmain.cpp,v 1.86 2008/10/29 02:42:06 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * Scott R Ladd, * Anuradha Suraparaju, * Andrew Kennedy, * David Flynn, * Johannes Reinhardt, * Myo Tun (Brunel University) * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int VIDEO_BUFFER_SIZE = 32*1024*1024; unsigned char video_buf[VIDEO_BUFFER_SIZE]; static void display_help() { cout << "\nDIRAC wavelet video coder."; cout << "\n"; cout << "\nUsage: progname - [] ... "; cout << "\nIn case of multiple assignment to the same parameter, the last holds."; cout << "\n"; cout << "\nName Type Default Value Description"; cout << "\n==== ==== ============= =========== "; cout << "\nQSIF525 bool false Use QSIF compression presets"; cout << "\nQCIF bool false Use QCIF compression presets"; cout << "\nSIF525 bool false Use SIF compression presets"; cout << "\nCIF bool false Use CIF compression presets"; cout << "\n4CIF bool false Use 4CIF compression presets"; cout << "\n4SIF525 bool false Use 4SIF compression presets"; cout << "\nSD480I60 bool false Use SD-480 compression presets"; cout << "\nSD576I50 bool false Use SD-576 compression presets"; cout << "\nHD720P60 bool false Use HD-720P60 compression presets"; cout << "\nHD720P50 bool false Use HD-720P50 compression presets"; cout << "\nHD1080I60 bool false Use HD-1080I60 compression presets"; cout << "\nHD1080I50 bool false Use HD-1080I50 compression presets"; cout << "\nHD1080P60 bool false Use HD-1080P60 compression presets"; cout << "\nHD1080P50 bool false Use HD-1080P50 compression presets"; cout << "\nUHDTV4K60 bool false Use UHDTV 4K60 compression presets"; cout << "\nUHDTV4K50 bool false Use UHDTV 4K50 compression presets"; cout << "\nUHDTV8K60 bool false Use UHDTV 8K60 compression presets"; cout << "\nUHDTV8K50 bool false Use UHDTV 8K50 compression presets"; cout << "\nDC2K24 bool false Use DIGITAL CINEMA 2K compression presets"; cout << "\nDC4K24 bool false Use DIGITAL CINEMA 4K compression presets"; cout << "\nfull_search ulong ulong 0UL 0UL Use full search motion estimation"; cout << "\ncombined_me bool false Use a combination of all 3 components to do ME"; cout << "\nwidth ulong Preset Width of frame"; cout << "\nheight ulong Preset Length of frame"; cout << "\nheight ulong Preset Length of frame"; cout << "\ncformat string YUV444P Chroma Sampling Format (YUV444P YUV422P YUV420P)"; cout << "\nfr ulong Preset Frame rate(s) (e.n or e/n format)"; cout << "\nsource_sampling string progressive source material type either progressive or interlaced"; cout << "\nstart ulong 0UL Frame number to start encoding from"; cout << "\nstop ulong EOF Frame number after which encoding finishes"; cout << "\nfield_coding bool false Set picture coding type to field coding. Default coding type is by frames"; cout << "\nL1_sep ulong 0UL Separation of L1 frames"; cout << "\nnum_L1 ulong 0UL Number of L1 frames"; cout << "\nxblen ulong 0UL Overlapping block horizontal length"; cout << "\nyblen ulong 0UL Overlapping block vertical length"; cout << "\nxbsep ulong 0UL Overlapping block horizontal separation"; cout << "\nybsep ulong 0UL Overlapping block vertical separation"; cout << "\ncpd ulong 0UL Perceptual weighting - vertical cycles per deg."; cout << "\nqf float 0.0F Overall quality factor (>0, typically: 7=medium, 9=high)"; cout << "\ntargetrate ulong 0UL Target Bit Rate in Kbps"; cout << "\nlossless bool false Lossless coding (overrides qf)"; cout << "\niwlt_filter string DD13_7 Intra frame Transform Filter (DD9_7 LEGALL5_3 DD13_7 HAAR0 HAAR1 FIDELITY DAUB9_7)"; cout << "\nrwlt_filter string DD13_7 Inter frame Transform Filter (DD9_7 LEGALL5_3 DD13_7 HAAR0 HAAR1 FIDELITY DAUB9_7)"; cout << "\nwlt_depth ulong 4 Transform Depth"; cout << "\nmulti_quants bool false Use multiple quantisers"; cout << "\nmv_prec string false MV Pixel Precision (1, 1/2, 1/4, 1/8)"; cout << "\nno_spartition bool false Do not use spatial partitioning while coding transform data"; cout << "\nprefilter string/int NO_PF 0 Prefilter input giving filter name (NO_PF, CWM, RECTLP, DIAGLP) and strength (0-10)"; cout << "\nuse_vlc bool false Use VLC for entropy coding of coefficients"; cout << "\nlocal bool false Write diagnostics & locally decoded video"; cout << "\nverbose bool false Verbose mode"; cout << "\nh|help bool false Display help message"; cout << "\ninput string [ required ] Input file name"; cout << "\noutput string [ required ] Output file name [May not be '-']"; cout << endl; } bool WritePicData (std::ofstream &fdata, dirac_encoder_t *encoder) { dirac_sourceparams_t &sparams = encoder->enc_ctx.src_params; dirac_framebuf_t &fbuf = encoder->dec_buf; bool ret_stat = true; if (encoder->decoded_frame_avail) { ios::iostate oldExceptions = fdata.exceptions(); fdata.exceptions (ios::failbit | ios::badbit); try { assert (fbuf.buf[0] != 0); fdata.write ((char *)fbuf.buf[0], sparams.width*sparams.height); assert (fbuf.buf[1] != 0); assert (fbuf.buf[2] != 0); fdata.write ((char *)fbuf.buf[1], sparams.chroma_width*sparams.chroma_height); fdata.write ((char *)fbuf.buf[2], sparams.chroma_width*sparams.chroma_height); } catch (...) { std::cout << "Incomplete frame " << std::endl; ret_stat = false; } fdata.exceptions (oldExceptions); } return ret_stat; } bool WriteDiagnosticsHeader (std::ofstream &fdata, dirac_encoder_t *encoder) { bool ret_stat = true; dirac_sourceparams_t &srcparams = encoder->enc_ctx.src_params; ios::iostate oldExceptions = fdata.exceptions(); fdata.exceptions (ios::failbit | ios::badbit); try { fdata << srcparams.chroma << std::endl; fdata << srcparams.width << std::endl; fdata << srcparams.height << std::endl; fdata << srcparams.source_sampling << std::endl; fdata << srcparams.topfieldfirst << std::endl; fdata << srcparams.frame_rate.numerator << std::endl; fdata << srcparams.frame_rate.denominator << std::endl; fdata << srcparams.pix_asr.numerator << std::endl; fdata << srcparams.pix_asr.denominator << std::endl; fdata << encoder->enc_ctx.enc_params.picture_coding_mode << std::endl; } catch (...) { std::cerr << "Error writing sequence info in diagnostics file." << std::endl; ret_stat = false; } fdata.exceptions (oldExceptions); return ret_stat; } bool WriteDiagnosticsData (std::ofstream &fdata, dirac_encoder_t *encoder) { dirac_instr_t &instr = encoder->instr; bool ret_stat = true; if (encoder->instr_data_avail) { ios::iostate oldExceptions = fdata.exceptions(); fdata.exceptions (ios::failbit | ios::badbit); try { fdata << std::endl << "[frame:" << instr.pnum << "]"; if (instr.ptype == INTRA_PICTURE) { fdata << ">intra" << std::endl; return true; } fdata << ">mo_comp"; fdata << std::endl << std::endl << instr.num_refs << " "; for (int i=0; i 1) { for (int j=0; j 4) cerr << "Exceeds maximum transform depth "; else parsed[i] = true; #else parsed[i] = true; #endif } else if ( strcmp(argv[i], "-iwlt_filter") == 0 ) { parsed[i] = true; i++; WltFilter wf = StringToTransformFilter(string(argv[i])); if (wf == filterNK) cerr << "Unrecognised Intra Wavelet Filter " << argv[i]; else parsed[i] = true; enc_ctx.enc_params.intra_wlt_filter = wf; } else if ( strcmp(argv[i], "-rwlt_filter") == 0 ) { parsed[i] = true; i++; WltFilter wf = StringToTransformFilter(argv[i]); if (wf == filterNK) cerr << "Unrecognised Intra Wavelet Filter " << argv[i]; else parsed[i] = true; enc_ctx.enc_params.inter_wlt_filter = wf; } else if ( strcmp(argv[i], "-mv_prec") == 0 ) { parsed[i]=true; ++i; if(strcmp(argv[i], "1/2")==0) { parsed[i] = true; enc_ctx.enc_params.mv_precision = MV_PRECISION_HALF_PIXEL; } else if(strcmp(argv[i], "1/4")==0) { parsed[i] = true; enc_ctx.enc_params.mv_precision = MV_PRECISION_QUARTER_PIXEL; } else if(strcmp(argv[i], "1/8")==0) { parsed[i] = true; enc_ctx.enc_params.mv_precision = MV_PRECISION_EIGHTH_PIXEL; } else if(strncmp(argv[i], "1", 3)==0) { parsed[i] = true; enc_ctx.enc_params.mv_precision = MV_PRECISION_PIXEL; } } i++; }//opt // FIXME: currently only supporting vlc coding for iframe-only // sequences if (enc_ctx.enc_params.num_L1 != 0 && enc_ctx.enc_params.using_ac == 0) { std::cerr<enc_buf.buffer = video_buf; encoder->enc_buf.size = VIDEO_BUFFER_SIZE; state = dirac_encoder_output ( encoder ); switch (state) { case ENC_STATE_AVAIL: assert (encoder->enc_buf.size > 0); outfile.write((char *)encoder->enc_buf.buffer, encoder->enc_buf.size); break; case ENC_STATE_BUFFER: break; case ENC_STATE_EOS: outfile.write((char *)encoder->enc_buf.buffer, encoder->enc_buf.size); go = false; break; case ENC_STATE_INVALID: std::cerr << "Invalid state. Unrecoverable Encoder Error. Quitting..." << std::endl; return EXIT_FAILURE; default: std::cerr << "Unknown Encoder state" << endl; break; } WritePicData (*outyuv, encoder); WriteDiagnosticsData (*outimt, encoder); } while (state == ENC_STATE_AVAIL); } while (go); stop_t = clock(); if ( verbose ) std::cout << "The resulting bit-rate at " << (double)encoder->enc_ctx.src_params.frame_rate.numerator/ encoder->enc_ctx.src_params.frame_rate.denominator << "Hz is " << encoder->enc_seqstats.bit_rate << " bits/sec." << std::endl; if ( verbose ) { std::cout<<"Time per frame: "<< (double)(stop_t-start_t)/(double)(CLOCKS_PER_SEC*frames_loaded); std::cout<close(); delete outyuv; } // close the decoded output header file if (outimt) { outimt->close(); delete outimt; } // close the pic data file ip_pic_ptr.close(); // delete frame buffer delete [] frame_buf; return EXIT_SUCCESS; } dirac-1.0.2/encoder/Makefile.am0000664000204200017500000000104111010023167013150 00000000000000# $Id: Makefile.am,v 1.12 2008/05/06 09:35:51 asuraparaju Exp $ # INCLUDES = -I$(top_srcdir) -I$(top_builddir) bin_PROGRAMS = dirac_encoder dirac_encoder_SOURCES = encmain.cpp if USE_MSVC LDADD = ../libdirac_encoder/libdirac_encoder.a ../libdirac_common/libdirac_common.a ../libdirac_motionest/libdirac_motionest.a ../libdirac_byteio/libdirac_byteio.a else LDADD = ../libdirac_encoder/libdirac_encoder.la $(CONFIG_MATH_LIB) if USE_STATIC dirac_encoder_LDFLAGS = $(LDFLAGS) -static else endif endif if USE_MSVC CLEANFILES = *.pdb *.ilk endif dirac-1.0.2/README0000664000204200017500000004670111144143575010407 00000000000000README for the Dirac video codec ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ by the BBC R&D Dirac team (diracinfo@rd.bbc.co.uk) 1. Executive Summary ~~~~~~~~~~~~~~~~~~~~ Dirac is an open source video codec. It uses a traditional hybrid video codec architecture, but with the wavelet transform instead of the usual block transforms. Motion compensation uses overlapped blocks to reduce block artefacts that would upset the transform coding stage. Dirac can code just about any size of video, from streaming up to HD and beyond, although certain presets are defined for different applications and standards. These cover the parameters that need to be set for the encoder to work, such as block sizes and temporal prediction structures, which must otherwise be set by hand. Dirac is intended to develop into real coding and decoding software, capable of plugging into video processing applications and media players that need compression. It is intended to develop into a simple set of reliable but effective coding tools that work over a wide variety of content and formats, using well-understood compression techniques, in a clear and accessible software structure. It is not intended as a demonstration or reference coder. 2. Documentation ~~~~~~~~~~~~~~~~ Documentation can be found at http://diracvideo.org/wiki/index.php/Main_Page#Documentation 3. Building and installing ~~~~~~~~~~~~~~~~~~~~~~~~~~ GNU/Linux, Unix, MacOS X, Cygwin, Mingw --------------------------------------- ./configure --enable-debug (to enable extra debug compile options) OR ./configure --enable-profile (to enable the g++ profiling flag -pg) OR ./configure --disable-mmx (to disable MMX optimisation which is enabled by default) OR ./configure --enable-debug --enable-profile (to enable extra debug compile options and profiling options) OR ./configure By default, both shared and static libraries are built. To build all-static libraries use ./configure --disable-shared To build shared libraries only use ./configure --disable-static make make install The INSTALL file documents arguments to ./configure such as --prefix=/usr/local (specify the installation location prefix). MSYS and Microsoft Visual C++ ----------------------------- Download and install the no-cost Microsoft Visual C++ 2008 Express Edition from http://msdn.microsoft.com/vstudio/express/visualc/ Download and install MSYS (the MinGW Minimal SYStem), MSYS-1.0.10.exe, from http://www.mingw.org/download.shtml. An MSYS icon will be available on the desktop. Click on the MSYS icon on the desktop to open a MSYS shell window. Create a .profile file to set up the environment variables required. vi .profile Include the following four lines in the .profile file. PATH=/c/Program\ Files/Microsoft\ Visual\ Studio\ 9.0/Common7/IDE:/c/Program\ Files/Microsoft\ Visual\ Studio\ 9.0/VC/BIN:/c/Program\ Files/Microsoft\ Visual\ Studio\ 9.0/Common7/Tools:/c/WINDOWS/Microsoft.NET/Framework/v3.5:/c/WINDOWS/Microsoft.NET/Framework/v2.0.50727:/c/Program\ Files/Microsoft\ Visual\ Studio\ 9.0/VC/VCPackages:$PATH INCLUDE=/c/Program\ Files/Microsoft\ Visual\ Studio\ 9.0/VC/INCLUDE:$INCLUDE LIB=/c/Program\ Files/Microsoft\ Visual\ Studio\ 9.0/VC/LIB:$LIB LIBPATH=/c/WINDOWS/Microsoft.NET/Framework/v3.5:/c/WINDOWS/Microsoft.NET/Framework/v2.0.50727:/c/Program\ Files/Microsoft\ Visual\ Studio\ 9.0/VC/LIB:$LIBPATH (Replace /c/Program\ Files/Microsoft\ Visual\ Studio\ 9/ with the location where VC++ 2008 is installed if necessary) Exit from the MSYS shell and click on the MSYS icon on the desktop to open a new MSYS shell window for the .profile to take effect. Change directory to the directory where Dirac was unpacked. By default only the dynamic libraries are built. ./configure CXX=cl LD=cl --enable-debug (to enable extra debug compile options) OR ./configure CXX=cl LD=cl --disable-shared (to build static libraries) OR ./configure CXX=cl LD=cl make make install The INSTALL file documents arguments to ./configure such as --prefix=/usr/local (specify the installation location prefix). Microsoft Visual C++ .NET 2008 ------------------------------ Download and install the no-cost Microsoft Visual C++ 2008 Express Edition from http://www.microsoft.com/express/download/ The MS VC++ 2008 solution and project files are in win32/VisualStudio directory. Double-click on the solution file, dirac.sln, in the win32/VisualStudio directory. The target 'Everything' builds the codec libraries and utilities. Four build-types are supported Debug - builds unoptimised encoder and decoder dlls with debug symbols Release - builds optimised encoder and decoder dlls Debug-mmx - builds unoptimised encoder and decoder dlls with debug symbols and mmx optimisations enabled. Release-mmx - builds optimised encoder and decoder dlls with mmx optimisations enabled. Static-Debug - builds unoptimised encoder and decoder static libraries with debug symbols Static-Release - builds optimised encoder and decoder static libraries Static-Debug-mmx - builds unoptimised encoder and decoder static libraries with debug symbols and mmx optmisations enabled. Static-Release-mmx - builds optimised encoder and decoder static libraries with mmx optmisations enabled. Static libraries are created in the win32/VisualStudio/build/lib/ directory. Encoder and Decoder dlls and import libraries, encoder and decoder apps are created in the win32/VisualStudio/build/bin/ directory. The "C" public API is exported using the _declspec(dllexport) mechanism. Conversion utilites are created in the win32/VisualStudio/build/utils/conversion/ directory. Only static versions are built. Instrumentation utility is created in the win32/VisualStudio/build/utils/instrumentation/ directory. Only static versions are built. Older editions of Microsoft Visual C++ (e.g. 2003 and 2005) ----------------------------------------------------------- NOTE: Since Visual C++ 2008 Express edition is freely available to download, older versions of the Visual C++ editions are no longer supported. So it is suggested that the users upgrade their VC++ environment to VC++ 2008. 4. Running the example programs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4.1 Command-line parameters At the moment there is a simple command-line parser class which is used in all the executables. The general procedure for running a program is to type: prog_name - flag_val ... param1 param2 ... In other words, options are prefixed by a dash; some options take values, while others are boolean options that enable specific features. For example: When running the encoder, the -qf options requires a numeric argument specifying the "quality factor" for encoding. The -verbose option enables detailed output and does not require an argument. Running any program without arguments will display a list of parameters and options. 4.2 File formats The example coder and decoder use raw 8-bit planar YUV data. This means that data is stored bytewise, with a frame of Y followed by a frame of U followed by a frame of V, all scanned in the usual raster order. The video dimensions , frame rate and chroma are passed to the encoder via command line arguments. Other file formats are supported by means of conversion utilities that may be found in the subdirectory util/conversion. These will convert to and from raw RGB format, and support all the standard raw YUV formats as well as bitmaps. Raw RGB can be obtained as an output from standard conversion utilities such as ImageMagick. Example. Compress an image sequence of 100 frames of 352x288 video in tiff format. Step 1. Use your favourite conversion routine to produce a single raw RGB file of all the data. If your routine converts frame-by-frame then you will need to concatenate the output. Step 2. Convert from RGB to the YUV format of your choice. For example, to do 420, type RGBtoYUV420 file.yuv 352 288 100 Note that this uses stdin and stdout to read and write the data. We have provided a script create_test_data.pl to help convert rgb format files into all the input formats supported by Dirac. The command line arguments it supports can be listed using create_test_data.pl -use Sample usage is create_test_data.pl -width=352 -height=288 -num_frames=100 file.rgb (This assumes that the RGBtoYUV utilities are in a directory specified in PATH variable. If not in the path, then use options -convutildir and to set the directories where the script can find the conversion utilities.) The scripts then outputs files in all chroma formats (420, 422, 444) supported by Dirac to the current directory. Step 4. Run the encoder. This will produce a locally decoded output in the same format if the locally decoded output is enabled using the -local flag. Step 5. Convert back to RGB. YUV420toRGB file.rgb 352 288 100 Step 6. Use your favourite conversion utility to convert to the format of your choice. You can also use the transcode utility to convert data to and from Dirac's native formats (see http://zebra.fh-weingarten.de/~transcode/): This example uses a 720x576x50 DV source, and transcodes to 720x576 YUV in 4:2:0 chroma format. Cascading codecs (DV + Dirac) is generally a bad idea - use this only if you don't have any other source of uncompressed video. transcode -i source.dv -x auto,null --dv_yuy2_mode -k -V -y raw,null -o file.avi tcextract -i test.avi -x rgb > file.yuv Viewing and playback utilities for uncompressed video include MPlayer and ImageMagick's display command. Continuing the 352x288 4:2:0 example above, to display a single frame of raw YUV with ImageMagick use the following (use to see subsequent frames): display -size 352x288 test.yuv Raw YUV 420 data can also be played back in MPlayer - use the following MPlayer command: mplayer -fps 15 -rawvideo on:size=152064:w=352:h=288 test.yuv (at the time of writing MPlayer could not playback 4:2:2 or 4:4:4 YUV data) 4.3 Encoding The basic encoding syntax is to type dirac_encoder [options] file_in file_out This will compress file_in and produce an output file_out of compressed data. A locally decoded output file_out.local-dec.yuv and instrumentation data file_out.imt (for debugging the encoder and of interest to developers only) are also produced if the -local flag is enabled on the command line. There are a large number of optional parameters that can be used to run the encoder, all of which are listed below. To encode video you need three types of parameter need to be set: a) quality factor or target bit rate b) source parameters (width, height, frame rate, chroma format) c) encoding parameters (motion compensation block sizes, preferred viewing distance) In practice you don't have to set all these directly because presets can be used to use appropriate default values. a) The most important parameters are the quality factor or target bit rate. The quality factor is specified by using the option qf : Overall quality factor (>0) This value is greater than 0, the higher the number, the better the quality. Typical high quality is 8-10, but it will vary from sequence to sequence, sometimes higher and sometimes lower. The target bit rate is set using the option targetrate : Target bit rate in Kb/s This will attempt to maintain constant bit rate over the sequence. It works reasonably well, but actual bit rate, especially over short sequences, may be slightly different from the target. Setting -targetrate overrides -qf, in that CBR will still be applied, although the initial quality will be set by the given qf value. This might help the CBR algorithm to adapt faster. Setting -lossless overrides both -qf and -targetrate, and enforces lossless coding. b) Source parameters need to be set as the imput is just a raw YUV file and the encoder doesn't have any information about it. The best way to set source parameters is to use a preset for different video formats. The available preset options are: QSIF525 : width=176; height=120; 4:2:0 format; 14.98 frames/sec QCIF : width=176; height=144; 4:2:0 format; 12.5 frames/sec SIF525 : width=352; height=240; 4:2:0 format; 14.98 frames/sec CIF : width=352; height=288; 4:2:0 format; 12.5 frames/sec 4SIF525 : width=704; height=480; 4:2:0 format; 14.98 frames/sec 4CIF : width=704; height=576; 4:2:0 format; 12.5 frames/sec SD480I60 : width=720; height=480; 4:2:2 format; 29.97 frames/sec SD576I50 : width=720; height=576; 4:2:2 format; 25 frames/sec HD720P60 : width=1280; height=720; 4:2:2 format; 60 frames/sec HD720P50 : width=1280; height=720; 4:2:2 format; 50 frames/sec HD1080I60 : width=1920; height=1080; 4:2:2 format; 29,97 frames/sec HD1080I50 : width=1920; height=1080; 4:2:2 format; 25 frames/sec HD1080P60 : width=1920; height=1080; 4:2:2 format; 59.94 frames/sec HD1080P50 : width=1920; height=1080; 4:2:2 format; 50 frames/sec DC2K24 : width=2048; height=1080; 4:2:2 format; 24 frames/sec DC4K24 : width=4096; height=2160; 4:2:2 format; 24 frames/sec UHDTV4K60 : width=3840; height=2160; 4:2:2 format; 59.94 frames/sec UHDTV4K50 : width=3840; height=2160; 4:2:2 format; 50 frames/sec UHDTV8K60 : width=7680; height=4320; 4:2:2 format; 59.94 frames/sec UHDTV8K50 : width=7680; height=4320; 4:2:2 format; 50 frames/sec The default format used is CUSTOM format which has the following preset values width=640; height=480; 4:2:0 format; 23.97 frames/sec. If your video is not one of these formats, you should pick the nearest preset and override the parameters that are different. Example 1 Simple coding example. Code a 720x576 sequence in Planar 420 format to high quality. Solution. dirac_encoder -cformat YUV420P -SD576I50 -qf 9 test.yuv test_out.drc Example 2. Code a 720x486 sequence at 29.97 frames/sec in 422 format to medium quality Solution dirac_encoder -SD576I50 -width 720 -height 486 -fr 29.97 -cformat YUV422P -qf 5.5 test.yuv test_out.drc Source parameters that affect coding are: width : Width of video frame height : Height of video frame cformat : Chroma Sampling format. Acceptable values are YUV444P, YUV422P and YUV420P. fr : Frame rate. Can be a decimal number or a fraction. Examples of acceptable values are 25, 29.97, 12.5, 30000/1001. source_sampling : Source material type - 0 - progressive or 1 - interlaced For a complete list of source parameters, refer to Annex C of the Dirac Specification. WARNING!! If you use a preset but don't override source parameters that are different, then Dirac will still compress, but the bit rate will be much, much higher and there may well be serious artefacts. The encoder prints out the parameters it's actually using before starting encoding (in verbose mode only), so that you can abort at this point. c) The presets ALSO set encoding parameters. That's why it's a very good idea to use presets, as the encoding parameters are a bit obscure. They're still supported for those who want to experiment, but use with care. Encoding parameters are: L1_sep : the separation between L1 frames (frames that are predicted but also used as reference frames, like P frames in MPEG-2) num_L1 : the number of L1 frames before the next intra frame xblen : the width of blocks used for motion compensation yblen : the height of blocks used for motion compensation xbsep : the horizontal separation between blocks. Always Copyright (C) This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ANNEX B : THE GNU LESSER GENERAL PUBLIC LICENSE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! dirac-1.0.2/depcomp0000755000204200017500000004271311144426511011073 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2007-03-29.01 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software # Foundation, Inc. # This program 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, or (at your option) # any later version. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: dirac-1.0.2/libdirac_common/0000777000204200017500000000000011144427342012717 500000000000000dirac-1.0.2/libdirac_common/dirac-stdint.h0000664000204200017500000000050111144427301015362 00000000000000#ifndef _DIRAC_LIBDIRAC_COMMON_DIRAC_STDINT_H #define _DIRAC_LIBDIRAC_COMMON_DIRAC_STDINT_H 1 #ifndef _GENERATED_STDINT_H #define _GENERATED_STDINT_H "dirac 1.0.2" /* generated using gnu compiler gcc (SUSE Linux) 4.3.2 [gcc-4_3-branch revision 141291] */ #define _STDINT_HAVE_STDINT_H 1 #include #endif #endif dirac-1.0.2/libdirac_common/mv_codec.cpp0000664000204200017500000004625011070550727015131 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: mv_codec.cpp,v 1.35 2008/10/01 01:26:47 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * Scott R Ladd, * Tim Borer, * Andrew Kennedy, * Anuradha Suraparaju * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #include using namespace dirac; //public functions// //////////////////// // Constructor SplitModeCodec::SplitModeCodec(ByteIO* p_byteio, size_t number_of_contexts) : ArithCodec (p_byteio,number_of_contexts) {} void SplitModeCodec::InitContexts() { } // Main code function void SplitModeCodec::DoWorkCode( MvData& in_data ) { for (m_sb_yp = 0; m_sb_yp < in_data.SBSplit().LengthY(); ++m_sb_yp) { for (m_sb_xp = 0; m_sb_xp < in_data.SBSplit().LengthX(); ++m_sb_xp) { CodeVal(in_data); }//m_sb_xp }//m_sb_yp } // Main decode function void SplitModeCodec::DoWorkDecode( MvData& out_data) { for (m_sb_yp = 0; m_sb_yp < out_data.SBSplit().LengthY(); ++m_sb_yp) { for (m_sb_xp = 0; m_sb_xp < out_data.SBSplit().LengthX(); ++m_sb_xp) { DecodeVal( out_data ); }//m_sb_xp }//m_sb_yp } //protected functions// /////////////////////// void SplitModeCodec::ResetAll() { } //coding functions// //////////////////// //prediction functions unsigned int SplitModeCodec::Prediction(const TwoDArray & split_data ) const { int result = 0; std::vector < unsigned int > nbrs; if (m_sb_xp > 0 && m_sb_yp > 0) { nbrs.push_back( split_data[m_sb_yp-1][m_sb_xp] ); nbrs.push_back( split_data[m_sb_yp-1][m_sb_xp-1] ); nbrs.push_back( split_data[m_sb_yp][m_sb_xp-1] ); result = GetUMean(nbrs); } else if (m_sb_xp > 0 && m_sb_yp == 0) result = split_data[m_sb_yp][m_sb_xp-1]; else if (m_sb_xp == 0 && m_sb_yp > 0) result = split_data[m_sb_yp-1][m_sb_xp]; return result; } void SplitModeCodec::CodeVal(const MvData& in_data) { int val = in_data.SBSplit()[m_sb_yp][m_sb_xp] - Prediction( in_data.SBSplit() ); if (val < 0) val+=3; //produce prediction mod 3 EncodeUInt(val, SB_SPLIT_BIN1_CTX, SB_SPLIT_BIN2_CTX); } //decoding functions// ////////////////////// void SplitModeCodec::DecodeVal(MvData& out_data) { out_data.SBSplit()[m_sb_yp][m_sb_xp] = (DecodeUInt(SB_SPLIT_BIN1_CTX, SB_SPLIT_BIN2_CTX) + Prediction(out_data.SBSplit())) % 3; } /******************************************************************************/ //public functions// //////////////////// // Constructor PredModeCodec::PredModeCodec(ByteIO* p_byteio, size_t number_of_contexts, int num_refs) : ArithCodec (p_byteio,number_of_contexts), m_num_refs(num_refs) {} void PredModeCodec::InitContexts() { } // Main code function void PredModeCodec::DoWorkCode( MvData& in_data ) { int step,max; int split_depth; for (m_sb_yp = 0, m_sb_tlb_y = 0; m_sb_yp < in_data.SBSplit().LengthY(); ++m_sb_yp, m_sb_tlb_y += 4) { for (m_sb_xp = 0,m_sb_tlb_x = 0; m_sb_xp < in_data.SBSplit().LengthX(); ++m_sb_xp,m_sb_tlb_x += 4) { split_depth = in_data.SBSplit()[m_sb_yp][m_sb_xp]; step = 4 >> (split_depth); max = (1 << split_depth); //now do all the block modes and mvs in the mb for (m_b_yp = m_sb_tlb_y; m_b_yp < m_sb_tlb_y+4; m_b_yp += step) { for (m_b_xp = m_sb_tlb_x; m_b_xp < m_sb_tlb_x+4; m_b_xp += step) { CodeVal(in_data); }//m_b_xp }//m_b_yp }//m_sb_xp }//m_sb_yp } // Main decode function void PredModeCodec::DoWorkDecode( MvData& out_data) { int step,max; int split_depth; int xstart,ystart; // Then the prediction mode for (m_sb_yp = 0,m_sb_tlb_y = 0; m_sb_yp < out_data.SBSplit().LengthY(); ++m_sb_yp,m_sb_tlb_y += 4) { for (m_sb_xp = 0,m_sb_tlb_x = 0; m_sb_xp < out_data.SBSplit().LengthX(); ++m_sb_xp,m_sb_tlb_x += 4) { split_depth = out_data.SBSplit()[m_sb_yp][m_sb_xp]; step = 4 >> (split_depth); max = (1 << split_depth); //now do all the block mvs in the mb for (int j = 0; j < max; ++j) { for (int i = 0; i < max; ++i) { xstart = m_b_xp = m_sb_tlb_x + i * step; ystart = m_b_yp = m_sb_tlb_y + j * step; DecodeVal(out_data); // propagate throughout SB for (m_b_yp = ystart; m_b_yp < ystart+step; m_b_yp++) { for (m_b_xp = xstart; m_b_xp < xstart+step; m_b_xp++) { out_data.Mode()[m_b_yp][m_b_xp] = out_data.Mode()[ystart][xstart]; }//m_b_xp }//m_b_yp }//i }//j }//m_sb_xp }//m_sb_yp } //protected functions// /////////////////////// void PredModeCodec::ResetAll() { } //coding functions// //////////////////// //prediction functions unsigned int PredModeCodec::Prediction(const TwoDArray < PredMode > & preddata) const { unsigned int result = (unsigned int)(INTRA); unsigned int num_ref1_nbrs( 0 ); unsigned int num_ref2_nbrs( 0 ); if (m_b_xp > 0 && m_b_yp > 0) { num_ref1_nbrs += ((unsigned int)( preddata[m_b_yp-1][m_b_xp] ) ) & 1; num_ref1_nbrs += ((unsigned int)( preddata[m_b_yp-1][m_b_xp-1] ) ) & 1; num_ref1_nbrs += ((unsigned int)( preddata[m_b_yp][m_b_xp-1] ) ) & 1; result = num_ref1_nbrs>>1; if ( m_num_refs==2) { num_ref2_nbrs += ((unsigned int)( preddata[m_b_yp-1][m_b_xp] ) ) & 2; num_ref2_nbrs += ((unsigned int)( preddata[m_b_yp-1][m_b_xp-1] ) ) & 2; num_ref2_nbrs += ((unsigned int)( preddata[m_b_yp][m_b_xp-1] ) ) & 2; num_ref2_nbrs >>= 1; result ^= ( (num_ref2_nbrs>>1)<<1 ); } } else if (m_b_xp > 0 && m_b_yp == 0) result = (unsigned int)( preddata[0][m_b_xp-1] ); else if (m_b_xp == 0 && m_b_yp > 0) result = (unsigned int)( preddata[m_b_yp-1][0] ); return result; } void PredModeCodec::CodeVal(const MvData& in_data) { // Xor with the prediction so we predict whether REF1 is used or REF2 is // used, separately unsigned int residue = in_data.Mode()[m_b_yp][m_b_xp] ^ Prediction( in_data.Mode() ); // Code REF1 part of the prediction residue (ie the first bit) EncodeSymbol( residue & 1 , PMODE_BIT0_CTX ); // Code REF2 part of the prediction residue (ie the second bit) if (m_num_refs==2) { EncodeSymbol( residue & 2 , PMODE_BIT1_CTX ); } } //decoding functions// ////////////////////// void PredModeCodec::DecodeVal( MvData& out_data ) { // Xor with the prediction so we predict whether REF1 is used or REF2 is // used, separately unsigned int residue; // Decode REF1 part of the prediction residue (ie the first bit) bool bit; bit = DecodeSymbol( PMODE_BIT0_CTX ); residue = (unsigned int) bit; // Decode REF2 part of the prediction residue (ie the second bit) if (m_num_refs==2) { bit = DecodeSymbol( PMODE_BIT1_CTX ); residue |= ( (unsigned int) bit ) << 1; } out_data.Mode()[m_b_yp][m_b_xp] = PredMode( Prediction( out_data.Mode() ) ^ residue ); } /******************************************************************************/ //public functions// //////////////////// // Constructor VectorElementCodec::VectorElementCodec(ByteIO* p_byteio, int ref_id, MvElement horvert, size_t number_of_contexts) : ArithCodec (p_byteio,number_of_contexts), m_ref(ref_id), m_hv(horvert) {} void VectorElementCodec::InitContexts() {} // Main code function void VectorElementCodec::DoWorkCode( MvData& in_data ) { int step,max; int split_depth; for (m_sb_yp = 0, m_sb_tlb_y = 0; m_sb_yp < in_data.SBSplit().LengthY(); ++m_sb_yp, m_sb_tlb_y += 4) { for (m_sb_xp = 0,m_sb_tlb_x = 0; m_sb_xp < in_data.SBSplit().LengthX(); ++m_sb_xp,m_sb_tlb_x += 4) { split_depth = in_data.SBSplit()[m_sb_yp][m_sb_xp]; step = 4 >> (split_depth); max = (1 << split_depth); //now do all the block modes and mvs in the mb for (m_b_yp = m_sb_tlb_y; m_b_yp < m_sb_tlb_y+4; m_b_yp += step) { for (m_b_xp = m_sb_tlb_x; m_b_xp < m_sb_tlb_x+4; m_b_xp += step) { if ( in_data.Mode()[m_b_yp][m_b_xp] & m_ref ) { CodeVal(in_data); } }//m_b_xp }//m_b_yp }//m_sb_xp }//m_sb_yp } // Main decode function void VectorElementCodec::DoWorkDecode( MvData& out_data) { int step,max; int split_depth; int xstart,ystart; for (m_sb_yp = 0,m_sb_tlb_y = 0; m_sb_yp < out_data.SBSplit().LengthY(); ++m_sb_yp,m_sb_tlb_y += 4) { for (m_sb_xp = 0,m_sb_tlb_x = 0; m_sb_xp < out_data.SBSplit().LengthX(); ++m_sb_xp,m_sb_tlb_x += 4) { split_depth = out_data.SBSplit()[m_sb_yp][m_sb_xp]; step = 4 >> (split_depth); max = (1 << split_depth); //now do all the block mvs in the mb for (int j = 0; j < max; ++j) { for (int i = 0; i < max; ++i) { xstart = m_b_xp = m_sb_tlb_x + i * step; ystart = m_b_yp = m_sb_tlb_y + j * step; if (out_data.Mode()[m_b_yp][m_b_xp] & m_ref) { DecodeVal( out_data ); } // propagate throughout SB for (m_b_yp = ystart; m_b_yp < ystart+step; m_b_yp++) { for (m_b_xp = xstart; m_b_xp < xstart+step; m_b_xp++) { out_data.Vectors(m_ref)[m_b_yp][m_b_xp][m_hv] = out_data.Vectors(m_ref)[ystart][xstart][m_hv]; }//m_b_xp }//m_b_yp }//i }//j }//m_sb_xp }//m_sb_yp } //protected functions// /////////////////////// void VectorElementCodec::ResetAll() { } //coding functions// //////////////////// //prediction functions int VectorElementCodec::Prediction(const MvArray& mvarray, const TwoDArray < PredMode > & preddata) const { std::vector nbrs; PredMode pmode; int result( 0 ); if (m_b_xp > 0 && m_b_yp > 0) { pmode = preddata[m_b_yp-1][m_b_xp]; if (pmode & m_ref) nbrs.push_back(mvarray[m_b_yp-1][m_b_xp][m_hv]); pmode = preddata[m_b_yp-1][m_b_xp-1]; if (pmode & m_ref) nbrs.push_back(mvarray[m_b_yp-1][m_b_xp-1][m_hv]); pmode = preddata[m_b_yp][m_b_xp-1]; if (pmode & m_ref) nbrs.push_back(mvarray[m_b_yp][m_b_xp-1][m_hv]); if (nbrs.size() > 0) result = Median(nbrs); } else if (m_b_xp > 0 && m_b_yp == 0) { pmode = preddata[0][m_b_xp-1]; if (pmode & m_ref) result = mvarray[0][m_b_xp-1][m_hv]; } else if (m_b_xp == 0 && m_b_yp > 0) { pmode = preddata[m_b_yp-1][0]; if (pmode & m_ref) result = mvarray[m_b_yp-1][0][m_hv]; } return result; } void VectorElementCodec::CodeVal(const MvData& in_data ) { const MvArray& mv_array = in_data.Vectors(m_ref); const int pred = Prediction( mv_array , in_data.Mode() ); const int val = mv_array[m_b_yp][m_b_xp][m_hv] - pred; EncodeSInt(val, MV_FBIN1_CTX, MV_FBIN5plus_CTX); } //decoding functions// ////////////////////// void VectorElementCodec::DecodeVal( MvData& out_data ) { MvArray& mv_array = out_data.Vectors(m_ref); int pred = Prediction( mv_array , out_data.Mode() ); mv_array[m_b_yp][m_b_xp][m_hv] = pred + DecodeSInt(MV_FBIN1_CTX, MV_FBIN5plus_CTX); } /******************************************************************************/ //public functions// //////////////////// // Constructor DCCodec::DCCodec(ByteIO* p_byteio, const CompSort csort, size_t number_of_contexts): ArithCodec (p_byteio,number_of_contexts), m_csort( csort ) {} void DCCodec::InitContexts() { } // Main code function void DCCodec::DoWorkCode( MvData& in_data ) { int step,max; int split_depth; for (m_sb_yp = 0, m_sb_tlb_y = 0; m_sb_yp < in_data.SBSplit().LengthY(); ++m_sb_yp, m_sb_tlb_y += 4) { for (m_sb_xp = 0,m_sb_tlb_x = 0; m_sb_xp < in_data.SBSplit().LengthX(); ++m_sb_xp,m_sb_tlb_x += 4) { split_depth = in_data.SBSplit()[m_sb_yp][m_sb_xp]; step = 4 >> (split_depth); max = (1 << split_depth); //now do all the block modes and mvs in the mb for (m_b_yp = m_sb_tlb_y; m_b_yp < m_sb_tlb_y+4; m_b_yp += step) { for (m_b_xp = m_sb_tlb_x; m_b_xp < m_sb_tlb_x+4; m_b_xp += step) { if(in_data.Mode()[m_b_yp][m_b_xp] == INTRA) { CodeVal(in_data); } }//m_b_xp }//m_b_yp }//m_sb_xp }//m_sb_yp } // Main decode function void DCCodec::DoWorkDecode( MvData& out_data) { int step,max; int split_depth; int xstart,ystart; for (m_sb_yp = 0,m_sb_tlb_y = 0; m_sb_yp < out_data.SBSplit().LengthY(); ++m_sb_yp,m_sb_tlb_y += 4) { for (m_sb_xp = 0,m_sb_tlb_x = 0; m_sb_xp < out_data.SBSplit().LengthX(); ++m_sb_xp,m_sb_tlb_x += 4) { //start with split mode split_depth = out_data.SBSplit()[m_sb_yp][m_sb_xp]; step = 4 >> (split_depth); max = (1 << split_depth); //now do all the block mvs in the mb for (int j = 0; j < max; ++j) { for (int i = 0; i < max; ++i) { xstart = m_b_xp = m_sb_tlb_x + i * step; ystart = m_b_yp = m_sb_tlb_y + j * step; if(out_data.Mode()[m_b_yp][m_b_xp] == INTRA) { DecodeVal( out_data ); } // propagate throughout SB for (m_b_yp = ystart; m_b_yp < ystart+step; m_b_yp++) { for (m_b_xp = xstart; m_b_xp < xstart+step; m_b_xp++) { out_data.DC( m_csort )[m_b_yp][m_b_xp] = out_data.DC( m_csort )[ystart][xstart]; }//m_b_xp }//m_b_yp }//i }//j }//m_sb_xp }//m_sb_yp } //protected functions// /////////////////////// void DCCodec::ResetAll() { } //coding functions// //////////////////// //prediction functions ValueType DCCodec::Prediction(const TwoDArray < ValueType > & dcdata, const TwoDArray < PredMode > & preddata) const { std::vector < int > nbrs; PredMode pmode; ValueType result = 0; if (m_b_xp > 0 && m_b_yp > 0) { pmode = preddata[m_b_yp-1][m_b_xp]; if (pmode == INTRA) nbrs.push_back( (int) dcdata[m_b_yp-1][m_b_xp] ); pmode = preddata[m_b_yp-1][m_b_xp-1]; if (pmode == INTRA) nbrs.push_back((int)dcdata[m_b_yp-1][m_b_xp-1] ); pmode = preddata[m_b_yp][m_b_xp-1]; if (pmode == INTRA) nbrs.push_back( (int) dcdata[m_b_yp][m_b_xp-1] ); if (nbrs.size() > 0) result = ValueType(GetSMean(nbrs)); } else if (m_b_xp > 0 && m_b_yp == 0) { pmode = preddata[0][m_b_xp-1]; if (pmode == INTRA) result = dcdata[0][m_b_xp-1]; } else if (m_b_xp == 0 && m_b_yp > 0) { pmode = preddata[m_b_yp-1][0]; if (pmode == INTRA) result = dcdata[m_b_yp-1][0]; } return result; } void DCCodec::CodeVal(const MvData& in_data) { const int val = in_data.DC( m_csort )[m_b_yp][m_b_xp] - Prediction( in_data.DC(m_csort) , in_data.Mode() ); EncodeSInt(val, DC_FBIN1_CTX, DC_FBIN2plus_CTX); } //decoding functions// ////////////////////// void DCCodec::DecodeVal( MvData& out_data ) { out_data.DC( m_csort )[m_b_yp][m_b_xp] = DecodeSInt(DC_FBIN1_CTX, DC_FBIN2plus_CTX) + Prediction(out_data.DC( m_csort ), out_data.Mode()); } dirac-1.0.2/libdirac_common/upconvert_mmx.cpp0000664000204200017500000000344410721317000016241 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: upconvert_mmx.cpp,v 1.7 2007/11/22 15:19:28 tjdwave Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Anuradha Suraparaju (Original Author) * Thomas Davies (upconvert.cpp) * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ // MMX version deleted - new version TBC // dirac-1.0.2/libdirac_common/band_codec.cpp0000664000204200017500000001064011144156157015406 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: band_codec.cpp,v 1.53 2009/02/10 01:46:23 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (c) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * Scott R Ladd, * Steve Bearcroft * Andrew Kennedy * Anuradha Suraparaju * David Schleef * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ // System includes #include // Dirac includes #include #include #include #include using namespace dirac; template GenericBandCodec >::GenericBandCodec( SubbandByteIO* subband_byteio, size_t number_of_contexts, const SubbandList & band_list, int band_num, const bool is_intra); template GenericIntraDCBandCodec >::GenericIntraDCBandCodec( SubbandByteIO* subband_byteio, size_t number_of_contexts, const SubbandList & band_list); ////////////////////////////////////////////////////////////////////////////////// //Finally,special class incorporating prediction for the DC band of intra frames// ////////////////////////////////////////////////////////////////////////////////// void IntraDCBandCodec::DoWorkCode(CoeffArray& in_data) { // Residues after prediction, quantisation and inverse quantisation m_dc_pred_res.Resize( m_node.Yl() , m_node.Xl() ); m_dc_pred_res.Fill( 0 ); BandCodec::DoWorkCode(in_data); } void IntraDCBandCodec::CodeCoeff( CoeffArray& in_data, const int xpos, const int ypos) { m_nhood_nonzero = false; if (ypos > m_node.Yp()) m_nhood_nonzero |= bool(m_dc_pred_res[ypos-1][xpos]); if (xpos > m_node.Xp()) m_nhood_nonzero |= bool(m_dc_pred_res[ypos][xpos-1]); if (ypos > m_node.Yp() && xpos > m_node.Xp()) m_nhood_nonzero |= bool(m_dc_pred_res[ypos-1][xpos-1]); ValueType prediction = GetPrediction( in_data , xpos , ypos ); ValueType val = in_data[ypos][xpos] - prediction; CodeVal( in_data , xpos , ypos , val ); m_dc_pred_res[ypos][xpos] = in_data[ypos][xpos]; in_data[ypos][xpos] += prediction; } void IntraDCBandCodec::DoWorkDecode(CoeffArray& out_data) { // Residues after prediction, quantisation and inverse quantisation m_dc_pred_res.Resize( m_node.Yl() , m_node.Xl() ); m_dc_pred_res.Fill( 0 ); BandCodec::DoWorkDecode(out_data); } void IntraDCBandCodec::DecodeCoeff( CoeffArray& out_data, const int xpos, const int ypos) { m_nhood_nonzero = false; if (ypos > m_node.Yp()) m_nhood_nonzero |= bool(m_dc_pred_res[ypos-1][xpos]); if (xpos > m_node.Xp()) m_nhood_nonzero |= bool(m_dc_pred_res[ypos][xpos-1]); if (ypos > m_node.Yp() && xpos > m_node.Xp()) m_nhood_nonzero |= bool(m_dc_pred_res[ypos-1][xpos-1]); DecodeVal( out_data , xpos , ypos ); m_dc_pred_res[ypos][xpos] = out_data[ypos][xpos]; } dirac-1.0.2/libdirac_common/picture_buffer.h0000664000204200017500000002015011026427707016014 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: picture_buffer.h,v 1.4 2008/06/19 10:07:03 tjdwave Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Thomas Davies (Original Author), * Anuradha Suraparaju * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #ifndef _PICTURE_BUFFER_H_ #define _PICTURE_BUFFER_H_ #include #include #include #include namespace dirac { //! Holds pictures both for reference and to overcome reordering delay /*! The buffer holds pictures in a stack to overcome both reordering due to bi-directional prediction and use as references for subsequence motion estimation. Pictures, and components of pictures, can be accessed by their picture numbers. GOP parameters can be included in the constructors so that pictures can be given types (I picture, L1 picture or L2 picture) on being pushed onto the stack; alternatively, these parameters can be overridden. */ class PictureBuffer{ public: //! Default Constructor PictureBuffer(); //! Constructor /*! Creates a PictureBuffer using the chroma format. Suitable for compressing when there are no L2 pictures, or when the temporal prediction structure is to be determined on the fly. \param cf the Chroma format of pictures in the buffer \param xlen the luma width of pictures in the buffer \param ylen the luma height of pictures in the buffer \param luma_depth the video depth of the luma comp in the buffer \param chroma_depth the video depth of the chroma comp in the buffer \param using_ac True if using Arithmetic coding to code coefficient data */ PictureBuffer(ChromaFormat cf, const int xlen, const int ylen, const unsigned int luma_depth, const unsigned int chroma_depth, bool using_ac); //! Constructor /*! Creates a PictureBuffer using the chroma format, the number of L1 pictures between I pictures and the separation in pictures between L1 pictures. Suitable for compressing when there is a full GOP structure or when the temporal prediction structure is to be determined on the fly. \param cf the Chroma format of pictures in the buffer \param numL1 the number of Layer 1 pictures before the next I picture. 0 means that there is only one I picture. \param L1sep the number of Layer 2 pictures between Layer 1 pictures \param xlen the luma width of pictures in the buffer \param ylen the luma height of pictures in the buffer \param luma_depth the video depth of the luma comp in the buffer \param chroma_depth the video depth of the chroma comp in the buffer \param interlace Set true if material is being coded in interlaced mode \param using_ac True if using Arithmetic coding to code coefficient data */ PictureBuffer(ChromaFormat cf, const int numL1, const int L1sep, const int xlen, const int ylen, const unsigned int luma_depth, const unsigned int chroma_depth, bool interlace, bool using_ac); //! Copy constructor /*! Copy constructor. Removes the current contents of the pictureture buffer and copies in the contents of the initialising buffer. */ PictureBuffer(const PictureBuffer& cpy); //! Operator=. /*! Operator=. Assigns all elements of the rhs to the lhs. */ PictureBuffer& operator=(const PictureBuffer& rhs); //! Destructor ~PictureBuffer(); //! Get picture with a given picture number (NOT with a given position in the buffer) Picture& GetPicture(const unsigned int pnum ); //! Get picture with a given picture number (NOT with a given position in the buffer) const Picture& GetPicture(const unsigned int pnum) const; //! Get picture with a given picture number, setting a flag to true if it's there Picture& GetPicture(const unsigned int pnum, bool& is_present); //! Get picture with a given picture number, setting a flag to true if it's there const Picture& GetPicture(const unsigned int pnum, bool& is_present) const; //! Return true if picture with the particular picture number is available else return false bool IsPictureAvail(const unsigned int pnum) const; //! Returns a list of member pictures std::vector Members() const; //! Put a new picture into the top of the buffer /*! Put a new picture into the top of the buffer. Picture parameters associated with the picture will be as given by the picture parameter object. */ void PushPicture(const PictureParams& pp); //! Put a copy of a new picture into the buffer /*! Put a copy of a new picture into the buffer. */ void CopyPicture( const Picture& picture ); //! Sets the reference picture number that will be cleaned /*! Indicate which picture which has been output and which is no longer required for reference. Expiry times are set in each picture's picture parameters. \param show_pnum picture number in display order that can be output \param current_coded_pnum picture number in display order of picture currently being coded */ void SetRetiredPictureNum(const int show_pnum, const int current_coded_pnum); //! Delete picture /*! Delete picture. \param pnum picture number in display order to be deleted from picture buffer */ void Remove(int pnum); private: //! Clear internal data slot number pos /*! Clear internal data slot number pos */ void ClearSlot(const unsigned int pos); // //! the count of the number of reference pictures in the buffer // int m_ref_count; //! the buffer storing all the values std::vector m_pic_data; //!the map from picture numbers to position in the buffer std::map m_pnum_map; }; } // namespace dirac #endif dirac-1.0.2/libdirac_common/cmd_line.cpp0000664000204200017500000000545510766432240015126 00000000000000/* ***** BEGIN LICENSE BLOCK ***** * * $Id: cmd_line.cpp,v 1.8 2008/03/14 08:17:36 asuraparaju Exp $ $Name: Dirac_1_0_2 $ * * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is BBC Research and Development code. * * The Initial Developer of the Original Code is the British Broadcasting * Corporation. * Portions created by the Initial Developer are Copyright (C) 2004. * All Rights Reserved. * * Contributor(s): Scott R Ladd (Original Author), Thomas Davies * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser * Public License Version 2.1 (the "LGPL"), in which case the provisions of * the GPL or the LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the either * the GPL or LGPL and not to allow others to use your version of this file * under the MPL, indicate your decision by deleting the provisions above * and replace them with the notice and other provisions required by the GPL * or LGPL. If you do not delete the provisions above, a recipient may use * your version of this file under the terms of any one of the MPL, the GPL * or the LGPL. * ***** END LICENSE BLOCK ***** */ #include #include "cmd_line.h" using namespace dirac; using namespace std; CommandLine::CommandLine(int argc, char * argv[], const set & bool_opts) : m_options(), m_inputs(), m_bool_opts(bool_opts) { bool option_active = false; vector