Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Video Encoding > High Efficiency Video Coding (HEVC)

Reply
 
Thread Tools Search this Thread Display Modes
Old 26th March 2015, 22:10   #1981  |  Link
Ma
Registered User
 
Join Date: Feb 2015
Posts: 326
I'm not ready for 1.6

Now there is default branch merged with stable but the options "--rdoq-level 1" and "--deblock -1" are still missing from text information at beginning of output HEVC file.

Info in HEVC file after this 2 different encodings is the same:
Code:
x265 --preset slow input output
x265 --preset slow --rdoq-level 1 --deblock -1 input output
Attached Files
File Type: txt header.txt (847 Bytes, 70 views)
Ma is offline   Reply With Quote
Old 26th March 2015, 22:12   #1982  |  Link
LigH
German doom9/Gleitz SuMo
 
LigH's Avatar
 
Join Date: Oct 2001
Location: Germany, rural Altmark
Posts: 6,753
Quote:
Originally Posted by Motenai Yoda View Post
Did you know how to set it to compile for a specific march or native?
I am already happy when it passes. Modifying? Not me...

jb_alvarado is looking for a new project host, running out of time.
__________________

New German Gleitz board
MediaFire: x264 | x265 | VPx | AOM | Xvid
LigH is offline   Reply With Quote
Old 27th March 2015, 00:07   #1983  |  Link
MeteorRain
結城有紀
 
Join Date: Dec 2003
Location: NJ; OR; Shanghai
Posts: 894
Quote:
Originally Posted by Ma View Post
Now there is default branch merged with stable but the options "--rdoq-level 1" and "--deblock -1" are still missing from text information at beginning of output HEVC file.
A quick patch here. Don't know how to reach them to put the patch in though.
MeteorRain is offline   Reply With Quote
Old 27th March 2015, 01:10   #1984  |  Link
x265_Project
Guest
 
Posts: n/a
Quote:
Originally Posted by MeteorRain View Post
A quick patch here. Don't know how to reach them to put the patch in though.
Thanks MeteorRain. See https://bitbucket.org/multicoreware/...iki/Contribute for all the details on how to contribute to the x265 project.

We always welcome contributions from talented developers!
  Reply With Quote
Old 27th March 2015, 02:08   #1985  |  Link
MeteorRain
結城有紀
 
Join Date: Dec 2003
Location: NJ; OR; Shanghai
Posts: 894
Quote:
Originally Posted by x265_Project View Post
Thanks MeteorRain. See https://bitbucket.org/multicoreware/...iki/Contribute for all the details on how to contribute to the x265 project.

We always welcome contributions from talented developers!
I have put the patch under public domain. You should be able to merge it without any problem. I also post on the mailing list.
If you are still looking for a signed agreement, please let me know.
MeteorRain is offline   Reply With Quote
Old 27th March 2015, 02:19   #1986  |  Link
x265_Project
Guest
 
Posts: n/a
Quote:
Originally Posted by MeteorRain View Post
I have put the patch under public domain. You should be able to merge it without any problem. I also post on the mailing list.
If you are still looking for a signed agreement, please let me know.
Hi MeteorRain,
No problem. To clarify, we don't want to make anyone jump through hoops to contribute a quick fix for something fairly trivial (a couple of missing parameters in the SEI message string). For trivial fixes, you can just email the x265-devel mailing list and say anything to the effect of "I contribute this". We only need a signed contributor agreement if you want to contribute a more significant patch (optimization, new feature or algorithm improvement, etc.), and you want to be credited as the author.
  Reply With Quote
Old 27th March 2015, 07:09   #1987  |  Link
legend
Registered User
 
Join Date: May 2014
Posts: 29
Is there have any good software for x265 encoding.
legend is offline   Reply With Quote
Old 27th March 2015, 08:27   #1988  |  Link
Ma
Registered User
 
Join Date: Feb 2015
Posts: 326
Quote:
Originally Posted by MeteorRain View Post
A quick patch here. Don't know how to reach them to put the patch in though.
Thanks! After work I will try this code.
Ma is offline   Reply With Quote
Old 27th March 2015, 08:44   #1989  |  Link
LigH
German doom9/Gleitz SuMo
 
LigH's Avatar
 
Join Date: Oct 2001
Location: Germany, rural Altmark
Posts: 6,753
@ legend:

x265 is software for encoding to HEVC video. If you need a user interface to handle it in an easier way than using a console, you may try: StaxRip, Hybrid, MeGUI, ...
__________________

