xvidenc Changelog

What's new in xvidenc 8.4.4

Sep 28, 2012
  • Don't append '- chapter [id]' to output filename when user encodes only specific DVD chapters
  • Change bad default bitrate value in DTS audio encoding to 384kbps.

New in xvidenc 8.1.7 (Jul 3, 2009)

  • Fallback to undefined audio language in the AUDLANG[$i] variables if we detect unknown language from MPlayer's output
  • Added support for bitrate-based ABR Vorbis encoding in addition to quality-based VBR. ABR mode in Vorbis resembles quality-based VBR except the encoder averages a given nominal bitrate
  • Updated the Vorbis part of the video bitrate calculation code
  • Added new function ratio_and_pixels_func() which calculates and displays the Storage Aspect Ratio (SAR), Pixel Aspect Ratio (PAR) and total pixels from resolution
  • Bugfix for track 1 in the internal audio encoding code. If using aacplusenc to encode audio, the case statement had a wrong selection value (aac instead of aac+) resulting in displaying a failed message and forcing an exit even though the encoding may have succeeded
  • Simplifications to the internal audio encoding code which reduce code duplication

New in xvidenc 8.1.6 (Jun 30, 2009)

  • Bugfix: array variable TRACKID[1] was missing for single file encodes. This results in erratic behavior of the audio code
  • Bugfix: second/third audio tracks were ignored by the OGM muxing code if audio codec is MP3

New in xvidenc 8.1.5 (Jun 29, 2009)

  • Converted most of the variables in the video_subtitles_func() function to arrays. Moderately reduces some code duplication
  • Use array variables ${SUBFILE[2]} and ${SUBFILE[3]} instead of ${OUTPUT%.*}_sub2 and ${OUTPUT%.*}_sub3 when dumping the second/third DVD subtitle
  • Simplified the MKV cover art importing code
  • Major audio code restructuring and partial rewrite. Converted virtually all audio variables to array variables. This reduces a lot of code duplication and makes the audio code much easier and extensible
  • Added support for a third DVD audio track
  • Added support for per track audio codec for DVD encodings
  • Use external flac encoder to encode to FLAC audio as doing it through mencoder is terribly broken. This updates the config file to version 7 and adds the 'flac' encoder as dependency
  • Use only one named pipe when encoding audio tracks to neroAAC/AAC+/Vorbis/FLAC
  • Updated and optimized the containers muxing code to support the above audio changes
  • Updated the bitrate calculation code for target size to support the above audio changes
  • Disallow autocropping, if enabled in the config file, for directory batch encodings
  • Disallow automatic detection of audio sample rate for directory batch encodings
  • Added support for MP4 hinting for RTP/RTSP sessions
  • Updated the man page

New in xvidenc 8.1.5 (Jun 29, 2009)

  • Converted most of the variables in the video_subtitles_func() function to arrays. Moderately reduces some code duplication
  • Use array variables ${SUBFILE[2]} and ${SUBFILE[3]} instead of ${OUTPUT%.*}_sub2 and ${OUTPUT%.*}_sub3 when dumping the second/third DVD subtitle
  • Simplified the MKV cover art importing code
  • Major audio code restructuring and partial rewrite. Converted virtually all audio variables to array variables. This reduces a lot of code duplication and makes the audio code much easier and extensible
  • Added support for a third DVD audio track
  • Added support for per track audio codec for DVD encodings
  • Use external flac encoder to encode to FLAC audio as doing it through mencoder is terribly broken. This updates the config file to version 7 and adds the 'flac' encoder as dependency
  • Use only one named pipe when encoding audio tracks to neroAAC/AAC+/Vorbis/FLAC
  • Updated and optimized the containers muxing code to support the above audio changes
  • Updated the bitrate calculation code for target size to support the above audio changes
  • Disallow autocropping, if enabled in the config file, for directory batch encodings
  • Disallow automatic detection of audio sample rate for directory batch encodings
  • Added support for MP4 hinting for RTP/RTSP sessions
  • Updated the man page

