Log in

View Full Version : x264 development


Pages : 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

Adub
13th December 2006, 15:17
Thanks guys! I will give them a read when I have the time.

dancho
13th December 2006, 16:56
if you wanna learn more check this links:

Software optimization resources :http://www.agner.org/optimize/

Assembly Optimization Tips : http://www.mark.masmcode.com/

Inventive Software
21st December 2006, 15:10
Got a suggestion. Bear with me. :)

The progress indicator only updates every (total frames / 1000), thus for a 100000 frame movie, it updates every 100 frames. This is a little slow with some resolutions, so why not have it update the progress every frame and not by percentage? The current percentage could then go down to 2dp or 3dp instead of 1dp to accomodate the longer encodes, and be calculated each frame.

check
21st December 2006, 23:10
You can get something like that if you enable verbose mode.

chadamir
26th December 2006, 18:30
Sorry if this crosses over into feature request territory, but in the advanced dvd authoring forum we've been discussing codecs that are hd-dvd compliant. X264 is not. Some minor header changes need to be made to conform to spec. Is this being worked on? Fantastic work otherwise, certainly my choice for pc backups.

Heres the thread: http://forum.doom9.org/showthread.php?t=119392&page=4

akupenguin
27th December 2006, 02:49
No. I am not interested in HD-DVD or any other application that adds requirements beyond the H.264 standard for no good reason.

chadamir
27th December 2006, 04:16
But aren't the two data structures in the reference encoder?

akupenguin
27th December 2006, 09:07
You tell me. Can you make an HD-DVD compliant stream using JM? Does anyone even know what the constraints are?

chadamir
27th December 2006, 10:05
I guess the people on the forum who have the specs know. I do know JM supports those data structures which were said to be needed by those who have the specs. I thought JM only outputs avi and I have a feeling demuxing would ruin it.

Manao
27th December 2006, 10:32
I guess the people on the forum who have the specs knowNo. They have only a vague idea of what some of the constraints may be. Those who effectively have the specs are most probably under NDA and can't disclose them ( CF : http://forum.doom9.org/showthread.php?p=882932#post882932 )

Sagittaire
27th December 2006, 19:10
No. I am not interested in HD-DVD or any other application that adds requirements beyond the H.264 standard for no good reason.

Well it's really strange ... ???

It's like say "I am not interested in DVD or any other application that adds requirements beyond the MPEG2 standard for no good reason"

Actually all the MPEG2 encoder without DVD compliant support are completely useless. Tomorrow all the AVC encoder without HDDVD/BD compliant support will be completely useless ...

bond
27th December 2006, 19:40
in the end we simply need an avc stream that is hddvd compliant and analyse it in detail

i till now didnt see such a stream

Manao
27th December 2006, 19:41
Trying to second guess Loren : you want it, do it yourself, and he'll commit it.

Adding HDDVD support to x264 is boring, dull, and technically potentially illegal(yet) since the specifications don't seem to be public. There are much more interesting things to do in x264 than that ( for one, interlacing support ( half ironic *cough* ) ). Personnal motivation is still the principal incentive when coding for open source software.

Anyway, Loren must feel a bit lonely lately, so if somebody who was actually interested in HD DVD were to add such a fonctionnality, I think he'd be more than welcome.

Actually all the MPEG2 encoder without DVD compliant support are completely uselessDVD compliancy has nothing to do with the mpeg2 bitstream, so any encoder that respect the VBV buffer is 'DVD compliant'. Requirements put by HD DVD on the h264 bitstream are much more invasive and complicated, and are best handled in the encoder itself.

vsv
27th December 2006, 21:40
in the end we simply need an avc stream that is hddvd compliant and analyse it in detail

i till now didnt see such a stream

Just decrypt any HD-DVD released in Japan by backupHDDVD
http://forum.doom9.org/showthread.php?t=119871

and demux streams with HD DVD Demuxer
http://dvd-logic.com/hddemuxer.htm

chadamir
27th December 2006, 22:39
I will post a short hd-dvd image made with an avc for all to enjoy.

The following is a sample video file and an authored disc using it.
It was encoded with mainconcept H264 encoder version 2.1 and
sonic scenarist 4. It is 1920x1080i encoded as interlaced.


http://download.yousendit.com/6F2F833F3F48859A
Only 100 downloads so don't send it around kthnx.

