Technical Background Document: 3ivx MPEG-4 5.0
New Modules
- QuickTime Media Exporter
- Supports MPEG-4 Video
- Supports Uncompress Audio
- Supports AVI file format
- Supports frame resizing
- Supports framerate changing
- Supports template
- QuickTime Media Importer (Custom Install)
- Supports MP4 File Format
- Supports 3GPP File Format
- Supports Nero-style MP4 Chapters
- Supports HE-AAC Audio
(Explicit, Explicit Backwards Compatible and Implicit)
- Supports Advanced Simple Profile MPEG-4,
including B-frames, GMC, QPel and MPEG Quantization
- Supports MPEG-4 Pixel Aspect Ratio signalling
- Supports multiple audio and/or video tracks
- Supercedes Apple MP4 importer
- Falls back to Apple MP4 importer
- QuickTime Audio Decoder (Only available in Bundle versions)
- Decodes LC-AAC Audio
- Decodes HE-AAC Audio
- Decodes LTP, Main Profile and other profiles of AAC audio
- Supports up to 5.1 channels of audio.
- Registration Application:
- 3ivx License Manager
- Allows users to add/remove/view their currently installed 3ivx licenses
New Features
- Windows
- All windows components are now digitally signed for Windows Vista
- MPEG-4 Video Core
- Brute Force MB mode decision encoding
- Interlaced bitstream parsing
- Field DCT decoding
- Field Pred decoding working
- Added PAR Rewriting support
- Can skip motion search for extra speed
- Decoding support for NeroDigital AVIs
- Fast First Pass mode
- Forwards/backwards compatible preference upgrading/downgrading.
- Multiple Speed/Quality Levels
Fastest = No Motion Search
Fast = Integer only Motion Search
Good = Integer + HPel Motion Search
Better = Integer + Hpel + Inter4v Motion Search
Best = Integer + Hpel + Inter4v + BruteMB
- New Fastest Quality level ("Fast" was the previous fastest)
- New Best Quality Level ("Better" was the previous best)
- Custom MPEG Quantization encoding
- Support for Quantizer Selection (H263, MPEG or Custom)
- Importing support for XviD-style binary custom matrices
- Exporting support for XviD-style binary custom matrices
- Custom Matrix Editor GUI (including export/import)
- B-frame encoding core support
- '3vid' Support
- B-frame motion search
- Interlaced Alternate Vertical Scan decoding
- Interlaced B-frame decoding
- Added support for decoding Samsung MPEG-4
- Added support for encoding Samsung MPEG-4
- Added support for encoding DivX MPEG-4
- Interlaced QPel decoding
- DirectShow Filters
- Now support Load/Save registry properties SDK command
- Added Default buttons to all DS Filters
- DirectShow Media Splitter
- Now handles 64bit offsets/durations
- Now handles MPEG-2/MPEG-1 in MP4
- Support for reading Fragmented MP4s
- Now supports true QuickTime chapters
- Preliminary vobsub and aheadsub subtitle support
- Preliminary AVC support
- Added ODSM Hook
- Output pins are now not created if the media can't be authorized
- If input pin is reconnected, will now attempt to re-authorize, even if authorization failed last time
- Detects SDSM v1 and v2
- Now displays Chapter Information in Properties dialog
- Can now save chapter information to text file
- DirectShow Video Encoder
- Writes MPEG-4 PAR for AVI information (only 3ivx Decoder currently supports AVI MPEG-4 PAR)
- Can now encode with a custom quantization matrix
- Can now encode Samsung MPEG-4
- "Samsung MPEG-4 Encoder" encodes to samsung MPEG-4 using the 3ivx DirectShow video encoder
- "DivX MPEG-4 Encoder" encodes to DivX MPEG-4 using the 3ivx DirectShow video encoder
- Can now update the core parameters whilst encoding
- Video for Windows codec
- Can now encode with a custom quantization matrix
- "Samsung Video Codec" encodes Samsung MPEG-4 using the 3ivx VfW codec
- "DivX Video Codec" encodes DivX MPEG-4 using the 3ivx VfW codec
- DirectShow Media Muxer
- Now repairs lost, corrupted or innaccurate keyframe information during muxing
- Can now rewrite PAR information during muxing
- Support for writing Fragmented MP4s (Bundle versions only)
A Fragmented MP4 can theoretically be read before it is closed, as well as recovered if it isn't closed (e.g. if a crash occurs during muxing, the file is not lost), also a Fragmented MP4 can be directly streamed with out first Optimizing for Streaming (they are optimized for streaming as they are written). Unfortunately, most MP4 parsers do not support Fragmented MP4 (yet). A Fragmented MP4 can be converted into a normal MP4 (or vice-versa) by remuxing.
- Nero-style Chapters can now be muxed
- Chapters can be created and named using the muxer properties dialog (hh:mm:ss.ms)
- Chapters can now be loaded from a text file
- Chapters can now be written to text file
- Chapters can now be updated with the GUI
- Chapters can now be automatically ripped from any DirectShow graph
- Work-around for audio input streams with bad media times (ie "AAC Parser")
- Muxer can now mux MS-MPEG4v3 aka DivX 3 into MOV files.
- Can now write PSP compatible streams (SDK Only)
- Muxer can mux M4A files (Audio Only MP4)
- Muxer can now mux 3GP files
- Muxer can now mux MP4 files with non mp4 extensions
- Muxer will not connect to non MP4/MOV files (AVI, MPG etc)
- Advanced chapter time handling
- DirectShow Audio Decoder
- Now displays audio bitrate in property dialog
- Windows Installer
- Configures registery to allow playback of MP4 files from XCDs
(i.e. MP4 in a .dat file on a Mode 2 Form 2 CD)
- Added an OEM installer mode
- Added another OEM installer mode
- Enables Windows XP thumbnail support for MP4 and MOV files
- Fixes Windows XP Wordpad Bug (KB870883)
- Uninstalls legacy 3ivx codecs orphaned by QuickTime 7
- QuickTime 7 Savvy
- Improved OEM Installation reliability
- QuickTime Video codec
- Can now encode with a custom quantization matrix
- Added DMgr Support
- Now displays actual codec/variant name for all video formats when decoding a given format. i.e. "DivX 5" or "ISO MPEG-4"
- New universal binary, Intel macs are now supported
- Can now encode B-frames
- B-frames are automatically placed
- Multiple B-frames are automatically used
- Now based on Lib3ivx
- QuickTime Video codec for Mac OS X
- Implements OSX 10.3 (Panther) ThreadSafe component protocol
Improvements
- MPEG-4 Video Core
- Streamlined motion search
- Sped up BruteMB
- Improved handling of 3 pt GMC
- Default suppression ratio is now 20%
- Work-around for decoding non-compliant Sorenson MPEG-4 bitstreams
- Initialisation optimizations (less memory, faster startup)
- First pass is now much faster when encoding with BruteMB or QPel (40%)
- Output First Pass option has been eliminated
- Inter4v option has been eliminated
- HPel option has been eliminated
- Correct pseudo VopTime information during encoding
- Improved rounding_control for NVops, BVops and emulated NVops
- More MMX
- NVop and BVop rounding is now optimal.
- CBR RateControl significantly re-worked
- Work-around for B-frames with invalid time-stamps
- Improved RGB pixel format handling
- QT 'y420' format now supported on all platforms
- Dual Pass - First Pass now outputs the first frame
- DirectShow Filters
- Filters no longer reset properties when not necessary
- DirectShow Media Splitter
- Seeking is now lightning fast
- Better editing support
- Added work around for real audio 10 files with audio table problems
- Can now rewind video streams
- DirectShow Media Muxer
- Now identifies major brand as MP4v2
- Now always uses packet based VBR MP3 muxing when muxing MP3 into MOV
- DS Splitter can now be connected to DS Muxer without enabling "Allow Unsupported Decoders"
- DirectShow Video Decoder
- Possible work-around for a stall on MPEG-4 in transport streams
- Now handles invalid timestamps
- Flood/Famine handling improved
- Video Quality messages are no longer forwarded
- Renamed to "3ivxDSVideoDecoder.ax"
- Properties page now updates the core whilst encoding
- Now requests a Keyframe from Encoder when there is decoder lag
- DirectShow Video Encoder
- Renamed to "3ivxDSVideoEncoder.ax"
- Attaches VOSH instead of ESDS on output pins
- SetPropBytes now can handle old preference structures
- B-frames and QPel checkboxes available in GUI Advanced tab
- Now generates timestamps when none are present
- DirectShow Audio Encoder
- Now supports increments of 5% for VBR quality
- Updated to FAAC 1.24B
- Video for Windows codec
- Attaches VOSH instead of ESDS to VIH
- B-frames and QPel checkboxes available in GUI Advanced tab
- QuickTime Video codec
- Useless Quality Slider in Codec Selection dialog was removed
- Specifies correct depth for non-alpha encoding
- Work around for QT7 inconsistant kbit/s calculations
- Now outputs B-frame "delay frames" to work around QT7 bug
- Apple MPEG-4 Decoder can now be invoked while 3ivx is installed
- QuickTime Media Importer
- Now imports audio tracks significantly faster
- QuickTime Video codec for Windows
- Renamed to "3ivxQTVideoCodec.qtx"
- QuickTime Video codec for Mac OS X
- VopN is now NVop
- Renamed to "3ivxQTVideoCodec.component"
- Improved slow QT7 decode speed
- Configure dialog now has descriptions for Speed vs Quality and Fast first pass settings.
- QuickTime Media Importer for Windows
- Now supports MPEG-4 PAR signalling
- Windows GUIs
- Combo menus have been enlarged
- GUIs
- Improved Dual-Pass Goal's wording to hopefully reduce confusion
- Windows Installer
- Now built with NSIS 2.23
- New 5.0 Look
- New uninstaller and installer icons
- Mac OS X Installer
- Now built with PackageMaker and FileStorm Pro 1.8.2
- New 5.0 Look
- More streamlined
- New uninstaller
- Opens 3ivx application folder after install
- Re-focuses 3ivx installer after install folder show
- Disk image is now internet enabled
Bugs Fixed
- MPEG-4 Video Core
- Divide By Zero crash in extreme low bitrate encodes should be fixed
- Long Movies dual-pass bug fixed
- BruteMB buffer-overflow bug fixed
- BruteMB thread-safety bug fixed
- MPEG Quantizer encoding fixed
- QP1 H263 MMX encoding bug fixed
- Adaptive Quantization encoding bug fixed
- Multiple instance encoding now works
- Inter4v bframes are now correctly decoded
- High bitrate Sorenson MPEG-4 video bitstreams no longer decode highly blockily
- Fixed a mac specific bug which was causing BruteMB to not work right
- Fixed a mac specific bug which was causing interlaced DCT decoding to not work right
- Fixed a crash on rgb24 input on MMX
- Fixed a crash when encoding with H263 Quantization on Pentium II class CPUs
- Fixed a persistant resource corruption issue
- Fixed a small memory leak
- Fixed a bug in custom quantization decoding
- 1 Warp-point GMC decoding is fixed
- CBR underflow fixed
- CBR divide by zero fixed
- CBR overflow fixed
- CBR stall fixed
- Infinite Loop when commencing second pass fixed
- Fixed a segfault when doing a first pass in Linux
- Certain Interlaced streams no longer decode incorrectly
- Interlaced interframes using Alternate Vertical Scan now decode
- correctly
- Interlaced B-frames no longer abort decoding
- Fixed bug in interlaced B-frame decoding
- Fixed bug where cross-gov bframes would display backwards
- Fixed QT7 dual-pass bug
- Fixed bug in interlaced I-frame decoding
- Fixed bug in interlaced P-frame decoding
- Fixed bug in interlaced B-frame decoding
- Fixed bug in non-interlaced B-frame decoding
- Fixed bug where AVC support was advertised when it wasn't actually supported
- Sorenson GMC is now decoded correctly
- Multiple warp point GMC is now decoded correctly
- Fixed an encoder issue where video glitches would appear when encoding still scenes for a period of time.
- Fixed an MMX bug in the decoder.
- Fixed a QT7 bug in the decoder.
- Fixed low constant bitrate encodes.
- DirectShow Media Splitter
- Fixed an offset/sync related bug
- Fixed a filter connection bug
- Fixed an AMR connection bug
- Various seek/sync issues, especially in frame-based seeking were fixed
- Fixed a buffer overrun in the chapter parsing
- Fixed a junk character in the chapter parsing
- Fixed a crash when reading empty chapter lists
- Fixed an issue which prevented slightly non-compliant Real M4A files from decoding successfully.
- Frame-based seeking now works perfectly
- Badly muxed IBM MP4 files no longer cause the splitter to crash
- Fixed memory leaks
- Fixed a crash when a track had no samples
- No longer detects SDSMv1 as ODSM
- Fixed a crash when attempting to connect an AVI directly to an MP4
- MP3 in MOV/MP4 playback works correctly
- Correctly fast forwards video streams
- Fixed windows media player allowing invalid play rates
- Can now be inserted into graph if no video components installed
- DirectShow Media Muxer
- A minor GUI issue was fixed
- No longer stalls when muxing audio+video tracks of differing lengths
- Chapter Editing GUI no longer has serious issues
- Muxer no longer crashes when you load a chapter time file twice
- Muxer now works reliably when being reused in a graph
- "Use Fragments" no longer has the side-effect of disabling "Make Streamable" option when muxing to a MOV file. Note: Fragments are not used when muxing MOV files and the "Use Fragments" checkbox should have no effect when muxing to MOV
- Fixed memory leaks
- Fixed a bug which caused tracks to be muxed with no samples
- Fixed a bug where the muxer would extend the previous frame's duration when the graph was paused causing synchronization issues
- Muxer no longer crashes when muxing with no output connected
- Muxer no longer allows video to be muxed into an audio only file
- Fixed bug where under certain circumstances a video pin would not be allowed to be connected
- Fixed a bug that caused crash when video contains chapter information
- Fixed a bug that could cause a crash if chapter allocation failed
- Fixed a bug which would cause chapter information to not be loaded from upstream filters
- DirectShow Video Decoder
- No longer crashes Explorer.exe when previewing video
- Preroll/Discontinuity/SyncSample flags no longer have inverted states in some cases
- Fixed a problem where the decoder might not be able to connect to a renderer
- Fixed some active object leaks
- Fixed bug where video decoder corrupted video encoders preferences
- Fixed crash when attempting to play partitioned data streams
- DirectShow Video Encoder
- Corrupted GUI resources fixed
- Now sets output sample size correctly
- Fixed a massive memory leak
- Crash when building a graph in certain situations was fixed
- Now can change first and second pass log filename
- Crash when second-pass encoding with non-existant second pass log file fixed
- Now correctly detects when live core settings can be modified
- DirectShow Audio Decoder
- Fixed a bug on WinXP/DX9 where low samplerate audio would play at double speed
- Bitrate display should now be accurate for all sample rates and Object Types including HE-AAC
- Fixed a memory leak
- Fixed more memory leaks
- Fixed a small memory leak
- Fixed a thread-safety bug
- Fixed a bug where if the first frame was corrupt the entire stream would fail to decode
- Fixed a bug where explicit non-backwards compatible HE-AAC was shown as LC-AAC
- Fixed a bug where SBR would not playback at the right samplerate
- Fixed some active object leaks
- DirectShow Audio Encoder
- Minor memory leak was fixed
- QuickTime Video codec
- Fixed a bug which caused the encoder to overshoot when encoding at low bitrates at low framerates
- Fixed a race condition which was causing a crash when fast-forwarding in QT7 Player on fast Mac OS X machines
- Fixed an issue which caused only keyframes to be encoded when an application specfied a temporal quality or temporal keyframing
- Fixed an encoding issue with Adobe Premiere
- Fixed crash when playing MPEG-4 MOV files with QT7.1.3
- Encoder Video Preview no longer shows a green screen with First Pass mode
- Plugged small memory leak during component shutdown
- Now passes partitioned data streams to QuickTime
- QuickTime Video codec for Mac OS X
- Fixed a bug where some GUI elements would not respond on OS9 systems
- Fixed an AltiVec MPEG Dequantization bug
- Fixed an AltiVec bug where a diagonal/green picture appeared on certain non-mod16 resolutions
- Encoding from a Sorenson video to with Cleaner 6.0.1 no longer causes garbled output
- Fixed an AltiVec bug where ARGB32 video which is non aligned on 16byte boundary would cause a crash
- Problem with default mode selection fixed
- Fixed a bug when decoding interlaced B-frames which resulted in black and white spots appearing
- Workaround for a crash which happened when fast forwarding, or playing a very high framerate video in QT7
- Fixed a bug which caused iMovie 3 to crash when setting the QuickTime export options for the codec
- No longer outputs 'green screen' on Intel Macs
- About box now has correct version graphics
- Fixed a minor graphical glitch with the Quantization menu in advanced tab
- Now passes partitioned data streams to QuickTime
- QuickTime Video codec for Windows
- Fixed a resource build error
- QuickTime Media Importer
- Fixed a bug causing minor memory corruption while importing audio tracks
- QuickTime Media Exporter
- Now has correct version information
- Windows Config
- No longer displays incorrectly on resolutions <= 800x600
- Windows Installer
- Fixed a bug in an OEM installer mode
- Now properly sets the startmenu 3ivxConfig.exe and Uninstaller.exe icons
- Fixed a bug where the installer would start installing before the uninstaller finished launching
- Fixed a bug where the installer would not refresh the DirectShow active filters list after removing the 3ivx filters
- Fixed a bug under OEM no audio installer, now correctly sets file association for .mp4 and .mov
- Restores any previous video for windows codecs which may have been overridden
- Fixed Windows Vista uninstallation not removing start menu links
- Doesn't wait anymore for file association update to complete
- Mac OS X Installer
- Now asks once for admin authorization during uninstall under 10.3.x
- Fixed bug under 10.3.x
- Now correctly moves receipts for current user install under 10.3
- Mac Registration Application
- Now quits application when registration document closes
Known Bugs
- MPEG-4 Video Core
- Multiple packed B-frames (XviD Jambo) have issues
- QuickTime Video codec for Windows
- When one movie has two or more video tracks, each encoded with 3ivx there may be problems playing the video when DirectDraw Acceleration is enabled in the QuickTime settings control panel. Work-arounds, disable DirectDraw acceleration, or DirectDraw.
- DirectShow Media Muxer
- The muxer is currently limited to muxing streams no more than approximately 9.942 hours in length. If you attempt to mux a stream longer than this the resulting MP4 will be corrupt.
- DirectShow Video Decoder
- YUY2 output samples have the wrong ActualDataLength
- QuickTime Video Decoder
- Uses excessive memory when decoding because of crash-workaround
Unknown Bugs
- DirectShow Media Muxer
- The DS Muxer probably can't mux streams over 4GB in size
Missing Features
- MPEG-4 Video Core
- Interlaced decoding is not implemented for S-frames (GMC)
- DirectShow Media Muxer
- Fragmented Muxing is not ISO compliant and has been disabled
- QuickTime Media Importer for Mac OS X
- Media Importer is not release quality. You can install it via a Custom Install on Mac OS X
Non Issues
- DirectShow Media Muxer
- The splitter can not be connected to the output of the muxer.
Permanent Issues
- MPEG-4 Video Core
- XviD streams prior to build0000 (ie up to and including 0.9 stable series) with non-multiples of 16 are not MPEG-4 compliant and exhibit occasional glitches. There is no work-around.
- NVops (not coded PVops) can be used to more efficiently represent dropped frames or frames which are identical to the previous frame. NVops are not correctly handled by the QuickTime MPEG-4 Stream hinter and will cause a -5402 error when attempting to hint a file which contains NVops. The solution is to not use NVop coding. The 3ivx DirectShow Media Muxer can be used to remove NVops from an already coded bitstream. (This is currently still an issue with QT6.5)
- QuickTime Video codec
- QuickTime 7's native datarate setting is now in kilobits/sec. There are 1000 bits in a kilobit, and 1024 bytes in a kilobyte, according to the QuickTime Player. Due to a work-around for an error in QT7's kilobit->byte conversion, third party applications which do not use the QT7 codec selection dialog to obtain a datarate from the user (in kilobits/sec) may end up undershooting by a factor 1.024 (roughly 2.5%). In order to correct for this multiply the datarate you enter into affected applications by 1.024. This is only an issue when using QT7.
For further information see TBD:3ivx MPEG-4 4.5.1
|
|
Jump to...
|
|
Other Sections
|
|
|
|