View Full Version : HCenc 027
hank315
22nd October 2013, 16:41
After a long time an update:
HCenc 0.27 beta - release date 21-10-2013 (http://hank315.nl/files/HC_027/HC027_beta_21-10-2013.zip)
- support for YV16 (4:2:2) and YV24 (4:4:4) colorspace
- lossless intermediate mode implemented for all colorspaces
- Avisynth script written in logfile
- some more bugs solved
For colorspace YV16 and YV24 Avisynth 2.6 is needed, Avisynth 2.5 doesn't recognize YV16/YV24 colorspace.
HCenc doesn't upsample chroma so for 4:4:4 output you need YV24 input.
HCenc can subsample chroma, so for instance YV24 input can be subsampled to 4:2:0 output, using progressive or interlaced subsampling.
Of course you can also use the upsampling/subsampling functions of Avisynth 2.6.
Guest
22nd October 2013, 17:10
Sweet! Thank you, Hank.
Questions: are the GUI and encoder combined in one EXE now? All I see in your ZIP is the single EXE. And what about the matrices, the DGDecode stuff, etc.?
manolito
22nd October 2013, 17:50
Taken from the "Notes" section for 0.27 beta:
- only encoder, still working on the GUI
Looks like you need to use the GUI and all the other extras from the previous version...
@Hank
Thanks very much for the new version...:)
Could you elaborate a little on this:
- some more bugs solved
Since I have no use for the new colorspace features I'd like to know if I should upgrade from version 0.26.
Cheers
manolito
hank315
22nd October 2013, 18:56
It's the encoder only, still working on the GUI.
So the HC.ini must be edited by hand but I hope to finish the complete package soon.
For now I will add the DGdecode.dll to the zip-file.
If you don't need the new colorspaces then there's no real need for this new beta version.
About the bugs, two come to mind:
- lossless intermediate mode is fixed for YUY2 input
- small error in the calculation of the Macro Block variance (used for adaptive quantization decision) fixed
and some more I already forgot.
Sparktank
23rd October 2013, 07:39
:thanks: For "Avisynth script written in logfile".
Millions of small test samples will definitely come in handy now.
hank315
24th October 2013, 01:05
HC027 updated, now also includes GUI.
filler56789
24th October 2013, 03:43
HC027 updated, now also includes GUI.
:thanks:
Sharc
24th October 2013, 10:18
Thank you hank315! :)
qyot27
25th October 2013, 00:44
0.27 is exhibiting an error involving FFMS2 and AviSynth 2.6. The script is being detected as 4:4:4 even though the video file being served in is 4:2:0, and I'm not doing any colorspace conversions at all (I even went so far as to append ConvertToYV12 to the end of the script, and it still registered as 4:4:4). Converting the input to AVI first and running it through AVISource instead allows 0.27 to work as expected.
Initially I encountered the problem on our iMac (with a Sandy Bridge i5) running everything under Wine, but the window closed too quickly to see the error. Testing it on my old Pentium III I could see the 4:4:4 issue. Seen with AviSynth 2.6 MT 2013.03.09 and 2013.09.28, AviSynth 2.6a5, and AviSynth+ 2013.10.16.
Fishman0919
25th October 2013, 04:23
@hank315
Thank You kind Sir!
Darksoul71
25th October 2013, 11:38
HC027 updated, now also includes GUI.
:thanks: :thanks: :thanks:
hank315
25th October 2013, 12:29
@qyot27
I can replicate it, investigating...
hank315
25th October 2013, 16:11
Next findings using avisynth 2.6 alpha 5 and FFMS2 2.19
...
*Chroma_info = 0;
if (clip->GetVideoInfo().IsYV12()) *Chroma_info = 1;
if (clip->GetVideoInfo().IsYUY2()) *Chroma_info = 2;
if (clip->GetVideoInfo().IsYV16()) *Chroma_info = 3;
if (clip->GetVideoInfo().IsYV24()) *Chroma_info = 4;
return 0;
is part of the HCenc code.
return(0) means the function returns without errors, *Chroma_info is a function argument.
I never used FFMS2 before so I know nothing about it.
FFMS2 with YV12 (4:2:0) source returns the next values:
clip->GetVideoInfo().IsYV12() = TRUE
clip->GetVideoInfo().IsYUY2() = FALSE
clip->GetVideoInfo().IsYV16() = TRUE
clip->GetVideoInfo().IsYV24() = TRUE
*Chroma_info = 4 is set, so HCenc thinks the source is 4:4:4 and will crash.
Perhaps the FFMS2 developers can shed some light on this.
Groucho2004
25th October 2013, 18:06
FFMS2 with YV12 (4:2:0) source returns the next values:
clip->GetVideoInfo().IsYV12() = TRUE
clip->GetVideoInfo().IsYUY2() = FALSE
clip->GetVideoInfo().IsYV16() = TRUE
clip->GetVideoInfo().IsYV24() = TRUE
Just tried this with a little test program and I get FALSE for both YV16 and YV24.
Maybe IanB can help out with this.
IanB
25th October 2013, 21:43
How are you handling the AVS_linkage pointer?
Applications loading Avisynth.dll as a library need to set the AVS_linkage pointer as the very next thing after getting the IScriptEnvironment from CreateScriptEnvironment with env->GetAVSLinkage().
Also a more future proof style might be to use vi.IsPlanar with vi.GetPlaneWidthSubsampling and vi.GetPlaneHeightSubsampling. The current version only allows YV12, YV16, YV24 and YV411 but the hope is to allow arbitrary H and V chroma subsampling.
Groucho2004
25th October 2013, 22:15
In case you're interested, here is some sample code using the new API that has been working well for me:
#include <windows.h>
#include <wintrust.h>
#include <imagehlp.h>
#include <string>
#include "avisynth26.h"
BOOL AvisynthExportsAVSLinkage();
const AVS_Linkage *AVS_linkage = 0;
int main(int argc, char* argv[])
{
//Check if avisynth exports "AVS_Linkage" to make sure at least Avisynth 2.6 Alpha 4 is used
if (!AvisynthExportsAVSLinkage())
{
printf("\nAvisynth 2.6 (Alpha 4 and above) is required.\n");
return -1;
}
HINSTANCE hDLL = ::LoadLibrary("avisynth");
if (!hDLL)
{
cs_avserror = "Failed to load avisynth.dll";
return -1;
}
try
{
IScriptEnvironment *(__stdcall *CreateEnvironment)(int) = (IScriptEnvironment *(__stdcall *)(int))::GetProcAddress(hDLL, "CreateScriptEnvironment");
if (!CreateEnvironment)
{
printf("\nFailed to load CreateScriptEnvironment()\n");
::FreeLibrary(hDLL);
return -1;
}
IScriptEnvironment *AVS_env = CreateEnvironment(AVISYNTH_INTERFACE_VERSION);
if (!AVS_env)
{
printf("\nCould not create IScriptenvironment\n");
::FreeLibrary(hDLL);
return -1;
}
AVS_linkage = AVS_env->GetAVSLinkage();
AVSValue AVS_main;
AVS_main = AVS_env->Invoke("Import", argv[1]);
if (!AVS_main.IsClip()) //not a clip
AVS_env->ThrowError("Script did not return a video clip:\n(%s)", argv[1]);
PClip AVS_clip;
PVideoFrame AVS_frame;
VideoInfo AVS_vidinfo;
AVS_clip = AVS_main.AsClip();
AVS_vidinfo = AVS_clip->GetVideoInfo();
unsigned int uiFrames = (unsigned int)AVS_vidinfo.num_frames;
//read frames
for (unsigned int n = 0; n < uiFrames; n++)
{
AVS_frame = AVS_clip->GetFrame(n, AVS_env);
//...
//...
}
AVS_frame = 0;
AVS_clip = 0;
AVS_main = 0;
AVS_env->DeleteScriptEnvironment();
}
catch(AvisynthError err)
{
//...
}
AVS_linkage = 0;
::FreeLibrary(hDLL);
return 0;
}
BOOL AvisynthExportsAVSLinkage()
{
BOOL bRet = FALSE;
LOADED_IMAGE li;
BOOL bLoaded = MapAndLoad("avisynth", NULL, &li, TRUE, TRUE);
if (!bLoaded)
return bRet;
DWORD expVA = li.FileHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;
PIMAGE_EXPORT_DIRECTORY pExp = (PIMAGE_EXPORT_DIRECTORY)ImageRvaToVa(li.FileHeader, li.MappedAddress, expVA, NULL);
DWORD rvaNames = pExp->AddressOfNames;
DWORD *prvaNames = (DWORD*)ImageRvaToVa(li.FileHeader, li.MappedAddress, rvaNames, NULL);
string sName = "";
int iPos = 0;
for (DWORD i = 0; i < pExp->NumberOfNames; ++i)
{
DWORD rvaName = prvaNames[i];
sName = (char *)ImageRvaToVa(li.FileHeader, li.MappedAddress, rvaName, NULL);
iPos = (int)sName.find("AVS_Linkage");
if (iPos >= 0)
{
bRet = TRUE;
break;
}
}
UnMapAndLoad(&li);
return bRet;
}
manolito
25th October 2013, 23:18
Since I still use AviSynth version 2.57 which does not support these new colorspaces I (falsely) assumed that I was safe from this 4:4:4 error.
Obviously I was wrong. When I try to convert some file using either ffms2 2.17 or 2.19 (plain vanilla 32bit), HC crashes with this 4:4:4 error. Strange...
Cheers
manolito
Taurus
26th October 2013, 09:08
Same here...Crash
ffms2 2.16, 2.17 or 2.19 on standard AviSynth version 2.58.
No MT, 32bit.
The same scripts are working reliable on HCenc 025/026.
hank315
26th October 2013, 21:38
Thanks for comments and advice.
A new package is uploaded but for now without the support of YV16 and YV24.
I hope to add YV16 and YV24 soon but then working properly.
@Groucho2004
Thanks, that code certainly helps.
IanB
26th October 2013, 23:39
An easier way to check for AvisynthExportsAVSLinkage instead of parsing the .dll export table would be just to do a ::GetProcAddress(hDLL, "AVS_Linkage"). The value returned is the address of the linkage table, but it's probably not a good idea to rely on this behaviour, instead use the "not found" error for detecting incompatible versions.
Seems I need to bump the interface version to 6 to avoid the confusion at present when I freeze the API design for release candidates.
Groucho2004
27th October 2013, 00:47
instead use the "not found" error for detecting incompatible versions.
I tried all kinds of things (FunctionExists, ::NotFound) through the Avisynth interface to detect the correct version but it either did not work or it crashed. Could you elaborate?
DVB-Freak
27th October 2013, 09:42
Hallo Hank,
I think,something going wrong with the new GUI. When I started the
GUI, Ican't select the avs-script. Nothing happens when I click on
"input file name". The Info-Box says "HC.ini successfully processed,
ERROR, invalid D2V project, can't find the VOB/MPEG files, Warning,
input file not found".
Can you reproduce the error?
filler56789
27th October 2013, 11:17
Suggestion (or feature request): please add a checkbox for disabling the warnings about "DVD-video compliance". In many cases, complying with the MPEG-2 specifications is more than sufficient. :) Example: I open a 512x288@25fps AVS, and I receive the message:
WARNING: resolution/frame rate mismatch
:rolleyes:
IanB
27th October 2013, 22:36
I tried all kinds of things (FunctionExists, ::NotFound) through the Avisynth interface to detect the correct version but it either did not work or it crashed. Could you elaborate?
Something a bit like this :- AVS_Linkage *tmp_linkage = (AVS_Linkage *)::GetProcAddress(hDLL, "AVS_Linkage");
if (!tmp_linkage)
{
printf("\nAvisynth 2.6 (Alpha 4 and above) is required.\n");
::FreeLibrary(hDLL);
return -1;
}
But as I said, probably bumping the API rev to 6 would clear the confusion.
Groucho2004
27th October 2013, 22:48
Something a bit like this :- AVS_Linkage *tmp_linkage = (AVS_Linkage *)::GetProcAddress(hDLL, "AVS_Linkage");
if (!tmp_linkage)
{
printf("\nAvisynth 2.6 (Alpha 4 and above) is required.\n");
::FreeLibrary(hDLL);
return -1;
}
I'm confused. You wrote instead (of your suggestion above with GetProcAddress()) use not found error. It's the "not found error" I would have liked some more info on.
But as I said, probably bumping the API rev to 6 would clear the confusion.
Yes, seems like a good idea.
IanB
27th October 2013, 22:55
GetProcAddress returns NULL for symbol not found.
This is nothing to do with IScriptEnvironment::NotFound, sorry for any confusion.
Groucho2004
27th October 2013, 22:59
GetProcAddress returns NULL for symbol not found.
This is nothing to do with IScriptEnvironment::NotFound, sorry for any confusion.
Confusion gone, thanks. :)
Chumbo
2nd November 2013, 16:33
I've been using 025 for a long time now and just saw this and decided to grab it. I'm running on Windows 7 Ultimate 64 bit. The GUI loads fine initially, but as soon as I attempt to load an AVS file or to load an .ini file, the app crashes. I tried running it as administrator to no avail. I found this info in the event viewer if it'll help.
Faulting application name: HCgui_027.exe, version: 0.27.0.0, time stamp: 0x52685f97
Faulting module name: comdlg32.dll, version: 6.1.7601.17514, time stamp: 0x4ce7b82d
Exception code: 0xc0000005
Fault offset: 0x0003a056
Faulting process id: 0x1d6c
Faulting application start time: 0x01ced7e0720cd2ba
Faulting application path: E:\HC\HCgui_027.exe
Faulting module path: C:\Windows\syswow64\comdlg32.dll
Report Id: b48d759c-43d3-11e3-8357-00158315a310
manolito
7th November 2013, 06:47
This seems to fall under the "Several other bugs fixed" category...
I just noticed that the flagging of the output files has changed when using auto interlaced mode with the latest Beta release 26-10-2013. In earlier versions the progressive flag changed according to HCenc's decision if this frame was progressive or interlaced. When playing the file in DGIndex the changing flags showed up, so it was easy to see which decision HCenc had made.
In the latest beta the progressive flag is never set when using auto interlaced mode, even for fully progressive sources.
Question: Does this only relate to the flagging, or is the whole encoding done in interlaced mode whenever auto interlace is used?
In short: Feature or Bug? :eek:
Cheers
manolito
Chumbo
9th November 2013, 15:43
I've been using 025 for a long time now and just saw this and decided to grab it. I'm running on Windows 7 Ultimate 64 bit. The GUI loads fine initially, but as soon as I attempt to load an AVS file or to load an .ini file, the app crashes. I tried running it as administrator to no avail. I found this info in the event viewer if it'll help.
Faulting application name: HCgui_027.exe, version: 0.27.0.0, time stamp: 0x52685f97
Faulting module name: comdlg32.dll, version: 6.1.7601.17514, time stamp: 0x4ce7b82d
Exception code: 0xc0000005
Fault offset: 0x0003a056
Faulting process id: 0x1d6c
Faulting application start time: 0x01ced7e0720cd2ba
Faulting application path: E:\HC\HCgui_027.exe
Faulting module path: C:\Windows\syswow64\comdlg32.dll
Report Id: b48d759c-43d3-11e3-8357-00158315a310
I just updated HC on my Windows 8 Pro 64-bit laptop and the same thing happens. Below is the event viewer info from the Win8 crash.Faulting application name: HCgui_027.exe, version: 0.27.0.0, time stamp: 0x52685f97
Faulting module name: comdlg32.dll, version: 6.3.9600.16384, time stamp: 0x52158016
Exception code: 0xc000041d
Fault offset: 0x00038d8e
Faulting process id: 0x1434
Faulting application start time: 0x01cedd59a7a6f031
Faulting application path: D:\Apps and Utilities\hc\HC027\HCgui_027.exe
Faulting module path: C:\WINDOWS\SYSTEM32\comdlg32.dll
Report Id: e8b5126a-494c-11e3-beac-88532e4f15a9
Faulting package full name:
Faulting package-relative application ID:
I can run the command-line executable just fine on both Win7 and Win8 but I have to create the INI manually for now.
manolito
10th November 2013, 04:22
In the latest beta the progressive flag is never set when using auto interlaced mode, even for fully progressive sources.
Question: Does this only relate to the flagging, or is the whole encoding done in interlaced mode whenever auto interlace is used?
In short: Feature or Bug? :eek:manolito
I found a partial answer to my question myself:
In Auto-Interlaced mode not only the progressive flag is never set, also the whole encode is done using the alternate scan method. At least this is what ReStream tells me. This applies to fully progressive sources.
I have no idea if Interlaced DCT and Interlaced Motion Estimation are also used since I do not know any way to find out about this. But it seems clear that with the current Beta the Auto-Interlaced Mode should not be used for progressive sources. It does not introduce terrible artifacts, but encoding a progressive source in interlaced mode is certainly not the most efficient way to do it...
Back to 0.26 for now...:rolleyes:
Cheers
manolito
Chumbo
17th November 2013, 17:14
Hank,
Any resolution coming to the UI crash? Thank you.
hank315
19th November 2013, 00:24
Yes, HC027 will temporary be withdrawn, too much bugs which I can't solve in a short time.
Also there's a problem using Avisynth 2.6 due to GPL issues.
So for now it's back to (stable) HC026 beta.
Chumbo
20th November 2013, 15:21
Thanks for the update Hank.
qyot27
12th December 2013, 00:50
A feature request: would it be possible to add support for pipes as input? Preferably in yuv4mpeg format.
The reason is, it's possible to use HCenc under Wine on Linux and OSX. But this requires the user to also have AviSynth installed under Wine, along with all the stuff needed to make sure AviSynth works.
If HCenc supports input from a y4m pipe, then it should be possible to use AvxSynth (or AviSynth+, after it makes the cross-platform leap) with a native build of FFmpeg, and then pipe the output of the script to HCenc running under Wine without having to mess with installing a bunch of other stuff under Wine. I'm suggesting y4m precisely because it preserves the fps/colorspace/resolution info. The upside is that the first part could take advantage of 64-bit (this would even be true on Windows, since AviSynth+ supports 64-bit now), even if HCenc itself doesn't.
elmarikon
16th September 2014, 16:37
Cheers!
As I see it, HCenc is still the best mpeg2 encoder available.
But I have some issues with it:
HD (1920x1080) 4:2:2 or 4:4:4 does not work at all.
The encoder comes up, shows the parameters and crashes.
I tries Version 0.25, 0.26, 0.27... All the same...
And
It would really be great to have stdin/out for the encoder so I can include it more easy in my batch files, letting ffmpeg do the decoding / filtering...
It would be great if you could find the time to look into these issues or maybe give me a workaround...
Thanx again for your great work!!
SwK
Groucho2004
16th September 2014, 17:06
Cheers!
As I see it, HCenc is still the best mpeg2 encoder available.
But I have some issues with it:
HD (1920x1080) 4:2:2 or 4:4:4 does not work at all.
The encoder comes up, shows the parameters and crashes.
I tries Version 0.25, 0.26, 0.27... All the same...
And
It would really be great to have stdin/out for the encoder so I can include it more easy in my batch files, letting ffmpeg do the decoding / filtering...
It would be great if you could find the time to look into these issues or maybe give me a workaround...
Thanx again for your great work!!
SwK
Way too little information.
- What Avisynth version and decoder do you use?
- Post a sample of the stream that gives trouble
- Post your script
- Elaborate on "crashes", no error message?
- Does the script run when you load it in VirtualDub?
I could probably think of some more missing info but this should suffice for now. :D
elmarikon
17th September 2014, 19:53
Way too little information.
-->just enough...
You will see, there is nothing special, and I allready tried many different possibilities.
- What Avisynth version and decoder do you use?
I tried several ones. 2.5.8 / MT, 2.6 / MT
All the same result.
- Post a sample of the stream that gives trouble
Several streams, I tried mpeg2source, QTSource, RawSoure, FFmpegSource
- Post your script
InputVideo and nothing else.... Maybe AssumeFPS(25)
- Elaborate on "crashes", no error message?
no message, just crashes.
- Does the script run when you load it in VirtualDub?
I don't use VDub, but it works in AVSPmod, FFmpeg, FFplay, MainConcept Encoder, Carbon Coder... And as I said, also in the preview window of the HC gui.
So as I was trying to say, the Script is okay. I tried to keep it as simple as possible.
I also tried on different computers... Same same...
In the gui I can see the preview, but before even writing the first frame to the HDD, HCenc crashes.
If I add ConvertToYV12 the encode starts, but obviously in 4:2:0. But I do need 4:2:2.
4:4:4 sources give me the same result.
elmarikon
17th September 2014, 21:34
Cheers again!
I just found the issue I am facing, trying to encode HD 4:2:2/4:4:4 files.
The problem seems to be that internally the encoder is working only with resolutions dividable by 16.
Since 1080 is not a multiple of 16, it crashes.
Funny enough, because when I input a SD file with a non base-16-resolution it gives an error. Not in my case though...
--> So I can encode files with a res. of 1920x1088, but not 1920x1080.
Is there any way to tweak this behavior, so I can encode my HD files?!
PS. Still stdin/out would also be a huuuuuuuuuge help for my purposes...
All the best again from HHamburg!!
Groucho2004
17th September 2014, 21:53
So I can encode files with a res. of 1920x1088, but not 1920x1080.
I can confirm that, just tried it myself. Looks like you found a bug. I'm sure hank315 will drop by soon and take care of it.
hank315
28th September 2014, 19:43
Yes, I can replicate the crash with 1920x1080 YUY2 input, it's a bug.
There will be an update soon.
elmarikon
30th September 2014, 13:50
Great, thanx!
Do you also consider implementing stdin/out?
Especially stdin would be very helpful, since avisynth tends to cause speedloss...
All the best from HHamburg!
Groucho2004
30th September 2014, 14:28
visynth tends to cause speedloss...
I find MPEG decoding very fast with Avisynth, there shouldn't be any bottleneck. How about posting the script that you think causes a slowdown.
Good decoders would include:
- DGDecodeNV (NVIDIA GPU decoding, very fast with modern graphic cards)
- DGDecode
- LWLibavVideoSource
elmarikon
1st October 2014, 12:54
I am not talking about a special script, but the outdated framework of avisynth itself...
Well, yes, decoding mpeg is kind of okay, but still a lot slower then with ffmpeg.
Plus, you have to create the index file...
But in most cases I am coming from ProRes, H264, uncompressed sources.
That does slow things down heavily!
(DGindexNV is closed source and pay-ware, so I am out.)
all the best!
filler56789
1st October 2014, 17:44
avisynth tends to cause speedloss...
Are you sure that there isn't something in your setup that is interfering negatively with Avisynth? :confused:
I can be wrong, but it seems you are the first one to complain about Avisynth's "sluggishness" w/ HCenc...
Groucho2004
1st October 2014, 18:52
Well, yes, decoding mpeg is kind of okay, but still a lot slower then with ffmpeg.
I was under the impression that LSMASH, FFMS2 and FFMPEG all use the same code from libav...
qyot27
2nd October 2014, 08:20
I was under the impression that LSMASH, FFMS2 and FFMPEG all use the same code from libav...
They do. The primary difference is that the source filters for AviSynth don't necessarily multithread by default. And that only applies for computers that can multithread.
I decided to do a little test of my own:
F:\>ffmsindex -t -1 theinterview-tlr2_h1080p.mov
Writing index... done... 100%
F:\>echo FFmpegSource2("theinterview-tlr2_h1080p.mov",atrack=-1)>testavs.avs
F:\>avsmeter testavs.avs
AVSMeter 1.8.2 (x86) by Groucho2004
AviSynth+ 0.1 (r1704, x86) (MT)
Number of frames: 3676
Length (hhh:mm:ss.ms): 000:02:33.320
Frame width: 1920
Frame height: 816
Framerate: 23.976 (24000/1001)
Colorspace: YV12
Frames processed: 3676 (0 - 3675)
FPS (min | max | average): 4.269 | 92.13 | 8.850
CPU usage (average): 94%
Thread count: 5
Physical Memory usage (peak): 69 MB
Virtual Memory usage (peak): 92 MB
Time (elapsed): 000:06:55.370
F:\>ffmpeg -benchmark -i theinterview-tlr2_h1080p.mov -f null -
ffmpeg version r66361 git-bb8de55 Copyright (c) 2000-2014 the FFmpeg developers
built on Sep 19 2014 17:19:21 with gcc 4.9.1 (GCC)
configuration: --prefix=/home/qyot27/win32_build --cross-prefix=i686-w64-mingw32- --enable-gpl --enable-version3 --dis
able-w32threads --enable-avresample --disable-doc --disable-debug --enable-fontconfig --enable-libfreetype --enable-libf
ribidi --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-openal --enable-op
engl --enable-libquvi --enable-librtmp --enable-libsoxr --enable-libvidstab --enable-libflite --enable-libgme --enable-l
ibgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libnut --enable-libopencore-amrnb --enable-libop
encore-amrwb --enable-libopenjpeg --enable-libopus --enable-libschroedinger --enable-libshine --enable-libspeex --enable
-libtheora --enable-libtwolame --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --en
able-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --e
nable-avisynth --cpu=pentium3 --extra-cflags='-mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -DPTW32_STATIC_LIB -DCA
CA_STATIC -DMODPLUG_STATIC' --extra-ldflags='-mconsole -Wl,--allow-multiple-definition' --target-os=mingw32 --arch=x86 -
-pkg-config-flags=--static
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 1.101 / 56. 1.101
libavformat 56. 4.102 / 56. 4.102
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 1.101 / 5. 1.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'theinterview-tlr2_h1080p.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2014-09-25 14:50:45
timecode : 01:00:00:23
Duration: 00:02:33.32, start: 0.000000, bitrate: 9430 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x816, 9302 kb/s, 23.98 fps, 23.98
tbr, 24k tbn, 48k tbc (default)
Metadata:
creation_time : 2014-09-25 14:50:45
handler_name : Apple Video Media Handler
encoder : H.264
Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
Metadata:
creation_time : 2014-09-25 14:50:45
handler_name : Time Code Media Handler
timecode : 01:00:00:23
Stream #0:2(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 122 kb/s (default)
Metadata:
creation_time : 2014-09-25 14:50:45
handler_name : Apple Sound Media Handler
Output #0, null, to 'pipe:':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
timecode : 01:00:00:23
encoder : Lavf56.4.102
Stream #0:0(eng): Video: rawvideo (I420 / 0x30323449), yuv420p, 1920x816, q=2-31, 200 kb/s, 23.98 fps, 23.98 tbn, 23
.98 tbc (default)
Metadata:
creation_time : 2014-09-25 14:50:45
handler_name : Apple Video Media Handler
encoder : Lavc56.1.101 rawvideo
Stream #0:1(eng): Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s (default)
Metadata:
creation_time : 2014-09-25 14:50:45
handler_name : Apple Sound Media Handler
encoder : Lavc56.1.101 pcm_s16le
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))
Stream #0:2 -> #0:1 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[null @ 03f97020] Encoder did not produce proper pts, making some up.
frame= 3676 fps=9.7 q=0.0 Lsize=N/A time=00:02:33.32 bitrate=N/A
video:230kB audio:26412kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
bench: utime=361.344s
bench: maxrss=72144kB
F:\>ffmpeg -benchmark -i testavs.avs -f null -
ffmpeg version r66361 git-bb8de55 Copyright (c) 2000-2014 the FFmpeg developers
built on Sep 19 2014 17:19:21 with gcc 4.9.1 (GCC)
configuration: --prefix=/home/qyot27/win32_build --cross-prefix=i686-w64-mingw32- --enable-gpl --enable-version3 --dis
able-w32threads --enable-avresample --disable-doc --disable-debug --enable-fontconfig --enable-libfreetype --enable-libf
ribidi --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-openal --enable-op
engl --enable-libquvi --enable-librtmp --enable-libsoxr --enable-libvidstab --enable-libflite --enable-libgme --enable-l
ibgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libnut --enable-libopencore-amrnb --enable-libop
encore-amrwb --enable-libopenjpeg --enable-libopus --enable-libschroedinger --enable-libshine --enable-libspeex --enable
-libtheora --enable-libtwolame --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --en
able-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --e
nable-avisynth --cpu=pentium3 --extra-cflags='-mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -DPTW32_STATIC_LIB -DCA
CA_STATIC -DMODPLUG_STATIC' --extra-ldflags='-mconsole -Wl,--allow-multiple-definition' --target-os=mingw32 --arch=x86 -
-pkg-config-flags=--static
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 1.101 / 56. 1.101
libavformat 56. 4.102 / 56. 4.102
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 1.101 / 5. 1.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, avisynth, from 'testavs.avs':
Duration: 00:02:33.32, start: 0.000000, bitrate: 0 kb/s
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1920x816, 23.98 fps, 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0:1: Audio: pcm_f32le, 44100 Hz, 2 channels, flt, 2822 kb/s
Output #0, null, to 'pipe:':
Metadata:
encoder : Lavf56.4.102
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1920x816, q=2-31, 200 kb/s, 23.98 fps, 23.98 tbn, 23.98 t
bc
Metadata:
encoder : Lavc56.1.101 rawvideo
Stream #0:1: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
Metadata:
encoder : Lavc56.1.101 pcm_s16le
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> rawvideo (native))
Stream #0:1 -> #0:1 (pcm_f32le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[null @ 08fcd020] Encoder did not produce proper pts, making some up.
frame= 3676 fps=7.8 q=0.0 Lsize=N/A time=00:02:33.31 bitrate=N/A
video:230kB audio:26408kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
bench: utime=434.953s
bench: maxrss=129592kB
F:\>
The important numbers:
AVSMeter:
FPS (min | max | average): 4.269 | 92.13 | 8.850
Time (elapsed): 000:06:55.370
FFmpeg (source file):
frame= 3676 fps=9.7 q=0.0 Lsize=N/A time=00:02:33.32
bench: utime=361.344s (00:06:01.344)
FFmpeg (testavs.avs):
frame= 3676 fps=7.8 q=0.0 Lsize=N/A time=00:02:33.31
bench: utime=434.953s (00:07:14.953)
This was on a Pentium III-era Celeron. A much newer computer is going to have the advantage of better SIMD and multithreading, and a tiny bit of necessary overhead because there's a library sitting in the middle is going to be irrelevant.
hank315
6th October 2014, 10:50
A new version of HCenc (version 027) can be found here (http://hank315.nl).
You will need Avisynth 2.6 alfa 4 or higher to run this one.
It also runs with Avisynth+.
All color spaces are fully operational, the 1080 vertical resolution is fixed.
Possible input color spaces: YV12, YV16, YV24 (planar) and YUY2 (interleaved), possible output 4:2:0, 4:2:2 and 4:4:4.
Emulgator
7th October 2014, 22:58
Many thanks, Hank ! But where is the 027 link ?
Never mind, had to refresh browser cache....its there.
qyot27
8th October 2014, 05:05
The newest beta of 0.27 crashes immediately on my Pentium III with a 'This is not a valid Win32 application' message. It worked on a Sandy Bridge under Wine, so I'm not sure if it's because of OS stuff or because the binary might have been compiled for SSE2 (or something higher).
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.