chadamir
27th December 2006, 23:36
Using Inlet semaphore I've gotten the header. I'll now encode the same file using x264 at 4.1 profile and see how it differs

Summary
Source file : C:\Target\Untitled\0\emotion1.mpv
Width : 1920
Height : 1088
Frame rate : 59.9402 fps
FourCC :
Total frames : 0
File duration : 00:00:00:00
File bit rate : 0 bps
Video bit rate : 0 bps
Encode : CBR
Target bit rate : 8,000,000 bps
Buffer window : 2500 ms
Max key frame : 0 ms
Min quant : 0
Max quant : 0

Sequence Parameter Set
Field Value Description
profile_idc 100 High Profile
constraint_set0_flag 0
constraint_set1_flag 0
constraint_set2_flag 0
constraint_set3_flag 0
reserved_zero_4bits 0
level_idc 41 Level 4.1
seq_parameter_set_id 0
chroma_format_idc 1
bit_depth_luma_minus8 0
bit_depth_chroma_minus8 0
lossless_qpprime_y_zero_flag 0
seq_scaling_matrix_present_flag 0
log2_max_frame_num_minus4 4
pic_order_cnt_type 0
...log2_max_pic_order_cnt_lsb_minus4 4
num_ref_frames 4 Maximum number of reference frames for inter-prediction
gaps_in_frame_num_value_allowed_flag 0
pic_width_in_mbs_minus1 119 (1920)
pic_height_in_map_units_minus1 33 (544)
frame_mbs_only_flag 0 Frame or field macroblocks
...mb_adaptive_frame_field_flag 0
direct_8x8_inference_flag 1
frame_cropping_flag 1
...frame_crop_left_offset 0
...frame_crop_right_offset 0
...frame_crop_top_offset 0
...frame_crop_bottom_offset 2 (8)
vui_parameters_present_flag 1
...aspect_ratio_info_present_flag 1
.......aspect_ratio_idc 1 1:1
...overscan_info_present_flag 0
...video_signal_type_present_flag 1
.......video_format 2 NTSC
.......video_full_range_flag 0 luma/chroma range = 219/224
.......colour_description_present_flag 1
...........colour_primaries 1 ITU-R BT.709
...........transfer_characteristics 1 ITU-R BT.709
...........matrix_coefficients 1 ITU-R BT.709
...chroma_loc_info_present_flag 0
...timing_info_present_flag 1
.......num_units_in_tick 1001
.......time_scale 60000
.......fixed_frame_rate_flag 1
...nal_hrd_parameters_present_flag 1
.......cpb_cnt_minus1 0
.......bit_rate_scale 1
.......cpb_size_scale 3
.......bit_rate_value_minus1 1 62499 (8000000 bits/sec)
.......cpb_size_value_minus1 1 43399 (5555200 bits)
.......cbr_flag 1 0
.......initial_cpb_removal_delay_length_minus1 31
.......cpb_removal_delay_length_minus1 17
.......dpb_output_delay_length_minus1 17
.......time_offset_length 24
...vcl_hrd_parameters_present_flag 0
...low_delay_hrd_flag 0
...pic_struct_present_flag 1
...bitstream_restriction_flag 1
.......motion_vectors_over_pic_boundaries_flag 1 Motion vectors may exceed picture boundary
.......max_bytes_per_pic_denom 0
.......max_bits_per_mb_denom 0
.......log2_max_mv_length_horizontal 10 +/- 256
.......log2_max_mv_length_vertical 10 +/- 256
.......num_reorder_frames 1
.......max_dec_frame_buffering 4 Maximum frame decode buffers required

Edit:

The same file then demuxed from the EVO and put through semaphore

Source file : C:\0\VTS_001\Titles\t001_v001c001.m4v
Width : 1920
Height : 1088
Frame rate : 59.9402 fps
FourCC :
Total frames : 0
File duration : 00:00:00:00
File bit rate : 0 bps
Video bit rate : 0 bps
Encode : CBR
Target bit rate : 8,000,000 bps
Buffer window : 2500 ms
Max key frame : 0 ms
Min quant : 0
Max quant : 0

