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
analyze.patch
Description: analyze.patch
