Posts: 10
Threads: 1
Joined: Apr 2018
Thanks for your help! I am able to generate the aom executable files now
However, when i run with my test video sequence with the CLI line below, the encode process will stuck at the second pass.
CLI:
aomenc --end-usage=vbr --target-bitrate=1000 --kf-max-dist=60 --width=720 --height=480 -o output.yuv test_420_10bit_720x480.yuv
Output:
Pass 1/2 frame 1800/1801 331384B 1472b/f 44184b/s 32672 ms (55.09 fps)[K
Pass 2/2 frame 19/0 0B 32701 ms 34.86 fpm [ETA unknown] [K
Do you have any idea on this? and my input yuv is 900 frames, I wonder why the 1/2 pass will have frame=1800/1801.
Posts: 10.618
Threads: 57
Joined: May 2017
The command line you posted looks like it's for the 1st pass,..
If I remember correctly, 1st pass should include:
--passes=2 --pass=1 --target-bitrate=XXXX --end-usage=vbr --fpf="PATH TO THE .stats FILE"
and 2nd pass should include:
--passes=2 --pass=2 --target-bitrate=XXXX --end-usage=vbr --fpf="PATH TO THE .stats FILE"
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Posts: 10
Threads: 1
Joined: Apr 2018
This is the batch files I used to run the sequences.
Quote:aomenc.exe --passes=2 --pass=1 --end-usage=vbr --target-bitrate=1000 --width=780 --height=420 --fpf=aom1.log -o output.webm park_joy_420_720p50.y4m
aomenc.exe --passes=2 --pass=2 --end-usage=vbr --target-bitrate=1000 --width=780 --height=420 --fpf=aom1.log -o output.webm park_joy_420_720p50.y4m
The output i get :
Quote:Pass 1/2 frame 500/501 92184B 1474b/f 73747b/s 6977506 us (71.66 fps)[K
Pass 2/2 frame 20/1 18046B 41031 ms 29.25 fpm [ETA 5:41:14] 18046F[K
Currently by using the command that you give, it seems like able to encode 'some' frames but it will stuck afterwards or I should say the encode speed is very slow for me.
Do you have any idea on speed this up? or this is limited by my pc hardware?
Posts: 10.618
Threads: 57
Joined: May 2017
Atm. there is not much you can do about speed since av1s bitstream isn't frozen and afaik no real speed optimizations have been implemented.
That said you can change the: - '--cpu-used'
- '--tile-colums'
- '--threads'
So for example using a higher cpu-used value should increase the speed, but lower the compression ratio. (faster, but less quality for a given size)
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Posts: 10
Threads: 1
Joined: Apr 2018
The encoding is faster after I put in the cpu command.
But i wonder is the command line for decoding is same as encoding?
Quote:For example encoding:
aomenc.exe --passes=2 --pass=1 --end-usage=vbr --target-bitrate=1000 --width=780 --height=420 --fpf=aom1.log --cpu-used=4 --threads=8 --limit=100 -o output.webm park_joy_420_720p50.y4m
aomenc.exe --passes=2 --pass=2 --end-usage=vbr --target-bitrate=1000 --width=780 --height=420 --fpf=aom1.log --cpu-used=4 --threads=8 --limit=100 -o output.webm park_joy_420_720p50.y4m
decoding:
aomdec.exe --end-usage=vbr --target-bitrate=1000 --width=780 --height=420 --cpu-used=4 --threads=8 --limit=100 -o dec_output.webm output.webm
By the way, I am testing with the aom analyser but it is not a drop and view kind of analyser and so I still figuring out how to do the analysis with the software. Is there any recommendation software for analyse the bitstream under windows environment?
I had some experience in using Intel analyzer but the aom analyser seem like I have to run the decode process with it and the decoded result will be on a webserver?
Posts: 10.618
Threads: 57
Joined: May 2017
Looking at analysers before the bitstream is at least frozen seems like a bad idea.
Any thing you encode atm. is basically just for educational purpose.
Can't help with analysing av1 content atm. since due to the not frozen bitstream I looked into it at all.
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Posts: 10
Threads: 1
Joined: Apr 2018
(26.04.2018, 16:58)Selur Wrote: Looking at analysers before the bitstream is at least frozen seems like a bad idea.
Any thing you encode atm. is basically just for educational purpose.
Can't help with analysing av1 content atm. since due to the not frozen bitstream I looked into it at all.
Cu Selur
I see thanks for your info. However, I would like to know the overall PSNR performance. So, to get the PSNR result should I do the decoding in order to generate the PSNR or I can get it directly by encoding
Posts: 10.618
Threads: 57
Joined: May 2017
iirc adding '--psnr' will output the PSNR after encoding.
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Posts: 10
Threads: 1
Joined: Apr 2018
(28.04.2018, 08:29)Selur Wrote: iirc adding '--psnr' will output the PSNR after encoding.
Cu Selur I do added the --psnr into my command line, it will only output the average PSNR at the end of encoding without per frame PSNR.
Is there a command for per frame PSNR? and I tried adding the >PSNR.log at the end of command but nothing is logged to the file.
Posts: 10.618
Threads: 57
Joined: May 2017
Quote:I do added the --psnr into my command line, it will only output the average PSNR at the end of encoding without per frame PSNR.
Since you you asked for the 'overall PSNR performance' I assumed that is what you are looking for.
Looking at the command line aomenc options:
aomenc.exe --help
Usage: aomenc.exe <options> -o dst_filename src_filename
Options:
--help Show usage options and exit
-c <arg>, --cfg=<arg> Config file to use
-D, --debug Debug mode (makes output deterministic)
-o <arg>, --output=<arg> Output filename
--codec=<arg> Codec to use
-p <arg>, --passes=<arg> Number of passes (1/2)
--pass=<arg> Pass to execute (1/2)
--fpf=<arg> First pass statistics file name
--limit=<arg> Stop encoding after n input frames
--skip=<arg> Skip the first n input frames
--good Use Good Quality Deadline
-q, --quiet Do not print encode progress
-v, --verbose Show encoder parameters
--psnr Show PSNR in status line
--webm Output WebM (default when WebM IO is enabled)
--ivf Output IVF
--obu Output OBU
-P, --output-partitions Makes encoder output partitions. Requires IVF output!
--q-hist=<arg> Show quantizer histogram (n-buckets)
--rate-hist=<arg> Show rate histogram (n-buckets)
--disable-warnings Disable warnings about potentially incorrect encode settings.
-y, --disable-warning-prompt Display warnings, but do not prompt user to continue.
--test-decode=<arg> Test encode/decode mismatch
off, fatal, warn
Encoder Global Options:
--yv12 Input file is YV12
--i420 Input file is I420 (default)
--i422 Input file is I422
--i444 Input file is I444
-u <arg>, --usage=<arg> Usage profile number to use
-t <arg>, --threads=<arg> Max number of threads to use
--profile=<arg> Bitstream profile number to use
-w <arg>, --width=<arg> Frame width
-h <arg>, --height=<arg> Frame height
--forced_max_frame_width Maximum frame width value to force
--forced_max_frame_height Maximum frame height value to force
--stereo-mode=<arg> Stereo 3D video format
mono, left-right, bottom-top, top-bottom, right-left
--timebase=<arg> Output timestamp precision (fractional seconds)
--fps=<arg> Stream frame rate (rate/scale)
--global-error-resilient=<a Enable global error resiliency features
-b <arg>, --bit-depth=<arg> Bit depth for codec (8 for version <=1, 10 or 12 for version 2)
8, 10, 12
--lag-in-frames=<arg> Max number of frames to lag
--large-scale-tile=<arg> Large scale tile coding (0: off (default), 1: on)
--monochrome Monochrome video (no chroma planes)
Rate Control Options:
--drop-frame=<arg> Temporal resampling threshold (buf %)
--resize-mode=<arg> Frame resize mode
--resize-denominator=<arg> Frame resize denominator
--resize-kf-denominator=<ar Frame resize keyframe denominator
--superres-mode=<arg> Frame super-resolution mode
--superres-denominator=<arg Frame super-resolution denominator
--superres-kf-denominator=< Frame super-resolution keyframe denominator
--superres-qthresh=<arg> Frame super-resolution qindex threshold
--superres-kf-qthresh=<arg> Frame super-resolution keyframe qindex threshold
--end-usage=<arg> Rate control mode
vbr, cbr, cq, q
--target-bitrate=<arg> Bitrate (kbps)
--min-q=<arg> Minimum (best) quantizer
--max-q=<arg> Maximum (worst) quantizer
--undershoot-pct=<arg> Datarate undershoot (min) target (%)
--overshoot-pct=<arg> Datarate overshoot (max) target (%)
--buf-sz=<arg> Client buffer size (ms)
--buf-initial-sz=<arg> Client initial buffer size (ms)
--buf-optimal-sz=<arg> Client optimal buffer size (ms)
Twopass Rate Control Options:
--bias-pct=<arg> CBR/VBR bias (0=CBR, 100=VBR)
--minsection-pct=<arg> GOP min bitrate (% of target)
--maxsection-pct=<arg> GOP max bitrate (% of target)
Keyframe Placement Options:
--kf-min-dist=<arg> Minimum keyframe interval (frames)
--kf-max-dist=<arg> Maximum keyframe interval (frames)
--disable-kf Disable keyframe placement
AV1 Specific Options:
--cpu-used=<arg> CPU Used (0..8)
--dev-sf=<arg> Dev Speed (0..255)
--auto-alt-ref=<arg> Enable automatic alt reference frames
--sharpness=<arg> Loop filter sharpness (0..7)
--static-thresh=<arg> Motion detection threshold
--single-tile-decoding=<arg Single tile decoding (0: off (default), 1: on)
--tile-columns=<arg> Number of tile columns to use, log2
--tile-rows=<arg> Number of tile rows to use, log2 (set to 0 while threads > 1)
--arnr-maxframes=<arg> AltRef max frames (0..15)
--arnr-strength=<arg> AltRef filter strength (0..6)
--tune=<arg> Distortion metric tuned with
psnr, ssim, cdef-dist, daala-dist
--cq-level=<arg> Constant/Constrained Quality level
--max-intra-rate=<arg> Max I-frame bitrate (pct)
--max-inter-rate=<arg> Max P-frame bitrate (pct)
--gf-cbr-boost=<arg> Boost for Golden Frame in CBR mode (pct)
--lossless=<arg> Lossless mode (0: false (default), 1: true)
--enable-cdef=<arg> Enable the constrained directional enhancement filter (0: false, 1: true (default))
--enable-restoration=<arg> Enable the loop restoration filter (0: false, 1: true (default))
--enable-qm=<arg> Enable quantisation matrices (0: false (default), 1: true)
--qm-min=<arg> Min quant matrix flatness (0..15), default is 8
--qm-max=<arg> Max quant matrix flatness (0..15), default is 15
--enable-dist-8x8=<arg> Enable dist-8x8 (0: false (default), 1: true)
--frame-parallel=<arg> Enable frame parallel decodability features (0: false (default), 1: true)
--error-resilient=<arg> Enable error resilient features (0: false (default), 1: true)
--aq-mode=<arg> Adaptive quantization mode (0: off (default), 1: variance 2: complexity, 3: cyclic refresh)
--deltaq-mode=<arg> Delta qindex mode (0: off (default), 1: deltaq 2: deltaq + deltalf)
--frame-boost=<arg> Enable frame periodic boost (0: off (default), 1: on)
--noise-sensitivity=<arg> Noise sensitivity (frames to blur)
--tune-content=<arg> Tune content type
default, screen
--cdf-update-mode=<arg> CDF update mode for entropy coding (0: no CDF update; 1: update CDF on all frames(default); 2: selectively update CDF on some frames
--color-primaries=<arg> Color primaries (CICP) of input content:
bt709, unspecified, bt601, bt470m, bt470bg, smpte240, film, bt2020, xyz, smpte431, smpte432, ebu3213
--transfer-characteristics= Transfer characteristics (CICP) of input content:
unspecified, bt709, bt470m, bt470bg, bt601, smpte240, lin, log100, log100sq10, iec61966, bt1361, srgb, bt2020-10bit, bt2020-12bit, smpte2084, hlg, smpte428
--matrix-coefficients=<arg> Matrix coefficients (CICP) of input content:
identity, bt709, unspecified, fcc73, bt470bg, bt601, smpte240, ycgco, bt2020ncl, bt2020cl, smpte2085, chromncl, chromcl, ictcp
--chroma-sample-position=<a The chroma sample position when chroma 4:2:0 is signaled:
unknown, vertical, colocated
--min-gf-interval=<arg> min gf/arf frame interval (default 0, indicating in-built behavior)
--max-gf-interval=<arg> max gf/arf frame interval (default 0, indicating in-built behavior)
--sb-size=<arg> Superblock size to use
dynamic, 64, 128
--num-tile-groups=<arg> Maximum number of tile groups, default is 1
--mtu-size=<arg> MTU size for a tile group, default is 0 (no MTU targeting), overrides maximum number of tile groups
--timing-info=<arg> Signal timing info in the bitstream:
unspecified, constant
--film-grain-test=<arg> Film grain test vectors (0: none (default), 1: test-1 2: test-2, ... 16: test-16)
--film-grain-table=<arg> Path to file containing film grain parameters
--enable-ref-frame-mvs=<arg Enable temporal mv prediction (default is 1)
-b <arg>, --bit-depth=<arg> Bit depth for codec (8 for version <=1, 10 or 12 for version 2)
8, 10, 12
--input-bit-depth=<arg> Bit depth of input
--sframe-dist=<arg> S-Frame interval (frames)
--sframe-mode=<arg> S-Frame insertion mode (1..2)
--annexb=<arg> Save as Annex-B
Stream timebase (--timebase):
The desired precision of timestamps in the output, expressed
in fractional seconds. Default is 1/1000.
Included encoders:
av1 - AOMedia Project AV1 Encoder 0.1.0-9092-gcc30cc79f (default)
Use --codec to switch to a non-default encoder.
I don't see an option for a frame by frame PSNR comparision, so you probably have to do that by yourself somehow.
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
|