Sequence Parameter Set
Field Value Description
profile_idc 100 High Profile
constraint_set0_flag 0
constraint_set1_flag 0
constraint_set2_flag 0
constraint_set3_flag 0
reserved_zero_4bits 0
level_idc 41 Level 4.1
seq_parameter_set_id 0
chroma_format_idc 1
bit_depth_luma_minus8 0
bit_depth_chroma_minus8 0
lossless_qpprime_y_zero_flag 0
seq_scaling_matrix_present_flag 0
log2_max_frame_num_minus4 4
pic_order_cnt_type 0
...log2_max_pic_order_cnt_lsb_minus4 4
num_ref_frames 4 Maximum number of reference frames for inter-prediction
gaps_in_frame_num_value_allowed_flag 0
pic_width_in_mbs_minus1 119 (1920)
pic_height_in_map_units_minus1 33 (544)
frame_mbs_only_flag 0 Frame or field macroblocks
...mb_adaptive_frame_field_flag 0
direct_8x8_inference_flag 1
frame_cropping_flag 1
...frame_crop_left_offset 0
...frame_crop_right_offset 0
...frame_crop_top_offset 0
...frame_crop_bottom_offset 2 (8)
vui_parameters_present_flag 1
...aspect_ratio_info_present_flag 1
.......aspect_ratio_idc 1 1:1
...overscan_info_present_flag 0
...video_signal_type_present_flag 1
.......video_format 2 NTSC
.......video_full_range_flag 0 luma/chroma range = 219/224
.......colour_description_present_flag 1
...........colour_primaries 1 ITU-R BT.709
...........transfer_characteristics 1 ITU-R BT.709
...........matrix_coefficients 1 ITU-R BT.709
...chroma_loc_info_present_flag 0
...timing_info_present_flag 1
.......num_units_in_tick 1001
.......time_scale 60000
.......fixed_frame_rate_flag 1
...nal_hrd_parameters_present_flag 1
.......cpb_cnt_minus1 0
.......bit_rate_scale 1
.......cpb_size_scale 3
.......bit_rate_value_minus1 1 62499 (8000000 bits/sec)
.......cpb_size_value_minus1 1 43399 (5555200 bits)
.......cbr_flag 1 0
.......initial_cpb_removal_delay_length_minus1 31
.......cpb_removal_delay_length_minus1 17
.......dpb_output_delay_length_minus1 17
.......time_offset_length 24
...vcl_hrd_parameters_present_flag 0
...low_delay_hrd_flag 0
...pic_struct_present_flag 1
...bitstream_restriction_flag 1
.......motion_vectors_over_pic_boundaries_flag 1 Motion vectors may exceed picture boundary
.......max_bytes_per_pic_denom 0
.......max_bits_per_mb_denom 0
.......log2_max_mv_length_horizontal 10 +/- 256
.......log2_max_mv_length_vertical 10 +/- 256
.......num_reorder_frames 1
.......max_dec_frame_buffering 4 Maximum frame decode buffers required

chadamir
28th December 2006, 00:21
--pass 2 --bitrate 8000 --stats ".stats" --level 4.1 --ref 4 --bframes 2 --no-b-adapt --direct temporal --analyse p8x8,b8x8,i4x4 --vbv-maxrate 768 --threads auto --thread-input --progress --no-psnr --no-ssim --interlaced --output "C:\Documents and Settings\Chad\Desktop\x264header2.264" "C:\Documents and Settings\Chad\Desktop\x264header.avs"

Source file : C:\Documents and Settings\Chad\Desktop\x264header2.264
Width : 1920
Height : 1088
Frame rate : 59.9402 fps
FourCC :
Total frames : 249
File duration : 00:00:04:08
File bit rate : 31,670,915 bps
Video bit rate : 17,685,959 bps
Encode : CBR
Target bit rate : 4,000,000 bps
Buffer window : 2500 ms
Max key frame : 0 ms
Min quant : 17
Max quant : 27

