Download latest version of the M-JPEG AVI codec for WinNT/Win95
Paradigm Matrix is pleased to make available a software only M-JPEG codec for Windows NT and Windows 9x. Uses for this codec include:
High quality video can be captured at a central site or service and manipulated by machines that don't have special hardware. High quality video clips can also be distributed on CD-ROM and then used like clip art, with final output going to a service. Or being converted to an alternative format for display. Low compression settings on M-JPEG produce the best quality video possible. M-JPEG is also supported by many hardware capture/playback vendors.
This product does not have any official end-user support for free download customers. We'll try to help, but only OEM/paid customers get real support. Feedback is requested at feedback@mjpeg.com . Updates and info will be on our web site at http://www.mjpeg.com .
Windows NT 3.51/4.0 or Windows 9x on Intel processors. This software will NOT run on Windows 3.1 (or 3.11). Tested hardware and application compatibility can be found on the Compatibility chart .
A self extracting EXE archive is distributed. Run the PMMJPEG.EXE and expand into a directory of your choosing.
VERY IMPORTANT: Because both WinNT and Win95 want the INF file named OEMSETUP.INF you must rename the correct one on the distribution. For NT rename "Rename-to-OEMSETUP.INF-for-WinNT" to "OEMSETUP.INF".
Open the control panel from the start menu (Start->Settings->Control Panel). Open the multimedia control panel double by clicking on the "Multimedia" icon. Select the "Devices" pane, and click "add". Choose "Unlisted or Updated Driver" from the list, and click OK. Enter the path or browse to the directory you unzipped the M-JPEG codec to, then click OK to the "Install Driver" dialog. A dialog listing the codec, "Paradigm Matrix M-JPEG Codec x.xx" should come up, click OK. If a dialog asks to use the new or current driver, select "new" and click OK. The M-JPEG configuration dialog will come up, "Enable Codec" should be selected. Click close to the codec dialog, and close to the multimedia properties dialog. The driver is now installed.
A self extracting EXE archive is distributed. Run the PMMJPEG.EXE and expand into a directory of your choosing.
VERY IMPORTANT: Because both WinNT and Win95 want the INF file named OEMSETUP.INF you must rename the correct one on the distribution. For Win95 rename "Rename-to-OEMSETUP.INF-for-Win95" to "OEMSETUP.INF", .
Start the control panel from the Start menu, this is under settings. Open "Add new hardware". When asked if Windows 95 should search for new hardware, select NO. At the hardware type dialog, select "Sound, video, and game controllers". When presented with the manufacturers/model dialog, select "Have disk". Browse for the directory you expanded the codec into, and select the OEMSETUP.INF file. This should already be highlighted. Click OK, and OK in the "Install from disk" dialog. Clock OK when "Paradigm Matrix M-JPEG Codec x.xx" is displayed. If any dialogs asking to use a current or the new version of PMJPEG32.DLL are displayed, select new. Click finish to copy and install the codec files. The new software M-JPEG codec is now installed and ready for use. Windows 95 asks to restart your computer. Our experience is this is not needed to use the new codec. If you experience problems, then go ahead and restart.
Open the control panel, Open "Multimedia". Select the "Advanced" ("Devices" for NT)tab on the dialog. Expand the entries under the "Video Compression Codecs" branch. Select "Paradigm Matrix M-JPEG Codec x.xx" from the tree view. Select "Properties", and then "Remove" (or just "Remove" under NT) when the dialog appears. Select OK in the confirmations that you want to remove the codec The "Paradigm Matrix M-JPEG Codec x.xx" will now be deactivated.
A self extracting EXE archive is distributed. Run the PMMJPEG.EXE and expand into a directory of your choosing.
VERY IMPORTANT: Because both WinNT and Win95 seem to want the INF file named OEMSETUP.INF you must rename the correct one on the distribution. For NT rename "Rename-to-OEMSETUP.INF-for-WinNT" to "OEMSETUP.INF".
Open the control panel. Open "Drivers". Select the "Add" button. Select "Unlisted or Updated Driver" from the listbox. Browse for, or enter the directory where the codec ZIP file was expanded. Select "OK", select "OK" from the "Install Driver" dialog. A dialog should appear with "Paradigm Matrix M-JPEG Codec x.xx" selected, select "OK". A dialog may appear saying the driver already exists, select "New" in this case. Select "Close" from the Drivers dialog. The new software M-JPEG codec is now installed and ready for use.
Open the control panel, Open "Drivers". Select "Paradigm Matrix M-JPEG Codec x.xx" from the listbox. Select "Remove". Confirm the remove by selecting "Yes" to the are you sure message box. Select "Close" from the Drivers dialog. The "Paradigm Matrix M-JPEG Codec x.xx" will now be deactivated.
The configuration panel is accessible from installable compressor aware applications, such as Adobe Premiere. It can also be accessed from the multimedia control panel. On NT 3.51, control panel->drivers brings up a list box. Select the software codec and setup. On Win95 and NT 4.0 it's under control panel->multimedia->advanced(Devices).
The switches in the configuration dialog have the following uses:
Enable Codec - This turns on or off the codec. The most common use for this is coexisting with another (hardware) based M-JPEG codec.
Higher Quality - When selected, a tradeoff of quality vs. speed is adjusted to give best possible compression and decompression quality. For high end video editing, for final output, out may want to turn on this option. For most other uses, better performance is more appropriate.
Support DecompressEx - If your having compatibility problems between the codec and your application (or video card), we suggest you try turning this off. Version 1.10 added support for the more optimized DecompressEx commands, but we've also seen more bugs and incompatibilities. An example is: under WinNT, a common video card's DirectDraw drivers seem to incorrectly use destination color keys. This causes popup menus and windows to be obscured by the video window. This happens no matter what video codec your using. By unselecting this option, we no longer use video overlays and as a result, the incorrect display is gone. The downside is that performance is reduced. We put this option in mostly to work around driver bugs.
Support YUV output - This option is exactly like the one above, but for a different set of optimizations. We're received a report of left-to-right flipped output on a specific video card under WinNT. We believe this is also a DirectDraw driver bug, so provide a switch to disable the optimized feature. Turning this off may also degrade performance.
Invert Compressed Field Order - Some M-JPEG capture cards may require compressed video in a field order different from the default. By default, we will compress the upper field as the first segment, and mark it as field 1. Selecting this will cause the lower field to be compressed first and marked as field 1. Unless you have a specific need to change this, we recommend you don't. The default use of the field tag 1 as the top spatial field position, is in our opinion, the most OpenDML conforming and technically best configuration. As hardware M-JPEG cards don't all follow this configuration, you may have to change this option.
Invert Compressed Segment Order - Like the option above, selecting this will change the default field ordering. This option will cause the first compressed segment to be marked field 2. The above option will determine if this field is the upper or lower field.
Invert Decompressed Field Order - By default, the field marked 1 is decompressed to the upper field position. Selecting this option reverses the spatial position of the fields marked 1 and 2. Working in NTSC format will often require selecting this option to correctly decompress hardware captured M-JPEG video. PAL format video will often be correct with this option unselected.
License Key - We expect to offer end-user licensing of the codec soon. This will allow us to send an activation code after purchase. Non-serialized copies will not support this.
Use MMX - This will be gray if your not running on an MMX capable processor. Unselect this if you suspect a problem with using MMX support. You can also do comparisons of performance. Currently, our MMX code gives about double the overall playback performance of our non-MMX code. Compression is currently not MMX accelerated.
The following configuration options are for advanced or special use. They are controlled by setting registry options in the tree HKEY_CURRENT_USER\Software\Paradigm Matrix\Software M-JPEG Codec. These are all DWORD values.
Debug - set to 1 to create debugging trace log
CompressFourCC - set to 31626d64(hex) to output Matrox Rainbow Runner dbm1 format code instead of the normal mjpg format code
A problem exists when two installable codecs work with the same data format. By default, the software M-JPEG codec installs itself and registers to handle data of type MJPG. Hardware M-JPEG capture cards will also want to do this. We are investigating providing the ability to select which codec gets the data. Windows will first try to use a codec that has last registered for a specific format. If this codec rejects a request, Windows will search through all the rest of the codecs asking if anybody understands the data format.
We added the ability to disable the software M-JPEG codec from it's configuration panel. If Windows is configured to use the software codec by default for MJPG data, you can select which codec actually gets the data by enabling or disabling the software codec. When disabled, Windows will search for the alternative codec.
To do this, the alternative codec (hardware) needs to be installed with a different default data type. For example, HJPG instead of MJPG. If you have a alternative codec that can be enabled/disabled, the software codec can be installed as the alternative. Alternative install files are included to do this.
We encourage vendors of M-JPEG codecs (hardware) to provide alternative install INF files and to provide the ability to disable their codec from a configuration dialog. If any vendor has a better solution that allows hardware and software codecs to coexist, do contact us.
The simplest way we know to change the data type for the alternative codec is to edit it's OEMSETUP.INF file and reinstalling it. Replacing 'vidc.MJPG' entries with 'vidc.HJPG' does the trick. This data is stored in 'system.ini' on Win95 and the registry under WinNT.
Playback performance with version 1.10 has been greatly increased, on appropriate hardware. Tests on a Pentium II - 266 with an ATI Expert@Work AGP video card running NT 4.0 SP3 achieve 15 fps at 720x486 under DirectShow. Performance increases with higher compression ratio video, as there is less input data to process. On this same hardware, we've measured 27 fps at 720x486 for highly compressed video. This same system has about 35% processor usage when playing 320x240x30fps.
Getting the best performance requires a MMX capable processor and video card able to support DirectDraw YUV 4:2:2 surfaces (in UVYV or YUY2 format). Support for hardware resizing also allows video to be be shrunk or expanded without any performance penalty. Many modern video cards have these capabilities, although support under Win95 is much more common that under WinNT.
Compression performance is significantly lower. The difference is less if not on a MMX processor. Asking the codec to crunch to a limiting data rate, also degrades compression performance.
This codec was written to read and write data streams conforming to the Microsoft M-JPEG codec and 11/13/95 OpenDML avi specs. As we only deal with the compressed data block, other specifications in the OpenDML spec relating to AVI header and segment formats, are the domain of you video capture/editing program, not a codec. Some video capture cards do not correctly follow these specs, so this codec may not perform correctly. If you find a data stream that fails, please upload a short sample to our FTP site at "ftp.pmatrix.com", placing the file in the "incoming" directory. You will be able to write to this directory by not read or list it. Don't forget to do a BINARY transfer. Please send email to bugs@mjpeg.com explaining details about the failure. We can't guaranteed we can fix incompatibilities, but will try. Also note that some capture boards support both the standard and non-standard formats. Please do not ask us to fix compatibility with vendors choosing not to allow creation of standard format files.
Included with this release is a file named "AVI Version 2 Registry Fix.reg". This file adds a registry entry to force DirectShow to use the "AVI/WAV File Source" filter instead of the default "File Source (Async.)" filter, only with M-JPEG compressed AVI's. The default filter seems unable to read new version 2 format AVI's being produced by some capture hardware (like Miro DC30 with the DirectShow drivers). The AVI/WAV File Source filter seems unable to play DV compressed movies. If you have M-JPEG compressed AVI's, and you get an error that says "No combination of filters could be found to render this stream", install this fix. If Microsoft should change this behaivor in the future, you may want to delete the registry key listed in this fix file. This registry key is named:
"HKEY_CLASSES_ROOT\Media Type\{e436eb83-524f-11ce-9f53-0020af0ba770}\{e436eb88-524f-11ce-9D7C-00A0C91F3D6C}"
The registry update can be installed by selecting it in the File Explorer and selecting Merge from the right-click menu.
Important: testing has show that installing this registry key will prevent the latest Microsoft Media Player from being able to display M-JPEG compressed AVI's over the web. This implies there is no way to show a Version 2 AVI thru a web browser.
Many of the problem reports we receive are caused by data streams that don't conform to the OpenDML M-JPEG data stream specifications. We believe most vendors selling M-JPEG hardware could easily make their data streams always exactly conform to the standard.
A very common specification deviation is invalid sizes. If you have a problem, we suggest you experiment with adjusting the capture size. Technically, OpenDML compliant M-JPEG video MUST have a width that's a multiple of 16 pixels. This means 640 and 720 are valid, but 702 is not. The height of each field MUST also be a multiple of 8, which means for larger video (640x480) where interlacing is used, the overall height must be a multiple of 16. Version 1.10 has more changes to adapt to these non-compliant data streams. If you expect to use your video 5 years from now, or on new hardware 6 months from now, it seems best if it conforms to the standard.
There also seem to be MANY bugs in DirectDraw video device drivers. We highly recommend you download and install the latest one for your hardware. A good indication of a DirectDraw bug is video compressed with different codecs show the same problem. See the section above on "configuration panel" for some switches that may work around these problems.
Version 1.10 has many changes, especially to enhance performance. Please do report problems you encounter. Our experience has been, people giving high quality specific bug reports sometimes rapidly get a patched codec version. These changes are accumulated and rolled into the next major release. Specific hardware details and sample video greatly help.
Many people will probably experience field order mismatches. This looks like fuzzy or sometimes shimmering areas where there is movement. The codec configuration dialog has 3 options to control the field order handling. If you believe this is an issue for you, try selecting the "Invert Decompressed Field Order" option. If this improves your quality, you will probably also need to select the "invert Compressed Field Order" option, to make compressed video match. People using NTSC video may especially find these an important option. Also note these options ONLY effect interlaced video (i.e. higher than 288 lines). Our belief is the default non-selected setting of these is technically the best for video that does not have to match a specific hardware M-JPEG card. We believe the default option also matches the way Apple's QuickTime 3.0 wants to decode M-JPEG compressed AVI's.
We've also retired the old version 1.02 codec.
The license for this codec (or read LICENSE.TXT) prohibits commercial use without making license arrangements with us. If you have tested it and find it appropriate for your commercial/OEM needs, contact us at mjpeg@pmatrix.com for license arrangements. Currently, the software is only sold on an OEM basis. We also currently only support Intel processors. If you REALLY need an Alpha version on NT, talk to us.
The codec structure came from the example codec in the NT DDK. All development work was done by Jan Bottorff. The JPEG core is based in part on the work of the Independent JPEG Group, release 5.
- Jan Bottorff
Paradigm Matrix, Inc.
San Ramon, CA
This License applies to the computer program known as "Paradigm Matrix M-JPEG Codec." The "Program", below, refers to such program, and a "work based on the Program" means either the Program, any derivative work of the Program, such as a translation or a modification, and any data that has been processed by the Program. The Program is a copyrighted work whose copyright is held by Jan Bottorff and Paradigm Matrix, Inc. (the "Licensor").
BY USING OR DISTRIBUTING THE PROGRAM (OR ANY WORK BASED ON THE PROGRAM), YOU INDICATE YOUR ACCEPTANCE OF THIS LICENSE TO DO SO, AND ALL ITS TERMS AND CONDITIONS FOR COPYING, DISTRIBUTING OR USING THE PROGRAM OR WORKS BASED ON IT. NOTHING OTHER THAN THIS LICENSE GRANTS YOU PERMISSION TO USE OR DISTRIBUTE THE PROGRAM OR ITS DERIVATIVE WORKS. THESE ACTIONS ARE PROHIBITED BY LAW. IF YOU DO NOT ACCEPT THESE TERMS AND CONDITIONS, DO NOT USE OR DISTRIBUTE THE PROGRAM.
1. Licenses.
Licensor hereby grants you the following rights, provided that you comply with all of the restrictions set forth in this License and provided, further, that you distribute an unmodified copy of this License with the Program:
(a) You may copy and distribute literal (i.e., verbatim) copies of the Program's binary code as you receive it throughout the world, in any medium.
(b) You may use the Program, create works based on the Program and distribute copies of such throughout the world, in any medium.
2. Restrictions.
This license is subject to the following restrictions:
(a) Distribution of the Program or any work based on the Program by a commercial organization to any third party is prohibited if any payment is made in connection with such distribution, whether directly (as in payment for a copy of the Program) or indirectly (as in payment for some service related to the Program, or payment for some product or service that includes a copy of the Program "without charge"; these are only examples,and not an exhaustive enumeration of prohibited activities). However, the following methods of distribution involving payment shall not in and of themselves be a violation of this restriction:
(i) Posting the Program on a public access information storage and retrieval service for which a fee is received for retrieving information (such as an on-line service), provided that the fee is not content-dependent (i.e., the fee would be the same for retrieving the same volume of information consisting of random data).
(ii) Distributing the Program on a CD-ROM, provided that the files containing the Program are reproduced entirely and verbatim on such CD-ROM, and provided further that all information on such CD-ROM be redistributable for non-commercial purposes without charge.
(b) Activities other than copying, distribution, and use of the Program are not subject to this License and they are outside its scope.
(c) Functional use (running) of the Program is restricted. The following conditions are considered acceptable use of the program under the the terms of this non-commercial license:
(i) Non-commercial use of this software and use of data generated by this software are not restricted.
(ii) Commercial use is restricted to a 60 day evaluation period measured from the first time the Program is executed. Commercial distribution of data processed by the Program, or any derivative data, is not permitted without first obtaining a commercial license from Paradigm Matrix.
This restriction includes data processed by the program and then transformed into another format or media.
COMMERCIAL use of this SOFTWARE is defined as any activity where this SOFTWARE takes part that involves payment, including but not limited to distributing this SOFTWARE for payment and using it in systems providing paid services. Commercial use of this SOFTWARE is not permitted without specific written prior permission from Paradigm Matrix.
3. Reservation of Rights.
No rights are granted to the Program except as expressly set forth herein.
You may not copy, modify, sublicense, use, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, use, or distribute the Program 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.
4. Other Restrictions.
If the distribution and/or use of the Program is restricted in certain countries for any reason, Licensor 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.
5. Limitations.
THE PROGRAM IS PROVIDED TO YOU "AS IS," WITHOUT WARRANTY. THERE IS NO WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL LICENSOR, OR ANY OTHER PARTY WHO MAY USE AND/OR REDISTRIBUTE THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
6. General.
This Agreement is governed by the laws of the State of California, USA.