JVorbis Todo Checklist ---------------------- libvorbis ---------------------- // DONE - Vorbis Comment support added into header vorbis_encode_init_vbr( vi, 2, 44100, .4f )) - quality should be able to be increased/decresed but not tested yet finish support for managed bitrate options Optimize manual memory cleanup - _vorbis_pull_ripcord, saves values from a mock vorbis_block_alloc to track localstorage offsets and keep memory footprint down Check multiple loops to combine throughout the main loop rewrite to let the java garbage collector manage memory more in main loop - ByteStreams or ArrayLists etc System.arraycopy everywhere instead of memcpy, memmove Arrays.fill instead of memsets and hardloops add low quality support from aoTuV - http://www.geocities.jp/aoyoume/aotuv/ OOP classes Get rid of floor1_func, res0_func, map0_func _floor_P _residue_P _map_P Abstract as j-ogg, jcraft (may only be needed for decode or encode other than 2 channels 44100 rate .4f quality) _floor_P (currently only supports floor1) _residue_P (currently only supports res0) _mapping_P (currently only supports mapping0) add floor1 (info, look and functions) vorbis_info_floor1.java, vorbis_look_floor1.java, oggpack_buffer.java add residue0 (info, look) and create residue type 0,1,2 [functions] vorbis_info_residue0.java, vorbis_look_residue0.java, oggpack_buffer.java add mapping0 (info, look and functions) - *** ilog is actually ilog2 function - see mapping0.c vorbis_info_mapping0.java, < no look function >, oggpack_buffer.java Java signed (>>) to unsigned (>>>) bit shift changes These all need inteligent checks vorbisenc.java 4 vorbis_dsp_state 2 mdct_lookup 17 drft_lookup 4 codebook 4 bitrate_manager_state 1 codec_setup_info.java abstract classes for // vorbis_info_mapping // vorbis_info_floor // vorbis_info_residue right now limits to mapping0 floor1 residue0 private_state.java absctract classes for // vorbis_look_floor // vorbis_look_residue right now limits to residue0 and floor1 vorbis_block.java - conserve memory in vorbis_analysis_blockout mapping0_forward - this is where the logfft (vbi->pcm) data discrepensies come out to haunt. main impact is the call to floor_posts[i][PACKETBLOBS/2] = floor1_fit( b.flr[info.floorsubmap[submap]], logmdct, logfft ); call to accumulate_fit( logmask, logmdct, look.sorted_index[i], look.sorted_index[i+1], fits[i], n, info ); sets off the lsfit_acc data when (flr[mdct+i]+info.twofitatten >= flr[i]) is very marginal factions (.00001). This snowballs to cause the line deltas to return different results than C library. Basiclly I think it just draws a different sound, cutting or adding in places the C lib does not, and by marginal amounts, but this may have to do with timing as well. Needs investigation vorbis_dsp_state.java need to work System.arraycopy loop to work with more than 2 channels vorbis_look_psy.java possible pointer leak and array wrap around. I doubt it, but thats what i wrote, file hasnt been edited in a while vorbisenc.java implementation for more than just VBR encoded files managed bitrate portions were left out and never documented well libvorbis.books data package only imported residue data for 2 channel 44100 Hz audio processesing. meant to write a script to import the rest of the data ( single channel data?, and higher and lower sampling rates ) once this one was finished (imported by hand :-(), but moved forward and never got back to it. libvorbis.modes data package again only impemented the template for 44100 Hz audio a la reside book data libshout ---------------------- total system state managment error exception flow reconnecting, buffering References ---------- http://xiph.org/vorbis/doc/Vorbis_I_spec.html http://xiph.org/vorbis/doc/