New German Gleitz board
MediaFire: x264 | x265 | VPx | AOM | Xvid
LigH is offline   Reply With Quote
Old 27th March 2015, 16:55   #1990  |  Link
Ma
Registered User
 
Join Date: Feb 2015
Posts: 326
Quote:
Originally Posted by MeteorRain View Post
A quick patch here. Don't know how to reach them to put the patch in though.
Now there is much better. There are differences between stderr output and yours new header format: in stderr x265 displays deblock right before sao, numbers are written in form deblock(tC=-1:B=-1).

So my proposition is small modification to your code:
Code:
    s += sprintf(s, " psy-rd=%.2f", p->psyRd);
    s += sprintf(s, " rdoq=%d", p->rdoqLevel);
    s += sprintf(s, " psy-rdoq=%.2f", p->psyRdoq);
    BOOL(p->bEnableSignHiding, "signhide");
    BOOL(p->bEnableLoopFilter, "lft");
    if (p->bEnableLoopFilter)
    {
        BOOL(true, "deblock");
        if (p->deblockingFilterBetaOffset || p->deblockingFilterTCOffset)
            s += sprintf(s, "(tC=%d:B=%d)", p->deblockingFilterTCOffset, p->deblockingFilterBetaOffset);
    } 
    BOOL(p->bEnableSAO, "sao");
I think we should print information in stderr and header in similar form.
Ma is offline   Reply With Quote
Old 27th March 2015, 18:58   #1991  |  Link
sborho
Registered User
 
Join Date: May 2012
Posts: 12
the string emitted by param2string() and included in the info SEI is also used in two-pass stats files and analysis load/save files and it must be parse-able by x265_param_parse, so it must match the command line format. I'm removing 'lft' which is now deprecated, and using "deblock=%d,%d", which is parseable
sborho is offline   Reply With Quote
Old 27th March 2015, 20:07   #1992  |  Link
Ma
Registered User
 
Join Date: Feb 2015
Posts: 326
Quote:
Originally Posted by sborho View Post
the string emitted by param2string() and included in the info SEI is also used in two-pass stats files and analysis load/save files and it must be parse-able by x265_param_parse, so it must match the command line format. I'm removing 'lft' which is now deprecated, and using "deblock=%d,%d", which is parseable
Thanks for commit https://bitbucket.org/multicoreware/...921251a69d11e5
Ma is offline   Reply With Quote
Old 28th March 2015, 12:37   #1993  |  Link
Ma
Registered User
 
Join Date: Feb 2015
Posts: 326
There is new header in output HEVC file in x265, but on my favorite site http://chromashift.org/x265_builds/ there is the version 1.5+443, which is the last version with old header (without rdoq-level and deblock).

If someone wants to check new builds (from 1.5+444) I put them on page http://msystem.waw.pl/x265/
Ma is offline   Reply With Quote
Old 28th March 2015, 15:09   #1994  |  Link
MeteorRain
結城有紀
 
Join Date: Dec 2003
Location: NJ; OR; Shanghai
Posts: 894
Thanks for the builds.

I also put my mod in my signature for those who want. Compiled with lavf and l-smash.
__________________
Projects
x265 - Yuuki-Asuna-mod Download / GitHub
TS - ADTS AAC Splitter | LATM AAC Splitter | BS4K-ASS
Neo AviSynth+ filters - F3KDB | FFT3D | DFTTest | MiniDeen | Temporal Median
MeteorRain is offline   Reply With Quote
Old 29th March 2015, 00:33   #1995  |  Link
stax76
Registered User
 
stax76's Avatar
 
Join Date: Jun 2002
Location: On thin ice
Posts: 6,837
I made a snapshot of the x265 documentation when I've built StaxRip's x265 support and I've found a online diff application showing me what has changed meanwhile:

https://www.diffchecker.com/fk4vsibm

I've a problem now having not enough space in the Analysis section, I'll have to move a few options to a new tab because the tab is full, does anybody have a idea which options could be moved?

http://x265.readthedocs.org/en/lates...ision-analysis

Maybe somebody can also look if the order and captions make sense, it looks like this currently:



Code:
Property RD As New OptionParam With {
    .Switch = "--rd",
    .Text = "RD:",
    .Options = {"0 - SA8D mode and split decisions, intra w/ source pixels",
                "1 - Recon generated (better intra), RDO merge/skip selection",
                "2 - RDO splits and merge/skip selection",
                "3 - RDO mode and split decisions, chroma residual used for sa8d",
                "4 - Adds RDO Quant",
                "5 - Adds RDO prediction decisions",
                "6 - Currently same as 5"},
    .Expand = True,
    .Help = "Level of RDO in mode decision. The higher the value, the more exhaustive the analysis and the more rate distortion optimization is used. The lower the value the faster the encode, the higher the value the smaller the bitstream (in general)." + CrLf2 + "Default 3."}