Sequence Parameter Set
Field Value Description
profile_idc 77 Main Profile
constraint_set0_flag 0
constraint_set1_flag 1 Main profile constraints (clause A.2.2)
constraint_set2_flag 0
constraint_set3_flag 0
reserved_zero_4bits 0
level_idc 41 Level 4.1
seq_parameter_set_id 0
log2_max_frame_num_minus4 5
pic_order_cnt_type 0
...log2_max_pic_order_cnt_lsb_minus4 6
num_ref_frames 5 Maximum number of reference frames for inter-prediction
gaps_in_frame_num_value_allowed_flag 0
pic_width_in_mbs_minus1 119 (1920)
pic_height_in_map_units_minus1 33 (544)
frame_mbs_only_flag 0 Frame or field macroblocks
...mb_adaptive_frame_field_flag 1
direct_8x8_inference_flag 1
frame_cropping_flag 1
...frame_crop_left_offset 0
...frame_crop_right_offset 0
...frame_crop_top_offset 0
...frame_crop_bottom_offset 2 (8)
vui_parameters_present_flag 1
...aspect_ratio_info_present_flag 0
...overscan_info_present_flag 0
...video_signal_type_present_flag 0
...chroma_loc_info_present_flag 0
...timing_info_present_flag 1
.......num_units_in_tick 1001
.......time_scale 60000
.......fixed_frame_rate_flag 1
...nal_hrd_parameters_present_flag 0
...vcl_hrd_parameters_present_flag 0
...pic_struct_present_flag 0
...bitstream_restriction_flag 1
.......motion_vectors_over_pic_boundaries_flag 1 Motion vectors may exceed picture boundary
.......max_bytes_per_pic_denom 0
.......max_bits_per_mb_denom 0
.......log2_max_mv_length_horizontal 11 +/- 512
.......log2_max_mv_length_vertical 11 +/- 512
.......num_reorder_frames 1
.......max_dec_frame_buffering 5 Maximum frame decode buffers required

There are some discrepancies between my settings and the header. I ended up with 5 reference frames instead of 4. And I chose high profile in megui. Also there's all the header info that's simply not there.

chadamir
28th December 2006, 15:35
HD-DVD profile from megui

Sequence Parameter Set
Field Value Description
profile_idc 77 Main Profile
constraint_set0_flag 0
constraint_set1_flag 1 Main profile constraints (clause A.2.2)
constraint_set2_flag 0
constraint_set3_flag 0
reserved_zero_4bits 0
level_idc 41 Level 4.1
seq_parameter_set_id 0
log2_max_frame_num_minus4 5
pic_order_cnt_type 0
...log2_max_pic_order_cnt_lsb_minus4 6
num_ref_frames 5 Maximum number of reference frames for inter-prediction
gaps_in_frame_num_value_allowed_flag 0
pic_width_in_mbs_minus1 119 (1920)
pic_height_in_map_units_minus1 33 (544)
frame_mbs_only_flag 0 Frame or field macroblocks
...mb_adaptive_frame_field_flag 1
direct_8x8_inference_flag 1
frame_cropping_flag 1
...frame_crop_left_offset 0
...frame_crop_right_offset 0
...frame_crop_top_offset 0
...frame_crop_bottom_offset 2 (8)
vui_parameters_present_flag 1
...aspect_ratio_info_present_flag 0
...overscan_info_present_flag 0
...video_signal_type_present_flag 0
...chroma_loc_info_present_flag 0
...timing_info_present_flag 1
.......num_units_in_tick 1001
.......time_scale 60000
.......fixed_frame_rate_flag 1
...nal_hrd_parameters_present_flag 0
...vcl_hrd_parameters_present_flag 0
...pic_struct_present_flag 0
...bitstream_restriction_flag 1
.......motion_vectors_over_pic_boundaries_flag 1 Motion vectors may exceed picture boundary
.......max_bytes_per_pic_denom 0
.......max_bits_per_mb_denom 0
.......log2_max_mv_length_horizontal 11 +/- 512
.......log2_max_mv_length_vertical 11 +/- 512
.......num_reorder_frames 1
.......max_dec_frame_buffering 5 Maximum frame decode buffers required

chadamir
28th December 2006, 16:39
Ok thanks to bond we got the header to this point