New in xvidenc 8.1.4 (Jun 19, 2009)

  • Simplifications to the MKV tagging code which reduces some code duplication
  • Bugfix: FAAC acodec2 variable has wrong mpeg value. Must be mpeg=4 instead of mpeg4. This results in failure in encoding of the second audio track when one selects FAAC as encoder
  • Bugfix: FLAC audio was ignored for the second track due to missing value in the selection of the case statement
  • Added support for tagging of MKV files when doing a directory batch encoding
  • Replaced the IMPSUB1, IMPSUB2 and IMPSUB3 variables, used to import subs when input type is file/directory/vcd, by array variables EXTSUB[1], EXTSUB[2] and EXTSUB[3]. This allows for less code duplication as these array variables are shared by all input types (including DVD) and thus we only need to do a small loop and add their values if not empty to the MKVSUBS, MP4SUBS and OGMSUBS variables
  • Use as temp directory $HOME/.xvidenc/job
  • Added new function audio_stream_copy_func() which will print a warning that audio stream copy in directory batch encoding mode is not recommended unless the user is certain that the files have a supported audio codec by the MKV/MP4/OGM containers
  • Group audio filters under a submenu similar to how the video filters are grouped
  • Some small cleanups

New in xvidenc 8.1.3 (Jun 18, 2009)

  • Added support for per track audio bitrate for DVD encodings
  • Added support for per track audio normalization and volume adjustments for DVD encodings. Updated functions audio_volnorm_func() and audio_volume_func()
  • Added support for per track audio resampling for DVD encodings. Updated functions audio_resample_filters_func() and audio_resample_func()
  • Updated the video bitrate calculation code to support the above audio changes
  • Added support for per track AAC profile settings (LC/HE/HEv2) when using the neroAacEnc audio encoder
  • Small modifications to the MKV/MP4 tagging and muxing code to support the per track neroAacEnc AAC profiles. This also includes optimizations to the way the tagging code handles different AAC profiles. If LC profile is chosen, audio will be tagged as LC-AAC (along with channels info). For HE and HEv2, audio will be tagged as HE-AACv1 and HE-AACv2 (along with channels info) respectively
  • Moved the MKV tagging code inside the MKV muxing code
  • Converted the EXTSUB1, EXTSUB2 and EXTSUB3 variables, used to import external DVD subs, to arrays so we can easily check different files for their file extensions
  • Only allow SRT subs as import into OGM. If another subs format is provided, the subs will be skipped. For MP4, do not allow ASS/SSA subs since it's not supported yet by MP4Box. For MKV, do not allow SUP and TTXT subs

New in xvidenc 8.1.2 (Jun 15, 2009)

  • Update to the video_subtitles_func() function: for DVD encodings, added support for importing up to three external subtitles into MKV/MP4/OGM. Also added support for hardcoding an external subtitle into the movie
  • Updated the MKV/MP4/OGM muxing code to support imports of external subtitles
  • If dumping of the second and/or third DVD subtitle fails and user has selected to import the subs into MKV/MP4, force an exit since container conversion will fail as the muxing programs will complain about the missing subs. If no container conversion is chosen or user has chosen not to import the subs and dumping of subs fails, just continue since there's nothing critical in this case
  • Use mplayer -really-quiet option instead of redirection to /dev/null when dumping audio to a named pipe for neroAAC/Vorbis/AAC+ encoding
  • Some small updates to the man page

New in xvidenc 8.0.9 (May 30, 2009)

  • Use the same name for the log file as the output file name
  • Force using the libmpeg2 decoder when encoding DVDs/VCDs (works slightly better in specific cases compared to ffmpeg2)
  • Added support for IVTC 59.940 -> 23.976 fps