Property MinCuSize As New OptionParam With {
    .Switch = "--min-cu-size",
    .Text = "Minimum CU size:",
    .Options = {"64", "32", "16", "8"},
    .Values = {"64", "32", "16", "8"},
    .Help = "Minimum CU size (width and height). By using 16 or 32 the encoder will not analyze the cost of CUs below that minimum threshold, saving considerable amounts of compute with a predictable increase in bitrate. This setting has a large effect on performance on the faster presets." + CrLf2 + "Default: 8 (minimum 8x8 CU for HEVC, best compression efficiency)"}

Property MaxCuSize As New OptionParam With {
    .Switch = "--ctu",
    .Text = "Maximum CU size:",
    .Options = {"64", "32", "16"},
    .Values = {"64", "32", "16"},
    .Help = "Maximum CU size (width and height). The larger the maximum CU size, the more efficiently x265 can encode flat areas of the picture, giving large reductions in bitrate. However this comes at a loss of parallelism with fewer rows of CUs that can be encoded in parallel, and less frame parallelism as well. Because of this the faster presets use a CU size of 32." + CrLf2 + "Default: 64"}

Property TUintra As New NumParam With {
    .Switch = "--tu-intra-depth",
    .Text = "TU Intra Depth:",
    .Help = "The transform unit (residual) quad-tree begins with the same depth as the coding unit quad-tree, but the encoder may decide to further split the transform unit tree if it improves compression efficiency. This setting limits the number of extra recursion depth which can be attempted for intra coded units." + CrLf2 + "Default: 1, which means the residual quad-tree is always at the same depth as the coded unit quad-tree." + CrLf2 + "Note that when the CU intra prediction is NxN (only possible with 8x8 CUs), a TU split is implied, and thus the residual quad-tree begins at 4x4 and cannot split any futhrer.",
    .MinMaxStep = {1, 4, 1}}

Property TUinter As New NumParam With {
    .Switch = "--tu-inter-depth",
    .Text = "TU Inter Depth:",
    .Help = "The transform unit (residual) quad-tree begins with the same depth as the coding unit quad-tree, but the encoder may decide to further split the transform unit tree if it improves compression efficiency. This setting limits the number of extra recursion depth which can be attempted for inter coded units." + CrLf2 + "Default: 1. which means the residual quad-tree is always at the same depth as the coded unit quad-tree unless the CU was coded with rectangular or AMP partitions, in which case a TU split is implied and thus the residual quad-tree begins one layer below the CU quad-tree.",
    .MinMaxStep = {1, 4, 1}}

Property rdoqLevel As New NumParam With {
    .Switch = "--rdoq-level",
    .Text = "RDOQ Level:",
    .Help = "Specify the amount of rate-distortion analysis to use within quantization:" + CrLf2 + "At level 0 rate-distortion cost is not considered in quant" + CrLf2 + "At level 1 rate-distortion cost is used to find optimal rounding values for each level (and allows psy-rdoq to be effective). It trades-off the signaling cost of the coefficient vs its post-inverse quant distortion from the pre-quant coefficient. When --psy-rdoq is enabled, this formula is biased in favor of more energy in the residual (larger coefficient absolute levels)" + CrLf2 + "At level 2 rate-distortion cost is used to make decimate decisions on each 4x4 coding group, including the cost of signaling the group within the group bitmap. If the total distortion of not signaling the entire coding group is less than the rate cost, the block is decimated. Next, it applies rate-distortion cost analysis to the last non-zero coefficient, which can result in many (or all) of the coding groups being decimated. Psy-rdoq is less effective at preserving energy when RDOQ is at level 2, since it only has influence over the level distortion costs.",
    .MinMaxStep = {0, 2, 1}}

Property Rect As New BoolParam With {
    .Switch = "--rect",
    .NoSwitch = "--no-rect",
    .Text = "Enable analysis of rectangular motion partitions Nx2N and 2NxN",
    .Help = "Enable analysis of rectangular motion partitions Nx2N and 2NxN (50/50 splits, two directions)." + CrLf2 + "Default disabled."}