profile_idc 100 High Profile
constraint_set0_flag 0
constraint_set1_flag 0
constraint_set2_flag 0
constraint_set3_flag 0
reserved_zero_4bits 0
level_idc 41 Level 4.1
seq_parameter_set_id 0
chroma_format_idc 1
bit_depth_luma_minus8 0
bit_depth_chroma_minus8 0
lossless_qpprime_y_zero_flag 0
seq_scaling_matrix_present_flag 0
log2_max_frame_num_minus4 1
pic_order_cnt_type 0
...log2_max_pic_order_cnt_lsb_minus4 2
num_ref_frames 4 Maximum number of reference frames for inter-prediction
gaps_in_frame_num_value_allowed_flag 0
pic_width_in_mbs_minus1 119 (1920)
pic_height_in_map_units_minus1 67 (1088)
frame_mbs_only_flag 1 Frame macroblocks only (no field)
direct_8x8_inference_flag 1
frame_cropping_flag 1
...frame_crop_left_offset 0
...frame_crop_right_offset 0
...frame_crop_top_offset 0
...frame_crop_bottom_offset 4 (8)
vui_parameters_present_flag 1
...aspect_ratio_info_present_flag 1
.......aspect_ratio_idc 1 1:1
...overscan_info_present_flag 0
...video_signal_type_present_flag 1
.......video_format 2 NTSC
.......video_full_range_flag 0 luma/chroma range = 219/224
.......colour_description_present_flag 1
...........colour_primaries 1 ITU-R BT.709
...........transfer_characteristics 1 ITU-R BT.709
...........matrix_coefficients 1 ITU-R BT.709
...chroma_loc_info_present_flag 0
...timing_info_present_flag 1
.......num_units_in_tick 1001
.......time_scale 60000
.......fixed_frame_rate_flag 1
...nal_hrd_parameters_present_flag 0
...vcl_hrd_parameters_present_flag 0
...pic_struct_present_flag 0
...bitstream_restriction_flag 1
.......motion_vectors_over_pic_boundaries_flag 1 Motion vectors may exceed picture boundary
.......max_bytes_per_pic_denom 0
.......max_bits_per_mb_denom 0
.......log2_max_mv_length_horizontal 11 +/- 512
.......log2_max_mv_length_vertical 11 +/- 512
.......num_reorder_frames 1
.......max_dec_frame_buffering 4 Maximum frame decode buffers required

But no NAL HRD.

Inventive Software
28th December 2006, 18:41
You can get something like that if you enable verbose mode.

Tried that, didn't give what I wanted. Essentially, a better progress indicator is what I'd like, if that's not too much to ask. I'd do it myself, but my coding's non-existant (practically).

akupenguin
28th December 2006, 19:33
It's like say "I am not interested in DVD or any other application that adds requirements beyond the MPEG2 standard for no good reason"
Exactly. If I were writing an MPEG2 encoding library, I wouldn't put anything DVD-specific in it. Of course, profile/level/VBV/GOP/etc are all configurable, but it's up to the application or user to configure them appropriately.

So: If you determine that HDDVD needs some H.264 feature like maybe a specific SEI message or one of the optional fields in the SPS, then feel free to implement it and send a patch. But I will reject any application-specific kludges, just like I rejected magiK's PSP-mode patch.

There are some discrepancies between my settings and the header. I ended up with 5 reference frames instead of 4. And I chose high profile in megui. Also there's all the header info that's simply not there.
x264's --ref selects the number of L0 references used by P-frames, not necessarily the DPB size. (Maybe someday I'll add a mode to optimize for max quality per DBP size instead of per encoding time/complexity.)
x264 signals the lowest profile that allows all your enabled features. You can't select high profile without enabling some feature that needs high profile.

hpn
29th December 2006, 05:00
For those who like patches I just got around to adding something small I've always thought was missing while encoding - total time on the progress indicator: patch (http://x264.net/x264_clock1-614.diff)

The progress indicator only updates every (total frames / 1000), thus for a 100000 frame movie, it updates every 100 frames. This is a little slow with some resolutions
Also in the patch - up to 10'000 times per input file seems more enjoyable with negligible speed penalty (a second/hour or something).

Malow
29th December 2006, 05:39
if someone need another hd-dvd compilant h.264 ES, go here:

http://forum.doom9.org/showthread.php?p=919921#post919921

pyrates
1st January 2007, 02:41
came across this strange error, here's the output:

C:\>x264.exe --pass 2 --bitrate 4665 --stats "L:\movie\108
0i.stats" --ref 16 --mixed-refs --no-fast-pskip --bframes 3 --b-pyramid --b-rdo
--bime --weightb --direct auto --direct-8x8 -1 --filter -2,-1 --subme 7 --trelli
s 1 --analyse all --8x8dct --vbv-maxrate 25000 --me umh --threads 6 --non-determ
inistic --cqmfile "E:\eqm_avc_hr.cfg" --progress -
-no-psnr --output "L:\movie\1080i.264" "L:\movie\1080i.a
vs"
avis [info]: 1920x1080 @ 23.98 fps (172975 frames)
x264 [warning]: width or height not divisible by 16 (1920x1080), compression wil
l suffer.
x264 [info]: using cpu capabilities MMX MMXEXT SSE SSE2 3DNow!
x264 [warning]: VBV maxrate specified, but no bufsize.
mb type: 7 mes: 10552/172975 (6.1%), 0.50 fps, eta 89:44:29
mv: l1r0 (115,407)
limit: 352
mb_xy: 1,11
completed: 264
Assertion failed: 0, file encoder/analyse.c, line 2714

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

