As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I have written code to compress and decompress image files using a proprietary SDK for transmission from an aircraft via satellite. Unfortunately a license must be purchased for decompression as well as compression. Until now my applications have been mostly used in-house so I can keep track of the licenses and distribution. Now I need to provide the applications for outsiders and I can neither control distribution nor want to pay for the licenses.
Does anyone know of free de-compression programs, SDKs, or libraries? I program in C++ for Windows NT, 2000, XP.
My image files are raw data, monochrome, with 16bit unsigned pixels and the compression that is used is lossless or very mildly lossy.
It's just a thought, but the de facto standard for JPEG2000 is Kakadu because Dr. Taubman pretty much wrote the JPEG2000 standard. Although it costs some money, it is the best library that I know of.
Maybe this could be a good starting point: OpenJPEG. If it doesn't meet your requirements then ask at their forum for some hints.
Some people at my university used jj2000 for various tests. However it is in Java...
also libjasper: link text
Check out j2k-codec It's not free but not expensive either.
I've bought it (v1.7) myself and been using it for 4 years. Decoding is very fast, no error encountered so far.
For encoding, I use ER Mapper SDK.
I don't know how much improvements Jasper or OpenJPEG has shown these years, but those free libraries were too slow for my use. (Both encoding and decoding slow)
Magick++ is a C++ binding for ImageMagick that I think exposes ImageMagick's JPEG-2000 functionality. ImageMagick uses libjasper, which Doug mentioned. This might do the trick for you (and hopefully for me, too).
Why would anyone tagetting the windows platform pay someone for a Jpeg library when GdiPlus does it already?
http://msdn.microsoft.com/en-us/library/ms533844(VS.85).aspx
should be a good starting point. gdiplus has the 2nd best jpeg decompression speedwise (in my tests for whatever that counts for). And is distributed as an OS component with Windows 5 and up. i.e. Windows XP and greater.
If, for any reason, GdiPlus is unacceptable...
Intel used to distribute a jpeg decompression * compression library, inventively named the "intel jepg library" or ijl. the redistributable consists of a single dll, ijl15.dll
If you can find the original distribution, its licensed for free distribution and use. Intel just dont host it any more. Its been replaced with the intel performance primitives library, which does contain jpeg compression and decompression, but the per seat licensing is very fair, and again theres no limit on redistribution of the coff redistributables.
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I read that an executable stores the code in different sections. For example, a separate section for data etc. Is this generic across different platforms such as Win or MacOs or Linux?
Some insight into it would be really helpful.
You are correct in that an executable has several sections or segments: Not all of them, however, are code.
There is usually one segment for code - in ELF and PE, this is usually called .text. Additional ones exist to store dynamic linkage data, hard coded strings, read only data, global variables, etc.
To see these for yourself, rather than Wiki and Google , try hands on:
In Windows: You have a tool called DUMPBIN.EXE , part of visual studio. If you can't get your hands on that, use Dependency Walker (which is freely downloadable). This will parse PE and PE32+ (that is, 64-bit) files
In Linux: Use objdump -x , or readelf (both are pretty much the same, though with slightly different options) for ELF files.
In Mac: Use otool -l to see the load commands (which show you the sections and the segments) in Mach-O files.
Using either or all tools will hopefully get you a better idea of how things work.
Hope this helps,
TG
Windows uses Portable Executable format.
*nix generally uses Executable and Linkable Format. Previously some used SOM, a.out, ECOFF, XCOFF, COFF, and some others.
OS X and iOS (and NeXT, history fans) uses Mach-O.
PowerPC systems still support Preferred Executable Format which was used with earlier Mac OSs, and some forms of BeOS.
Maybe start with http://en.wikipedia.org/wiki/Comparison_of_executable_file_formats
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I want to pick up FPGA programming. I've heard all types of horror stories of proprietary tools. Is there any entirely open-source tool chain available?
If not, how should I learn this? My background: familiar with Scheme, C++, assembly, and MIPS architecture.
There will likely never be a complete open source tool chain for FPGAs unless we manage to develop an open source FPGA architecture. The FPGA companies control the bitstream formats used to program their parts and they have onerous legal language in their user agreements that make it a rather dangerous proposition to try to develop open source tools by reverse engineering (nobody wants to lose their house).
The good news, though, is that many of the patents that protect FPGA architectures are expiring over the next few years. That could make it possible to develop an open source FPGA architecture. Of course, you'd need a few semiconductor companies to get on board and actually manufacture it...
As has been pointed out, there are free HDL simulation tools like Icarus Verilog and GHDL (a VHDL frontend for gcc). But all you can do with them is simulate your design to ensure that it's functionally correct. You then need some sort of synthesis tool to take your HDL to gates and eventually to the bitstream. Xilinx and Altera have free web editions of such tools, but they are definitely not open source.
Icarus is an open source Verilog implementation. You will still need the tool chain from your FPGA vendor to get the code on the FPGA itself.
The gEDA project has some free EDA tools that you may want to check out. The above mentioned Icarus is part of gEDA.
Also check out Fedora Electronic Lab. This is something new to me so I can't provide more info.
I don't think there are any open source complete toolchains available. You might want to look at the Altera Web edition. A free trial download. You can use the MIPS-like Nios2 processor and program it in C and C++ (GNU toolset). There is a Linux port available also.
While proprietary, there hasn't been an open-source toolchain since the late 90's for Altera/Intel or Xilinx. However both Altera and Xilinx have had their free limited version for long enough you would be safe using them.
If you wish to just learn the language, one of the tools above would work. But I would still use a real vendor's toolchain. Since you would be just writing standard Verilog or VHDL, you could take your source to another vendor, just like C.
It looks like the other posts have directly answered the question here. Just thought I'd also mention taking a look at opencores.com... This site has open source HDL (Verilog and VHDL) implementations of working hardware...
You still require the vendor's tool to actually program the FPGA device (as mentioned by others), but companies like Altera provide free web edition tools (Quartus II web-edition) which is free to download. The free versions don't have all the bells and whistles, but it will be enough to get you going for some of their lower-mid range devices (Cyclone II, III, Stratix II)... Pretty cheap chips sometimes (US$80 or so for the Cyclone III 40k gate FPGA).
-So putting it all together, go to the FPGA vendor's website, check out Cyclone series FPGAs and make a purchase for what you need.
-Set up your environment with the free web-edition (Altera.. I am not sure about Xilinx)
-Grab a complete simple project from opencores.com
-Program the FPGA and test it (simulation is separate software tool from current Quartus II tool version)
Note, you may need to buy a vendor-specific programmer (JTAG pins)... A good place to check out some basic projects may be at sparkfun.com.
Happy developing!
Check out a list of ready-to-use boards at http://www.fpga-faq.com/FPGA_Boards.shtml.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've been thinking about starting a new graphics project and I want to use Java. Java has wrappers for all of the relevant GL functionality but I wonder how many people, including casual users, actually have decent GL drivers installed. By decent, I mean somewhat stable and fairly new (GL 1.5 support would probably do although the GLSL support that comes with 2.0 would be great). I could DirectX, even with Java, but I pretty much hate it and this project is supposed to be 'fun'. Also, I like the at least near-cross-platformedness of GL. So, anyone know of any non-imaginary stats on what percentage of Windows users have the drivers to run a GL app?
The Steam Hardware Survey is probably the best and most detailed source for info about what gamers have. Accurate statistics for the general population will be harder to come by. Instead, you should look at this in terms of how recent you want the graphics hardware. For example, any ATI chip from the R300 series (Radeon 9550+) onward supports OpenGL 2.0. On the NVidia side, any GeForce 6000+ series chip will support OpenGL 2.0, and their predecessors, the FX series, almost supported OpenGL 2.0. The R300 series and the FX series were both introduced in 2002, so if you know what portion of your target market is using a PC from 2003 or later, you'll have a fairly good idea of how widespread OpenGL 2.0 support is among users with discrete graphics.
If you want to support integrated graphics (which are the largest segment of the market, but aren't particularly common with those who are serious about graphics of any kind) your users will need at least a GMA X3000 for hardware acceleration of OpenGL 2.0 features, which means their system has to be from 2006 or later.
If you're interested in support on other operating systems, any Intel Mac will support OpenGL 2.0 with software fallbacks, and hardware acceleration whenever the chip would support it under Windows. On Linux, any system with Mesa 7 or later (June 2007 or later) will support OpenGL 2.0 software rendering. Hardware acceleration is less reliable, but there are decent open-source drivers for ATI chips from R300 and newer.
Every modern day video card supports OpenGL ... Shouldnt you be questioning how many Windows boxes have the Java runtime?
As I recall, Windows XP comes with 1.1 support out of the box. Vista upgrades this to 1.5. So you can at least count on those as an absolute minimum.
Apart from that, the GPU drivers from pretty much any vendor gives you at least 2.0 support.
But if I were you, I'd reconsider DirectX. I don't know what you hate about it, but it does have some advantages. The tool support is vastly better (ie, there are tools available. And PIX is nothing short of amazing), the API is up to date, and well designed, rather than accumulated over 20 years of a committee working at cross purposes, and if this is limited to Windows anyway, cross-platform doesn't really matter. (On the other hand, of course, if you do need cross-platform capabilities, it doesn't really matter what else DirectX can offer, it won't deliver that one killer feature)
Nearly everybody has SOME form of OpenGL support. Experience has shown that the actual drivers involved can be quite poor when dealing with ATI and especially Intel hardware, but it will at least work, aforementioned bugs notwithstanding. If nothing else, Windows can fall back to its built in 1.1 (XP and earlier) or 1.4 (Vista and higher) implementation. It won't work well, but it will work.
Windows XP comes with OpenGL 1.1 (quite slow though). Windows Vista also comes with OpenGL 1.1 (but for some special applications it has OpenGL 1.4 emulator on top of D3D).
When you install a graphics driver on Windows, it installs a more OpenGL version. OpenGL 1.5 is roughly "DX9 shader model 2.0" capable hardware. How many machines have that kind of hardware depends on your target market. In traditional/hardcore games space, almost all will (see Steam Hardware Survey).
In more casual/small games space, quite a lot of machines have much older hardware (see Unity Hardware Stats - almost 30% in 2009 Q1 are older than "DX9 shader model 2.0"). Also, a lot of machines in that space do not have custom drivers; they use whatever display drivers are shipped in Windows (which do not provide anything more than GL 1.1). Again, see Unity Hardware Stats - the most popular driver versions are the ones that come with Windows.
Stability wise, I'd strongly suggest using D3D9 on Windows instead of OpenGL. Driver quality is much better for D3D9 (less crashes inside drivers, less incorrect rendering, better performance, ...).
I'd say that all Windows users have some support for OpenGL. The latest versions usually are reserved for Vista users, gamers, and developers.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Does anyone have any recommendations for a good, fast, make tool? SCons? KJam? Something else?
Cross platform tools would also be acceptable.
GNU make is fast, but the native Windows-port is not very polished; there are a lot of pitfal regarding things like which shell is used to execute your commands. (Search for "MS-DOS" in the GNU make manual.)
SCons works very well on Windows. SCons had (last time I looked) some serious performance issues on large projects (thousands of files and upwards), but that was a couple of years ago.
CMake is an excellent tool if you want to work in Visual Studio but still stay crossplatform and allow other development tools on other platform. Can also generate makefiles for windows, so you're not bound to Visual Studio.
Whatever you may think of Ant, it is not a replacement for Make. That's like saying that a SUV is a replacement for a Formula 1 car. They are entirely different beasts. Ant is good for some things, and make for others.
There is a relatively new tool called premake which you may want to investigate. It looked promisiing when I looked, but I haven't checked it out in any detail.
On a PC is said in your title, so I assume you mean Windows? If so, I would recommend installing the Cygwin environment and if you install all the packages along with it, GNU's make is part of the deal. If you are on a Linux platform or one of the Unix variants, then you can just go with the GNU make directly.
You may be interested in cross-platform tools like Ant, Rake, Gant. These should give you most, if not all the functionality of GNU make, though compiling C code may be harder in some than other.
I've recently started using BJam. It is cross-platform and has a saner syntax than make.
If you're on Windows and you have the .Net Framework, you can use MSBuild. It's very similar to nAnt, and also has a lot of support from the community (some very detailed community toolkits are out there). It has a somewhat steep learning curve, but it's quite powerful once you get the hang of it.
Also another option could be writing PowerShell scripts. It depends what you want to do I guess. In my limited experience with makefiles, they've usually be to compile something, or set environment conditions, which you would use batch files for on a Windows platform.
If you need to build C-language based projects, take a look at rtEasyMake at www.routinetools.com. It is windows based and very easy to setup.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
What is the best compilable scripting language for Win32? I prefer .EXE's because I don't want to install the runtime on the servers first (my company administrates many via remote), but I need to be able to do things like NTFS permissions and (if possible) APIs over the network.
There was a small Perl which appeared to be able to do most of this, but it does not seem to have been updated/developed in quite a while. I have wondered about Lua, but I don't know if it has everything I need yet (and don't want to hunt through fifty library sites trying to find out). Any thoughts?
Have you considered using an EXE maker? For example, you can code in Python and use py2exe to create a standalone EXE that runs anywhere (it actually packages Python into the exe, so you don't have to install the runtime).
Ruby is my scripting language of choice.
Try RubyScript2Exe.
A scripting language is, almost by definition, not compiled into a standalone executable. So maybe you need to restate your intentions or give some indication about what kind of program you want to create.
C# is a powerful language that compiles to .EXE and allows you to interface with pretty much anything (through native p/invoke calls, if necessary). A basic but very usable Visual Studio for C# can be downloaded for free from the Microsoft website. The .NET runtime is installed on most systems nowadays.
Did you consider AutoIt ?
It is a scripting language, and you can quickly transform a script into an exe...
At OSCON 2005, I heard Damien Conway say "the only thing better than Perl is something that works well, even if it's not written in Perl."
It's good advice. Instead of looking for the best language that can be compiled to an .EXE, worry a lot more about writing it in a language that can be compiled to an .EXE. Use whatever works. Just remember that the quality of your programming matters infinitely more than what language you use.
That said, I like py2exe. YMMV. Good luck!