New in xvidenc 8.0.8 (May 12, 2009)

  • Added deinterlace combinations of Yadif + linear blend, linear interpolation, cubic interpolation, median deint, ffmpeg deint and lowpass 5
  • Cosmetics to the help menu
  • Added global audio function audio_filters_func() for calling the resample, volume normalizing and volume filters
  • Added 15 new variables to the config file for enabling/disabling of specific audio/video filters and containers: ALLOW_FPS_CONVERSION, ALLOW_SCALER_TUNING, ALLOW_DSIZE, ALLOW_EXPAND, ALLOW_COLORSPACE, ALLOW_ASPECT, ALLOW_AUD_RESAMPLE, ALLOW_AUD_NORMALIZE, ALLOW_AUD_VOLUME, ALLOW_MKV_MUXING, ALLOW_MP4_MUXING, ALLOW_OGM_MUXING, ALLOW_SAMPLE_ENCODING, ALLOW_SCAN_MULTIPLE_VIDSTREAMS and ALLOW_SCAN_MULTIPLE_AUDSTREAMS, the last two are only effective on file encodings
  • Updated the man page

New in xvidenc 8.0.7 (May 7, 2009)

  • Automatically add the shebang line to batch files and make them executable
  • Added Apple iPod preset (request from Rogério Brito from the LAME team)
  • Added MP3 presets and updated target file size code to support them (requested by Rogério Brito)
  • Updated the audio code and aac/neroaac functions to support the iPod audio restrictions
  • Added -ipod parameter to MP4Box when using the iPod preset
  • Added new variable ALLOW_AUTOCROP to the config file which allows the user to enable or disable automatic cropping
  • Updated the man page

New in xvidenc 8.0.6 (Apr 29, 2009)

  • Optimize some variables by replacing piping to sed with VARIABLE1="${VARIABLE2%.*}.ext"
  • Add -loop 1 mplayer option to the config file's MPLAYEROPTS variable
  • Add support for enabling/disabling specific pre/postprocessing filters in the config file. This adds 7 new variables to the config file where the user can either enable to ask questions about a specific filter or disable a specific variable, thus skipping questions about the filter
  • Moved the video filters code to a new function called video_filters_func(). This also reduces a bit of code duplication
  • Add a new option -e which allows the user to edit the config file directly from within the terminal. This adds a new variable EDITOR to the config file where the user can set his preferred text editor (defaults to nano)
  • Add video title meta-data for MKV and OGM when doing directory batch encodings
  • Silence possible dvdxchap warnings
  • Updated the man page

New in xvidenc 8.0.3 (Jan 22, 2009)

  • Add title/movie name to MKV and OGM as meta-info. The title is taken from the output name provided by the user. For directory encodings, this will be skipped
  • Add audio codec and audio language meta-info to MKV when encoding DVDs and copying the audio track(s)
  • Added support for the expand video filter
  • Slightly improved info when the script is called without any parameters
  • Implemented denoising presets for the 'tn' temporal denoiser
  • Merge the mp3, aac, ac3 exporting code with the ffac3 and ffdts one since it's the same for the second audio track
  • Small improvement/fix: when encoding two audio tracks to HE-AAC audio and muxing them into MKV, mkvmerge uses for both tracks the same track ID (1) while xvidenc assumes that the second track uses track ID 2 which is wrong so the option --aac-is-sbr 2:1 is incorrect here and should actually be --aac-is-sbr 1:1 for the second audio track.

New in xvidenc 8.0.2 (Jan 14, 2009)

  • Use 'source' instead of '.' for importing files into the script. Makes it easier for me to read when my eyes are tired
  • Improvements to the audio_resample_func() function. Automatically detect the audio sample rate of the content and display it. Also, moved the resample filters into a function called audio_resample_filters_func(). The reason for this is to be able to compare the detected audio sample rate with the selected one. If the user selects a sample rate which equals the detected one, resampling will be skipped as there is no point in running a resampler if the detected and selected sample rates are equal - mencoder always picks up the sample rate of the content.
  • For directory encodings, offer an option to automatically delete the AVI file after remuxing to the other containers. This can considerably reduce disk space usage, especially when encoding a directory with a lot of files in it.
  • Replaced all 'tail -1' commands with 'tail -n 1' since 'tail -1' is made obsolete as stated by the info page of tail
  • Calculate and display the amount of frames when scanning a video file. Also display seconds in addition to minutes for the runtime
  • Replaced MB and GB with MiB and GiB

