On Jun 25, 2014, at 12:56 PM, Laurent Birtz <[email protected]> wrote:

> Add quality=10 preset, update the other presets.
> Change the internal algorithm interface.
> Remove the all-intra parameter.
> Save only the edge pixels of a block on the stash.
> Cache t->src_frame->frame_type in t->frame_type.
> Add 3 intra analysis passes (RDM, RDO0, RDO1) and several refinement 
> algorithms.
> Save all the CB analysis data in f265_cb_analysis.
> Revamp the intra and inter block interfaces.
> Optimize the stash usage at the CB level.
> Add F265_CB_LEAF flag, optimize syntax element writing.
> Precompute the CB syntax element costs and contexts, defer the actual update.
> Allow intra/inter/children to be explored in any order.
> Allow the RDM search to occur before the RDO refinement for intra UN and 
> inter.
> Allow the RDM intra search to occur on reconstructed or source pixels.
> Fake the reconstructed pixels opportunistically with the source pixels.
> Cache the intra neigbhours when possible.
> Allow the transform tree refinement to occur after the RDM search.
> Make the transform tree refinement static when unambiguous.
> Fix invalid RDM costs for intra.
> Make SATD work properly for both intra and inter.
> Add non-HM-compatible MV cost computations (still need tweaking).
> Remove debugging stuff from analyze.c.
> Add F265_COPY2_IF_LT() branch-free macro.
> Fix compilation warnings with clang.
> Disable warnings about unused static functions.
> Improve f265bench MD5 sum reporting.
> Interest flags and other algorithmic improvements are TODO.
> 
> Diff has messed up on analyze.c. I'm including the full file instead. Most of 
> the file has changed.
> 
> Laurent
> <algo.patch><analyze.c>

Hi,

I’ve reviewed the changes. A diff of the analyze.c file attached to your 
message with my commented version is shipped along with this message.

Here are quick observations: the newer version is slightly faster and produces 
a smaller stream that as lower PSNR. I think the reduction in file size 
justifies the PSNR drop. Have a look for yourself.

# With the applied patch.
$ ./build/f265cli -v -c 10 -p "quality=25" 
~/Sandbox/Sequences/Speed_1024x768_30.mp4 /tmp/new.265
Hardware acceleration: AVX2.


Encoded : 10/10 (100.0%) @ 2fps ETA 0.00sec 

# Without the applied patch.
$ ./build/f265cli -v -c 10 -p "quality=25" 
~/Sandbox/Sequences/Speed_1024x768_30.mp4 /tmp/old.265
Hardware acceleration: AVX2.


Encoded : 10/10 (100.0%) @ 1fps ETA 0.00sec 

# The newer stream is almost 4% smaller than the one created with the current 
version.
$ ls -l /tmp/*.265
-rw-r--r--  1 francoiscaron  wheel   175104 26 Jun 11:22 /tmp/new.265
-rw-r--r--  1 francoiscaron  wheel   181667 26 Jun 11:24 /tmp/old.265

# The newer stream has less PSNR (-0.17 dB).
$ ./build/yuvdiff -m psnr -a ~/Sandbox/Sequences/Speed_1024x768_30.mp4 
/tmp/old.265
===============================
   frame                   psnr   
===============================
Average     37.61  41.90  41.40   

$ ./build/yuvdiff -m psnr -a ~/Sandbox/Sequences/Speed_1024x768_30.mp4 
/tmp/new.265
===============================
   frame                   psnr   
===============================
Average     37.44  41.82  41.42   

Regards,
François


Attachment: analyze.patch
Description: analyze.patch

Reply via email to