public byte[] invert(InputStream is, int fStart, int fEnd, FrameBuffer frame_buffer ) throws Exception{
        
        int cont = 0;
        
        reader = new Manager(is);
        FrameData fd;
                
        if( frame_buffer.get_buffer_len() == 0){
            throw new Exception("Error: buffer is empty!!");
        }

        final int opt = Constants.HUFFMAN_DOMAIN;
        frame_buffer.set_direction_reading(-1);
        
        do{

            if (cont < fStart || cont >= fEnd ) {
                try{
                    fd = reader.decodeFrame(opt);
                } catch (Exception e){
                    LOGGER.info("End of file");
                    break;
                }
                reader.storeData(fd, reader.getMainData());
            } else {
                
                FrameDataUnpacked fd_u = frame_buffer.get_entry();
                reader.storeData(fd_u, fd_u.get_data());
            }
            
            cont++;
        } while(true);
        
        mp3_byte_stream = reader.getStream();
        
        return mp3_byte_stream;
    }