New in xvidenc 8.0.1 (Dec 12, 2008)

  • Removed signal SIGTSTP from the trap list. The user can now suspend the encoding process with CTRL+Z and continue later on by typing fg in the terminal
  • Added support for the software equalizer video filter (eq2)
  • Don't exit if the user did not add the .avi extension for the output file. Instead automatically add the extension to it
  • Small loop modifications in the video_subtitles_func() function
  • Set default AAC profile when using neroAacEnc to LC instead of HE
  • Added support for VCD/SVCD encodings
  • Small loop modifications to the get_dev_devices_func() function
  • Small modifications to the install script
  • Updated the man page

New in xvidenc 7.9.9 (Dec 4, 2008)

  • Remove support for MP2 and WMA audio
  • Use MEncoder to dump the video when remuxing to MP4 as MP4Box can crap out in certain cases. I'm tired of fixing MP4Box' problems :/ but the alternative (mp4creator) is a piece of crap too and is no longer maintained. It doesn't support VobSub subtitles either, nor chapter files AFAIK
  • Added support for providing a custom factor value when using the video bitrate calculation formulas
  • Added initial support for a second audio track for DVD encodings. Below is a list of what currently works and what doesn't:
  • PCM audio is not supported yet. It's not a priority for me
  • If you're looking for second audio track in AVI, don't waste your time. I will never support it. Use the MKV/MP4/OGM containers
  • Audio filters are supported for both tracks
  • Audio codecs and audio filters apply to both tracks. One can't use, for example, Vorbis audio for first and AAC audio for second track. One also can't set audio bitrate independently for each track
  • Audio stream copy is supported by the MKV/OGM containers. For the MKV container one can copy AC3 + AC3 or AC3 + DTS audio. For OGM only AC3 + AC3 is supported since it knows nothing about DTS audio. If DTS audio is selected, it will be ignored
  • I use (very?) dirty tricks to maintain (perfect?) A/V sync when one uses frame altering video filters, like bobbing, interlacing, ivtc/telecine, FPS conversion
  • Updated the video bitrate calculation code to support a second audio track
  • Updated the MKV/MP4/OGM containers code to support a second audio track
  • Better explanation about what the -r option does/is used for
  • Implemented audio_exit_func() function. This function kicks in effect if the audio encoding with an external audio encoder didn't succeed. If this is the case, the function will be called with the appropriate parameters and will force an exit to prevent container conversion. This is because if the audio encoding fails for some reason, container conversion will automatically fail too since the muxing programs will complain about the missing audio file and will exit, thus there is no point in continuing and displaying conversion failing messages
  • Reduced the amount of options displayed when one calls the script without any parameters. From now on it will just display: Usage: xvidenc < options > Use 'xvidenc -help' for more information
  • Some old comments cleanups
  • Updated the man page

New in xvidenc 7.9.7 (Nov 25, 2008)

  • Bugfix: the vobsubout3 variable was not tested in the MKV/MP4 muxing code. This leads to the third subtitle not being imported into these containers
  • Implemented real batch support for files. As of now, one can encode a bunch of video files in a directory and automatically remux them to MKV/MP4/OGM. The user needs to configure only one of the files in a given directory and all the settings will apply to the other files as well
  • New formulas to calculate the video bitrate for a target filesize. The user can choose between MeGUI's formula, xvidenc's refactored MeGUI formula and the old xvidenc/ripdvd formula

