void vorbis_info_clear(vorbis_info *vi) { codec_setup_info *ci=vi->codec_setup; int i; if(ci){ for(i=0;i<ci->modes;i++) if(ci->mode_param[i])_ogg_free(ci->mode_param[i]); for(i=0;i<ci->maps;i++) _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]); for(i=0;i<ci->floors;i++) _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]); for(i=0;i<ci->residues;i++) _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]); for(i=0;i<ci->books;i++){ if(ci->fullbooks) vorbis_book_clear(ci->fullbooks+i); if(ci->book_param[i]) vorbis_staticbook_destroy(ci->book_param[i]); } if(ci->fullbooks) _ogg_free(ci->fullbooks); _ogg_free(ci); } _ogg_memset(vi,0,sizeof(*vi)); }
void vorbis_info_clear(vorbis_info *vi){ codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; int i; if(ci){ for(i=0;i<ci->modes;i++) if(ci->mode_param[i])_ogg_free(ci->mode_param[i]); for(i=0;i<ci->maps;i++) /* unpack does the range checking */ _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]); for(i=0;i<ci->floors;i++) /* unpack does the range checking */ _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]); for(i=0;i<ci->residues;i++) /* unpack does the range checking */ _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]); for(i=0;i<ci->books;i++){ if(ci->book_param[i]){ /* knows if the book was not alloced */ vorbis_staticbook_destroy(ci->book_param[i]); } if(ci->fullbooks) vorbis_book_clear(ci->fullbooks+i); } if(ci->fullbooks) _ogg_free(ci->fullbooks); _ogg_free(ci); } memset(vi,0,sizeof(*vi)); }
void vorbis_info_clear(vorbis_info *vi){ codec_setup_info *ci=vi->codec_setup; int i; if(ci){ for(i=0;i<ci->modes;i++) if(ci->mode_param[i])_ogg_free(ci->mode_param[i]); for(i=0;i<ci->maps;i++) /* unpack does the range checking */ if(ci->map_param[i]) /* this may be cleaning up an aborted unpack, in which case the below type cannot be trusted */ _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]); for(i=0;i<ci->floors;i++) /* unpack does the range checking */ if(ci->floor_param[i]) /* this may be cleaning up an aborted unpack, in which case the below type cannot be trusted */ _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]); for(i=0;i<ci->residues;i++) /* unpack does the range checking */ if(ci->residue_param[i]) /* this may be cleaning up an aborted unpack, in which case the below type cannot be trusted */ _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]); for(i=0;i<ci->books;i++){ if(ci->book_param[i]){ /* knows if the book was not alloced */ vorbis_staticbook_destroy(ci->book_param[i]); } if(ci->fullbooks) vorbis_book_clear(ci->fullbooks+i); } if(ci->fullbooks) _ogg_free(ci->fullbooks); for(i=0;i<ci->psys;i++) _vi_psy_free(ci->psy_param[i]); _ogg_free(ci); } memset(vi,0,sizeof(*vi)); }
void vorbis_info_clear(vorbis_info *vi){ codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; int i; if(ci){ if(ci->mode_param)_ogg_free(ci->mode_param); if(ci->map_param){ for(i=0;i<ci->maps;i++) /* unpack does the range checking */ mapping_clear_info(ci->map_param+i); _ogg_free(ci->map_param); } if(ci->floor_param){ for(i=0;i<ci->floors;i++) /* unpack does the range checking */ if(ci->floor_type[i]) floor1_free_info(ci->floor_param[i]); else floor0_free_info(ci->floor_param[i]); _ogg_free(ci->floor_param); _ogg_free(ci->floor_type); } if(ci->residue_param){ for(i=0;i<ci->residues;i++) /* unpack does the range checking */ res_clear_info(ci->residue_param+i); _ogg_free(ci->residue_param); } if(ci->book_param){ for(i=0;i<ci->books;i++) vorbis_book_clear(ci->book_param+i); _ogg_free(ci->book_param); } _ogg_free(ci); } memset(vi,0,sizeof(*vi)); }
void vorbis_dsp_clear(vorbis_dsp_state *v){ int i,j,k; if(v){ vorbis_info *vi=v->vi; codec_setup_info *ci=(vi?vi->codec_setup:NULL); backend_lookup_state *b=v->backend_state; if(b){ if(b->window[0][0][0]){ for(i=0;i<VI_WINDOWB;i++) if(b->window[0][0][0][i])_ogg_free(b->window[0][0][0][i]); _ogg_free(b->window[0][0][0]); for(j=0;j<2;j++) for(k=0;k<2;k++){ for(i=0;i<VI_WINDOWB;i++) if(b->window[1][j][k][i])_ogg_free(b->window[1][j][k][i]); _ogg_free(b->window[1][j][k]); } } if(b->ve){ _ve_envelope_clear(b->ve); _ogg_free(b->ve); } if(b->transform[0]){ mdct_clear(b->transform[0][0]); _ogg_free(b->transform[0][0]); _ogg_free(b->transform[0]); } if(b->transform[1]){ mdct_clear(b->transform[1][0]); _ogg_free(b->transform[1][0]); _ogg_free(b->transform[1]); } if(b->psy_g_look)_vp_global_free(b->psy_g_look); vorbis_bitrate_clear(&b->bms); } if(v->pcm){ for(i=0;i<vi->channels;i++) if(v->pcm[i])_ogg_free(v->pcm[i]); _ogg_free(v->pcm); if(v->pcmret)_ogg_free(v->pcmret); } /* free mode lookups; these are actually vorbis_look_mapping structs */ if(ci){ for(i=0;i<ci->modes;i++){ int mapnum=ci->mode_param[i]->mapping; int maptype=ci->map_type[mapnum]; if(b && b->mode)_mapping_P[maptype]->free_look(b->mode[i]); } /* free codebooks */ for(i=0;i<ci->books;i++) if(b && b->fullbooks)vorbis_book_clear(b->fullbooks+i); } if(b){ if(b->mode)_ogg_free(b->mode); if(b->fullbooks)_ogg_free(b->fullbooks); /* free header, header1, header2 */ if(b->header)_ogg_free(b->header); if(b->header1)_ogg_free(b->header1); if(b->header2)_ogg_free(b->header2); _ogg_free(b); } memset(v,0,sizeof(*v)); } }