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