Property AMP As New BoolParam With {
    .Switch = "--amp",
    .NoSwitch = "--no-amp",
    .Text = "Enable analysis of asymmetric motion partitions",
    .Help = "Enable analysis of asymmetric motion partitions (75/25 splits, four directions). At RD levels 0 through 4, AMP partitions are only considered at CU sizes 32x32 and below. At RD levels 5 and 6, it will only consider AMP partitions as merge candidates (no motion search) at 64x64, and as merge or inter candidates below 64x64. The AMP partitions which are searched are derived from the current best inter partition. If Nx2N (vertical rectangular) is the best current prediction, then left and right asymmetrical splits will be evaluated. If 2NxN (horizontal rectangular) is the best current prediction, then top and bottom asymmetrical splits will be evaluated, If 2Nx2N is the best prediction, and the block is not a merge/skip, then all four AMP partitions are evaluated. This setting has no effect if rectangular partitions are disabled." + CrLf2 + "Default disabled."}

Property EarlySkip As New BoolParam With {
    .Switch = "--early-skip",
    .NoSwitch = "--no-early-skip",
    .Text = "Early Skip",
    .Help = "Measure full CU size (2Nx2N) merge candidates first; if no residual is found the analysis is short circuited." + CrLf2 + "Default disabled."}

Property FastIntra As New BoolParam With {
    .Switch = "--fast-intra",
    .NoSwitch = "--no-fast-intra",
    .Text = "Fast Intra",
    .Help = "Perform an initial scan of every fifth intra angular mode, then check modes +/- 2 distance from the best mode, then +/- 1 distance from the best mode, effectively performing a gradient descent. When enabled 10 modes in total are checked. When disabled all 33 angular modes are checked. Only applicable for --rd levels 4 and below (medium preset and faster)."}

Property BIntra As New BoolParam With {
    .Switch = "--b-intra",
    .NoSwitch = "--no-b-intra",
    .Text = "Evaluate intra modes in B slices",
    .Help = "Enables the evaluation of intra modes in B slices." + CrLf2 + "Default disabled."}

Property FastCBF As New BoolParam With {
    .Switch = "--fast-cbf",
    .Text = "Short circuit analysis if a prediction is found that does not set the coded block flag",
    .Help = "Short circuit analysis if a prediction is found that does not set the coded block flag (aka: no residual was encoded). It prevents the encoder from perhaps finding other predictions that also have no residual but require less signaling bits or have less distortion. Only applicable for RD levels 5 and 6." + CrLf2 + "Default disabled."}

Property CUlossless As New BoolParam With {
    .Switch = "--cu-lossless",
    .Text = "CU Lossless",
    .Help = "For each CU, evaluate lossless (transform and quant bypass) encode of the best non-lossless mode option as a potential rate distortion optimization. If the global option --lossless has been specified, all CUs will be encoded as lossless unconditionally regardless of whether this option was enabled. Default disabled. Only effective at RD levels 3 and above, which perform RDO mode decisions."}

Property Tskip As New BoolParam With {
    .Switch = "--tskip",
    .Text = "Enable evaluation of transform skip coding for 4x4 TU coded blocks",
    .Help = "Enable evaluation of transform skip (bypass DCT but still use quantization) coding for 4x4 TU coded blocks. Only effective at RD levels 3 and above, which perform RDO mode decisions." + CrLf2 + "Default disabled."}

Property TskipFast As New BoolParam With {
    .Switch = "--tskip-fast",
    .Text = "Only evaluate transform skip for NxN intra predictions (4x4 blocks)",
    .Help = "Only evaluate transform skip for NxN intra predictions (4x4 blocks). Only applicable if transform skip is enabled. For chroma, only evaluate if luma used tskip. Inter block tskip analysis is unmodified." + CrLf2 + "Default disabled."}

Last edited by stax76; 29th March 2015 at 00:38.
stax76 is offline   Reply With Quote
Old 29th March 2015, 00:45   #1996  |  Link
MeteorRain
結城有紀
 
Join Date: Dec 2003
Location: NJ; OR; Shanghai
Posts: 894
From my point of view, I'm completely confused by these options.
For most users using a GUI, balance between encoding efficiency and speed should be well grouped into a slide bar, from very fast to very slow, and that's it.
It's not very possible that users toggle and test every option to find the optimistic settings before they start encoding.
__________________
Projects
x265 - Yuuki-Asuna-mod Download / GitHub
TS - ADTS AAC Splitter | LATM AAC Splitter | BS4K-ASS
Neo AviSynth+ filters - F3KDB | FFT3D | DFTTest | MiniDeen | Temporal Median
MeteorRain is offline   Reply With Quote
Old 29th March 2015, 01:34   #1997  |  Link
stax76
Registered User
 
