1#This work is licensed under the 2#Creative Commons Attribution-Share Alike 3.0 United States License. 3#To view a copy of this license, visit 4#http://creativecommons.org/licenses/by-sa/3.0/us/ or send a letter to 5#Creative Commons, 6#171 Second Street, Suite 300, 7#San Francisco, California, 94105, USA. 8 9INPUT "a WavPack file stream",block_data_size,block_samples,channel_count; 10OUTPUT "a set of decoding paramters"; 11VAR block_data_size "block data size"; 12VAR block_samples "block samples"; 13VAR channel_count "channel count"; 14VAR metadata_function "metadata function"; 15VAR nondecoder_data "nondecoder data"; 16VAR actual_size_1_less "actual size 1 less"; 17VAR sub_block_size "sub block size"; 18VAR decorrelation_term_count "term count"; 19VAR decorrelation_terms "decorrelation terms"; 20VAR decorrelation_deltas "decorrelation deltas"; 21VAR decorrelation_weights "decorrelation weights"; 22VAR decorrelation_samples "decorrelation samples"; 23VAR entropies "entropy"; 24VAR residuals "residuals"; 25VAR zero_bits "zero bits"; 26VAR one_bits "one bits"; 27VAR duplicate_bits "duplicate bits"; 28FUNC read_decorrelation_terms "read decorrelation terms" "wavpack:read_decorrelation_terms"; 29FUNC read_decorrelation_weights "read decorrelation weights" "wavpack:read_decorrelation_weights"; 30FUNC read_decorrelation_samples "read decorrelation samples" "wavpack:read_decorrelation_samples"; 31FUNC read_entropy_variables "read entropy variables" "wavpack:read_entropy_variables"; 32FUNC read_extended_integers "read extended integers" "wavpack:read_extended_integers"; 33FUNC read_bitstream "read bitstream" "wavpack:read_bitstream"; 34while block_data_size > 0 { 35 metadata_function <- read 5 unsigned; 36 nondecoder_data <- read 1 unsigned; 37 actual_size_1_less <- read 1 unsigned; 38 if (read 1 unsigned) == 0 /*large sub block*/ { 39 sub_block_size <- (read 8 unsigned) * 2 - actual_size_1_less; 40 } else { 41 sub_block_size <- (read 24 unsigned) * 2 - actual_size_1_less; 42 } 43 if nondecoder_data == 0 { 44 switch metadata_function { 45 case 2 { 46 decorrelation_term_count, 47 decorrelation_terms, 48 decorrelation_deltas <- 49 read_decorrelation_terms(sub_block_size); 50 } 51 case 3 { 52 decorrelation_weights <- 53 read_decorrelation_weights(sub_block_size, 54 channel_count, 55 decorrelation_term_count); 56 } 57 case 4 { 58 decorrelation_samples <- 59 read_decorrelation_samples(sub_block_size, 60 channel_count, 61 decorrelation_term_count, 62 decorrelation_terms); 63 } 64 case 5 { 65 entropies <- 66 read_entropy_variables(sub_block_size, 67 channel_count); 68 } 69 case 9 { 70 zero_bits,one_bits,duplicate_bits <- 71 read_extended_integers(); 72 } 73 case 10 { 74 residuals <- 75 read_bitstream(block_samples, 76 channel_count, 77 entropies); 78 79 } 80 default { 81 skip sub_block_size bytes; 82 } 83 } 84 } else { 85 skip sub_block_size bytes; 86 } 87 if actual_size_1_less == 1 { 88 skip 1 bytes; 89 } 90} 91return decorrelation_term_count, 92decorrelation_terms, 93decorrelation_deltas, 94decorrelation_weights, 95decorrelation_samples, 96residuals, 97zero_bits,one_bits,duplicate_bits;