#if 0 level 1 4 delete middle block nopad 1 delete middle block pad 1 delete last block nopad 1 delete last block pad 1 insert middle block nopad 1 insert middle block equalpad 1 insert middle block smallpad 1 insert middle block smallpad+1 1 insert middle block biggerpad 1 insert last block X 1 set middle block smaller nopad 1 set middle block smaller pad 1 set last block smaller nopad 1 set last block smaller pad 1 set middle block bigger nopad 1 set middle block bigger equalpad 1 set middle block bigger smallpad 1 set middle block bigger smallpad+1 1 set middle block bigger biggerpad 1 set last block bigger nopad 1 set middle block equal X 2 set last block equal X level 2 FLAC__bool FLAC__metadata_chain_write() 1 newsize==oldsize newsize>oldsize b no use_padding c use_padding, last block is not padding g use_padding, last block is padding of insufficient length h use_padding, last block is padding, but padding header straddles border (can't do it) j use_padding, last block is padding of exact sufficient length (padding totally consumed) i use_padding, last block is padding of abundant length (padding is reduced) newsize= 4 f use_padding, last block is padding void FLAC__metadata_chain_merge_padding(FLAC__Metadata_Chain *chain); void FLAC__metadata_chain_sort_padding(FLAC__Metadata_Chain *chain); S:34 A:1234 a:shrink A->30 write nopad S:34 A:30 b:grow A->32 write nopad S:34 A:32 c:grow A->40 write pad S:34 A:40 d:shrink A->37 write pad S:34 A:37 e:shrink A->33 write pad S:34 A:33 P:0 f:shrink A->20 write pad S:34 A:20 P:13 g:grow A->40 write pad S:34 A:40 P:13 h:grow A->54 write pad S:34 A:54 P:13 i:grow A->60 write pad S:34 A:60 P:7 j:grow A->71 write pad S:34 A:71 #endif