void AVI_ChunkFree( stream_t *s, avi_chunk_t *p_chk ) { int i_index; avi_chunk_t *p_child, *p_next; if( !p_chk ) { return; } /* Free all child chunk */ p_child = p_chk->common.p_first; while( p_child ) { p_next = p_child->common.p_next; AVI_ChunkFree( s, p_child ); free( p_child ); p_child = p_next; } i_index = AVI_ChunkFunctionFind( p_chk->common.i_chunk_fourcc ); if( AVI_Chunk_Function[i_index].AVI_ChunkFree_function ) { #ifdef AVI_DEBUG msg_Dbg( (vlc_object_t*)s, "free chunk %4.4s", (char*)&p_chk->common.i_chunk_fourcc ); #endif AVI_Chunk_Function[i_index].AVI_ChunkFree_function( p_chk); } else { msg_Warn( (vlc_object_t*)s, "unknown chunk: %4.4s (not unloaded)", (char*)&p_chk->common.i_chunk_fourcc ); } p_chk->common.p_first = NULL; p_chk->common.p_last = NULL; return; }
void AVI_ChunkFreeRoot( stream_t *s, avi_chunk_t *p_chk ) { AVI_ChunkFree( s, p_chk ); }