I am using the MT plugin for avisynth 2.5.6a with the following avisynth script:

SetMTMode(6,0)
# Modify the path so that it finds your decomb dll file #
LoadPlugin("E:\DeComb\decomb521.dll")

# Modify the path so that it finds your MPEG2DEC dll file #
LoadPlugin("E:\DGMPGDec\DGDecode.dll")


LoadPlugin("E:\MKVMagic\exe\filter\Convolution3D.dll")
LoadPlugin("E:\MKVMagic\exe\filter\deen.dll")
LoadPlugin("E:\MKVMagic\exe\filter\MSharpen.dll")
LoadPlugin("E:\MKVMagic\exe\filter\tdeint.dll")
LoadPlugin("E:\MKVMagic\exe\filter\UnFilter.dll")
LoadPlugin("E:\MKVMagic\exe\filter\undot.dll")

import("E:\MvBob\mvbob.avs")
import("E:\AVS Scripts\convert60ito24p.avsi")
Import("E:\MKVMagic\exe\filter\HybridFuPP.avsi")

# Modify the path so that it finds the d2v file you created using dvd2avi #
MPEG2Source("L:\movie\movie.d2v")
#audio=wavSource("E:\24.1.wav")
#audiodub(video,audio)
#Crop(left, top, -right, -bottom)
Crop(0, 0, -0, -0)

# Assume Top Field
#AssumeTFF().SeparateFields()
#Telecide(order=1)
# Assume Bottom Field
#AssumeBFF().SeparateFields()
Telecide(order=0)

# Reduce down to 23.976 fps
Decimate()

Undot()
Convolution3d(preset="movieHQ")

HybridFuPP(preset="High")

#assumefps(23976,1000)
assumefps(24000,1001)

I'm using build 614 of x264. The error occurs quite randomly I find but it is always the same error referencing the same line. Anyone know what it means?

akupenguin
1st January 2007, 05:15
It means that somehow the motion estimation failed to limit itself to the available range, and ended up using pixels that might not yet have been encoded by another thread.

bkman
1st January 2007, 09:43
Akupenguin, are you aware of the problem with direct B-frame modes and AQ or certain custom matrices? They can currently cause artifacts in some scenes unless the direct mode is set to "none".

Hopefully you can fix it, as disabling the direct B-frame modes wastes bitrate.

pyrates
1st January 2007, 10:25
It means that somehow the motion estimation failed to limit itself to the available range, and ended up using pixels that might not yet have been encoded by another thread.

So does this mean it is a bug and can be fixed?

ChronoCross
1st January 2007, 16:35
Akupenguin, are you aware of the problem with direct B-frame modes and AQ or certain custom matrices? They can currently cause artifacts in some scenes unless the direct mode is set to "none".

Hopefully you can fix it, as disabling the direct B-frame modes wastes bitrate.

AQ is an unsupported patch. As for custom matirces........any examples?

bkman
1st January 2007, 17:37
*.mp4 guy mentions that the problem occurs with some of his matrices in his Custom Matrix topic.

akupenguin
1st January 2007, 18:16
Akupenguin, are you aware of the problem with direct B-frame modes and AQ or certain custom matrices? They can currently cause artifacts in some scenes unless the direct mode is set to "none".
No, I am not aware of any such. I have heard some people suggest disabling B-direct as a last-ditch attempt to remove some artifacts, but I don't recall any cases where it actually worked. I always figured it was similar to people not using B-frames in XviD: a mistaken assumption that anything that improves compression ratio shouldn't be used if you want very high quality.

Artifacts related to cqm (assuming they're not a direct consequence of the matrix's frequency distribution) are probably due to the cqm deviating too far from the bitrate-per-qp values of the flat matrix. x264 makes some assumptions about the quality level of a given qp, and I'm not likely to work very hard at generalizing them for all cqms when you can always scale a cqm to match the flat matrix. (That and I'm not convinced that cqms are useful in the first place.)