stax76's Avatar
 
Join Date: Jun 2002
Location: On thin ice
Posts: 6,837
Presets is the first thing that every GUI supports I guess. In my case there are some things I don't like about trackbars/sliders and radioboxes, I'm not saying they are bad for users, I like to use them myself in other applications, I just don't happen to use them as programmer in my applications.
stax76 is offline   Reply With Quote
Old 29th March 2015, 02:46   #1998  |  Link
Ajvar
Registered User
 
Join Date: Jul 2014
Posts: 115
Huyston, we have a problem. Using LAV 0.64 (12-30) with CUDA decoder trying to play a file encoded with 444 and up I get player crach and info says it's because of cuvid.dll crash. With LAV 0.63 all is OK but HEVC decoding made a leap in 64 version.
Files encoded in 439 and before play super fine.

I use GUI software (Hybrid) but really doubt that it has something to that.
I used many different builds sources: snowfag, MA's, Yuuki's to doublecheck.
Presets medium and slow. CRF and 2pass bitrate.
"C:\PROGRA~1\Hybrid\x265-8b.exe" --pmode --input - --input-res 1920x1080 --fps 30 --no-high-tier --min-cu-size 16 --no-open-gop --crf 22.7 --no-rdoq-level --no-psy-rdoq --vbv-maxrate 8000 --vbv-bufsize 8000 --deblock=-1:-1 --colormatrix bt470bg
439 - http://fs8.www.ex.ua/load/6ca2e6560a...030847/439.mkv
445 - http://fs8.www.ex.ua/load/1dce5ce570.../445%20bug.mkv

Last edited by Ajvar; 29th March 2015 at 03:51.
Ajvar is offline   Reply With Quote
Old 29th March 2015, 02:56   #1999  |  Link
MeteorRain
結城有紀
 
Join Date: Dec 2003
Location: NJ; OR; Shanghai
Posts: 894
Quote:
Originally Posted by Ajvar View Post
Huyston, we have a problem. Using LAV 0.64 (12-30) with CUDA decoder trying to play a file encoded with 444 and up I get player crach and info says it's because of cuvid.dll crash. With LAV 0.63 all is OK but HEVC decoding made a leap in 64 version.
Files encoded in 439 and before play super fine.

I use GUI software (Hybrid) but really doubt that it has something to that.
I used many different builds sources: snowfag, MA's, Yuuki's to doublecheck.
Presets medium and slow. CRF and 2pass bitrate.
"C:\PROGRA~1\Hybrid\x265-8b.exe" --pmode --input - --input-res 1920x1080 --fps 30 --no-high-tier --min-cu-size 16 --no-open-gop --crf 22.7 --no-rdoq-level --no-psy-rdoq --vbv-maxrate 8000 --vbv-bufsize 8000 --deblock=-1:-1 --colormatrix bt470bg
439 - http://www.ex.ua/load/158030847?fs_id=8
445 - http://www.ex.ua/load/158030905?fs_id=8
The file storage is quite confusing as I'm seeing Japanese and Russian mixing on a single web page.

But anyway I'll try with your settings and see what I can do.

= EDIT =

Switched to English and still have no idea how to get the files. Would you mind using some other storages?

And I tried with your settings. They just produced same files, binary identical on the video data part.
__________________
Projects
x265 - Yuuki-Asuna-mod Download / GitHub
TS - ADTS AAC Splitter | LATM AAC Splitter | BS4K-ASS
Neo AviSynth+ filters - F3KDB | FFT3D | DFTTest | MiniDeen | Temporal Median

Last edited by MeteorRain; 29th March 2015 at 03:24.
MeteorRain is offline   Reply With Quote
Old 29th March 2015, 03:52   #2000  |  Link
Ajvar
Registered User
 
Join Date: Jul 2014
Posts: 115
Quote:
Originally Posted by MeteorRain View Post
The file storage is quite confusing as I'm seeing Japanese and Russian mixing on a single web page.

But anyway I'll try with your settings and see what I can do.

= EDIT =

Switched to English and still have no idea how to get the files. Would you mind using some other storages?

And I tried with your settings. They just produced same files, binary identical on the video data part.
My bad. Updated with direct links now, sorry.
Settings is nothing. It's about different encoder version.

Last edited by Ajvar; 29th March 2015 at 03:56.
Ajvar is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 09:15.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.