View Single Post
Old 29th September 2011, 20:31   #1  |  Link
06_taro
soy sauce buyer
 
Join Date: Mar 2010
Location: United Kingdom
Posts: 164
avs4x26x v0.10.0 ( support high-bitdepth avs & customized x264/x265 path & avs+ )

Piping faked 16-bit avs output ( MSB and LSB field interleaved clip ) to x264_64.exe using original avs4x264 results in wrong resolution and video. So I modified it to behave in a correct way. It is a command line tool to be used with x264 / x265, and you can also safely rename the executive file to "avs4x264.exe" and replace the original one in MeGUI's tools/x264 folder.

Download links ( source codes are here) :
avs4x26x-0.10.0-1-git-r71(db90333).7z

Modifications:
Code:
-- When x26x's parameter "input-depth" is set and is not equal to 8,
   divide "width" by 2. This makes faked 16-bit avs output, i.e.,
   MSB and LSB field interleaved clip, be treated correctly by x26x.
   If "input-depth" is not defined or equals to 8, avs4x26x acts
   in the same way as original avs4x264.

-- Print full command-line piped to x26x.exe to screen, prefixed
   by "avs4x26x [info]:".

-- Make x264_64.exe path changeable. The path of x26x binary can be
   set by --x26x-binary "x26x_path" or -L "x26x_path". If custom path
   is not set, default path "x264_64.exe" will be used in normal case,
   while if output file extension is *.265/.h265/.hevc, "x265" will be
   launched.

-- Directly output i422/i444 with AviSynth 2.6 csp YV16/YV24.

-- Show help info when running with no options.

-- Improve capability with more styles of parameters in x26x.
   E.g., --tcfile-in="timecode.txt", --input-depth=16,
         --x26x-binary="x264", -L=x264 and -Lx265.

-- Do not add --input-res/--fps/--frames/--input-csp if already defined.

-- Correct number of frames to be handled when --frames is defined.

-- Add "--seek-mode" to decide use "fast" seek mode or "safe" seek
   mode when has "--seek". Default is "fast".
   -- "fast" mode is similar to x26x's internal method of avs demuxer:
      skip frames until the frame --seek indicates. However, when used
      with --qpfile/--tcfile-in, it won't skip but add a "FreezeFrame(0,
      seek, seek)" to avs script to actually skip the process of those
      frames. I have to play this trick because x26x regards qpfile or
      tcfile-in as qpfiles or timecodes of input files, not output files,
      so the frame numbers of input piped raw ( can be linearly seeked
      only in x26x ) has to be left untouched.
   -- "safe" mode uses a safer but slower method: delivering every
      untouched frame to x26x. When the process of frames before "--seek"
      frame is heavy, the "useless" running time of processing those
      frames will be much longer than "fast" mode, but the result is
      safer for scripts like TDecimate(mode=3), which can only be seeked
      in a linear way.

-- Add "--timebase" when using "--tcfile-in".

-- Correct framerate to proper NTSC fraction if applicable.

-- Support direct .d2v/.dga/.dgi input, plus .vpy input with either
   VapourSource(VSImport) or vfw interface(AVISource/HBVFWSource), and
   some media file input such as .avi/.mkv/.mp4/.m2ts/etc.

-- Support AviSynth+.

-- Support x262/x265.
   However, the x265 style "x265 <infile> <outfile>" is not supported
   and probably never will. You need to use -o or --output before outfile.
Code:
avs4x26x - simple AviSynth pipe tool for x262/x264/x265
Version: 0.10.0.70, built on Aug 28 2014, 15:19:31

Usage: avs4x26x [avs4x26x options] [x26x options] -o <output> <input>

Supported input formats:
     .avs
     .d2v: requires DGDecode.dll
     .dga: requires DGAVCDecode.dll
     .dgi: requires DGAVCDecodeDI.dll, DGDecodeNV.dll or DGDecodeIM.dll according to dgi file
     .vpy: try to use VSImport -> AVISource -> HBVFWSource
           (VSImport requires VapourSource.dll)
           (HBVFWSource requires HBVFWSource.dll, and will force input-depth=16)
     .avi: try to use AVISource -> LWLibavVideoSource -> FFVideoSource(normal)
                      -> DSS2 -> DirectShowSource
     .mp4/.m4v/.mov/.3gp/.3g2/.qt:
           try to use LSMASHVideoSource -> LWLibavVideoSource
                      -> FFVideoSource(normal) -> DSS2 -> DirectShowSource
     .m2ts/.mpeg/.vob/.m2v/.mpg/.ogm/.ogv/.ts/.tp/.ps:
           try to use LWLibavVideoSource
                      -> FFVideoSource(demuxer="lavf" and seekmode=-1)
                      -> DSS2 -> DirectShowSource
           seek-mode will be forced to "safe" for these formats if ffms is used
     .mkv/.flv/.webm:
           try to use LWLibavVideoSource -> FFVideoSource(normal) -> DSS2
                      -> DirectShowSource
     .rmvb/.divx/.wmv/.wmp/.asf/.rm/.wm:
           try to use DSS2 -> DirectShowSource
     (FFVideoSource, LWLibavVideoSource, LSMASHVideoSource, DSS2, DirectShowSource
           requires ffms2.dll, LSMASHSource.dll, avss.dll, DirectShowSource.dll)

Options:
 -L, --x26x-binary <file>   User defined x26x binary path.
                                Default: "x265" if output file is *.h265/.265/.hevc
                                         otherwise "x264_64"
     --seek-mode <string>   Set seek mode when using --seek. [Default="fast"]
                                - fast: Skip process of frames before seek number as x26x does if no
                                        --tcfile-in/--qpfile specified;
                                        otherwise freeze frames before seek number to skip process, 
                                        but keep frame number as-is.
                                        ( x26x treats tcfile-in/qpfile as timecodes/qpfile of input 
                                        video, not output video )
                                        Normally safe enough for randomly seekable AviSynth scripts.
                                        May break scripts which can only be linearly seeked, such as
                                        TDecimate(mode=3)
                                - safe: Process and deliver every frame to x26x.
                                        Should give accurate result with every AviSynth script.
                                        Significantly slower when the process is heavy.
Code:
avs4x26x.exe --x26x-binary "C:\x264_64-10bit.exe" --output "out.264" --input-depth 16 "in.avs"
avs4x26x input.avs -o output.h265
avs4x26x -o output.h265 input.avs --input-depth 16
Attached Files
File Type: 7z avs4x264mod-0.9.0-git-r62(691c5c4).7z (14.8 KB, 768 views)
File Type: 7z avs4x264mod-0.9.1-git-r64(105c53a).7z (25.6 KB, 3423 views)
File Type: 7z avs4x26x-0.10.0-git-r70(28fdd98).7z (28.1 KB, 388 views)
File Type: 7z avs4x26x-0.10.0-1-git-r71(db90333).7z (28.3 KB, 1191 views)

Last edited by 06_taro; 28th January 2015 at 10:51. Reason: avs4x26x-0.10.0-1-git-r71(db90333).7z
06_taro is offline   Reply With Quote