*.mp4 guy
1st January 2007, 21:02
To be fair X264 does have trouble with b direct at times even with the standard matrix (though I haven't had any trouble in this reguard in a long time, so it may have been fixed). I'm also not sure that the problems are completely related to quality/qp, I think X264 may have trouble with cqm's that have a low dc coeficient even if they are similar in quality/qp to the flat matrix(just a guess though). I probably should mention that I have nothing against Bframes, or space saving features, I always use bframes in Xvid and X264, and whenevere possible I use B direct.

B Direct usualy only has trouble on smooth low contrast sources like the new starwars movies and you need a good crt (or any lcd with high contrast) to notice the problems, since they usually manifest as jittery flat blocks in almost flat areas.

As to matrices usefulness, all I have to say to that is banding, and low level detail loss (I don't care about noise loss personally). The flat matrix just isn't good at preventing banding and its reliance on inloop filtering to remove blocks removes small details aswell, though it preserves high frequencies amazingly well. Until the flat matrix stops banding and stops needing high inloop settings to have normal blocking levels (which might happen) matrices will be usefull to people who dislike banding and the "washed out" look inloop can cause more then ringing and slight blurring of prominent details.

I would like to have band free encodes with the standard matrix, but right now it isn't happening and cqm's are the best solution I'm aware of.

*.mp4 guy
2nd January 2007, 23:25
Update: here is an example (http://www.megaupload.com/?d=1KGU9XJR)
This example is a lot more blatant then usual, the clouds in the beginning really seam to throw something off, though there are some (much less obvious) artifacts in other parts of the clip.

heres the matrix used:

INTRA4X4_LUMA =
15,6,15,22,
6,7,25,30,
15,25,38,48,
22,30,48,96

INTRA4X4_CHROMAU =
16,6,24,72,
6,8,41,144,
24,41,96,200,
72,144,200,255

INTRA4X4_CHROMAV =
16,6,24,72,
6,8,41,144,
24,41,96,200,
72,144,200,255

INTER4X4_LUMA =
4,11,15,22,
11,11,25,30,
15,25,38,48,
22,30,48,96

INTER4X4_CHROMAU =
5,16,16,16,
16,16,16,56,
16,16,72,96,
16,56,96,128

INTER4X4_CHROMAV =
5,16,16,16,
16,16,16,56,
16,16,72,96,
16,56,96,128

INTRA8X8_LUMA =
24,7,7,12,15,20,21,23
8,9,14,15,18,21,23,21
10,12,15,17,17,21,26,20
14,15,17,17,18,33,30,23
15,17,17,21,26,39,39,29
18,18,20,24,33,39,41,35
21,24,29,34,39,45,45,38
27,35,36,39,38,38,38,38

INTER8X8_LUMA =
6,10,13,13,15,16,18,22
10,10,12,15,15,16,21,24
13,12,15,16,19,21,25,27
13,15,16,21,24,28,30,34
15,15,19,24,30,36,37,40
16,16,21,28,36,42,45,52
18,21,25,30,37,45,55,72
22,24,27,34,40,52,72,96
I was actually trying to make the matrix more "compatible" to x264 by getting it closer to the compressability of the standard matrix... Doesn't seem to have worked. Its not spot on with the standard matrice's compressability, but I don't think it is far enough off to justify these results.

I'm currently making an encode without b predict to see if that fixes the problem as it has for me in the past.

akupenguin
2nd January 2007, 23:28
also try with and without b-rdo

*.mp4 guy
3rd January 2007, 00:25
The problem clip used b rdo, when I tested the clip with b predict disabled the problem went away. Right now I am working on getting a lossless file of a subset of the clip to exhibit the same behavior, after that I will test the clip with b predict enabled but without b rdo. I'll update this post when I am done.

[edit]
Quick summary of results
938KB B-rdo+B=predict enabled: prominent noticible artifacts
1210KB B-rdo disabled, B predict enabled: slight jerkiness of motion in low contrast areas, probably justified by space savings, ie everything is fine
1321KB B-rdo enabled, B predict disabled: everything is fine, however worse quality/space ratio then with b prediction enabled and b-rdo disabled

Here is a link (http://www.megaupload.com/?d=GYJ2Y6XH) with everything you need to reproduce the results.

elguaxo
3rd January 2007, 02:18
I would be interested in doing a similar test like yours, but targeting the same filesize for all combinations. However I can't download anything from megaupload: All download slots assigned to your country (Argentina) are currently in use.

Could you upload the files somewhere else? Thanks!

*.mp4 guy
3rd January 2007, 13:13
Files uploaded somewhere else (http://www.mytempdir.com/1146936).

elguaxo
3rd January 2007, 13:58
Thanks, the new link works fine!

My eyes are not so fine-tuned like yours, I can spot the artifacts, but it was difficult.

M4G HRM V1.5 is the matrix some posts above?

*.mp4 guy
3rd January 2007, 14:28
M4G HRM V1.5 is the matrix some posts above?
Yes, I probably should have more clear on that or included it in the archive to make things easier. I still have to do more testing to see how it compares to the old version, and I have to adjust the 4x4 luma matrices before it will be finnished.



My eyes are not so fine-tuned like yours, I can spot the artifacts, but it was difficult.
Its probably your monitor, not your eyes that made the problem hard to spot. The monitor I'm using is very unforgiving of artifacts compared to most crts.

noclip
6th March 2007, 22:07
I'm not a big fan of x264's logo (the firey one). It makes the best (IMHO) AVC encoder out there look second rate to somebody not well-versed in such things. Here's a slightly cleaner version which, if you want to use it, you can feel free to as it is in the public domain.

http://img340.imageshack.us/img340/5628/x264largedr4.png

akupenguin
6th March 2007, 22:36
The firey one is not x264's logo, it's x264.nl's logo. There is no official x264 logo.
Of the logos proposed so far, my favorite is the old vfw icon, though I never saw a large render of it.
http://img128.imageshack.us/img128/1286/x264icontb3.png

noclip
6th March 2007, 22:39
The firey one is not x264's logo, it's x264.nl's logo. There is no official x264 logo.

Ah. Well as I said, public domain, so if you ever feel like you need one...

bob0r
7th March 2007, 02:28
The VFW icon is just the same logo noclip posted, but with the 3 colors added.

So making a big render is quite easy.



... i have a whole week all for myself, i was thinking of a new design for x264.nl, but as usual i lack any graphical insight what so ever! :o

I was thinking a more dark style like:
http://x264.nl/x264_blue.png
But this is just fooling around.

poyupay
11th March 2007, 20:39
The VFW icon is just the same logo noclip posted, but with the 3 colors added.

yeah right! looks like that:

http://img329.imageshack.us/img329/2084/draft1fi5.png

or maybe like that...:

http://img329.imageshack.us/img329/4840/draft2er4.png

only drafts though. but if you're interested... :D

AGDenton
22nd March 2007, 18:35
Hi,

[631] introduces a few SSE3-optimized functions for the x86_64 branch. I'm on a 386 right now, so I can't test them, but could you provide an estimate of their performance impact?

Also, there seems to be a few processors out there (Yonah, for instance) which support SSE3 but not EM64T : would SSE3 optimizations in the i386 branch be feasible, or benefitial ?

Best regards,

AG

Manao
22nd March 2007, 18:48
rev631 introduces SSSE3 optimized functions, not SSE3. AFAIK, all SSSE3 processors are 64bits. Still, some people might want to use a 32 bits OS and a SSSE3 version would be appreciated for them.

It would be feasible and benefitial, you just need to find the guy to do it.

Cef
3rd April 2007, 00:30
Hi,

I made x264 ssse3 builds since i couldn't find any, sharing if anyone interested
http://cef.neuf.fr/x264/x264_x86_r637.7z
http://cef.neuf.fr/x264/x264_x64_r637.7z

Adub
3rd April 2007, 03:54
Thanks mate!

Yo, Sharktooth!
Are you making builds that support ssse3 as well, or are you sticking with the lesser optimizations?

ChronoCross
3rd April 2007, 05:44
Thanks mate!

Yo, Sharktooth!
Are you making builds that support ssse3 as well, or are you sticking with the lesser optimizations?


ssse3 only works on intel processors.

Eretria-chan
3rd April 2007, 13:03
ssse3 only works on intel processors.

Does it? AMD Athlon 64 X2 supports SSE3. Cpu-Z confirms this. SSE4 is Intel-only for the moment, though, AFAIK.

Manao
3rd April 2007, 13:08
Electria-chan : SSE4 has been renamed SSSE3. So ChronoCross is right.

ChronoCross: strange, I was getting the impression that SharkTooth was an Intel fanboy :p