New in xvidenc 7.9.6 (Nov 24, 2008)

  • Added support for the aacplusenc AAC+ audio encoder from Matteo Croce
  • Updated the MP4 & MKV batch exporting and muxing code to support the aacplusenc encoder
  • Rewrote the DVD part of the video_subtitles_func() function. It now supports dumping of three subtitles
  • Updated the MKV/MP4 muxing code to support importing of three subtitles
  • Dramatically simplified the MKV/MP4/OGM batch exporting code. This reduces a lot of code duplication
  • Display elapsed time when encoding samples
  • Bugfix in the video_subtitles_func() function for SRT subtitles. Wrong variable used
  • When encoding samples, make sure to take care of any subtitles that might have been dumped to disk
  • Added support for deinterlacing at half frame rate. Useful for interlaced content that's running at 50 or 59.940 fps (100i/120i)
  • Reduced some code duplication in the set_output_filename_func() function by moving path and extension checking into its own function
  • New formula to calculate the video bitrate for a target filesize. The previous formula, which was directly taken from the ripdvd project, incorrectly calculates the bitrate which often results by missing the target filesize by as much as 30 MB. The new formula also uses floating point precision and has been tested against the calculators of MeGUI and Avidemux
  • Moved the DVD device detection code into its own function to reduce some code duplication
  • Removed neroAacEnc quality-based encoding mode. It is incompatible with video bitrate calculation for a target size and I cannot find any info on quality -> average bitrate mappings.
  • Don't exit if the user provides a floating point value for the Vorbis audio codec. Instead warn and use the default value
  • In some cases it is possible for divxenc to leave its unique temp directory. Find those directories and remove them if they are 15 or more days old
  • Removed support for MPEG-2 AAC and ADPCM audio
  • Updated the source_fps_func() function
  • Removed the noise filter. No real use for it
  • Updated the audio_resample_func() function
  • Updated the check_audio_codec_func() function
  • Updated the genconfig_func() function
  • Updated the man page
  • Updated the README.xvidenc file

New in xvidenc 7.9.5 (Nov 17, 2008)

  • Improved DVD handling. Now there's a menu where the user can select the input type: ISO image, VIDEO_TS folder or DVD drive
  • Added neroAAC audio support for the MKV container
  • Removed AAC object type complexity menu. AAC (FAAC) is best used in low complexity mode
  • Set the field order of the tfields filter to auto detection
  • Implemented configuration file support. As of this version, xvidenc automatically generates a config file in its configuration directory. The config file can be used by the user to modify/set the paths to various programs. This can be useful if the user has multiple executables of the same program(s) but wants to use a specific one for the job. It can also be used to set the correct path to a program if the program in question is not located in a standard location and cannot be found by the system. The configuration file cannot be used to store encoding settings or other parameters! It is only meant for the tools needed for the correct operation of xvidenc. The config file will be generated in /home/user_name/.xvidenc/config. The config file has its own versioning system and will be automatically updated in case something changes in future versions of xvidenc
  • Added -r option to reset the config file in case the user has made any changes to it and wants to restore the original values of the config file
  • Added extra strong denoising preset for the denoise3d & hqdn3d filters
  • Updated the man page.

New in xvidenc 7.9.4 (Oct 23, 2008)

  • Small improvement: when using the vorbis audio codec and muxing to the Matroska container, do not extract the video from the AVI since mkvmerge takes the video directly from the AVI and we can skip the extraction step. Extraction is only necessary if the user has also chosen the MP4 container
  • Added Vorbis audio support for the OGM container
  • Removed path specification for MEncoder
  • Separated the 'normal' deinterlacers from the frame doubling ones
  • denoise3d & hqdn3d: implemented weak/medium/strong denoising presets
  • Removed quantization parameters for the spp, uspp, fspp and pp7 deblockers
  • Improved subtitle handling for video file encodings. Now the user can select to hardcode a given subtitle into the movie or import it into the MP4 and/or MKV container. Only two subtitle formats are supported and have been tested: VobSub and SRT
  • Added support for sample encoding and previewing. When encoding samples, one can specify the start position and the duration in seconds for the sample. Sample encoding respects encoding passes meaning if you execute xvidenc in two-pass mode and want to encode a sample before the real encoding starts, then the sample will also be encoded in two-pass mode with all the options and filters that the user has selected. Sample encoding can further be used to encode only specific parts of a video file or a DVD. In regards to DVDs, sample encoding does not respect selected DVD chapters meaning the given start position for the sample will overwrite the selected DVD chapter(s). This is a mencoder problem and there's nothing I can do about it.
  • Updated the crop preview code. Instead of sleeping for 15 seconds and then killing the PID value of mplayer, use the -endpos option
  • Cosmetics & cleanups
  • Updated the man page